Title: [154099] trunk
Revision
154099
Author
[email protected]
Date
2013-08-15 08:02:11 -0700 (Thu, 15 Aug 2013)

Log Message

ASSERTION FAILED: !m_adoptionIsRequired in void WebCore::TreeShared<NodeType>::ref()
https://bugs.webkit.org/show_bug.cgi?id=116979

Reviewed by Antti Koivisto.

Source/WebCore:

Make sure adoptRef is called before calling setPseudo, for all progress shadow elements.

* html/shadow/ProgressShadowElement.cpp:
(WebCore::ProgressInnerElement::ProgressInnerElement):
(WebCore::ProgressBarElement::ProgressBarElement):
(WebCore::ProgressValueElement::ProgressValueElement):
* html/shadow/ProgressShadowElement.h:
(WebCore::ProgressInnerElement::create):
(WebCore::ProgressBarElement::create):
(WebCore::ProgressValueElement::create):

LayoutTests:

Add testcase from bug with small adjustments.

* svg/custom/tref-with-progress-tag-setpseudo-assert-expected.txt: Added.
* svg/custom/tref-with-progress-tag-setpseudo-assert.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (154098 => 154099)


--- trunk/LayoutTests/ChangeLog	2013-08-15 13:15:36 UTC (rev 154098)
+++ trunk/LayoutTests/ChangeLog	2013-08-15 15:02:11 UTC (rev 154099)
@@ -1,3 +1,15 @@
+2013-08-15  Rob Buis  <[email protected]>
+
+        ASSERTION FAILED: !m_adoptionIsRequired in void WebCore::TreeShared<NodeType>::ref()
+        https://bugs.webkit.org/show_bug.cgi?id=116979
+
+        Reviewed by Antti Koivisto.
+
+        Add testcase from bug with small adjustments.
+
+        * svg/custom/tref-with-progress-tag-setpseudo-assert-expected.txt: Added.
+        * svg/custom/tref-with-progress-tag-setpseudo-assert.html: Added.
+
 2013-08-15  Simon Pena  <[email protected]>
 
         [GTK] Unreviewed gardening. Skip failing test.

Added: trunk/LayoutTests/svg/custom/tref-with-progress-tag-setpseudo-assert-expected.txt (0 => 154099)


--- trunk/LayoutTests/svg/custom/tref-with-progress-tag-setpseudo-assert-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/svg/custom/tref-with-progress-tag-setpseudo-assert-expected.txt	2013-08-15 15:02:11 UTC (rev 154099)
@@ -0,0 +1 @@
+PASS 

Added: trunk/LayoutTests/svg/custom/tref-with-progress-tag-setpseudo-assert.html (0 => 154099)


--- trunk/LayoutTests/svg/custom/tref-with-progress-tag-setpseudo-assert.html	                        (rev 0)
+++ trunk/LayoutTests/svg/custom/tref-with-progress-tag-setpseudo-assert.html	2013-08-15 15:02:11 UTC (rev 154099)
@@ -0,0 +1,11 @@
+<html>
+  <script>
+    if (window.testRunner)
+      testRunner.dumpAsText();
+  </script>
+  <a id="B">PASS</a>
+  <svg xmlns="http://www.w3.org/1999/xhtml">
+    <tref xlink:href=""
+  </svg>
+  <progress></progress>
+</html>

Modified: trunk/Source/WebCore/ChangeLog (154098 => 154099)


--- trunk/Source/WebCore/ChangeLog	2013-08-15 13:15:36 UTC (rev 154098)
+++ trunk/Source/WebCore/ChangeLog	2013-08-15 15:02:11 UTC (rev 154099)
@@ -1,3 +1,21 @@
+2013-08-15  Rob Buis  <[email protected]>
+
+        ASSERTION FAILED: !m_adoptionIsRequired in void WebCore::TreeShared<NodeType>::ref()
+        https://bugs.webkit.org/show_bug.cgi?id=116979
+
+        Reviewed by Antti Koivisto.
+
+        Make sure adoptRef is called before calling setPseudo, for all progress shadow elements.
+
+        * html/shadow/ProgressShadowElement.cpp:
+        (WebCore::ProgressInnerElement::ProgressInnerElement):
+        (WebCore::ProgressBarElement::ProgressBarElement):
+        (WebCore::ProgressValueElement::ProgressValueElement):
+        * html/shadow/ProgressShadowElement.h:
+        (WebCore::ProgressInnerElement::create):
+        (WebCore::ProgressBarElement::create):
+        (WebCore::ProgressValueElement::create):
+
 2013-08-14  Ryuan Choi  <[email protected]>
 
         <https://webkit.org/b/119786> [EFL] decoration of search type is different from other platforms

Modified: trunk/Source/WebCore/html/shadow/ProgressShadowElement.cpp (154098 => 154099)


--- trunk/Source/WebCore/html/shadow/ProgressShadowElement.cpp	2013-08-15 13:15:36 UTC (rev 154098)
+++ trunk/Source/WebCore/html/shadow/ProgressShadowElement.cpp	2013-08-15 15:02:11 UTC (rev 154099)
@@ -59,15 +59,8 @@
 ProgressInnerElement::ProgressInnerElement(Document* document)
     : ProgressShadowElement(document)
 {
-    DEFINE_STATIC_LOCAL(AtomicString, pseudoId, ("-webkit-progress-inner-element", AtomicString::ConstructFromLiteral));
-    setPseudo(pseudoId);
 }
 
-PassRefPtr<ProgressInnerElement> ProgressInnerElement::create(Document* document)
-{
-    return adoptRef(new ProgressInnerElement(document));
-}
-
 RenderObject* ProgressInnerElement::createRenderer(RenderArena* arena, RenderStyle*)
 {
     return new (arena) RenderProgress(this);
@@ -82,6 +75,16 @@
     return progressRenderer && !progressRenderer->style()->hasAppearance() && HTMLDivElement::rendererIsNeeded(context);    
 }
 
+ProgressBarElement::ProgressBarElement(Document* document)
+    : ProgressShadowElement(document)
+{
+}
+
+ProgressValueElement::ProgressValueElement(Document* document)
+    : ProgressShadowElement(document)
+{
+}
+
 void ProgressValueElement::setWidthPercentage(double width)
 {
     setInlineStyleProperty(CSSPropertyWidth, width, CSSPrimitiveValue::CSS_PERCENTAGE);

Modified: trunk/Source/WebCore/html/shadow/ProgressShadowElement.h (154098 => 154099)


--- trunk/Source/WebCore/html/shadow/ProgressShadowElement.h	2013-08-15 13:15:36 UTC (rev 154098)
+++ trunk/Source/WebCore/html/shadow/ProgressShadowElement.h	2013-08-15 15:02:11 UTC (rev 154099)
@@ -59,31 +59,30 @@
     virtual bool rendererIsNeeded(const NodeRenderingContext&);
 };
 
+inline PassRefPtr<ProgressInnerElement> ProgressInnerElement::create(Document* document)
+{
+    RefPtr<ProgressInnerElement> result = adoptRef(new ProgressInnerElement(document));
+    result->setPseudo(AtomicString("-webkit-progress-inner-element", AtomicString::ConstructFromLiteral));
+    return result;
+}
+
 class ProgressBarElement FINAL : public ProgressShadowElement {
 public:
-    ProgressBarElement(Document* document) 
-        : ProgressShadowElement(document)
-    {
-        DEFINE_STATIC_LOCAL(AtomicString, pseudoId, ("-webkit-progress-bar", AtomicString::ConstructFromLiteral));
-        setPseudo(pseudoId);
-    }
+    ProgressBarElement(Document*);
 
     static PassRefPtr<ProgressBarElement> create(Document*);
 };
 
 inline PassRefPtr<ProgressBarElement> ProgressBarElement::create(Document* document)
 {
-    return adoptRef(new ProgressBarElement(document));
+    RefPtr<ProgressBarElement> result = adoptRef(new ProgressBarElement(document));
+    result->setPseudo(AtomicString("-webkit-progress-bar", AtomicString::ConstructFromLiteral));
+    return result;
 }
 
 class ProgressValueElement FINAL : public ProgressShadowElement {
 public:
-    ProgressValueElement(Document* document) 
-        : ProgressShadowElement(document)
-    {
-        DEFINE_STATIC_LOCAL(AtomicString, pseudoId, ("-webkit-progress-value", AtomicString::ConstructFromLiteral));
-        setPseudo(pseudoId);
-    }
+    ProgressValueElement(Document*);
 
     static PassRefPtr<ProgressValueElement> create(Document*);
     void setWidthPercentage(double);
@@ -91,7 +90,9 @@
 
 inline PassRefPtr<ProgressValueElement> ProgressValueElement::create(Document* document)
 {
-    return adoptRef(new ProgressValueElement(document));
+    RefPtr<ProgressValueElement> result = adoptRef(new ProgressValueElement(document));
+    result->setPseudo(AtomicString("-webkit-progress-value", AtomicString::ConstructFromLiteral));
+    return result;
 }
 
 }
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to