Title: [257655] trunk/Source/WebCore
- Revision
- 257655
- Author
- [email protected]
- Date
- 2020-02-28 13:23:53 -0800 (Fri, 28 Feb 2020)
Log Message
MediaResourceLoader leaks resource responses
https://bugs.webkit.org/show_bug.cgi?id=208267
Reviewed by Eric Carlson.
MediaResourceLoader leaks resource responses when browsing in Safari, even though these responses are
only used for testing. AVAssetCustomURLBridgeForNSURLSession holds on to the WebCoreNSURLSession, which
keeps the MediaResourceLoader alive, even if there is no media on the current page. In turn, the
MediaResourceLoader always keeps in memory the last 5 HTTP responses.
To address the issue, we now only record these responses when running the tests.
* loader/MediaResourceLoader.cpp:
(WebCore::MediaResourceLoader::recordResponsesForTesting):
(WebCore::MediaResourceLoader::addResponseForTesting):
* loader/MediaResourceLoader.h:
* testing/Internals.cpp:
(WebCore::Internals::resetToConsistentState):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (257654 => 257655)
--- trunk/Source/WebCore/ChangeLog 2020-02-28 21:07:27 UTC (rev 257654)
+++ trunk/Source/WebCore/ChangeLog 2020-02-28 21:23:53 UTC (rev 257655)
@@ -1,3 +1,24 @@
+2020-02-28 Chris Dumez <[email protected]>
+
+ MediaResourceLoader leaks resource responses
+ https://bugs.webkit.org/show_bug.cgi?id=208267
+
+ Reviewed by Eric Carlson.
+
+ MediaResourceLoader leaks resource responses when browsing in Safari, even though these responses are
+ only used for testing. AVAssetCustomURLBridgeForNSURLSession holds on to the WebCoreNSURLSession, which
+ keeps the MediaResourceLoader alive, even if there is no media on the current page. In turn, the
+ MediaResourceLoader always keeps in memory the last 5 HTTP responses.
+
+ To address the issue, we now only record these responses when running the tests.
+
+ * loader/MediaResourceLoader.cpp:
+ (WebCore::MediaResourceLoader::recordResponsesForTesting):
+ (WebCore::MediaResourceLoader::addResponseForTesting):
+ * loader/MediaResourceLoader.h:
+ * testing/Internals.cpp:
+ (WebCore::Internals::resetToConsistentState):
+
2020-02-28 Keith Rollin <[email protected]>
Convert frame address in logging statements to pageID+frameID
Modified: trunk/Source/WebCore/loader/MediaResourceLoader.cpp (257654 => 257655)
--- trunk/Source/WebCore/loader/MediaResourceLoader.cpp 2020-02-28 21:07:27 UTC (rev 257654)
+++ trunk/Source/WebCore/loader/MediaResourceLoader.cpp 2020-02-28 21:23:53 UTC (rev 257655)
@@ -41,6 +41,13 @@
namespace WebCore {
+static bool shouldRecordResponsesForTesting = false;
+
+void MediaResourceLoader::recordResponsesForTesting()
+{
+ shouldRecordResponsesForTesting = true;
+}
+
MediaResourceLoader::MediaResourceLoader(Document& document, HTMLMediaElement& mediaElement, const String& crossOriginMode)
: ContextDestructionObserver(&document)
, m_document(makeWeakPtr(document))
@@ -118,7 +125,7 @@
void MediaResourceLoader::addResponseForTesting(const ResourceResponse& response)
{
const auto maximumResponsesForTesting = 5;
- if (m_responsesForTesting.size() > maximumResponsesForTesting)
+ if (!shouldRecordResponsesForTesting || m_responsesForTesting.size() > maximumResponsesForTesting)
return;
m_responsesForTesting.append(response);
}
Modified: trunk/Source/WebCore/loader/MediaResourceLoader.h (257654 => 257655)
--- trunk/Source/WebCore/loader/MediaResourceLoader.h 2020-02-28 21:07:27 UTC (rev 257654)
+++ trunk/Source/WebCore/loader/MediaResourceLoader.h 2020-02-28 21:23:53 UTC (rev 257655)
@@ -55,6 +55,7 @@
Document* document() { return m_document.get(); }
const String& crossOriginMode() const { return m_crossOriginMode; }
+ WEBCORE_EXPORT static void recordResponsesForTesting();
Vector<ResourceResponse> responsesForTesting() const { return m_responsesForTesting; }
void addResponseForTesting(const ResourceResponse&);
Modified: trunk/Source/WebCore/testing/Internals.cpp (257654 => 257655)
--- trunk/Source/WebCore/testing/Internals.cpp 2020-02-28 21:07:27 UTC (rev 257654)
+++ trunk/Source/WebCore/testing/Internals.cpp 2020-02-28 21:23:53 UTC (rev 257655)
@@ -531,6 +531,8 @@
page.setMockMediaPlaybackTargetPickerState(emptyString(), MediaPlaybackTargetContext::Unknown);
#endif
+ MediaResourceLoader::recordResponsesForTesting();
+
page.setShowAllPlugins(false);
page.setLowPowerModeEnabledOverrideForTesting(WTF::nullopt);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes