JSC/CSSOM: root(CSSElementStyleDeclaration) should never need to follow the element.
authorkling@webkit.org <kling@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 1 Dec 2011 18:49:21 +0000 (18:49 +0000)
committerkling@webkit.org <kling@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 1 Dec 2011 18:49:21 +0000 (18:49 +0000)
<http://webkit.org/b/73561>

Reviewed by Antti Koivisto.

A CSSElementStyleDeclaration should always either have a null element pointer,
or return a valid parentStyleSheet(), since having an element pointer implies
having an associated element sheet.

In light of this, replace the opaque-root-from-element path for style declarations
by an assertion.

* bindings/js/JSDOMBinding.h:
(WebCore::root):

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

Source/WebCore/ChangeLog
Source/WebCore/bindings/js/JSDOMBinding.h

index fe4958967558d81590dda2ae689c17a7eca76268..7662165c1cc025f84999c108d35c386c3c20725b 100644 (file)
@@ -1,3 +1,20 @@
+2011-12-01  Andreas Kling  <kling@webkit.org>
+
+        JSC/CSSOM: root(CSSElementStyleDeclaration) should never need to follow the element.
+        <http://webkit.org/b/73561>
+
+        Reviewed by Antti Koivisto.
+
+        A CSSElementStyleDeclaration should always either have a null element pointer,
+        or return a valid parentStyleSheet(), since having an element pointer implies
+        having an associated element sheet.
+
+        In light of this, replace the opaque-root-from-element path for style declarations
+        by an assertion.
+
+        * bindings/js/JSDOMBinding.h:
+        (WebCore::root):
+
 2011-12-01  Patrick Gansterer  <paroga@webkit.org>
 
         [CMake] Make the feature defines for DOM names explicit
index 12ab9f18cddae878cd91259079cc51e64d1a9142..7cab6c2bed053bf938afd82eec23b8dbfbfb7080 100644 (file)
@@ -207,10 +207,8 @@ enum ParameterMissingPolicy {
             return root(parentRule);
         if (CSSStyleSheet* styleSheet = style->parentStyleSheet())
             return root(styleSheet);
-        if (style->isElementStyleDeclaration()) {
-            if (StyledElement* element = static_cast<CSSElementStyleDeclaration*>(style)->element())
-                return root(element);
-        }
+        // A style declaration with an associated element should've returned a style sheet above.
+        ASSERT(!style->isElementStyleDeclaration() || !static_cast<CSSElementStyleDeclaration*>(style)->element());
         return style;
     }