Title: [147930] trunk
Revision
147930
Author
[email protected]
Date
2013-04-08 10:41:06 -0700 (Mon, 08 Apr 2013)

Log Message

Counter still gets incremented when counter-increment is set to none
https://bugs.webkit.org/show_bug.cgi?id=84985

Patch by Yi Shen <[email protected]> on 2013-04-08
Reviewed by Darin Adler.

When the counter-increment is set to none, no counters are incremented.

Source/WebCore:

Tests: New test cases added in fast/css/counters/counter-increment-tests.htm

* css/StyleBuilder.cpp:
(WebCore::ApplyPropertyCounter::applyValue):

LayoutTests:

* fast/css/counters/counter-increment-tests-expected.txt: Added new test cases.
* fast/css/counters/counter-increment-tests.htm: Added new test cases.

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (147929 => 147930)


--- trunk/LayoutTests/ChangeLog	2013-04-08 17:37:55 UTC (rev 147929)
+++ trunk/LayoutTests/ChangeLog	2013-04-08 17:41:06 UTC (rev 147930)
@@ -1,3 +1,15 @@
+2013-04-08  Yi Shen  <[email protected]>
+
+        Counter still gets incremented when counter-increment is set to none
+        https://bugs.webkit.org/show_bug.cgi?id=84985
+
+        Reviewed by Darin Adler.
+
+        When the counter-increment is set to none, no counters are incremented.
+
+        * fast/css/counters/counter-increment-tests-expected.txt: Added new test cases.
+        * fast/css/counters/counter-increment-tests.htm: Added new test cases.
+
 2013-04-08  Douglas Stockwell  <[email protected]>
 
         Crash in WebCore::ElementRuleCollector::collectMatchingRulesForList

Modified: trunk/LayoutTests/fast/css/counters/counter-increment-tests-expected.txt (147929 => 147930)


--- trunk/LayoutTests/fast/css/counters/counter-increment-tests-expected.txt	2013-04-08 17:37:55 UTC (rev 147929)
+++ trunk/LayoutTests/fast/css/counters/counter-increment-tests-expected.txt	2013-04-08 17:41:06 UTC (rev 147930)
@@ -55,4 +55,11 @@
 PASS window.internals.counterValue(document.getElementById('test54')) is '10'
 PASS window.internals.counterValue(document.getElementById('test55')) is '1'
 PASS window.internals.counterValue(document.getElementById('test56')) is '-2147483648'
-
+PASS window.internals.counterValue(document.getElementById('test57')) is '5'
+PASS window.internals.counterValue(document.getElementById('none57')) is '5'
+PASS window.internals.counterValue(document.getElementById('wrapper58')) is '5'
+PASS window.internals.counterValue(document.getElementById('test58a')) is '5.2'
+PASS window.internals.counterValue(document.getElementById('none58')) is '5.2'
+PASS window.internals.counterValue(document.getElementById('none58a')) is '5.7'
+PASS window.internals.counterValue(document.getElementById('test58b')) is '5.12'
+    

Modified: trunk/LayoutTests/fast/css/counters/counter-increment-tests.htm (147929 => 147930)


--- trunk/LayoutTests/fast/css/counters/counter-increment-tests.htm	2013-04-08 17:37:55 UTC (rev 147929)
+++ trunk/LayoutTests/fast/css/counters/counter-increment-tests.htm	2013-04-08 17:41:06 UTC (rev 147930)
@@ -72,6 +72,13 @@
                 shouldBe("window.internals.counterValue(document.getElementById('test54'))", "'10'");
                 shouldBe("window.internals.counterValue(document.getElementById('test55'))", "'1'");
                 shouldBe("window.internals.counterValue(document.getElementById('test56'))", "'-2147483648'");
+                shouldBe("window.internals.counterValue(document.getElementById('test57'))", "'5'");
+                shouldBe("window.internals.counterValue(document.getElementById('none57'))", "'5'");
+                shouldBe("window.internals.counterValue(document.getElementById('wrapper58'))", "'5'");
+                shouldBe("window.internals.counterValue(document.getElementById('test58a'))", "'5.2'");
+                shouldBe("window.internals.counterValue(document.getElementById('none58'))", "'5.2'");
+                shouldBe("window.internals.counterValue(document.getElementById('none58a'))", "'5.7'");
+                shouldBe("window.internals.counterValue(document.getElementById('test58b'))", "'5.12'");
                 if (window.testRunner)
                     testRunner.notifyDone();
             }
@@ -537,7 +544,62 @@
             {
                 content: counter(ident56);
             }
-
+            div.class57
+            {
+                counter-increment: ident57 5;
+            }
+            #test57:before
+            {
+                content: counter(ident57);
+            }
+            #none57
+            {
+                counter-increment: none;
+            }
+            #none57:before
+            {
+                content: counter(ident57);
+            }
+            div.class58
+            {
+                counter-increment: ident58 5;
+            }
+            #wrapper58:before
+            {
+                content: counter(ident58);
+            }
+            #test58a
+            {
+                counter-reset: ident58 2;
+            }
+            #test58a:before
+            {
+                content: counters(ident58, ".");
+            }
+            #none58
+            {
+                counter-increment: none;
+            }
+            #none58:before
+            {
+                content: counters(ident58, ".");
+            }
+            #none58a
+            {
+                counter-increment: ident58 5;
+            }
+            #none58a:before
+            {
+                content: counters(ident58, ".");
+            }
+            #test58b
+            {
+                counter-increment: ident58 5;
+            }
+            #test58b:before
+            {
+                content: counters(ident58, ".");
+            }
         </style>
     </head>
     <body _onload_="setTimeout('run()', 0);">
@@ -599,5 +661,14 @@
         </div>
         <div id="test55"></div>
         <div id="test56"></div>
+        <div id="test57" class="class57"></div>
+        <div id="none57" class="class57"></div>
+        <div id="wrapper58" class="class58">
+            <span id="test58a"></span>
+            <span id="none58">
+                <span id="none58a"></span>
+            </span>
+            <span id="test58b"></span>
+        </div>
     </body>
 </html>
\ No newline at end of file

Modified: trunk/Source/WebCore/ChangeLog (147929 => 147930)


--- trunk/Source/WebCore/ChangeLog	2013-04-08 17:37:55 UTC (rev 147929)
+++ trunk/Source/WebCore/ChangeLog	2013-04-08 17:41:06 UTC (rev 147930)
@@ -1,3 +1,17 @@
+2013-04-08  Yi Shen  <[email protected]>
+
+        Counter still gets incremented when counter-increment is set to none
+        https://bugs.webkit.org/show_bug.cgi?id=84985
+
+        Reviewed by Darin Adler.
+
+        When the counter-increment is set to none, no counters are incremented.
+
+        Tests: New test cases added in fast/css/counters/counter-increment-tests.htm
+
+        * css/StyleBuilder.cpp:
+        (WebCore::ApplyPropertyCounter::applyValue):
+
 2013-04-08  Douglas Stockwell  <[email protected]>
 
         Crash in WebCore::ElementRuleCollector::collectMatchingRulesForList

Modified: trunk/Source/WebCore/css/StyleBuilder.cpp (147929 => 147930)


--- trunk/Source/WebCore/css/StyleBuilder.cpp	2013-04-08 17:37:55 UTC (rev 147929)
+++ trunk/Source/WebCore/css/StyleBuilder.cpp	2013-04-08 17:41:06 UTC (rev 147930)
@@ -1136,11 +1136,11 @@
     }
     static void applyValue(CSSPropertyID, StyleResolver* styleResolver, CSSValue* value)
     {
-        if (!value->isValueList())
+        bool setCounterIncrementToNone = counterBehavior == Increment && value->isPrimitiveValue() && static_cast<CSSPrimitiveValue*>(value)->getIdent() == CSSValueNone;
+
+        if (!value->isValueList() && !setCounterIncrementToNone)
             return;
 
-        CSSValueList* list = static_cast<CSSValueList*>(value);
-
         CounterDirectiveMap& map = styleResolver->style()->accessCounterDirectives();
         typedef CounterDirectiveMap::iterator Iterator;
 
@@ -1150,7 +1150,11 @@
                 it->value.clearReset();
             else
                 it->value.clearIncrement();
-
+        
+        if (setCounterIncrementToNone)
+            return;
+        
+        CSSValueList* list = static_cast<CSSValueList*>(value);
         int length = list ? list->length() : 0;
         for (int i = 0; i < length; ++i) {
             CSSValue* currValue = list->itemWithoutBoundsCheck(i);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to