Title: [125052] trunk
Revision
125052
Author
[email protected]
Date
2012-08-08 10:57:58 -0700 (Wed, 08 Aug 2012)

Log Message

Video element image loader must persist after element detach.
https://bugs.webkit.org/show_bug.cgi?id=90801

Reviewed by Eric Carlson.

We rely on the OwnPtr in the element to cleanup the loader.

Source/WebCore:

Test: fast/dom/beforeload/remove-video-poster-in-beforeload-listener.html

* html/HTMLVideoElement.cpp:
(WebCore):
* html/HTMLVideoElement.h:
(HTMLVideoElement):

LayoutTests:

* fast/dom/beforeload/remove-video-poster-in-beforeload-listener-expected.txt: Added.
* fast/dom/beforeload/remove-video-poster-in-beforeload-listener.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (125051 => 125052)


--- trunk/LayoutTests/ChangeLog	2012-08-08 17:54:28 UTC (rev 125051)
+++ trunk/LayoutTests/ChangeLog	2012-08-08 17:57:58 UTC (rev 125052)
@@ -1,3 +1,15 @@
+2012-08-08  Tom Sepez  <[email protected]>
+
+        Video element image loader must persist after element detach.  
+        https://bugs.webkit.org/show_bug.cgi?id=90801
+
+        Reviewed by Eric Carlson.
+
+        We rely on the OwnPtr in the element to cleanup the loader.     
+
+        * fast/dom/beforeload/remove-video-poster-in-beforeload-listener-expected.txt: Added.
+        * fast/dom/beforeload/remove-video-poster-in-beforeload-listener.html: Added.
+
 2012-08-08  Dan Bernstein  <[email protected]>
 
         REGRESSION (r123171): <svg> element with intrinsic size and max-width gets sized incorrectly

Added: trunk/LayoutTests/fast/dom/beforeload/remove-video-poster-in-beforeload-listener-expected.txt (0 => 125052)


--- trunk/LayoutTests/fast/dom/beforeload/remove-video-poster-in-beforeload-listener-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fast/dom/beforeload/remove-video-poster-in-beforeload-listener-expected.txt	2012-08-08 17:57:58 UTC (rev 125052)
@@ -0,0 +1,3 @@
+This page tests that you can correctly remove a video object with a poster in a beforeload listener without causing a crash.
+
+PASS

Added: trunk/LayoutTests/fast/dom/beforeload/remove-video-poster-in-beforeload-listener.html (0 => 125052)


--- trunk/LayoutTests/fast/dom/beforeload/remove-video-poster-in-beforeload-listener.html	                        (rev 0)
+++ trunk/LayoutTests/fast/dom/beforeload/remove-video-poster-in-beforeload-listener.html	2012-08-08 17:57:58 UTC (rev 125052)
@@ -0,0 +1,46 @@
+<html>
+<head>
+    <script src=""
+    <script>
+        if (window.testRunner) {
+            testRunner.dumpAsText();
+            testRunner.waitUntilDone();
+        }
+        
+        var count = 0;
+        var maxCount = 10;
+        var timeout = 100;
+
+        document.addEventListener("beforeload", function(event) {
+            event.target.parentElement.removeChild(event.target);
+        }, true);
+    </script>
+</head>
+<body>
+    <p>This page tests that you can correctly remove a video object with a poster in a beforeload listener without causing a crash.</p>
+    <div id="console"></div>
+    <script>
+        function checkObjectRemoval()
+        {
+            if (!document.getElementsByTagName("video").length) {
+                print("PASS", "green");
+                if (window.testRunner)
+                    testRunner.notifyDone();
+                return;
+            }
+            
+            if (++count > maxCount) {
+                print("FAIL", "red");
+                if (window.testRunner)
+                    testRunner.notifyDone();
+                return;
+            }
+            
+            setTimeout("checkObjectRemoval()", timeout);
+        }
+        
+        setTimeout("checkObjectRemoval()", timeout);
+    </script>
+    <video poster="../resources/abe.png">>><source>>>
+</body>
+</html>

Modified: trunk/Source/WebCore/ChangeLog (125051 => 125052)


--- trunk/Source/WebCore/ChangeLog	2012-08-08 17:54:28 UTC (rev 125051)
+++ trunk/Source/WebCore/ChangeLog	2012-08-08 17:57:58 UTC (rev 125052)
@@ -1,3 +1,19 @@
+2012-08-08  Tom Sepez  <[email protected]>
+
+        Video element image loader must persist after element detach.  
+        https://bugs.webkit.org/show_bug.cgi?id=90801
+
+        Reviewed by Eric Carlson.
+
+        We rely on the OwnPtr in the element to cleanup the loader.     
+
+        Test: fast/dom/beforeload/remove-video-poster-in-beforeload-listener.html
+
+        * html/HTMLVideoElement.cpp:
+        (WebCore):
+        * html/HTMLVideoElement.h:
+        (HTMLVideoElement):
+
 2012-08-08  Nikhil Bhargava  <[email protected]>
 
         Improve RenderObject.h compile time - split CachedImage and CachedImageClient

Modified: trunk/Source/WebCore/html/HTMLVideoElement.cpp (125051 => 125052)


--- trunk/Source/WebCore/html/HTMLVideoElement.cpp	2012-08-08 17:54:28 UTC (rev 125051)
+++ trunk/Source/WebCore/html/HTMLVideoElement.cpp	2012-08-08 17:57:58 UTC (rev 125052)
@@ -87,14 +87,6 @@
 #endif
 }
 
-void HTMLVideoElement::detach()
-{
-    HTMLMediaElement::detach();
-    
-    if (!shouldDisplayPosterImage() && m_imageLoader)
-        m_imageLoader.clear();
-}
-
 void HTMLVideoElement::collectStyleForAttribute(const Attribute& attribute, StylePropertySet* style)
 {
     if (attribute.name() == widthAttr)

Modified: trunk/Source/WebCore/html/HTMLVideoElement.h (125051 => 125052)


--- trunk/Source/WebCore/html/HTMLVideoElement.h	2012-08-08 17:54:28 UTC (rev 125051)
+++ trunk/Source/WebCore/html/HTMLVideoElement.h	2012-08-08 17:57:58 UTC (rev 125052)
@@ -75,7 +75,6 @@
     virtual RenderObject* createRenderer(RenderArena*, RenderStyle*);
 #endif
     virtual void attach();
-    virtual void detach();
     virtual void parseAttribute(const Attribute&) OVERRIDE;
     virtual bool isPresentationAttribute(const QualifiedName&) const OVERRIDE;
     virtual void collectStyleForAttribute(const Attribute&, StylePropertySet*) OVERRIDE;
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to