Title: [122530] trunk/Source/WebCore
Revision
122530
Author
[email protected]
Date
2012-07-12 17:09:21 -0700 (Thu, 12 Jul 2012)

Log Message

Needs callback before AuthorShadowRoot is added.
https://bugs.webkit.org/show_bug.cgi?id=91167

Reviewed by Hajime Morita.

This is a preliminary patch for adding multiple Shadow DOM support for media elements and form elements.
They assume that UserAgentShadowRoot is the oldest, however currently a page author may try to add
AuthorShadowRoot before adding UserAgentShadowRoot.

This patch adds a callback before AuthorShadowRoot is being added, and allow us to add UserAgentShadowRoot
for those elements. See also Bug 77936, Bug 77937, Bug 90532.

* dom/Element.h:
(WebCore::Element::willAddAuthorShadowRoot):
* dom/ElementShadow.cpp:
(WebCore::ElementShadow::addShadowRoot):
* dom/ElementShadow.h:
(ElementShadow):
* dom/ShadowRoot.cpp:
(WebCore::ShadowRoot::create):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (122529 => 122530)


--- trunk/Source/WebCore/ChangeLog	2012-07-12 23:38:44 UTC (rev 122529)
+++ trunk/Source/WebCore/ChangeLog	2012-07-13 00:09:21 UTC (rev 122530)
@@ -1,3 +1,26 @@
+2012-07-12  Shinya Kawanaka  <[email protected]>
+
+        Needs callback before AuthorShadowRoot is added.
+        https://bugs.webkit.org/show_bug.cgi?id=91167
+
+        Reviewed by Hajime Morita.
+
+        This is a preliminary patch for adding multiple Shadow DOM support for media elements and form elements.
+        They assume that UserAgentShadowRoot is the oldest, however currently a page author may try to add
+        AuthorShadowRoot before adding UserAgentShadowRoot.
+
+        This patch adds a callback before AuthorShadowRoot is being added, and allow us to add UserAgentShadowRoot
+        for those elements. See also Bug 77936, Bug 77937, Bug 90532.
+
+        * dom/Element.h:
+        (WebCore::Element::willAddAuthorShadowRoot):
+        * dom/ElementShadow.cpp:
+        (WebCore::ElementShadow::addShadowRoot):
+        * dom/ElementShadow.h:
+        (ElementShadow):
+        * dom/ShadowRoot.cpp:
+        (WebCore::ShadowRoot::create):
+
 2012-07-12  Dana Jansens  <[email protected]>
 
         [chromium] Remove the RenderPass pointer from RenderPassDrawQuad

Modified: trunk/Source/WebCore/dom/Element.h (122529 => 122530)


--- trunk/Source/WebCore/dom/Element.h	2012-07-12 23:38:44 UTC (rev 122529)
+++ trunk/Source/WebCore/dom/Element.h	2012-07-13 00:09:21 UTC (rev 122530)
@@ -269,6 +269,7 @@
 
     ElementShadow* shadow() const;
     ElementShadow* ensureShadow();
+    virtual void willAddAuthorShadowRoot() { }
 
     // FIXME: Remove Element::ensureShadowRoot
     // https://bugs.webkit.org/show_bug.cgi?id=77608

Modified: trunk/Source/WebCore/dom/ElementShadow.cpp (122529 => 122530)


--- trunk/Source/WebCore/dom/ElementShadow.cpp	2012-07-12 23:38:44 UTC (rev 122529)
+++ trunk/Source/WebCore/dom/ElementShadow.cpp	2012-07-13 00:09:21 UTC (rev 122530)
@@ -65,7 +65,7 @@
     return true;
 }
 
-void ElementShadow::addShadowRoot(Element* shadowHost, PassRefPtr<ShadowRoot> shadowRoot, ExceptionCode& ec)
+void ElementShadow::addShadowRoot(Element* shadowHost, PassRefPtr<ShadowRoot> shadowRoot, ShadowRoot::ShadowRootType type, ExceptionCode& ec)
 {
     ASSERT(shadowHost);
     ASSERT(shadowRoot);
@@ -73,6 +73,9 @@
     if (!validateShadowRoot(shadowHost->document(), shadowRoot.get(), ec))
         return;
 
+    if (type == ShadowRoot::AuthorShadowRoot)
+        shadowHost->willAddAuthorShadowRoot();
+
     shadowRoot->setHost(shadowHost);
     shadowRoot->setParentTreeScope(shadowHost->treeScope());
     m_shadowRoots.push(shadowRoot.get());

Modified: trunk/Source/WebCore/dom/ElementShadow.h (122529 => 122530)


--- trunk/Source/WebCore/dom/ElementShadow.h	2012-07-12 23:38:44 UTC (rev 122529)
+++ trunk/Source/WebCore/dom/ElementShadow.h	2012-07-13 00:09:21 UTC (rev 122530)
@@ -53,7 +53,7 @@
     ShadowRoot* oldestShadowRoot() const;
 
     void removeAllShadowRoots();
-    void addShadowRoot(Element* shadowHost, PassRefPtr<ShadowRoot>, ExceptionCode&);
+    void addShadowRoot(Element* shadowHost, PassRefPtr<ShadowRoot>, ShadowRoot::ShadowRootType, ExceptionCode&);
 
     void attach();
     void detach();

Modified: trunk/Source/WebCore/dom/ShadowRoot.cpp (122529 => 122530)


--- trunk/Source/WebCore/dom/ShadowRoot.cpp	2012-07-12 23:38:44 UTC (rev 122529)
+++ trunk/Source/WebCore/dom/ShadowRoot.cpp	2012-07-13 00:09:21 UTC (rev 122530)
@@ -122,7 +122,7 @@
 #endif
 
     ec = 0;
-    element->ensureShadow()->addShadowRoot(element, shadowRoot, ec);
+    element->ensureShadow()->addShadowRoot(element, shadowRoot, type, ec);
     if (ec)
         return 0;
     ASSERT(element == shadowRoot->host());
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to