SVGUseElement should not use Element::ensureShadowRoot().
authorshinyak@chromium.org <shinyak@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 12 Jul 2012 00:05:12 +0000 (00:05 +0000)
committershinyak@chromium.org <shinyak@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 12 Jul 2012 00:05:12 +0000 (00:05 +0000)
https://bugs.webkit.org/show_bug.cgi?id=90938

Reviewed by Hajime Morita.

We would like to remove Element::ensureShadowRoot() because we would like to stabilize the lifecycle of Shadow DOM.
This patch rewrites SVGUseElement::create() not to use Element::ensureShadowRoot(). Since our convention to create
a shadow subtree is to create a method createShadowSubtree(), I obeyed it.

No new tests. Simple refactoring.

* svg/SVGUseElement.cpp:
(WebCore::SVGUseElement::create):
(WebCore::SVGUseElement::createShadowSubtree):
(WebCore):
* svg/SVGUseElement.h:
(SVGUseElement):

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

Source/WebCore/ChangeLog
Source/WebCore/svg/SVGUseElement.cpp
Source/WebCore/svg/SVGUseElement.h

index 2c5a1d6..611e480 100644 (file)
@@ -1,3 +1,23 @@
+2012-07-11  Shinya Kawanaka  <shinyak@chromium.org> 
+
+        SVGUseElement should not use Element::ensureShadowRoot().
+        https://bugs.webkit.org/show_bug.cgi?id=90938
+
+        Reviewed by Hajime Morita.
+
+        We would like to remove Element::ensureShadowRoot() because we would like to stabilize the lifecycle of Shadow DOM.
+        This patch rewrites SVGUseElement::create() not to use Element::ensureShadowRoot(). Since our convention to create
+        a shadow subtree is to create a method createShadowSubtree(), I obeyed it.
+
+        No new tests. Simple refactoring.
+
+        * svg/SVGUseElement.cpp:
+        (WebCore::SVGUseElement::create):
+        (WebCore::SVGUseElement::createShadowSubtree):
+        (WebCore):
+        * svg/SVGUseElement.h:
+        (SVGUseElement):
+
 2012-07-11  Alexandre Elias  <aelias@google.com>
 
         [chromium] Move compositor quads to Platform/chromium/public
index 76684c9..b45ec46 100755 (executable)
@@ -99,7 +99,7 @@ PassRefPtr<SVGUseElement> SVGUseElement::create(const QualifiedName& tagName, Do
 {
     // Always build a #shadow-root for SVGUseElement.
     RefPtr<SVGUseElement> use = adoptRef(new SVGUseElement(tagName, document, wasInsertedByParser));
-    use->ensureShadowRoot();
+    use->createShadowSubtree();
     return use.release();
 }
 
@@ -109,6 +109,12 @@ SVGUseElement::~SVGUseElement()
         m_cachedDocument->removeClient(this);
 }
 
+void SVGUseElement::createShadowSubtree()
+{
+    ASSERT(!shadow());
+    ShadowRoot::create(this, ShadowRoot::UserAgentShadowRoot);
+}
+
 SVGElementInstance* SVGUseElement::instanceRoot()
 {
     // If there is no element instance tree, force immediate SVGElementInstance tree
index 971ade6..59228c4 100755 (executable)
@@ -56,6 +56,8 @@ public:
 private:
     SVGUseElement(const QualifiedName&, Document*, bool wasInsertedByParser);
 
+    void createShadowSubtree();
+
     virtual bool isValid() const { return SVGTests::isValid(); }
     virtual bool supportsFocus() const { return true; }