Do not share CSS style for MediaElement backed by a plugin
authorbenjamin@webkit.org <benjamin@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 10 Nov 2011 21:44:28 +0000 (21:44 +0000)
committerbenjamin@webkit.org <benjamin@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 10 Nov 2011 21:44:28 +0000 (21:44 +0000)
https://bugs.webkit.org/show_bug.cgi?id=72005

Reviewed by Simon Fraser.

With PLUGIN_PROXY_FOR_VIDEO, the RenderMedia elements are rendered through RenderBoxModelObject.
Like the embedded element, the proxied media element can gain a layer outside a change of style.

This patch prevents style sharing for the Audio and Video elements when PLUGIN_PROXY_FOR_VIDEO
is enabled.

This path is covered by exising tests. In particular, http/tests/misc/empty-urls.html
ASSERT() because of this.

* css/CSSStyleSelector.cpp:
(WebCore::CSSStyleSelector::canShareStyleWithElement):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@99896 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/css/CSSStyleSelector.cpp

index e1d1a84..a64f9f2 100644 (file)
@@ -1,3 +1,22 @@
+2011-11-10  Benjamin Poulain  <benjamin@webkit.org>
+
+        Do not share CSS style for MediaElement backed by a plugin
+        https://bugs.webkit.org/show_bug.cgi?id=72005
+
+        Reviewed by Simon Fraser.
+
+        With PLUGIN_PROXY_FOR_VIDEO, the RenderMedia elements are rendered through RenderBoxModelObject.
+        Like the embedded element, the proxied media element can gain a layer outside a change of style.
+
+        This patch prevents style sharing for the Audio and Video elements when PLUGIN_PROXY_FOR_VIDEO
+        is enabled.
+
+        This path is covered by exising tests. In particular, http/tests/misc/empty-urls.html
+        ASSERT() because of this.
+
+        * css/CSSStyleSelector.cpp:
+        (WebCore::CSSStyleSelector::canShareStyleWithElement):
+
 2011-11-10  Dean Jackson  <dino@apple.com>
 
         Move/copy/merge SVG filter rendering code to generic rendering
index b0854c5..ba8be05 100644 (file)
@@ -1033,7 +1033,12 @@ bool CSSStyleSelector::canShareStyleWithElement(Node* node) const
 #if USE(ACCELERATED_COMPOSITING)
     // Turn off style sharing for elements that can gain layers for reasons outside of the style system.
     // See comments in RenderObject::setStyle().
-    if (element->hasTagName(iframeTag) || element->hasTagName(frameTag) || element->hasTagName(embedTag) || element->hasTagName(objectTag) || element->hasTagName(appletTag))
+    if (element->hasTagName(iframeTag) || element->hasTagName(frameTag) || element->hasTagName(embedTag) || element->hasTagName(objectTag) || element->hasTagName(appletTag)
+#if ENABLE(PLUGIN_PROXY_FOR_VIDEO)
+        // With proxying, the media elements are backed by a RenderEmbeddedObject.
+        || element->hasTagName(videoTag) || element->hasTagName(audioTag)
+#endif
+        )
         return false;
 #endif