Diff
Modified: trunk/LayoutTests/ChangeLog (103064 => 103065)
--- trunk/LayoutTests/ChangeLog 2011-12-16 14:14:36 UTC (rev 103064)
+++ trunk/LayoutTests/ChangeLog 2011-12-16 14:17:11 UTC (rev 103065)
@@ -1,3 +1,23 @@
+2011-12-16 Sheriff Bot <[email protected]>
+
+ Unreviewed, rolling out r103062.
+ http://trac.webkit.org/changeset/103062
+ https://bugs.webkit.org/show_bug.cgi?id=74715
+
+ It broke many tests (Requested by Ossy on #webkit).
+
+ * fast/lists/ol-reversed-dynamic-expected.txt: Removed.
+ * fast/lists/ol-reversed-dynamic-simple-expected.txt: Removed.
+ * fast/lists/ol-reversed-dynamic-simple.html: Removed.
+ * fast/lists/ol-reversed-dynamic.html: Removed.
+ * fast/lists/ol-reversed-nested-items-expected.txt: Removed.
+ * fast/lists/ol-reversed-nested-items.html: Removed.
+ * fast/lists/ol-reversed-nested-list-expected.txt: Removed.
+ * fast/lists/ol-reversed-nested-list.html: Removed.
+ * fast/lists/ol-reversed-simple-expected.txt: Removed.
+ * fast/lists/ol-reversed-simple.html: Removed.
+ * fast/lists/ol-reversed-simple.xhtml: Removed.
+
2011-12-16 Philippe Normand <[email protected]>
Unreviewed, GTK test_expectations update.
Deleted: trunk/LayoutTests/fast/lists/ol-reversed-dynamic-expected.txt (103064 => 103065)
--- trunk/LayoutTests/fast/lists/ol-reversed-dynamic-expected.txt 2011-12-16 14:14:36 UTC (rev 103064)
+++ trunk/LayoutTests/fast/lists/ol-reversed-dynamic-expected.txt 2011-12-16 14:17:11 UTC (rev 103065)
@@ -1,40 +0,0 @@
-This tests that changing the value of an item updates markers accordingly.
-
-10 Ten
-9 Nine
-8 Eight
-7 Seven
-6 Six
-
-This tests that resetting the value of an item updates markers accordingly.
-
-5 Five
-4 Four
-3 Three
-2 Two
-1 One
-
-This tests that changing the start value of the list updates markers accordingly.
-
-20 Twenty
-19 Nineteen
-18 Eighteen
-17 Seventeen
-16 Sixteen
-
-This tests that removing the custom start value of the list updates markers accordingly.
-
-5 Five
-4 Four
-3 Three
-2 Two
-1 One
-
-This tests that changing the custom start value from 1 to "" works.
-
-5 Five
-4 Four
-3 Three
-2 Two
-1 One
-
Deleted: trunk/LayoutTests/fast/lists/ol-reversed-dynamic-simple-expected.txt (103064 => 103065)
--- trunk/LayoutTests/fast/lists/ol-reversed-dynamic-simple-expected.txt 2011-12-16 14:14:36 UTC (rev 103064)
+++ trunk/LayoutTests/fast/lists/ol-reversed-dynamic-simple-expected.txt 2011-12-16 14:17:11 UTC (rev 103065)
@@ -1,34 +0,0 @@
-This tests that changing the "reversed" property updates markers.
-
-5 Five
-4 Four
-3 Three
-2 Two
-1 One
-
-This tests that changing the "reversed" attribute updates markers.
-
-5 Five
-4 Four
-3 Three
-2 Two
-1 One
-
-This tests that adding new items to a reversed list updates markers.
-
-7 Seven
-6 Six
-5 Five
--> 4 Four
-3 Three
-2 Two
-1 One
-
-This tests that removing existing tems from a reversed list updates markers.
-
-5 Five
-4 Four
-3 Three
-2 Two
-1 One
-
Deleted: trunk/LayoutTests/fast/lists/ol-reversed-dynamic-simple.html (103064 => 103065)
--- trunk/LayoutTests/fast/lists/ol-reversed-dynamic-simple.html 2011-12-16 14:14:36 UTC (rev 103064)
+++ trunk/LayoutTests/fast/lists/ol-reversed-dynamic-simple.html 2011-12-16 14:17:11 UTC (rev 103065)
@@ -1,86 +0,0 @@
-<html>
- <head>
- <script src=""
- <script>
- function test()
- {
- if (window.layoutTestController)
- layoutTestController.dumpAsText();
-
- var list1 = document.getElementById("list1");
- list1.offsetTop; // Force a relayout.
- list1.reversed = true;
- document.getElementById("console1").innerHTML = dumpList(list1);
-
- var list2 = document.getElementById("list2");
- list2.setAttribute("reversed", "");
- document.getElementById("console2").innerHTML = dumpList(list2);
-
- var list3 = document.getElementById("list3");
- var li1 = document.createElement("li");
- li1.innerHTML = "Four";
- list3.querySelector("p").appendChild(li1);
- var li2 = document.createElement("li");
- li2.innerHTML = "One";
- list3.appendChild(li2);
- document.getElementById("console3").innerHTML = dumpList(list3);
-
- var list4 = document.getElementById("list4");
- var div = list4.querySelector("div");
- div.removeChild(div.firstElementChild);
- list4.removeChild(list4.lastElementChild);
- document.getElementById("console4").innerHTML = dumpList(list4);
-
- // Don't show the actual lists as they are useless in the text-only mode.
- list1.parentNode.removeChild(list1);
- list2.parentNode.removeChild(list2);
- list3.parentNode.removeChild(list3);
- list4.parentNode.removeChild(list4);
- }
- </script>
- </head>
- <body _onload_="test()">
- <p>This tests that changing the "reversed" property updates markers.</p>
- <ol id="list1">
- <li>Five</li>
- <li>Four</li>
- <li>Three</li>
- <li>Two</li>
- <li>One</li>
- </ol>
- <p id="console1"></p>
-
- <p>This tests that changing the "reversed" attribute updates markers.</p>
- <ol id="list2">
- <li>Five</li>
- <li>Four</li>
- <li>Three</li>
- <li>Two</li>
- <li>One</li>
- </ol>
- <p id="console2"></p>
-
- <p>This tests that adding new items to a reversed list updates markers.</p>
- <ol id="list3" reversed>
- <li>Seven</li>
- <li>Six</li>
- <li>Five</li>
- <p></p>
- <li>Three</li>
- <li>Two</li>
- </ol>
- <p id="console3"></p>
-
- <p>This tests that removing existing tems from a reversed list updates markers.</p>
- <ol id="list4" reversed>
- <li>Five</li>
- <li>Four</li>
- <li>Three</li>
- <div><li>Foo</li></div>
- <li>Two</li>
- <li>One</li>
- <li>Bar</li>
- </ol>
- <p id="console4"></p>
- </body>
-</html>
Deleted: trunk/LayoutTests/fast/lists/ol-reversed-dynamic.html (103064 => 103065)
--- trunk/LayoutTests/fast/lists/ol-reversed-dynamic.html 2011-12-16 14:14:36 UTC (rev 103064)
+++ trunk/LayoutTests/fast/lists/ol-reversed-dynamic.html 2011-12-16 14:17:11 UTC (rev 103065)
@@ -1,91 +0,0 @@
-<html>
- <head>
- <script src=""
- <script>
- function test()
- {
- if (window.layoutTestController)
- layoutTestController.dumpAsText();
-
- var list1 = document.getElementById("list1");
- list1.offsetTop; // Force a relayout.
- list1.firstElementChild.value = 10;
- document.getElementById("console1").innerHTML = dumpList(list1);
-
- var list2 = document.getElementById("list2");
- list2.querySelector("li[value=\"20\"]").removeAttribute("value");
- document.getElementById("console2").innerHTML = dumpList(list2);
-
- var list3 = document.getElementById("list3");
- list3.start = 20;
- document.getElementById("console3").innerHTML = dumpList(list3);
-
- var list4 = document.getElementById("list4");
- list4.removeAttribute("start");
- document.getElementById("console4").innerHTML = dumpList(list4);
-
- var list5 = document.getElementById("list5");
- list5.setAttribute("start","");
- document.getElementById("console5").innerHTML = dumpList(list5);
-
- // Don't show the actual lists as they are useless in the text-only mode.
- list1.parentNode.removeChild(list1);
- list2.parentNode.removeChild(list2);
- list3.parentNode.removeChild(list3);
- list4.parentNode.removeChild(list4);
- list5.parentNode.removeChild(list5);
- }
- </script>
- </head>
- <body _onload_="test()">
- <p>This tests that changing the value of an item updates markers accordingly.</p>
- <ol id="list1" reversed>
- <li>Ten</li>
- <li>Nine</li>
- <li>Eight</li>
- <li>Seven</li>
- <li>Six</li>
- </ol>
- <p id="console1"></p>
-
- <p>This tests that resetting the value of an item updates markers accordingly.</p>
- <ol id="list2" reversed>
- <li>Five</li>
- <li>Four</li>
- <li value="20">Three</li>
- <li>Two</li>
- <li>One</li>
- </ol>
- <p id="console2"></p>
-
- <p>This tests that changing the start value of the list updates markers accordingly.</p>
- <ol id="list3" reversed start="5">
- <li>Twenty</li>
- <li>Nineteen</li>
- <li>Eighteen</li>
- <li>Seventeen</li>
- <li>Sixteen</li>
- </ol>
- <p id="console3"></p>
-
- <p>This tests that removing the custom start value of the list updates markers accordingly.</p>
- <ol id="list4" reversed start="20">
- <li>Five</li>
- <li>Four</li>
- <li>Three</li>
- <li>Two</li>
- <li>One</li>
- </ol>
- <p id="console4"></p>
-
- <p>This tests that changing the custom start value from 1 to "" works.</p>
- <ol id="list5" reversed start="1">
- <li>Five</li>
- <li>Four</li>
- <li>Three</li>
- <li>Two</li>
- <li>One</li>
- </ol>
- <p id="console5"></p>
- </body>
-</html>
Deleted: trunk/LayoutTests/fast/lists/ol-reversed-nested-items-expected.txt (103064 => 103065)
--- trunk/LayoutTests/fast/lists/ol-reversed-nested-items-expected.txt 2011-12-16 14:14:36 UTC (rev 103064)
+++ trunk/LayoutTests/fast/lists/ol-reversed-nested-items-expected.txt 2011-12-16 14:17:11 UTC (rev 103065)
@@ -1,15 +0,0 @@
-This tests that list items are properly marked when some of the items are indirect children of a reversed list.
-
-12 Twelve
-11 Eleven
-10 Ten
-9 Nine
-8 Eight
--> 7 Seven
-4 Four
-3 Three
--> 2 Two
--> 1 One
-0 Zero
--1 Minus One
-
Deleted: trunk/LayoutTests/fast/lists/ol-reversed-nested-items.html (103064 => 103065)
--- trunk/LayoutTests/fast/lists/ol-reversed-nested-items.html 2011-12-16 14:14:36 UTC (rev 103064)
+++ trunk/LayoutTests/fast/lists/ol-reversed-nested-items.html 2011-12-16 14:17:11 UTC (rev 103065)
@@ -1,42 +0,0 @@
-<html>
- <head>
- <script src=""
- <script>
- function test()
- {
- if (window.layoutTestController)
- layoutTestController.dumpAsText();
-
- var list = document.getElementById("list");
- document.getElementById("console").innerHTML = dumpList(list);
-
- // Don't show the actual list as it is useless in the text-only mode.
- list.parentNode.removeChild(list);
- }
- </script>
- </head>
- <body _onload_="test()">
- <p>This tests that list items are properly marked when some of the items are indirect children of a reversed list.</p>
- <ol id="list" reversed="reversed">
- <li>Twelve</li>
- <li>Eleven</li>
- <li>Ten</li>
- <li>Nine
- <li>Eight</li>
- <b>
- <li>Seven</li>
- </b>
- </li>
- <li value="4">Four</li>
- <li>Three</li>
- <div>
- <li>Two</li>
- <li>One</li>
- </div>
- <li>Zero</li>
- <li>Minus One</li>
- </ol>
-
- <div id="console"></div>
- </body>
-</html>
Deleted: trunk/LayoutTests/fast/lists/ol-reversed-nested-list-expected.txt (103064 => 103065)
--- trunk/LayoutTests/fast/lists/ol-reversed-nested-list-expected.txt 2011-12-16 14:14:36 UTC (rev 103064)
+++ trunk/LayoutTests/fast/lists/ol-reversed-nested-list-expected.txt 2011-12-16 14:17:11 UTC (rev 103065)
@@ -1,16 +0,0 @@
-This tests that list items are properly marked when a reversed list contains nested lists.
-
-10 Ten
-9 Nine
-8 Eight
-7 Seven One Two
--> -> ◦ One
--> -> ◦ Two
-6 Six
-5 Five
--> 2 Two
--> 1 One
-4 Four
-3 Three
-2 Two
-
Deleted: trunk/LayoutTests/fast/lists/ol-reversed-nested-list.html (103064 => 103065)
--- trunk/LayoutTests/fast/lists/ol-reversed-nested-list.html 2011-12-16 14:14:36 UTC (rev 103064)
+++ trunk/LayoutTests/fast/lists/ol-reversed-nested-list.html 2011-12-16 14:17:11 UTC (rev 103065)
@@ -1,43 +0,0 @@
-<html>
- <head>
- <script src=""
- <script>
- function test()
- {
- if (window.layoutTestController)
- layoutTestController.dumpAsText();
-
- var list = document.getElementById("list");
- document.getElementById("console").innerHTML = dumpList(list);
-
- // Don't show the actual list as it is useless in the text-only mode.
- list.parentNode.removeChild(list);
- }
- </script>
- </head>
- <body _onload_="test()">
- <p>This tests that list items are properly marked when a reversed list contains nested lists.</p>
- <ol id="list" start="10" reversed>
- <li>Ten</li>
- <li>Nine</li>
- <li>Eight</li>
- <li>Seven
- <ul>
- <li>One</li>
- <li>Two</li>
- </ul>
- </li>
- <li>Six</li>
- <li>Five</li>
- <ol reversed>
- <li>Two</li>
- <li>One</li>
- </ol>
- <li>Four</li>
- <li>Three</li>
- <li>Two</li>
- </ol>
-
- <div id="console"></div>
- </body>
-</html>
Deleted: trunk/LayoutTests/fast/lists/ol-reversed-simple-expected.txt (103064 => 103065)
--- trunk/LayoutTests/fast/lists/ol-reversed-simple-expected.txt 2011-12-16 14:14:36 UTC (rev 103064)
+++ trunk/LayoutTests/fast/lists/ol-reversed-simple-expected.txt 2011-12-16 14:17:11 UTC (rev 103065)
@@ -1,46 +0,0 @@
-This tests that reversed lists render properly.
-
-5 Five
-4 Four
-3 Three
-2 Two
-1 One
-
-This tests that reversed lists with a custom start value render properly.
-
-10 Ten
-9 Nine
-8 Eight
-7 Seven
-6 Six
-
-This tests that reversed lists with explicit item values render properly.
-
-5 Five
-4 Four
-2 Two
-1 One
-0 Zero
-
-This tests that reversed lists with a custom start value and explicit item values render properly.
-
-10 Ten
-9 Nine
-3 Three
-2 Two
-1 One
-3 Three
-2 Two
-1 One
-
-This tests that reversed lists with a negative start value render properly.
-
--5 Minus Five
--6 Minus Six
--7 Minus Seven
--8 Minus Eight
--9 Minus Nine
-
-This tests that reversed lists have the start attribute equals the number of list items when no start value is specified.
-
-Value of start attribute of the list is : 5
Deleted: trunk/LayoutTests/fast/lists/ol-reversed-simple.html (103064 => 103065)
--- trunk/LayoutTests/fast/lists/ol-reversed-simple.html 2011-12-16 14:14:36 UTC (rev 103064)
+++ trunk/LayoutTests/fast/lists/ol-reversed-simple.html 2011-12-16 14:17:11 UTC (rev 103065)
@@ -1,103 +0,0 @@
-<html>
- <head>
- <script src=""
- <script>
- function test()
- {
- if (window.layoutTestController)
- layoutTestController.dumpAsText();
-
- var list1 = document.getElementById("list1");
- document.getElementById("console1").innerHTML = dumpList(list1);
-
- var list2 = document.getElementById("list2");
- document.getElementById("console2").innerHTML = dumpList(list2);
-
- var list3 = document.getElementById("list3");
- document.getElementById("console3").innerHTML = dumpList(list3);
-
- var list4 = document.getElementById("list4");
- document.getElementById("console4").innerHTML = dumpList(list4);
-
- var list5 = document.getElementById("list5");
- document.getElementById("console5").innerHTML = dumpList(list5);
-
- var list6 = document.getElementById("list6");
- document.getElementById("console6").innerHTML = "Value of start attribute of the list is : " + list6.start;
-
- // Don't show the actual lists as they are useless in the text-only mode.
- list1.parentNode.removeChild(list1);
- list2.parentNode.removeChild(list2);
- list3.parentNode.removeChild(list3);
- list4.parentNode.removeChild(list4);
- list5.parentNode.removeChild(list5);
- list6.parentNode.removeChild(list6);
- }
- </script>
- </head>
- <body _onload_="test()">
- <p>This tests that reversed lists render properly.</p>
- <ol id="list1" reversed>
- <li>Five</li>
- <li>Four</li>
- <div style="display: list-item">Three</div>
- <li>Two</li>
- <li>One</li>
- </ol>
- <p id="console1"></p>
-
- <p>This tests that reversed lists with a custom start value render properly.</p>
- <ol id="list2" reversed="reversed" start="10">
- <li>Ten</li>
- <li>Nine</li>
- <li>Eight</li>
- <li>Seven</li>
- <li>Six</li>
- </ol>
- <p id="console2"></p>
-
- <p>This tests that reversed lists with explicit item values render properly.</p>
- <ol id="list3" reversed>
- <li>Five</li>
- <li>Four</li>
- <li value="2">Two</li>
- <li>One</li>
- <li>Zero</li>
- </ol>
- <p id="console3"></p>
-
- <p>This tests that reversed lists with a custom start value and explicit item values render properly.</p>
- <ol id="list4" reversed start="10">
- <li>Ten</li>
- <li>Nine</li>
- <li value="3">Three</li>
- <li>Two</li>
- <li>One</li>
- <li value="3">Three</li>
- <li>Two</li>
- <li>One</li>
- </ol>
- <p id="console4"></p>
-
- <p>This tests that reversed lists with a negative start value render properly.</p>
- <ol id="list5" reversed="reversed" start="-5">
- <li>Minus Five</li>
- <li>Minus Six</li>
- <li>Minus Seven</li>
- <li>Minus Eight</li>
- <li>Minus Nine</li>
- </ol>
- <p id="console5"></p>
-
- <p>This tests that reversed lists have the start attribute equals the number of list items when no start value is specified.</p>
- <ol id="list6" reversed>
- <li>Five</li>
- <li>Four</li>
- <li>Three</li>
- <li>Two</li>
- <li>One</li>
- </ol>
- <p id="console6"></p>
-
- </body>
-</html>
Deleted: trunk/LayoutTests/fast/lists/ol-reversed-simple.xhtml
(Binary files differ)
Modified: trunk/Source/WebCore/ChangeLog (103064 => 103065)
--- trunk/Source/WebCore/ChangeLog 2011-12-16 14:14:36 UTC (rev 103064)
+++ trunk/Source/WebCore/ChangeLog 2011-12-16 14:17:11 UTC (rev 103065)
@@ -1,3 +1,25 @@
+2011-12-16 Sheriff Bot <[email protected]>
+
+ Unreviewed, rolling out r103062.
+ http://trac.webkit.org/changeset/103062
+ https://bugs.webkit.org/show_bug.cgi?id=74715
+
+ It broke many tests (Requested by Ossy on #webkit).
+
+ * html/HTMLAttributeNames.in:
+ * html/HTMLOListElement.cpp:
+ (WebCore::HTMLOListElement::HTMLOListElement):
+ (WebCore::HTMLOListElement::parseMappedAttribute):
+ * html/HTMLOListElement.h:
+ (WebCore::HTMLOListElement::start):
+ * html/HTMLOListElement.idl:
+ * rendering/RenderListItem.cpp:
+ (WebCore::previousListItem):
+ (WebCore::RenderListItem::calcValue):
+ (WebCore::RenderListItem::explicitValueChanged):
+ (WebCore::RenderListItem::updateListMarkerNumbers):
+ * rendering/RenderListItem.h:
+
2011-12-16 Alexis Menard <[email protected]>, Jakub Wieczorek <[email protected]>
Add support for <ol reversed>.
Modified: trunk/Source/WebCore/html/HTMLAttributeNames.in (103064 => 103065)
--- trunk/Source/WebCore/html/HTMLAttributeNames.in 2011-12-16 14:14:36 UTC (rev 103064)
+++ trunk/Source/WebCore/html/HTMLAttributeNames.in 2011-12-16 14:17:11 UTC (rev 103065)
@@ -266,7 +266,6 @@
required
results
rev
-reversed
role
rows
rowspan
Modified: trunk/Source/WebCore/html/HTMLOListElement.cpp (103064 => 103065)
--- trunk/Source/WebCore/html/HTMLOListElement.cpp 2011-12-16 14:14:36 UTC (rev 103064)
+++ trunk/Source/WebCore/html/HTMLOListElement.cpp 2011-12-16 14:17:11 UTC (rev 103065)
@@ -35,11 +35,7 @@
HTMLOListElement::HTMLOListElement(const QualifiedName& tagName, Document* document)
: HTMLElement(tagName, document)
- , m_start(0xBADBEEF)
- , m_itemCount(0)
- , m_hasExplicitStart(false)
- , m_isReversed(false)
- , m_shouldRecalculateItemCount(false)
+ , m_start(1)
{
ASSERT(hasTagName(olTag));
}
@@ -78,20 +74,17 @@
else if (attr->value() == "1")
addCSSProperty(attr, CSSPropertyListStyleType, CSSValueDecimal);
} else if (attr->name() == startAttr) {
- int oldStart = start();
bool canParse;
- int parsedStart = attr->value().toInt(&canParse);
- m_hasExplicitStart = canParse;
- m_start = canParse ? parsedStart : 0xBADBEEF;
- if (oldStart == start())
+ int start = attr->value().toInt(&canParse);
+ if (!canParse)
+ start = 1;
+ if (start == m_start)
return;
- updateItemValues();
- } else if (attr->name() == reversedAttr) {
- bool reversed = !attr->isNull();
- if (reversed == m_isReversed)
- return;
- m_isReversed = reversed;
- updateItemValues();
+ m_start = start;
+ for (RenderObject* child = renderer(); child; child = child->nextInPreOrder(renderer())) {
+ if (child->isListItem())
+ toRenderListItem(child)->updateValue();
+ }
} else
HTMLElement::parseMappedAttribute(attr);
}
@@ -101,20 +94,4 @@
setAttribute(startAttr, String::number(start));
}
-void HTMLOListElement::updateItemValues()
-{
- for (RenderListItem* listItem = RenderListItem::nextListItem(renderer()); listItem; listItem = RenderListItem::nextListItem(renderer(), listItem))
- listItem->updateValue();
}
-
-void HTMLOListElement::recalculateItemCount()
-{
- m_itemCount = 0;
-
- for (RenderListItem* listItem = RenderListItem::nextListItem(renderer()); listItem; listItem = RenderListItem::nextListItem(renderer(), listItem))
- m_itemCount++;
-
- m_shouldRecalculateItemCount = false;
-}
-
-}
Modified: trunk/Source/WebCore/html/HTMLOListElement.h (103064 => 103065)
--- trunk/Source/WebCore/html/HTMLOListElement.h 2011-12-16 14:14:36 UTC (rev 103064)
+++ trunk/Source/WebCore/html/HTMLOListElement.h 2011-12-16 14:17:11 UTC (rev 103065)
@@ -32,36 +32,16 @@
static PassRefPtr<HTMLOListElement> create(Document*);
static PassRefPtr<HTMLOListElement> create(const QualifiedName&, Document*);
- int start() const { return m_hasExplicitStart ? m_start : (m_isReversed ? itemCount() : 1); }
+ int start() const { return m_start; }
void setStart(int);
- bool isReversed() const { return m_isReversed; }
-
- void itemCountChanged() { m_shouldRecalculateItemCount = true; }
-
private:
HTMLOListElement(const QualifiedName&, Document*);
- void updateItemValues();
-
- unsigned itemCount() const
- {
- if (m_shouldRecalculateItemCount)
- const_cast<HTMLOListElement*>(this)->recalculateItemCount();
- return m_itemCount;
- }
-
- void recalculateItemCount();
-
virtual bool mapToEntry(const QualifiedName&, MappedAttributeEntry&) const;
virtual void parseMappedAttribute(Attribute*);
int m_start;
- unsigned m_itemCount;
-
- bool m_hasExplicitStart : 1;
- bool m_isReversed : 1;
- bool m_shouldRecalculateItemCount : 1;
};
Modified: trunk/Source/WebCore/html/HTMLOListElement.idl (103064 => 103065)
--- trunk/Source/WebCore/html/HTMLOListElement.idl 2011-12-16 14:14:36 UTC (rev 103064)
+++ trunk/Source/WebCore/html/HTMLOListElement.idl 2011-12-16 14:17:11 UTC (rev 103065)
@@ -22,7 +22,6 @@
interface HTMLOListElement : HTMLElement {
attribute [Reflect] boolean compact;
attribute long start;
- attribute [Reflect] boolean reversed;
attribute [Reflect] DOMString type;
};
Modified: trunk/Source/WebCore/rendering/RenderListItem.cpp (103064 => 103065)
--- trunk/Source/WebCore/rendering/RenderListItem.cpp 2011-12-16 14:14:36 UTC (rev 103064)
+++ trunk/Source/WebCore/rendering/RenderListItem.cpp 2011-12-16 14:17:11 UTC (rev 103065)
@@ -101,33 +101,14 @@
return firstNode;
}
-RenderListItem* RenderListItem::nextListItem(RenderObject* list, RenderListItem* item)
+static RenderListItem* previousListItem(Node* list, const RenderListItem* item)
{
- if (!list)
- return 0;
-
- RenderObject* renderer = item ? item : list;
- while ((renderer = renderer->nextInPreOrder(list))) {
- if (renderer->node() && isList(renderer->node())) {
- // We've found a nested, independent list: nothing to do here.
- renderer = renderer->nextInPreOrderAfterChildren(list);
- continue;
- }
-
- if (renderer->isListItem())
- return toRenderListItem(renderer);
- }
- return 0;
-}
-
-static RenderListItem* previousListItem(RenderObject* list, const RenderListItem* item)
-{
- for (RenderObject* renderer = item->previousInPreOrder(); renderer && renderer != list; renderer = renderer->previousInPreOrder()) {
+ for (RenderObject* renderer = item->previousInPreOrder(); renderer && renderer != list->renderer(); renderer = renderer->previousInPreOrder()) {
if (!renderer->isListItem())
continue;
Node* otherList = enclosingList(toRenderListItem(renderer));
// This item is part of our current list, so it's what we're looking for.
- if (list->node() == otherList)
+ if (list == otherList)
return toRenderListItem(renderer);
// We found ourself inside another list; lets skip the rest of it.
// Use nextInPreOrder() here because the other list itself may actually
@@ -143,22 +124,13 @@
{
if (m_hasExplicitValue)
return m_explicitValue;
-
Node* list = enclosingList(this);
- RenderObject* listRenderer = list ? list->renderer() : 0;
- HTMLOListElement* oListElement = (list && list->hasTagName(olTag)) ? static_cast<HTMLOListElement*>(list) : 0;
- int valueStep = 1;
- if (oListElement && oListElement->isReversed())
- valueStep = -1;
-
// FIXME: This recurses to a possible depth of the length of the list.
// That's not good -- we need to change this to an iterative algorithm.
- if (RenderListItem* previousItem = previousListItem(listRenderer, this))
- return previousItem->value() + valueStep;
-
- if (oListElement)
- return oListElement->start();
-
+ if (RenderListItem* previousItem = previousListItem(list, this))
+ return previousItem->value() + 1;
+ if (list && list->hasTagName(olTag))
+ return static_cast<HTMLOListElement*>(list)->start();
return 1;
}
@@ -420,8 +392,15 @@
RenderObject* listRenderer = 0;
if (listNode)
listRenderer = listNode->renderer();
- for (RenderListItem* item = this; item; item = nextListItem(listRenderer, item))
- item->updateValue();
+ for (RenderObject* renderer = this; renderer; renderer = renderer->nextInPreOrder(listRenderer))
+ if (renderer->isListItem()) {
+ RenderListItem* item = toRenderListItem(renderer);
+ if (!item->m_hasExplicitValue) {
+ item->m_isValueUpToDate = false;
+ if (RenderListMarker* marker = item->m_marker)
+ marker->setNeedsLayoutAndPrefWidthsRecalc();
+ }
+ }
}
void RenderListItem::setExplicitValue(int value)
@@ -447,11 +426,6 @@
explicitValueChanged();
}
-static RenderListItem* previousOrNextItem(bool isListReversed, RenderObject* list, RenderListItem* item)
-{
- return isListReversed ? previousListItem(list, item) : RenderListItem::nextListItem(list, item);
-}
-
void RenderListItem::updateListMarkerNumbers()
{
Node* listNode = enclosingList(this);
@@ -459,22 +433,30 @@
if (!listNode || !listNode->renderer())
return;
- bool isListReversed = false;
RenderObject* list = listNode->renderer();
- HTMLOListElement* oListElement = (listNode && listNode->hasTagName(olTag)) ? static_cast<HTMLOListElement*>(listNode) : 0;
- if (oListElement) {
- oListElement->itemCountChanged();
- isListReversed = oListElement->isReversed();
- }
- for (RenderListItem* item = previousOrNextItem(isListReversed, list, this); item; item = previousOrNextItem(isListReversed, list, item)) {
- if (!item->m_isValueUpToDate) {
- // If an item has been marked for update before, we can safely
- // assume that all the following ones have too.
- // This gives us the opportunity to stop here and avoid
- // marking the same nodes again.
- break;
+ RenderObject* child = nextInPreOrder(list);
+ while (child) {
+ if (child->node() && isList(child->node())) {
+ // We've found a nested, independent list: nothing to do here.
+ child = child->nextInPreOrderAfterChildren(list);
+ continue;
}
- item->updateValue();
+
+ if (child->isListItem()) {
+ RenderListItem* item = toRenderListItem(child);
+
+ if (!item->m_isValueUpToDate) {
+ // If an item has been marked for update before, we can safely
+ // assume that all the following ones have too.
+ // This gives us the opportunity to stop here and avoid
+ // marking the same nodes again.
+ break;
+ }
+
+ item->updateValue();
+ }
+
+ child = child->nextInPreOrder(list);
}
}
Modified: trunk/Source/WebCore/rendering/RenderListItem.h (103064 => 103065)
--- trunk/Source/WebCore/rendering/RenderListItem.h 2011-12-16 14:14:36 UTC (rev 103064)
+++ trunk/Source/WebCore/rendering/RenderListItem.h 2011-12-16 14:17:11 UTC (rev 103065)
@@ -49,8 +49,6 @@
void updateListMarkerNumbers();
- static RenderListItem* nextListItem(RenderObject* listRenderer, RenderListItem* = 0);
-
private:
virtual const char* renderName() const { return "RenderListItem"; }