Title: [106909] trunk/Source/WebCore
Revision
106909
Author
[email protected]
Date
2012-02-06 23:25:04 -0800 (Mon, 06 Feb 2012)

Log Message

Stop calling Element::ensureShadowRoot() if it is used in construction phase.
https://bugs.webkit.org/show_bug.cgi?id=77929

Patch by Shinya Kawanaka <[email protected]> on 2012-02-06
Reviewed by Hajime Morita.

ShadowRoot's life cycle can be consufing If Element::ensureShadowRoot() is used.
So we want to remove Element::ensureShadowRoot().
This patch replaces Element::ensureShadowRoot() if it is used in object construction phase.

No new tests, no change in behavior.

* html/HTMLDetailsElement.cpp:
(WebCore::HTMLDetailsElement::createShadowSubtree):
* html/HTMLKeygenElement.cpp:
(WebCore::HTMLKeygenElement::HTMLKeygenElement):
* html/HTMLMeterElement.cpp:
(WebCore::HTMLMeterElement::createShadowSubtree):
* html/HTMLProgressElement.cpp:
(WebCore::HTMLProgressElement::createShadowSubtree):
* html/HTMLSummaryElement.cpp:
(WebCore::HTMLSummaryElement::createShadowSubtree):
* html/HTMLTextAreaElement.cpp:
(WebCore::HTMLTextAreaElement::createShadowSubtree):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (106908 => 106909)


--- trunk/Source/WebCore/ChangeLog	2012-02-07 07:22:36 UTC (rev 106908)
+++ trunk/Source/WebCore/ChangeLog	2012-02-07 07:25:04 UTC (rev 106909)
@@ -1,5 +1,31 @@
 2012-02-06  Shinya Kawanaka  <[email protected]>
 
+        Stop calling Element::ensureShadowRoot() if it is used in construction phase.
+        https://bugs.webkit.org/show_bug.cgi?id=77929
+
+        Reviewed by Hajime Morita.
+
+        ShadowRoot's life cycle can be consufing If Element::ensureShadowRoot() is used.
+        So we want to remove Element::ensureShadowRoot().
+        This patch replaces Element::ensureShadowRoot() if it is used in object construction phase.
+
+        No new tests, no change in behavior.
+
+        * html/HTMLDetailsElement.cpp:
+        (WebCore::HTMLDetailsElement::createShadowSubtree):
+        * html/HTMLKeygenElement.cpp:
+        (WebCore::HTMLKeygenElement::HTMLKeygenElement):
+        * html/HTMLMeterElement.cpp:
+        (WebCore::HTMLMeterElement::createShadowSubtree):
+        * html/HTMLProgressElement.cpp:
+        (WebCore::HTMLProgressElement::createShadowSubtree):
+        * html/HTMLSummaryElement.cpp:
+        (WebCore::HTMLSummaryElement::createShadowSubtree):
+        * html/HTMLTextAreaElement.cpp:
+        (WebCore::HTMLTextAreaElement::createShadowSubtree):
+
+2012-02-06  Shinya Kawanaka  <[email protected]>
+
         Remove Element::ensureShadowRoot export.
         https://bugs.webkit.org/show_bug.cgi?id=77932
 

Modified: trunk/Source/WebCore/html/HTMLDetailsElement.cpp (106908 => 106909)


--- trunk/Source/WebCore/html/HTMLDetailsElement.cpp	2012-02-07 07:22:36 UTC (rev 106908)
+++ trunk/Source/WebCore/html/HTMLDetailsElement.cpp	2012-02-07 07:25:04 UTC (rev 106909)
@@ -109,8 +109,10 @@
 void HTMLDetailsElement::createShadowSubtree()
 {
     ASSERT(!shadowRoot());
-    ensureShadowRoot()->appendChild(DetailsSummaryElement::create(document()), ASSERT_NO_EXCEPTION, true);
-    ensureShadowRoot()->appendChild(DetailsContentElement::create(document()), ASSERT_NO_EXCEPTION, true);
+
+    RefPtr<ShadowRoot> root = ShadowRoot::create(this, ASSERT_NO_EXCEPTION);
+    root->appendChild(DetailsSummaryElement::create(document()), ASSERT_NO_EXCEPTION, true);
+    root->appendChild(DetailsContentElement::create(document()), ASSERT_NO_EXCEPTION, true);
 }
 
 Element* HTMLDetailsElement::findMainSummary() const

Modified: trunk/Source/WebCore/html/HTMLKeygenElement.cpp (106908 => 106909)


--- trunk/Source/WebCore/html/HTMLKeygenElement.cpp	2012-02-07 07:22:36 UTC (rev 106908)
+++ trunk/Source/WebCore/html/HTMLKeygenElement.cpp	2012-02-07 07:25:04 UTC (rev 106909)
@@ -85,7 +85,9 @@
         option->appendChild(Text::create(document, keys[i]), ec);
     }
 
-    ensureShadowRoot()->appendChild(select, ec);
+    ASSERT(!shadowRoot());
+    RefPtr<ShadowRoot> root = ShadowRoot::create(this, ASSERT_NO_EXCEPTION);
+    root->appendChild(select, ec);
 }
 
 PassRefPtr<HTMLKeygenElement> HTMLKeygenElement::create(const QualifiedName& tagName, Document* document, HTMLFormElement* form)

Modified: trunk/Source/WebCore/html/HTMLMeterElement.cpp (106908 => 106909)


--- trunk/Source/WebCore/html/HTMLMeterElement.cpp	2012-02-07 07:22:36 UTC (rev 106908)
+++ trunk/Source/WebCore/html/HTMLMeterElement.cpp	2012-02-07 07:25:04 UTC (rev 106909)
@@ -234,11 +234,15 @@
 
 void HTMLMeterElement::createShadowSubtree()
 {
+    ASSERT(!shadowRoot());
+
     RefPtr<MeterBarElement> bar = MeterBarElement::create(document());
     m_value = MeterValueElement::create(document());
     ExceptionCode ec = 0;
     bar->appendChild(m_value, ec);
-    ensureShadowRoot()->appendChild(bar, ec);
+
+    RefPtr<ShadowRoot> root = ShadowRoot::create(this, ASSERT_NO_EXCEPTION);
+    root->appendChild(bar, ec);
 }
 
 } // namespace

Modified: trunk/Source/WebCore/html/HTMLProgressElement.cpp (106908 => 106909)


--- trunk/Source/WebCore/html/HTMLProgressElement.cpp	2012-02-07 07:22:36 UTC (rev 106908)
+++ trunk/Source/WebCore/html/HTMLProgressElement.cpp	2012-02-07 07:25:04 UTC (rev 106909)
@@ -153,11 +153,14 @@
 
 void HTMLProgressElement::createShadowSubtree()
 {
+    ASSERT(!shadowRoot());
+
     RefPtr<ProgressBarElement> bar = ProgressBarElement::create(document());
     m_value = ProgressValueElement::create(document());
-    ExceptionCode ec = 0;
-    bar->appendChild(m_value, ec);
-    ensureShadowRoot()->appendChild(bar, ec);
+    bar->appendChild(m_value, ASSERT_NO_EXCEPTION);
+
+    RefPtr<ShadowRoot> root = ShadowRoot::create(this, ASSERT_NO_EXCEPTION);
+    root->appendChild(bar, ASSERT_NO_EXCEPTION);
 }
 
 } // namespace

Modified: trunk/Source/WebCore/html/HTMLSummaryElement.cpp (106908 => 106909)


--- trunk/Source/WebCore/html/HTMLSummaryElement.cpp	2012-02-07 07:22:36 UTC (rev 106908)
+++ trunk/Source/WebCore/html/HTMLSummaryElement.cpp	2012-02-07 07:25:04 UTC (rev 106909)
@@ -73,9 +73,10 @@
 
 void HTMLSummaryElement::createShadowSubtree()
 {
-    ExceptionCode ec = 0;
-    ensureShadowRoot()->appendChild(DetailsMarkerControl::create(document()), ec, true);
-    ensureShadowRoot()->appendChild(SummaryContentElement::create(document()), ec, true);
+    ASSERT(!shadowRoot());
+    RefPtr<ShadowRoot> root = ShadowRoot::create(this, ASSERT_NO_EXCEPTION);
+    root->appendChild(DetailsMarkerControl::create(document()), ASSERT_NO_EXCEPTION, true);
+    root->appendChild(SummaryContentElement::create(document()), ASSERT_NO_EXCEPTION, true);
 }
 
 HTMLDetailsElement* HTMLSummaryElement::detailsElement() const

Modified: trunk/Source/WebCore/html/HTMLTextAreaElement.cpp (106908 => 106909)


--- trunk/Source/WebCore/html/HTMLTextAreaElement.cpp	2012-02-07 07:22:36 UTC (rev 106908)
+++ trunk/Source/WebCore/html/HTMLTextAreaElement.cpp	2012-02-07 07:25:04 UTC (rev 106909)
@@ -84,8 +84,9 @@
 
 void HTMLTextAreaElement::createShadowSubtree()
 {
-    ExceptionCode ec = 0;
-    ensureShadowRoot()->appendChild(TextControlInnerTextElement::create(document()), ec);
+    ASSERT(!shadowRoot());
+    RefPtr<ShadowRoot> root = ShadowRoot::create(this, ASSERT_NO_EXCEPTION);
+    root->appendChild(TextControlInnerTextElement::create(document()), ASSERT_NO_EXCEPTION);
 }
 
 const AtomicString& HTMLTextAreaElement::formControlType() const
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to