Title: [129296] trunk
Revision
129296
Author
[email protected]
Date
2012-09-21 21:44:29 -0700 (Fri, 21 Sep 2012)

Log Message

HTMLMediaElement isn't garbage collected between document reloads
https://bugs.webkit.org/show_bug.cgi?id=97020

Reviewed by Eric Carlson.

.:

Manual test added: ManualTests/audio-freed-during-reload.html

* ManualTests/audio-freed-during-reload.html:

Source/WebCore:

JS-created (as opposed to DOM-created) Audio nodes never got collected, because they
appear to always hasPendingActivity(), because m_playing is never set to false.

Manual test added: ManualTests/audio-freed-during-reload.html

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::stop): set m_playing = false; explicitly.

Modified Paths

Added Paths

Diff

Modified: trunk/ChangeLog (129295 => 129296)


--- trunk/ChangeLog	2012-09-22 03:18:33 UTC (rev 129295)
+++ trunk/ChangeLog	2012-09-22 04:44:29 UTC (rev 129296)
@@ -1,3 +1,14 @@
+2012-09-21  Ami Fischman  <[email protected]>
+
+        HTMLMediaElement isn't garbage collected between document reloads
+        https://bugs.webkit.org/show_bug.cgi?id=97020
+
+        Reviewed by Eric Carlson.
+
+        Manual test added: ManualTests/audio-freed-during-reload.html
+
+        * ManualTests/audio-freed-during-reload.html:
+
 2012-09-21  Chris Rogers  <[email protected]>
 
         Add Web Audio support for deprecated/legacy APIs

Added: trunk/ManualTests/audio-freed-during-reload.html (0 => 129296)


--- trunk/ManualTests/audio-freed-during-reload.html	                        (rev 0)
+++ trunk/ManualTests/audio-freed-during-reload.html	2012-09-22 04:44:29 UTC (rev 129296)
@@ -0,0 +1,17 @@
+<html>
+    <script>
+        function go() {
+          var a = new Audio();
+          a.autoplay = "1";
+          a.src = ""
+        }
+    </script>
+
+    <body _onload_="go()">
+        <p>
+            Load this page and open Activity Monitor, htop, chrome's task manager, or another resource monitor.
+            Reload the page a number of times and verify that the memory usage
+            doesn't keep climbing indefinitely per reload.
+        </p>
+    </body>
+</html?

Modified: trunk/Source/WebCore/ChangeLog (129295 => 129296)


--- trunk/Source/WebCore/ChangeLog	2012-09-22 03:18:33 UTC (rev 129295)
+++ trunk/Source/WebCore/ChangeLog	2012-09-22 04:44:29 UTC (rev 129296)
@@ -1,3 +1,18 @@
+2012-09-21  Ami Fischman  <[email protected]>
+
+        HTMLMediaElement isn't garbage collected between document reloads
+        https://bugs.webkit.org/show_bug.cgi?id=97020
+
+        Reviewed by Eric Carlson.
+
+        JS-created (as opposed to DOM-created) Audio nodes never got collected, because they
+        appear to always hasPendingActivity(), because m_playing is never set to false.
+
+        Manual test added: ManualTests/audio-freed-during-reload.html
+
+        * html/HTMLMediaElement.cpp:
+        (WebCore::HTMLMediaElement::stop): set m_playing = false; explicitly.
+
 2012-09-21  Simon Fraser  <[email protected]>
 
         RenderMarquee causes ASSERTION FAILED: enclosingIntRect(rendererMappedResult) == enclosingIntRect(FloatQuad(result).boundingBox()) : WebCore::FloatRect WebCore::RenderGeometryMap::absoluteRect(const WebCore::FloatRect &) const

Modified: trunk/Source/WebCore/html/HTMLMediaElement.cpp (129295 => 129296)


--- trunk/Source/WebCore/html/HTMLMediaElement.cpp	2012-09-22 03:18:33 UTC (rev 129295)
+++ trunk/Source/WebCore/html/HTMLMediaElement.cpp	2012-09-22 04:44:29 UTC (rev 129296)
@@ -3675,6 +3675,7 @@
     userCancelledLoad();
     
     // Stop the playback without generating events
+    m_playing = false;
     setPausedInternal(true);
     
     if (renderer())
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to