<style scoped>: Allow <style scoped> as a direct child of a ShadowRoot
authorrolandsteiner@chromium.org <rolandsteiner@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 15 Feb 2012 09:17:20 +0000 (09:17 +0000)
committerrolandsteiner@chromium.org <rolandsteiner@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 15 Feb 2012 09:17:20 +0000 (09:17 +0000)
https://bugs.webkit.org/show_bug.cgi?id=77853

.:

numberOfScopedHTMLStyleChildren got moved from Element into Node.

Reviewed by Dimitri Glazkov.

* Source/autotools/symbols.filter:

Source/WebCore:

Moved registration code from Element to Node. updated Internals and build files accordingly.
Moved registration data members from ElementRareData to NodeRareData.
Forward willRemove() from host element into shadow DOM tree.

Reviewed by Dimitri Glazkov.

Test: fast/css/style-scoped/registering-shadowroot.html

* WebCore.exp.in:
* dom/Element.cpp:
(WebCore::Element::willRemove):
* dom/Element.h:
(Element):
* dom/ElementRareData.h:
(ElementRareData):
(WebCore::ElementRareData::ElementRareData):
* dom/Node.cpp:
(WebCore):
(WebCore::Node::hasScopedHTMLStyleChild):
(WebCore::Node::numberOfScopedHTMLStyleChildren):
(WebCore::Node::registerScopedHTMLStyleChild):
(WebCore::Node::unregisterScopedHTMLStyleChild):
* dom/Node.h:
(Node):
* dom/NodeRareData.h:
(WebCore::NodeRareData::NodeRareData):
(NodeRareData):
(WebCore::NodeRareData::registerScopedHTMLStyleChild):
(WebCore::NodeRareData::unregisterScopedHTMLStyleChild):
(WebCore::NodeRareData::hasScopedHTMLStyleChild):
(WebCore::NodeRareData::numberOfScopedHTMLStyleChildren):
* dom/ShadowRootList.cpp:
(WebCore::ShadowRootList::willRemove):
(WebCore):
* dom/ShadowRootList.h:
(ShadowRootList):
* html/HTMLStyleElement.cpp:
(WebCore::HTMLStyleElement::registerWithScopingNode):
(WebCore::HTMLStyleElement::unregisterWithScopingNode):
* testing/Internals.cpp:
(WebCore::Internals::numberOfScopedHTMLStyleChildren):
* testing/Internals.h:
(Internals):
* testing/Internals.idl:

Source/WebKit2:

numberOfScopedHTMLStyleChildren got moved from Element into Node.

Reviewed by Dimitri Glazkov.

* win/WebKit2.def:
* win/WebKit2CFLite.def:

LayoutTests:

Test registration of <style scoped> as a direct child of a ShadowRoot.

Reviewed by Dimitri Glazkov.

* fast/css/style-scoped/registering-shadowroot-expected.txt: Added.
* fast/css/style-scoped/registering-shadowroot.html: Added.

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

22 files changed:
ChangeLog
LayoutTests/ChangeLog
LayoutTests/fast/css/style-scoped/registering-shadowroot-expected.txt [new file with mode: 0644]
LayoutTests/fast/css/style-scoped/registering-shadowroot.html [new file with mode: 0644]
Source/WebCore/ChangeLog
Source/WebCore/WebCore.exp.in
Source/WebCore/dom/Element.cpp
Source/WebCore/dom/Element.h
Source/WebCore/dom/ElementRareData.h
Source/WebCore/dom/Node.cpp
Source/WebCore/dom/Node.h
Source/WebCore/dom/NodeRareData.h
Source/WebCore/dom/ShadowRootList.cpp
Source/WebCore/dom/ShadowRootList.h
Source/WebCore/html/HTMLStyleElement.cpp
Source/WebCore/testing/Internals.cpp
Source/WebCore/testing/Internals.h
Source/WebCore/testing/Internals.idl
Source/WebKit2/ChangeLog
Source/WebKit2/win/WebKit2.def
Source/WebKit2/win/WebKit2CFLite.def
Source/autotools/symbols.filter

index 27da3d2..080b2b7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2012-02-15  Roland Steiner  <rolandsteiner@chromium.org>
+
+        <style scoped>: Allow <style scoped> as a direct child of a ShadowRoot
+        https://bugs.webkit.org/show_bug.cgi?id=77853
+
+        numberOfScopedHTMLStyleChildren got moved from Element into Node.
+
+        Reviewed by Dimitri Glazkov.
+
+        * Source/autotools/symbols.filter:
+
 2012-02-13  Raphael Kubo da Costa  <kubo@profusion.mobi>
 
         [CMake] Merge WebKitEfl.cmake into FindEFL.cmake.
index bb7af87..da6b003 100644 (file)
@@ -1,3 +1,15 @@
+2012-02-15  Roland Steiner  <rolandsteiner@chromium.org>
+
+        <style scoped>: Allow <style scoped> as a direct child of a ShadowRoot
+        https://bugs.webkit.org/show_bug.cgi?id=77853
+
+        Test registration of <style scoped> as a direct child of a ShadowRoot.
+
+        Reviewed by Dimitri Glazkov.
+
+        * fast/css/style-scoped/registering-shadowroot-expected.txt: Added.
+        * fast/css/style-scoped/registering-shadowroot.html: Added.
+
 2012-02-14  Pavel Feldman  <pfeldman@chromium.org>
 
         Web Inspector: implement redo for DOM actions.
diff --git a/LayoutTests/fast/css/style-scoped/registering-shadowroot-expected.txt b/LayoutTests/fast/css/style-scoped/registering-shadowroot-expected.txt
new file mode 100644 (file)
index 0000000..842e98f
--- /dev/null
@@ -0,0 +1,31 @@
+Test having a <style scoped> element as a direct child of a ShadowRoot.
+
+--- Initial ---
+PASS internals.numberOfScopedHTMLStyleChildren(host) is 0
+PASS internals.numberOfScopedHTMLStyleChildren(sr) is 0
+--- Attaching <style scoped> ---
+PASS internals.numberOfScopedHTMLStyleChildren(host) is 0
+PASS internals.numberOfScopedHTMLStyleChildren(sr) is 1
+--- Removing host ---
+PASS internals.numberOfScopedHTMLStyleChildren(host) is 0
+PASS internals.numberOfScopedHTMLStyleChildren(sr) is 0
+--- Inserting host ---
+PASS internals.numberOfScopedHTMLStyleChildren(host) is 0
+PASS internals.numberOfScopedHTMLStyleChildren(sr) is 1
+--- Unsetting @scoped ---
+PASS internals.numberOfScopedHTMLStyleChildren(host) is 0
+PASS internals.numberOfScopedHTMLStyleChildren(sr) is 0
+--- Setting @scoped ---
+PASS internals.numberOfScopedHTMLStyleChildren(host) is 0
+PASS internals.numberOfScopedHTMLStyleChildren(sr) is 1
+--- Detaching <style scoped> ---
+PASS internals.numberOfScopedHTMLStyleChildren(host) is 0
+PASS internals.numberOfScopedHTMLStyleChildren(sr) is 0
+--- Attaching <style scoped> under host ---
+PASS internals.numberOfScopedHTMLStyleChildren(host) is 1
+PASS internals.numberOfScopedHTMLStyleChildren(sr) is 0
+--- DONE ---
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/css/style-scoped/registering-shadowroot.html b/LayoutTests/fast/css/style-scoped/registering-shadowroot.html
new file mode 100644 (file)
index 0000000..9b4c547
--- /dev/null
@@ -0,0 +1,74 @@
+<html>
+<head>
+    <link rel="stylesheet" href="../../js/resources/js-test-style.css">
+    <script src="../../js/resources/js-test-pre.js"></script>
+</head>
+<body>
+    <p>Test having a &lt;style scoped&gt; element as a direct child of a ShadowRoot.</p>
+    <div id="host">
+    </div>
+    <div id="ref">
+    </div>
+
+    <div id="console"></div>
+
+    <script>
+        if (!window.internals)
+            debug("windows.internals not found!");
+        else if (!window.internals.ensureShadowRoot)
+            debug("windows.internals.ensureShadowRoot not found!");
+        else if (!window.internals.numberOfScopedHTMLStyleChildren)
+            debug("windows.internals.numberOfScopedHTMLStyleChildren not found!");
+        else {
+            var ref = document.getElementById('ref');
+            var host = document.getElementById('host');
+            var sr = internals.ensureShadowRoot(host);
+            var style = document.createElement('style');
+            style.setAttribute('scoped', 'scoped');
+
+            debug("--- Initial ---");
+            shouldBe("internals.numberOfScopedHTMLStyleChildren(host)", "0");
+            shouldBe("internals.numberOfScopedHTMLStyleChildren(sr)", "0"); /* <style> out of document, scoped */
+
+            debug("--- Attaching &lt;style scoped&gt; ---");
+            sr.appendChild(style);
+            shouldBe("internals.numberOfScopedHTMLStyleChildren(host)", "0");
+            shouldBe("internals.numberOfScopedHTMLStyleChildren(sr)", "1"); /* <style> in shadow, scoped */
+
+            debug("--- Removing host ---");
+            host.parentNode.removeChild(host);
+            shouldBe("internals.numberOfScopedHTMLStyleChildren(host)", "0");
+            shouldBe("internals.numberOfScopedHTMLStyleChildren(sr)", "0"); /* <style> out of document, scoped */
+
+            debug("--- Inserting host ---");
+            ref.parentNode.insertBefore(host, ref);
+            shouldBe("internals.numberOfScopedHTMLStyleChildren(host)", "0");
+            shouldBe("internals.numberOfScopedHTMLStyleChildren(sr)", "1"); /* <style> in shadow, scoped */
+
+            debug("--- Unsetting @scoped ---");
+            style.scoped = false;
+            shouldBe("internals.numberOfScopedHTMLStyleChildren(host)", "0");
+            shouldBe("internals.numberOfScopedHTMLStyleChildren(sr)", "0"); /* <style> in shadow, not scoped */
+
+            debug("--- Setting @scoped ---");
+            style.scoped = true;
+            shouldBe("internals.numberOfScopedHTMLStyleChildren(host)", "0");
+            shouldBe("internals.numberOfScopedHTMLStyleChildren(sr)", "1"); /* <style> in shadow, scoped */
+
+            debug("--- Detaching &lt;style scoped&gt; ---");
+            sr.removeChild(style);
+            shouldBe("internals.numberOfScopedHTMLStyleChildren(host)", "0");
+            shouldBe("internals.numberOfScopedHTMLStyleChildren(sr)", "0"); /* <style> out of document, scoped */
+
+            debug("--- Attaching &lt;style scoped&gt; under host ---");
+            host.appendChild(style);
+            shouldBe("internals.numberOfScopedHTMLStyleChildren(host)", "1");
+            shouldBe("internals.numberOfScopedHTMLStyleChildren(sr)", "0"); /* <style> in tree, scoped */
+
+            debug("--- DONE ---");
+        }
+        var successfullyParsed = true;
+    </script>
+    <script src="../../js/resources/js-test-post.js"></script>
+</body>
+</html>
index de82a86..b439616 100644 (file)
@@ -1,3 +1,53 @@
+2012-02-15  Roland Steiner  <rolandsteiner@chromium.org>
+
+        <style scoped>: Allow <style scoped> as a direct child of a ShadowRoot
+        https://bugs.webkit.org/show_bug.cgi?id=77853
+
+        Moved registration code from Element to Node. updated Internals and build files accordingly.
+        Moved registration data members from ElementRareData to NodeRareData.
+        Forward willRemove() from host element into shadow DOM tree.
+
+        Reviewed by Dimitri Glazkov.
+
+        Test: fast/css/style-scoped/registering-shadowroot.html
+
+        * WebCore.exp.in:
+        * dom/Element.cpp:
+        (WebCore::Element::willRemove):
+        * dom/Element.h:
+        (Element):
+        * dom/ElementRareData.h:
+        (ElementRareData):
+        (WebCore::ElementRareData::ElementRareData):
+        * dom/Node.cpp:
+        (WebCore):
+        (WebCore::Node::hasScopedHTMLStyleChild):
+        (WebCore::Node::numberOfScopedHTMLStyleChildren):
+        (WebCore::Node::registerScopedHTMLStyleChild):
+        (WebCore::Node::unregisterScopedHTMLStyleChild):
+        * dom/Node.h:
+        (Node):
+        * dom/NodeRareData.h:
+        (WebCore::NodeRareData::NodeRareData):
+        (NodeRareData):
+        (WebCore::NodeRareData::registerScopedHTMLStyleChild):
+        (WebCore::NodeRareData::unregisterScopedHTMLStyleChild):
+        (WebCore::NodeRareData::hasScopedHTMLStyleChild):
+        (WebCore::NodeRareData::numberOfScopedHTMLStyleChildren):
+        * dom/ShadowRootList.cpp:
+        (WebCore::ShadowRootList::willRemove):
+        (WebCore):
+        * dom/ShadowRootList.h:
+        (ShadowRootList):
+        * html/HTMLStyleElement.cpp:
+        (WebCore::HTMLStyleElement::registerWithScopingNode):
+        (WebCore::HTMLStyleElement::unregisterWithScopingNode):
+        * testing/Internals.cpp:
+        (WebCore::Internals::numberOfScopedHTMLStyleChildren):
+        * testing/Internals.h:
+        (Internals):
+        * testing/Internals.idl:
+
 2012-02-14  Pavel Feldman  <pfeldman@chromium.org>
 
         Web Inspector: implement redo for DOM actions.
index 30d03a5..7246c04 100644 (file)
@@ -2088,6 +2088,4 @@ __ZN7WebCore4Page20scrollingCoordinatorEv
 __ZNK7WebCore20ScrollingCoordinator13scrollingTreeEv
 #endif
 
-#if ENABLE(STYLE_SCOPED)
-__ZNK7WebCore7Element31numberOfScopedHTMLStyleChildrenEv
-#endif
+__ZNK7WebCore4Node31numberOfScopedHTMLStyleChildrenEv
index bbc8821..446f4f3 100644 (file)
@@ -865,6 +865,8 @@ void Element::willRemove()
     if (containsFullScreenElement())
         setContainsFullScreenElementOnAncestorsCrossingFrameBoundaries(false);
 #endif
+    if (ShadowRootList* shadowRoots = shadowRootList())
+        shadowRoots->willRemove();
     ContainerNode::willRemove();
 }
 
@@ -1764,30 +1766,6 @@ unsigned Element::childElementCount() const
     return count;
 }
 
-#if ENABLE(STYLE_SCOPED)
-bool Element::hasScopedHTMLStyleChild() const
-{
-    return hasRareData() && rareData()->hasScopedHTMLStyleChild();
-}
-
-size_t Element::numberOfScopedHTMLStyleChildren() const
-{
-    return hasRareData() ? rareData()->numberOfScopedHTMLStyleChildren() : 0;
-}
-
-void Element::registerScopedHTMLStyleChild()
-{
-    ensureRareData()->registerScopedHTMLStyleChild();
-}
-
-void Element::unregisterScopedHTMLStyleChild()
-{
-    ASSERT(hasRareData());
-    if (hasRareData())
-        rareData()->unregisterScopedHTMLStyleChild();
-}
-#endif
-
 bool Element::webkitMatchesSelector(const String& selector, ExceptionCode& ec)
 {
     if (selector.isEmpty()) {
index dd27029..328d266 100644 (file)
@@ -326,13 +326,6 @@ public:
     Element* nextElementSibling() const;
     unsigned childElementCount() const;
 
-#if ENABLE(STYLE_SCOPED)
-    void registerScopedHTMLStyleChild();
-    void unregisterScopedHTMLStyleChild();
-    bool hasScopedHTMLStyleChild() const;
-    size_t numberOfScopedHTMLStyleChildren() const;
-#endif
-
     bool webkitMatchesSelector(const String& selectors, ExceptionCode&);
 
     DOMTokenList* classList();
index 5b753cd..ff45783 100644 (file)
@@ -39,13 +39,6 @@ public:
 
     void resetComputedStyle();
 
-#if ENABLE(STYLE_SCOPED)
-    void registerScopedHTMLStyleChild();
-    void unregisterScopedHTMLStyleChild();
-    bool hasScopedHTMLStyleChild() const;
-    size_t numberOfScopedHTMLStyleChildren() const;
-#endif
-
     using NodeRareData::needsFocusAppearanceUpdateSoonAfterAttach;
     using NodeRareData::setNeedsFocusAppearanceUpdateSoonAfterAttach;
 
@@ -74,10 +67,6 @@ public:
     ShadowRootList m_shadowRootList;
     AtomicString m_shadowPseudoId;
 
-#if ENABLE(STYLE_SCOPED)
-    size_t m_numberOfScopedHTMLStyleChildren;
-#endif
-
     OwnPtr<DatasetDOMStringMap> m_datasetDOMStringMap;
     OwnPtr<ClassList> m_classList;
 
@@ -94,10 +83,8 @@ inline IntSize defaultMinimumSizeForResizing()
 }
 
 inline ElementRareData::ElementRareData()
-    : m_minimumSizeForResizing(defaultMinimumSizeForResizing())
-#if ENABLE(STYLE_SCOPED)
-    , m_numberOfScopedHTMLStyleChildren(0)
-#endif
+    : NodeRareData()
+    , m_minimumSizeForResizing(defaultMinimumSizeForResizing())
     , m_styleAffectedByEmpty(false)
 #if ENABLE(FULLSCREEN_API)
     , m_containsFullScreenElement(false)
@@ -115,29 +102,5 @@ inline void ElementRareData::resetComputedStyle()
     m_computedStyle.clear();
 }
 
-#if ENABLE(STYLE_SCOPED)
-inline void ElementRareData::registerScopedHTMLStyleChild()
-{
-    ++m_numberOfScopedHTMLStyleChildren;
-}
-
-inline void ElementRareData::unregisterScopedHTMLStyleChild()
-{
-    ASSERT(m_numberOfScopedHTMLStyleChildren > 0);
-    if (m_numberOfScopedHTMLStyleChildren > 0)
-        --m_numberOfScopedHTMLStyleChildren;
-}
-
-inline bool ElementRareData::hasScopedHTMLStyleChild() const
-{
-    return m_numberOfScopedHTMLStyleChildren;
-}
-
-inline size_t ElementRareData::numberOfScopedHTMLStyleChildren() const
-{
-    return m_numberOfScopedHTMLStyleChildren;
-}
-#endif
-
 }
 #endif // ElementRareData_h
index 3d9ac3e..8b094be 100644 (file)
@@ -2717,6 +2717,39 @@ void Node::notifyMutationObserversNodeWillDetach()
 }
 #endif // ENABLE(MUTATION_OBSERVERS)
 
+#if ENABLE(STYLE_SCOPED)
+bool Node::hasScopedHTMLStyleChild() const
+{
+    return hasRareData() && rareData()->hasScopedHTMLStyleChild();
+}
+
+size_t Node::numberOfScopedHTMLStyleChildren() const
+{
+    return hasRareData() ? rareData()->numberOfScopedHTMLStyleChildren() : 0;
+}
+
+void Node::registerScopedHTMLStyleChild()
+{
+    ensureRareData()->registerScopedHTMLStyleChild();
+}
+
+void Node::unregisterScopedHTMLStyleChild()
+{
+    ASSERT(hasRareData());
+    if (hasRareData())
+        rareData()->unregisterScopedHTMLStyleChild();
+}
+#else
+bool Node::hasScopedHTMLStyleChild() const
+{
+    return 0;
+}
+
+size_t Node::numberOfScopedHTMLStyleChildren() const
+{
+    return 0;
+}
+#endif
 
 void Node::handleLocalEvents(Event* event)
 {
index eef26cd..502920c 100644 (file)
@@ -638,6 +638,13 @@ public:
     void notifyMutationObserversNodeWillDetach();
 #endif // ENABLE(MUTATION_OBSERVERS)
 
+#if ENABLE(STYLE_SCOPED)
+    void registerScopedHTMLStyleChild();
+    void unregisterScopedHTMLStyleChild();
+#endif
+    bool hasScopedHTMLStyleChild() const;
+    size_t numberOfScopedHTMLStyleChildren() const;
+
 private:
     enum NodeFlags {
         IsTextFlag = 1,
index 77b920d..0864b26 100644 (file)
@@ -100,6 +100,9 @@ public:
         , m_tabIndexWasSetExplicitly(false)
         , m_isFocused(false)
         , m_needsFocusAppearanceUpdateSoonAfterAttach(false)
+#if ENABLE(STYLE_SCOPED)
+        , m_numberOfScopedHTMLStyleChildren(0)
+#endif
     {
     }
 
@@ -226,6 +229,30 @@ public:
     }
 #endif
 
+#if ENABLE(STYLE_SCOPED)
+    void registerScopedHTMLStyleChild()
+    {
+        ++m_numberOfScopedHTMLStyleChildren;
+    }
+
+    void unregisterScopedHTMLStyleChild()
+    {
+        ASSERT(m_numberOfScopedHTMLStyleChildren > 0);
+        if (m_numberOfScopedHTMLStyleChildren > 0)
+            --m_numberOfScopedHTMLStyleChildren;
+    }
+
+    bool hasScopedHTMLStyleChild() const
+    {
+        return m_numberOfScopedHTMLStyleChildren;
+    }
+
+    size_t numberOfScopedHTMLStyleChildren() const
+    {
+        return m_numberOfScopedHTMLStyleChildren;
+    }
+#endif
+
     bool isFocused() const { return m_isFocused; }
     void setFocused(bool focused) { m_isFocused = focused; }
 
@@ -257,6 +284,10 @@ private:
     mutable RefPtr<DOMSettableTokenList> m_itemType;
     mutable OwnPtr<HTMLPropertiesCollection> m_properties;
 #endif
+
+#if ENABLE(STYLE_SCOPED)
+    size_t m_numberOfScopedHTMLStyleChildren;
+#endif
 };
 
 } // namespace WebCore
index f9776d5..d79ebcb 100644 (file)
@@ -83,6 +83,12 @@ void ShadowRootList::removedFromTree(bool deep)
         root->removedFromTree(deep);
 }
 
+void ShadowRootList::willRemove()
+{
+    for (ShadowRoot* root = youngestShadowRoot(); root; root = root->olderShadowRoot())
+        root->willRemove();
+}
+
 void ShadowRootList::hostChildrenChanged()
 {
     for (ShadowRoot* root = youngestShadowRoot(); root; root = root->olderShadowRoot())
index c7fc98c..dbec795 100644 (file)
@@ -52,6 +52,7 @@ public:
     void removedFromDocument();
     void insertedIntoTree(bool deep);
     void removedFromTree(bool deep);
+    void willRemove();
 
     void hostChildrenChanged();
 
index 4156ce5..0c06445 100644 (file)
@@ -88,9 +88,15 @@ void HTMLStyleElement::registerWithScopingNode()
     ASSERT(!m_isRegisteredWithScopingNode);
     ASSERT(inDocument());
     if (!m_isRegisteredWithScopingNode) {
-        Element* scope = parentElement();
+        ContainerNode* scope = parentNode();
         if (!scope)
             return;
+        if (!scope->isElementNode() && !scope->isShadowRoot()) {
+            // DocumentFragment nodes should never be inDocument,
+            // <style> should not be a child of Document, PI or some such.
+            ASSERT_NOT_REACHED();
+            return;
+        }
 
         scope->registerScopedHTMLStyleChild();
         scope->setNeedsStyleRecalc();
@@ -107,7 +113,7 @@ void HTMLStyleElement::unregisterWithScopingNode()
     // Therefore we cannot rely on scoped()!
     ASSERT(m_isRegisteredWithScopingNode);
     if (m_isRegisteredWithScopingNode) {
-        Element* scope = parentElement();
+        ContainerNode* scope = parentNode();
         ASSERT(scope);
         if (scope) {
             ASSERT(scope->hasScopedHTMLStyleChild());
index 071501c..9edbc6d 100644 (file)
@@ -166,11 +166,11 @@ String Internals::elementRenderTreeAsText(Element* element, ExceptionCode& ec)
     return representation;
 }
 
-size_t Internals::numberOfScopedHTMLStyleChildren(const Element* element, ExceptionCode& ec) const
+size_t Internals::numberOfScopedHTMLStyleChildren(const Node* scope, ExceptionCode& ec) const
 {
-    if (element)
+    if (scope && (scope->isElementNode() || scope->isShadowRoot()))
 #if ENABLE(STYLE_SCOPED)
-        return element->numberOfScopedHTMLStyleChildren();
+        return scope->numberOfScopedHTMLStyleChildren();
 #else
         return 0;
 #endif
index d38d880..bf8ad23 100644 (file)
@@ -57,7 +57,7 @@ public:
 
     bool isPreloaded(Document*, const String& url);
 
-    size_t numberOfScopedHTMLStyleChildren(const Element*, ExceptionCode&) const;
+    size_t numberOfScopedHTMLStyleChildren(const Node*, ExceptionCode&) const;
 
 #if ENABLE(SHADOW_DOM)
     typedef ShadowRoot ShadowRootIfShadowDOMEnabledOrNode;
index 75676f6..96a23a7 100644 (file)
@@ -30,7 +30,7 @@ module window {
         DOMString elementRenderTreeAsText(in Element element) raises(DOMException);
         boolean isPreloaded(in Document document, in DOMString url);
 
-        unsigned long numberOfScopedHTMLStyleChildren(in Element element) raises(DOMException);
+        unsigned long numberOfScopedHTMLStyleChildren(in Node scope) raises(DOMException);
 
 #if defined(ENABLE_SHADOW_DOM)
         ShadowRoot ensureShadowRoot(in Element host) raises (DOMException);
index 998ea9c..22e7ea7 100644 (file)
@@ -1,3 +1,15 @@
+2012-02-15  Roland Steiner  <rolandsteiner@chromium.org>
+
+        <style scoped>: Allow <style scoped> as a direct child of a ShadowRoot
+        https://bugs.webkit.org/show_bug.cgi?id=77853
+
+        numberOfScopedHTMLStyleChildren got moved from Element into Node.
+
+        Reviewed by Dimitri Glazkov.
+
+        * win/WebKit2.def:
+        * win/WebKit2CFLite.def:
+
 2012-02-15  No'am Rosenthal  <noam.rosenthal@nokia.com>
 
         [Texmap] Divide TextureMapperNode.cpp to 3 files.
index ffd8ed9..8a6023a 100644 (file)
@@ -170,7 +170,7 @@ EXPORTS
         ?markersFor@DocumentMarkerController@WebCore@@QAE?AV?$Vector@PAVDocumentMarker@WebCore@@$0A@@WTF@@PAVNode@2@VMarkerTypes@DocumentMarker@2@@Z
         ?observeFrame@FrameDestructionObserver@WebCore@@IAEXPAVFrame@2@@Z
         ?overrideUserPreferredLanguages@WebCore@@YAXABV?$Vector@VString@WTF@@$0A@@WTF@@@Z
-        ; ?numberOfScopedHTMLStyleChildren@Element@WebCore@@QBEIXZ
+        ?numberOfScopedHTMLStyleChildren@Node@WebCore@@QBEIXZ
         ?page@Document@WebCore@@QBEPAVPage@2@XZ
         ?paintControlTints@FrameView@WebCore@@AAEXXZ
         ?rangeFromLocationAndLength@TextIterator@WebCore@@SA?AV?$PassRefPtr@VRange@WebCore@@@WTF@@PAVElement@2@HH_N@Z
index 55eca30..149b3af 100644 (file)
@@ -165,7 +165,7 @@ EXPORTS
         ?markersFor@DocumentMarkerController@WebCore@@QAE?AV?$Vector@PAVDocumentMarker@WebCore@@$0A@@WTF@@PAVNode@2@VMarkerTypes@DocumentMarker@2@@Z
         ?observeFrame@FrameDestructionObserver@WebCore@@IAEXPAVFrame@2@@Z
         ?overrideUserPreferredLanguages@WebCore@@YAXABV?$Vector@VString@WTF@@$0A@@WTF@@@Z
-        ; ?numberOfScopedHTMLStyleChildren@Element@WebCore@@QBEIXZ
+        ?numberOfScopedHTMLStyleChildren@Node@WebCore@@QBEIXZ
         ?page@Document@WebCore@@QBEPAVPage@2@XZ
         ?paintControlTints@FrameView@WebCore@@AAEXXZ
         ?rangeFromLocationAndLength@TextIterator@WebCore@@SA?AV?$PassRefPtr@VRange@WebCore@@@WTF@@PAVElement@2@HH_N@Z
index 4264349..1f6b433 100644 (file)
@@ -71,6 +71,7 @@ _ZN7WebCore7toRangeEN3JSC7JSValueE;
 _ZN7WebCore9JSElement10putVirtualEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE;
 _ZN7WebCore9JSElement6s_infoE;
 _ZN7WebCore9toElementEN3JSC7JSValueE;
+_ZNK7WebCore4Node31numberOfScopedHTMLStyleChildrenEv;
 _ZNK7WebCore12RenderObject23absoluteBoundingBoxRectEb;
 _ZNK7WebCore16HTMLInputElement14suggestedValueEv;
 _ZNK7WebCore17JSDOMGlobalObject22scriptExecutionContextEv;
@@ -78,7 +79,6 @@ _ZNK7WebCore20CachedResourceLoader11isPreloadedERKN3WTF6StringE;
 _ZNK7WebCore26HTMLTextFormControlElement21lastChangeWasUserEditEv;
 _ZNK7WebCore5Frame8settingsEv;
 _ZNK7WebCore6JSNode21pushEventHandlerScopeEPN3JSC9ExecStateEPNS1_14ScopeChainNodeE;
-_ZNK7WebCore7Element31numberOfScopedHTMLStyleChildrenEv;
 _ZNK7WebCore7Element13hasShadowRootEv;
 _ZNK7WebCore7Element14shadowRootListEv;
 _ZNK7WebCore8Document4pageEv;