- Revision
- 197354
- Author
- cdu...@apple.com
- Date
- 2016-02-29 09:32:18 -0800 (Mon, 29 Feb 2016)
Log Message
Align td.rowSpan / td.colSpan with the specification
https://bugs.webkit.org/show_bug.cgi?id=154803
Reviewed by Darin Adler.
LayoutTests/imported/w3c:
Rebaseline now that more checks are passing.
* web-platform-tests/html/dom/reflection-tabular-expected.txt:
Source/WebCore:
Align td.rowSpan / td.colSpan with the specification:
- https://html.spec.whatwg.org/multipage/tables.html#htmltablecellelement
- https://html.spec.whatwg.org/multipage/tables.html#dom-tdth-colspan
- https://html.spec.whatwg.org/multipage/tables.html#dom-tdth-rowspan
In particular, the following changes were made:
- Change type from 'long' to 'unsigned long'.
- Use HTML rules for parsing unsigned integers:
- https://html.spec.whatwg.org/multipage/infrastructure.html#rules-for-parsing-non-negative-integers
- Use 1 as default value when the input value is out of range instead
of 0 when setting.
- rowspan is still clamped to [1, 8190] internally but we now expose the
unclamped value to JS as this is an internal restriction. The same is
done for a colSpan value of 0, we expose 0 to the Web but clamp to 1
internally.
No new tests, already covered by existing test.
* html/HTMLTableCellElement.cpp:
(WebCore::HTMLTableCellElement::colSpan):
(WebCore::HTMLTableCellElement::rowSpan):
(WebCore::HTMLTableCellElement::rowSpanForBindings):
(WebCore::HTMLTableCellElement::setColSpan):
(WebCore::HTMLTableCellElement::setRowSpanForBindings):
(WebCore::HTMLTableCellElement::axis): Deleted.
(WebCore::HTMLTableCellElement::headers): Deleted.
* html/HTMLTableCellElement.h:
* html/HTMLTableCellElement.idl:
Modified Paths
Diff
Modified: trunk/LayoutTests/imported/w3c/ChangeLog (197353 => 197354)
--- trunk/LayoutTests/imported/w3c/ChangeLog 2016-02-29 17:28:13 UTC (rev 197353)
+++ trunk/LayoutTests/imported/w3c/ChangeLog 2016-02-29 17:32:18 UTC (rev 197354)
@@ -1,3 +1,14 @@
+2016-02-29 Chris Dumez <cdu...@apple.com>
+
+ Align td.rowSpan / td.colSpan with the specification
+ https://bugs.webkit.org/show_bug.cgi?id=154803
+
+ Reviewed by Darin Adler.
+
+ Rebaseline now that more checks are passing.
+
+ * web-platform-tests/html/dom/reflection-tabular-expected.txt:
+
2016-02-28 Chris Dumez <cdu...@apple.com>
Parse HTMLOLElement.start as per the HTML spec
Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/reflection-tabular-expected.txt (197353 => 197354)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/reflection-tabular-expected.txt 2016-02-29 17:28:13 UTC (rev 197353)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/reflection-tabular-expected.txt 2016-02-29 17:32:18 UTC (rev 197354)
@@ -9871,7 +9871,7 @@
PASS td.colSpan: setAttribute() to -1 followed by getAttribute()
PASS td.colSpan: setAttribute() to -1 followed by IDL get
PASS td.colSpan: setAttribute() to 0 followed by getAttribute()
-FAIL td.colSpan: setAttribute() to 0 followed by IDL get assert_equals: expected 0 but got 1
+PASS td.colSpan: setAttribute() to 0 followed by IDL get
PASS td.colSpan: setAttribute() to 1 followed by getAttribute()
PASS td.colSpan: setAttribute() to 1 followed by IDL get
PASS td.colSpan: setAttribute() to 257 followed by getAttribute()
@@ -9889,15 +9889,15 @@
PASS td.colSpan: setAttribute() to "-1" followed by getAttribute()
PASS td.colSpan: setAttribute() to "-1" followed by IDL get
PASS td.colSpan: setAttribute() to "-0" followed by getAttribute()
-FAIL td.colSpan: setAttribute() to "-0" followed by IDL get assert_equals: expected 0 but got 1
+PASS td.colSpan: setAttribute() to "-0" followed by IDL get
PASS td.colSpan: setAttribute() to "0" followed by getAttribute()
-FAIL td.colSpan: setAttribute() to "0" followed by IDL get assert_equals: expected 0 but got 1
+PASS td.colSpan: setAttribute() to "0" followed by IDL get
PASS td.colSpan: setAttribute() to "1" followed by getAttribute()
PASS td.colSpan: setAttribute() to "1" followed by IDL get
PASS td.colSpan: setAttribute() to "\t7" followed by getAttribute()
PASS td.colSpan: setAttribute() to "\t7" followed by IDL get
PASS td.colSpan: setAttribute() to "\v7" followed by getAttribute()
-FAIL td.colSpan: setAttribute() to "\v7" followed by IDL get assert_equals: expected 1 but got 7
+PASS td.colSpan: setAttribute() to "\v7" followed by IDL get
PASS td.colSpan: setAttribute() to "\f7" followed by getAttribute()
PASS td.colSpan: setAttribute() to "\f7" followed by IDL get
PASS td.colSpan: setAttribute() to " 7" followed by getAttribute()
@@ -9911,39 +9911,39 @@
PASS td.colSpan: setAttribute() to "\r7" followed by getAttribute()
PASS td.colSpan: setAttribute() to "\r7" followed by IDL get
PASS td.colSpan: setAttribute() to "
7" followed by getAttribute()
-FAIL td.colSpan: setAttribute() to "
7" followed by IDL get assert_equals: expected 1 but got 7
+PASS td.colSpan: setAttribute() to "
7" followed by IDL get
PASS td.colSpan: setAttribute() to "
7" followed by getAttribute()
PASS td.colSpan: setAttribute() to "
7" followed by IDL get
PASS td.colSpan: setAttribute() to " 7" followed by getAttribute()
-FAIL td.colSpan: setAttribute() to " 7" followed by IDL get assert_equals: expected 1 but got 7
+PASS td.colSpan: setAttribute() to " 7" followed by IDL get
PASS td.colSpan: setAttribute() to "7" followed by getAttribute()
PASS td.colSpan: setAttribute() to "7" followed by IDL get
PASS td.colSpan: setAttribute() to " 7" followed by getAttribute()
-FAIL td.colSpan: setAttribute() to " 7" followed by IDL get assert_equals: expected 1 but got 7
+PASS td.colSpan: setAttribute() to " 7" followed by IDL get
PASS td.colSpan: setAttribute() to " 7" followed by getAttribute()
-FAIL td.colSpan: setAttribute() to " 7" followed by IDL get assert_equals: expected 1 but got 7
+PASS td.colSpan: setAttribute() to " 7" followed by IDL get
PASS td.colSpan: setAttribute() to " 7" followed by getAttribute()
-FAIL td.colSpan: setAttribute() to " 7" followed by IDL get assert_equals: expected 1 but got 7
+PASS td.colSpan: setAttribute() to " 7" followed by IDL get
PASS td.colSpan: setAttribute() to " 7" followed by getAttribute()
-FAIL td.colSpan: setAttribute() to " 7" followed by IDL get assert_equals: expected 1 but got 7
+PASS td.colSpan: setAttribute() to " 7" followed by IDL get
PASS td.colSpan: setAttribute() to " 7" followed by getAttribute()
-FAIL td.colSpan: setAttribute() to " 7" followed by IDL get assert_equals: expected 1 but got 7
+PASS td.colSpan: setAttribute() to " 7" followed by IDL get
PASS td.colSpan: setAttribute() to " 7" followed by getAttribute()
-FAIL td.colSpan: setAttribute() to " 7" followed by IDL get assert_equals: expected 1 but got 7
+PASS td.colSpan: setAttribute() to " 7" followed by IDL get
PASS td.colSpan: setAttribute() to " 7" followed by getAttribute()
-FAIL td.colSpan: setAttribute() to " 7" followed by IDL get assert_equals: expected 1 but got 7
+PASS td.colSpan: setAttribute() to " 7" followed by IDL get
PASS td.colSpan: setAttribute() to " 7" followed by getAttribute()
-FAIL td.colSpan: setAttribute() to " 7" followed by IDL get assert_equals: expected 1 but got 7
+PASS td.colSpan: setAttribute() to " 7" followed by IDL get
PASS td.colSpan: setAttribute() to " 7" followed by getAttribute()
-FAIL td.colSpan: setAttribute() to " 7" followed by IDL get assert_equals: expected 1 but got 7
+PASS td.colSpan: setAttribute() to " 7" followed by IDL get
PASS td.colSpan: setAttribute() to " 7" followed by getAttribute()
-FAIL td.colSpan: setAttribute() to " 7" followed by IDL get assert_equals: expected 1 but got 7
+PASS td.colSpan: setAttribute() to " 7" followed by IDL get
PASS td.colSpan: setAttribute() to " 7" followed by getAttribute()
-FAIL td.colSpan: setAttribute() to " 7" followed by IDL get assert_equals: expected 1 but got 7
+PASS td.colSpan: setAttribute() to " 7" followed by IDL get
PASS td.colSpan: setAttribute() to " 7" followed by getAttribute()
PASS td.colSpan: setAttribute() to " 7" followed by IDL get
PASS td.colSpan: setAttribute() to " 7" followed by getAttribute()
-FAIL td.colSpan: setAttribute() to " 7" followed by IDL get assert_equals: expected 1 but got 7
+PASS td.colSpan: setAttribute() to " 7" followed by IDL get
PASS td.colSpan: setAttribute() to " \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f foo " followed by getAttribute()
PASS td.colSpan: setAttribute() to " \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f foo " followed by IDL get
PASS td.colSpan: setAttribute() to undefined followed by getAttribute()
@@ -9970,7 +9970,7 @@
PASS td.colSpan: setAttribute() to object "3" followed by IDL get
PASS td.colSpan: IDL set to 0 should not throw
PASS td.colSpan: IDL set to 0 followed by getAttribute()
-FAIL td.colSpan: IDL set to 0 followed by IDL get assert_equals: expected 0 but got 1
+PASS td.colSpan: IDL set to 0 followed by IDL get
PASS td.colSpan: IDL set to 1 should not throw
PASS td.colSpan: IDL set to 1 followed by getAttribute()
PASS td.colSpan: IDL set to 1 followed by IDL get
@@ -9982,12 +9982,12 @@
PASS td.colSpan: IDL set to 2147483647 followed by IDL get
PASS td.colSpan: IDL set to "-0" should not throw
PASS td.colSpan: IDL set to "-0" followed by getAttribute()
-FAIL td.colSpan: IDL set to "-0" followed by IDL get assert_equals: expected 0 but got 1
+PASS td.colSpan: IDL set to "-0" followed by IDL get
PASS td.colSpan: IDL set to 2147483648 should not throw
-FAIL td.colSpan: IDL set to 2147483648 followed by getAttribute() assert_equals: expected "1" but got "-2147483648"
+PASS td.colSpan: IDL set to 2147483648 followed by getAttribute()
PASS td.colSpan: IDL set to 2147483648 followed by IDL get
PASS td.colSpan: IDL set to 4294967295 should not throw
-FAIL td.colSpan: IDL set to 4294967295 followed by getAttribute() assert_equals: expected "1" but got "-1"
+PASS td.colSpan: IDL set to 4294967295 followed by getAttribute()
PASS td.colSpan: IDL set to 4294967295 followed by IDL get
PASS td.rowSpan: typeof IDL attribute
PASS td.rowSpan: IDL get with DOM attribute unset
@@ -10000,13 +10000,13 @@
PASS td.rowSpan: setAttribute() to -1 followed by getAttribute()
PASS td.rowSpan: setAttribute() to -1 followed by IDL get
PASS td.rowSpan: setAttribute() to 0 followed by getAttribute()
-FAIL td.rowSpan: setAttribute() to 0 followed by IDL get assert_equals: expected 0 but got 1
+PASS td.rowSpan: setAttribute() to 0 followed by IDL get
PASS td.rowSpan: setAttribute() to 1 followed by getAttribute()
PASS td.rowSpan: setAttribute() to 1 followed by IDL get
PASS td.rowSpan: setAttribute() to 257 followed by getAttribute()
PASS td.rowSpan: setAttribute() to 257 followed by IDL get
PASS td.rowSpan: setAttribute() to 2147483647 followed by getAttribute()
-FAIL td.rowSpan: setAttribute() to 2147483647 followed by IDL get assert_equals: expected 2147483647 but got 8190
+PASS td.rowSpan: setAttribute() to 2147483647 followed by IDL get
PASS td.rowSpan: setAttribute() to 2147483648 followed by getAttribute()
PASS td.rowSpan: setAttribute() to 2147483648 followed by IDL get
PASS td.rowSpan: setAttribute() to 4294967295 followed by getAttribute()
@@ -10018,15 +10018,15 @@
PASS td.rowSpan: setAttribute() to "-1" followed by getAttribute()
PASS td.rowSpan: setAttribute() to "-1" followed by IDL get
PASS td.rowSpan: setAttribute() to "-0" followed by getAttribute()
-FAIL td.rowSpan: setAttribute() to "-0" followed by IDL get assert_equals: expected 0 but got 1
+PASS td.rowSpan: setAttribute() to "-0" followed by IDL get
PASS td.rowSpan: setAttribute() to "0" followed by getAttribute()
-FAIL td.rowSpan: setAttribute() to "0" followed by IDL get assert_equals: expected 0 but got 1
+PASS td.rowSpan: setAttribute() to "0" followed by IDL get
PASS td.rowSpan: setAttribute() to "1" followed by getAttribute()
PASS td.rowSpan: setAttribute() to "1" followed by IDL get
PASS td.rowSpan: setAttribute() to "\t7" followed by getAttribute()
PASS td.rowSpan: setAttribute() to "\t7" followed by IDL get
PASS td.rowSpan: setAttribute() to "\v7" followed by getAttribute()
-FAIL td.rowSpan: setAttribute() to "\v7" followed by IDL get assert_equals: expected 1 but got 7
+PASS td.rowSpan: setAttribute() to "\v7" followed by IDL get
PASS td.rowSpan: setAttribute() to "\f7" followed by getAttribute()
PASS td.rowSpan: setAttribute() to "\f7" followed by IDL get
PASS td.rowSpan: setAttribute() to " 7" followed by getAttribute()
@@ -10040,39 +10040,39 @@
PASS td.rowSpan: setAttribute() to "\r7" followed by getAttribute()
PASS td.rowSpan: setAttribute() to "\r7" followed by IDL get
PASS td.rowSpan: setAttribute() to "
7" followed by getAttribute()
-FAIL td.rowSpan: setAttribute() to "
7" followed by IDL get assert_equals: expected 1 but got 7
+PASS td.rowSpan: setAttribute() to "
7" followed by IDL get
PASS td.rowSpan: setAttribute() to "
7" followed by getAttribute()
PASS td.rowSpan: setAttribute() to "
7" followed by IDL get
PASS td.rowSpan: setAttribute() to " 7" followed by getAttribute()
-FAIL td.rowSpan: setAttribute() to " 7" followed by IDL get assert_equals: expected 1 but got 7
+PASS td.rowSpan: setAttribute() to " 7" followed by IDL get
PASS td.rowSpan: setAttribute() to "7" followed by getAttribute()
PASS td.rowSpan: setAttribute() to "7" followed by IDL get
PASS td.rowSpan: setAttribute() to " 7" followed by getAttribute()
-FAIL td.rowSpan: setAttribute() to " 7" followed by IDL get assert_equals: expected 1 but got 7
+PASS td.rowSpan: setAttribute() to " 7" followed by IDL get
PASS td.rowSpan: setAttribute() to " 7" followed by getAttribute()
-FAIL td.rowSpan: setAttribute() to " 7" followed by IDL get assert_equals: expected 1 but got 7
+PASS td.rowSpan: setAttribute() to " 7" followed by IDL get
PASS td.rowSpan: setAttribute() to " 7" followed by getAttribute()
-FAIL td.rowSpan: setAttribute() to " 7" followed by IDL get assert_equals: expected 1 but got 7
+PASS td.rowSpan: setAttribute() to " 7" followed by IDL get
PASS td.rowSpan: setAttribute() to " 7" followed by getAttribute()
-FAIL td.rowSpan: setAttribute() to " 7" followed by IDL get assert_equals: expected 1 but got 7
+PASS td.rowSpan: setAttribute() to " 7" followed by IDL get
PASS td.rowSpan: setAttribute() to " 7" followed by getAttribute()
-FAIL td.rowSpan: setAttribute() to " 7" followed by IDL get assert_equals: expected 1 but got 7
+PASS td.rowSpan: setAttribute() to " 7" followed by IDL get
PASS td.rowSpan: setAttribute() to " 7" followed by getAttribute()
-FAIL td.rowSpan: setAttribute() to " 7" followed by IDL get assert_equals: expected 1 but got 7
+PASS td.rowSpan: setAttribute() to " 7" followed by IDL get
PASS td.rowSpan: setAttribute() to " 7" followed by getAttribute()
-FAIL td.rowSpan: setAttribute() to " 7" followed by IDL get assert_equals: expected 1 but got 7
+PASS td.rowSpan: setAttribute() to " 7" followed by IDL get
PASS td.rowSpan: setAttribute() to " 7" followed by getAttribute()
-FAIL td.rowSpan: setAttribute() to " 7" followed by IDL get assert_equals: expected 1 but got 7
+PASS td.rowSpan: setAttribute() to " 7" followed by IDL get
PASS td.rowSpan: setAttribute() to " 7" followed by getAttribute()
-FAIL td.rowSpan: setAttribute() to " 7" followed by IDL get assert_equals: expected 1 but got 7
+PASS td.rowSpan: setAttribute() to " 7" followed by IDL get
PASS td.rowSpan: setAttribute() to " 7" followed by getAttribute()
-FAIL td.rowSpan: setAttribute() to " 7" followed by IDL get assert_equals: expected 1 but got 7
+PASS td.rowSpan: setAttribute() to " 7" followed by IDL get
PASS td.rowSpan: setAttribute() to " 7" followed by getAttribute()
-FAIL td.rowSpan: setAttribute() to " 7" followed by IDL get assert_equals: expected 1 but got 7
+PASS td.rowSpan: setAttribute() to " 7" followed by IDL get
PASS td.rowSpan: setAttribute() to " 7" followed by getAttribute()
PASS td.rowSpan: setAttribute() to " 7" followed by IDL get
PASS td.rowSpan: setAttribute() to " 7" followed by getAttribute()
-FAIL td.rowSpan: setAttribute() to " 7" followed by IDL get assert_equals: expected 1 but got 7
+PASS td.rowSpan: setAttribute() to " 7" followed by IDL get
PASS td.rowSpan: setAttribute() to " \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f foo " followed by getAttribute()
PASS td.rowSpan: setAttribute() to " \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f foo " followed by IDL get
PASS td.rowSpan: setAttribute() to undefined followed by getAttribute()
@@ -10099,7 +10099,7 @@
PASS td.rowSpan: setAttribute() to object "3" followed by IDL get
PASS td.rowSpan: IDL set to 0 should not throw
PASS td.rowSpan: IDL set to 0 followed by getAttribute()
-FAIL td.rowSpan: IDL set to 0 followed by IDL get assert_equals: expected 0 but got 1
+PASS td.rowSpan: IDL set to 0 followed by IDL get
PASS td.rowSpan: IDL set to 1 should not throw
PASS td.rowSpan: IDL set to 1 followed by getAttribute()
PASS td.rowSpan: IDL set to 1 followed by IDL get
@@ -10108,15 +10108,15 @@
PASS td.rowSpan: IDL set to 257 followed by IDL get
PASS td.rowSpan: IDL set to 2147483647 should not throw
PASS td.rowSpan: IDL set to 2147483647 followed by getAttribute()
-FAIL td.rowSpan: IDL set to 2147483647 followed by IDL get assert_equals: expected 2147483647 but got 8190
+PASS td.rowSpan: IDL set to 2147483647 followed by IDL get
PASS td.rowSpan: IDL set to "-0" should not throw
PASS td.rowSpan: IDL set to "-0" followed by getAttribute()
-FAIL td.rowSpan: IDL set to "-0" followed by IDL get assert_equals: expected 0 but got 1
+PASS td.rowSpan: IDL set to "-0" followed by IDL get
PASS td.rowSpan: IDL set to 2147483648 should not throw
-FAIL td.rowSpan: IDL set to 2147483648 followed by getAttribute() assert_equals: expected "1" but got "-2147483648"
+PASS td.rowSpan: IDL set to 2147483648 followed by getAttribute()
PASS td.rowSpan: IDL set to 2147483648 followed by IDL get
PASS td.rowSpan: IDL set to 4294967295 should not throw
-FAIL td.rowSpan: IDL set to 4294967295 followed by getAttribute() assert_equals: expected "1" but got "-1"
+PASS td.rowSpan: IDL set to 4294967295 followed by getAttribute()
PASS td.rowSpan: IDL set to 4294967295 followed by IDL get
PASS td.align: typeof IDL attribute
PASS td.align: IDL get with DOM attribute unset
@@ -11663,7 +11663,7 @@
PASS th.colSpan: setAttribute() to -1 followed by getAttribute()
PASS th.colSpan: setAttribute() to -1 followed by IDL get
PASS th.colSpan: setAttribute() to 0 followed by getAttribute()
-FAIL th.colSpan: setAttribute() to 0 followed by IDL get assert_equals: expected 0 but got 1
+PASS th.colSpan: setAttribute() to 0 followed by IDL get
PASS th.colSpan: setAttribute() to 1 followed by getAttribute()
PASS th.colSpan: setAttribute() to 1 followed by IDL get
PASS th.colSpan: setAttribute() to 257 followed by getAttribute()
@@ -11681,15 +11681,15 @@
PASS th.colSpan: setAttribute() to "-1" followed by getAttribute()
PASS th.colSpan: setAttribute() to "-1" followed by IDL get
PASS th.colSpan: setAttribute() to "-0" followed by getAttribute()
-FAIL th.colSpan: setAttribute() to "-0" followed by IDL get assert_equals: expected 0 but got 1
+PASS th.colSpan: setAttribute() to "-0" followed by IDL get
PASS th.colSpan: setAttribute() to "0" followed by getAttribute()
-FAIL th.colSpan: setAttribute() to "0" followed by IDL get assert_equals: expected 0 but got 1
+PASS th.colSpan: setAttribute() to "0" followed by IDL get
PASS th.colSpan: setAttribute() to "1" followed by getAttribute()
PASS th.colSpan: setAttribute() to "1" followed by IDL get
PASS th.colSpan: setAttribute() to "\t7" followed by getAttribute()
PASS th.colSpan: setAttribute() to "\t7" followed by IDL get
PASS th.colSpan: setAttribute() to "\v7" followed by getAttribute()
-FAIL th.colSpan: setAttribute() to "\v7" followed by IDL get assert_equals: expected 1 but got 7
+PASS th.colSpan: setAttribute() to "\v7" followed by IDL get
PASS th.colSpan: setAttribute() to "\f7" followed by getAttribute()
PASS th.colSpan: setAttribute() to "\f7" followed by IDL get
PASS th.colSpan: setAttribute() to " 7" followed by getAttribute()
@@ -11703,39 +11703,39 @@
PASS th.colSpan: setAttribute() to "\r7" followed by getAttribute()
PASS th.colSpan: setAttribute() to "\r7" followed by IDL get
PASS th.colSpan: setAttribute() to "
7" followed by getAttribute()
-FAIL th.colSpan: setAttribute() to "
7" followed by IDL get assert_equals: expected 1 but got 7
+PASS th.colSpan: setAttribute() to "
7" followed by IDL get
PASS th.colSpan: setAttribute() to "
7" followed by getAttribute()
PASS th.colSpan: setAttribute() to "
7" followed by IDL get
PASS th.colSpan: setAttribute() to " 7" followed by getAttribute()
-FAIL th.colSpan: setAttribute() to " 7" followed by IDL get assert_equals: expected 1 but got 7
+PASS th.colSpan: setAttribute() to " 7" followed by IDL get
PASS th.colSpan: setAttribute() to "7" followed by getAttribute()
PASS th.colSpan: setAttribute() to "7" followed by IDL get
PASS th.colSpan: setAttribute() to " 7" followed by getAttribute()
-FAIL th.colSpan: setAttribute() to " 7" followed by IDL get assert_equals: expected 1 but got 7
+PASS th.colSpan: setAttribute() to " 7" followed by IDL get
PASS th.colSpan: setAttribute() to " 7" followed by getAttribute()
-FAIL th.colSpan: setAttribute() to " 7" followed by IDL get assert_equals: expected 1 but got 7
+PASS th.colSpan: setAttribute() to " 7" followed by IDL get
PASS th.colSpan: setAttribute() to " 7" followed by getAttribute()
-FAIL th.colSpan: setAttribute() to " 7" followed by IDL get assert_equals: expected 1 but got 7
+PASS th.colSpan: setAttribute() to " 7" followed by IDL get
PASS th.colSpan: setAttribute() to " 7" followed by getAttribute()
-FAIL th.colSpan: setAttribute() to " 7" followed by IDL get assert_equals: expected 1 but got 7
+PASS th.colSpan: setAttribute() to " 7" followed by IDL get
PASS th.colSpan: setAttribute() to " 7" followed by getAttribute()
-FAIL th.colSpan: setAttribute() to " 7" followed by IDL get assert_equals: expected 1 but got 7
+PASS th.colSpan: setAttribute() to " 7" followed by IDL get
PASS th.colSpan: setAttribute() to " 7" followed by getAttribute()
-FAIL th.colSpan: setAttribute() to " 7" followed by IDL get assert_equals: expected 1 but got 7
+PASS th.colSpan: setAttribute() to " 7" followed by IDL get
PASS th.colSpan: setAttribute() to " 7" followed by getAttribute()
-FAIL th.colSpan: setAttribute() to " 7" followed by IDL get assert_equals: expected 1 but got 7
+PASS th.colSpan: setAttribute() to " 7" followed by IDL get
PASS th.colSpan: setAttribute() to " 7" followed by getAttribute()
-FAIL th.colSpan: setAttribute() to " 7" followed by IDL get assert_equals: expected 1 but got 7
+PASS th.colSpan: setAttribute() to " 7" followed by IDL get
PASS th.colSpan: setAttribute() to " 7" followed by getAttribute()
-FAIL th.colSpan: setAttribute() to " 7" followed by IDL get assert_equals: expected 1 but got 7
+PASS th.colSpan: setAttribute() to " 7" followed by IDL get
PASS th.colSpan: setAttribute() to " 7" followed by getAttribute()
-FAIL th.colSpan: setAttribute() to " 7" followed by IDL get assert_equals: expected 1 but got 7
+PASS th.colSpan: setAttribute() to " 7" followed by IDL get
PASS th.colSpan: setAttribute() to " 7" followed by getAttribute()
-FAIL th.colSpan: setAttribute() to " 7" followed by IDL get assert_equals: expected 1 but got 7
+PASS th.colSpan: setAttribute() to " 7" followed by IDL get
PASS th.colSpan: setAttribute() to " 7" followed by getAttribute()
PASS th.colSpan: setAttribute() to " 7" followed by IDL get
PASS th.colSpan: setAttribute() to " 7" followed by getAttribute()
-FAIL th.colSpan: setAttribute() to " 7" followed by IDL get assert_equals: expected 1 but got 7
+PASS th.colSpan: setAttribute() to " 7" followed by IDL get
PASS th.colSpan: setAttribute() to " \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f foo " followed by getAttribute()
PASS th.colSpan: setAttribute() to " \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f foo " followed by IDL get
PASS th.colSpan: setAttribute() to undefined followed by getAttribute()
@@ -11762,7 +11762,7 @@
PASS th.colSpan: setAttribute() to object "3" followed by IDL get
PASS th.colSpan: IDL set to 0 should not throw
PASS th.colSpan: IDL set to 0 followed by getAttribute()
-FAIL th.colSpan: IDL set to 0 followed by IDL get assert_equals: expected 0 but got 1
+PASS th.colSpan: IDL set to 0 followed by IDL get
PASS th.colSpan: IDL set to 1 should not throw
PASS th.colSpan: IDL set to 1 followed by getAttribute()
PASS th.colSpan: IDL set to 1 followed by IDL get
@@ -11774,12 +11774,12 @@
PASS th.colSpan: IDL set to 2147483647 followed by IDL get
PASS th.colSpan: IDL set to "-0" should not throw
PASS th.colSpan: IDL set to "-0" followed by getAttribute()
-FAIL th.colSpan: IDL set to "-0" followed by IDL get assert_equals: expected 0 but got 1
+PASS th.colSpan: IDL set to "-0" followed by IDL get
PASS th.colSpan: IDL set to 2147483648 should not throw
-FAIL th.colSpan: IDL set to 2147483648 followed by getAttribute() assert_equals: expected "1" but got "-2147483648"
+PASS th.colSpan: IDL set to 2147483648 followed by getAttribute()
PASS th.colSpan: IDL set to 2147483648 followed by IDL get
PASS th.colSpan: IDL set to 4294967295 should not throw
-FAIL th.colSpan: IDL set to 4294967295 followed by getAttribute() assert_equals: expected "1" but got "-1"
+PASS th.colSpan: IDL set to 4294967295 followed by getAttribute()
PASS th.colSpan: IDL set to 4294967295 followed by IDL get
PASS th.rowSpan: typeof IDL attribute
PASS th.rowSpan: IDL get with DOM attribute unset
@@ -11792,13 +11792,13 @@
PASS th.rowSpan: setAttribute() to -1 followed by getAttribute()
PASS th.rowSpan: setAttribute() to -1 followed by IDL get
PASS th.rowSpan: setAttribute() to 0 followed by getAttribute()
-FAIL th.rowSpan: setAttribute() to 0 followed by IDL get assert_equals: expected 0 but got 1
+PASS th.rowSpan: setAttribute() to 0 followed by IDL get
PASS th.rowSpan: setAttribute() to 1 followed by getAttribute()
PASS th.rowSpan: setAttribute() to 1 followed by IDL get
PASS th.rowSpan: setAttribute() to 257 followed by getAttribute()
PASS th.rowSpan: setAttribute() to 257 followed by IDL get
PASS th.rowSpan: setAttribute() to 2147483647 followed by getAttribute()
-FAIL th.rowSpan: setAttribute() to 2147483647 followed by IDL get assert_equals: expected 2147483647 but got 8190
+PASS th.rowSpan: setAttribute() to 2147483647 followed by IDL get
PASS th.rowSpan: setAttribute() to 2147483648 followed by getAttribute()
PASS th.rowSpan: setAttribute() to 2147483648 followed by IDL get
PASS th.rowSpan: setAttribute() to 4294967295 followed by getAttribute()
@@ -11810,15 +11810,15 @@
PASS th.rowSpan: setAttribute() to "-1" followed by getAttribute()
PASS th.rowSpan: setAttribute() to "-1" followed by IDL get
PASS th.rowSpan: setAttribute() to "-0" followed by getAttribute()
-FAIL th.rowSpan: setAttribute() to "-0" followed by IDL get assert_equals: expected 0 but got 1
+PASS th.rowSpan: setAttribute() to "-0" followed by IDL get
PASS th.rowSpan: setAttribute() to "0" followed by getAttribute()
-FAIL th.rowSpan: setAttribute() to "0" followed by IDL get assert_equals: expected 0 but got 1
+PASS th.rowSpan: setAttribute() to "0" followed by IDL get
PASS th.rowSpan: setAttribute() to "1" followed by getAttribute()
PASS th.rowSpan: setAttribute() to "1" followed by IDL get
PASS th.rowSpan: setAttribute() to "\t7" followed by getAttribute()
PASS th.rowSpan: setAttribute() to "\t7" followed by IDL get
PASS th.rowSpan: setAttribute() to "\v7" followed by getAttribute()
-FAIL th.rowSpan: setAttribute() to "\v7" followed by IDL get assert_equals: expected 1 but got 7
+PASS th.rowSpan: setAttribute() to "\v7" followed by IDL get
PASS th.rowSpan: setAttribute() to "\f7" followed by getAttribute()
PASS th.rowSpan: setAttribute() to "\f7" followed by IDL get
PASS th.rowSpan: setAttribute() to " 7" followed by getAttribute()
@@ -11832,39 +11832,39 @@
PASS th.rowSpan: setAttribute() to "\r7" followed by getAttribute()
PASS th.rowSpan: setAttribute() to "\r7" followed by IDL get
PASS th.rowSpan: setAttribute() to "
7" followed by getAttribute()
-FAIL th.rowSpan: setAttribute() to "
7" followed by IDL get assert_equals: expected 1 but got 7
+PASS th.rowSpan: setAttribute() to "
7" followed by IDL get
PASS th.rowSpan: setAttribute() to "
7" followed by getAttribute()
PASS th.rowSpan: setAttribute() to "
7" followed by IDL get
PASS th.rowSpan: setAttribute() to " 7" followed by getAttribute()
-FAIL th.rowSpan: setAttribute() to " 7" followed by IDL get assert_equals: expected 1 but got 7
+PASS th.rowSpan: setAttribute() to " 7" followed by IDL get
PASS th.rowSpan: setAttribute() to "7" followed by getAttribute()
PASS th.rowSpan: setAttribute() to "7" followed by IDL get
PASS th.rowSpan: setAttribute() to " 7" followed by getAttribute()
-FAIL th.rowSpan: setAttribute() to " 7" followed by IDL get assert_equals: expected 1 but got 7
+PASS th.rowSpan: setAttribute() to " 7" followed by IDL get
PASS th.rowSpan: setAttribute() to " 7" followed by getAttribute()
-FAIL th.rowSpan: setAttribute() to " 7" followed by IDL get assert_equals: expected 1 but got 7
+PASS th.rowSpan: setAttribute() to " 7" followed by IDL get
PASS th.rowSpan: setAttribute() to " 7" followed by getAttribute()
-FAIL th.rowSpan: setAttribute() to " 7" followed by IDL get assert_equals: expected 1 but got 7
+PASS th.rowSpan: setAttribute() to " 7" followed by IDL get
PASS th.rowSpan: setAttribute() to " 7" followed by getAttribute()
-FAIL th.rowSpan: setAttribute() to " 7" followed by IDL get assert_equals: expected 1 but got 7
+PASS th.rowSpan: setAttribute() to " 7" followed by IDL get
PASS th.rowSpan: setAttribute() to " 7" followed by getAttribute()
-FAIL th.rowSpan: setAttribute() to " 7" followed by IDL get assert_equals: expected 1 but got 7
+PASS th.rowSpan: setAttribute() to " 7" followed by IDL get
PASS th.rowSpan: setAttribute() to " 7" followed by getAttribute()
-FAIL th.rowSpan: setAttribute() to " 7" followed by IDL get assert_equals: expected 1 but got 7
+PASS th.rowSpan: setAttribute() to " 7" followed by IDL get
PASS th.rowSpan: setAttribute() to " 7" followed by getAttribute()
-FAIL th.rowSpan: setAttribute() to " 7" followed by IDL get assert_equals: expected 1 but got 7
+PASS th.rowSpan: setAttribute() to " 7" followed by IDL get
PASS th.rowSpan: setAttribute() to " 7" followed by getAttribute()
-FAIL th.rowSpan: setAttribute() to " 7" followed by IDL get assert_equals: expected 1 but got 7
+PASS th.rowSpan: setAttribute() to " 7" followed by IDL get
PASS th.rowSpan: setAttribute() to " 7" followed by getAttribute()
-FAIL th.rowSpan: setAttribute() to " 7" followed by IDL get assert_equals: expected 1 but got 7
+PASS th.rowSpan: setAttribute() to " 7" followed by IDL get
PASS th.rowSpan: setAttribute() to " 7" followed by getAttribute()
-FAIL th.rowSpan: setAttribute() to " 7" followed by IDL get assert_equals: expected 1 but got 7
+PASS th.rowSpan: setAttribute() to " 7" followed by IDL get
PASS th.rowSpan: setAttribute() to " 7" followed by getAttribute()
-FAIL th.rowSpan: setAttribute() to " 7" followed by IDL get assert_equals: expected 1 but got 7
+PASS th.rowSpan: setAttribute() to " 7" followed by IDL get
PASS th.rowSpan: setAttribute() to " 7" followed by getAttribute()
PASS th.rowSpan: setAttribute() to " 7" followed by IDL get
PASS th.rowSpan: setAttribute() to " 7" followed by getAttribute()
-FAIL th.rowSpan: setAttribute() to " 7" followed by IDL get assert_equals: expected 1 but got 7
+PASS th.rowSpan: setAttribute() to " 7" followed by IDL get
PASS th.rowSpan: setAttribute() to " \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f foo " followed by getAttribute()
PASS th.rowSpan: setAttribute() to " \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f foo " followed by IDL get
PASS th.rowSpan: setAttribute() to undefined followed by getAttribute()
@@ -11891,7 +11891,7 @@
PASS th.rowSpan: setAttribute() to object "3" followed by IDL get
PASS th.rowSpan: IDL set to 0 should not throw
PASS th.rowSpan: IDL set to 0 followed by getAttribute()
-FAIL th.rowSpan: IDL set to 0 followed by IDL get assert_equals: expected 0 but got 1
+PASS th.rowSpan: IDL set to 0 followed by IDL get
PASS th.rowSpan: IDL set to 1 should not throw
PASS th.rowSpan: IDL set to 1 followed by getAttribute()
PASS th.rowSpan: IDL set to 1 followed by IDL get
@@ -11900,15 +11900,15 @@
PASS th.rowSpan: IDL set to 257 followed by IDL get
PASS th.rowSpan: IDL set to 2147483647 should not throw
PASS th.rowSpan: IDL set to 2147483647 followed by getAttribute()
-FAIL th.rowSpan: IDL set to 2147483647 followed by IDL get assert_equals: expected 2147483647 but got 8190
+PASS th.rowSpan: IDL set to 2147483647 followed by IDL get
PASS th.rowSpan: IDL set to "-0" should not throw
PASS th.rowSpan: IDL set to "-0" followed by getAttribute()
-FAIL th.rowSpan: IDL set to "-0" followed by IDL get assert_equals: expected 0 but got 1
+PASS th.rowSpan: IDL set to "-0" followed by IDL get
PASS th.rowSpan: IDL set to 2147483648 should not throw
-FAIL th.rowSpan: IDL set to 2147483648 followed by getAttribute() assert_equals: expected "1" but got "-2147483648"
+PASS th.rowSpan: IDL set to 2147483648 followed by getAttribute()
PASS th.rowSpan: IDL set to 2147483648 followed by IDL get
PASS th.rowSpan: IDL set to 4294967295 should not throw
-FAIL th.rowSpan: IDL set to 4294967295 followed by getAttribute() assert_equals: expected "1" but got "-1"
+PASS th.rowSpan: IDL set to 4294967295 followed by getAttribute()
PASS th.rowSpan: IDL set to 4294967295 followed by IDL get
PASS th.align: typeof IDL attribute
PASS th.align: IDL get with DOM attribute unset
Modified: trunk/Source/WebCore/ChangeLog (197353 => 197354)
--- trunk/Source/WebCore/ChangeLog 2016-02-29 17:28:13 UTC (rev 197353)
+++ trunk/Source/WebCore/ChangeLog 2016-02-29 17:32:18 UTC (rev 197354)
@@ -1,5 +1,41 @@
2016-02-29 Chris Dumez <cdu...@apple.com>
+ Align td.rowSpan / td.colSpan with the specification
+ https://bugs.webkit.org/show_bug.cgi?id=154803
+
+ Reviewed by Darin Adler.
+
+ Align td.rowSpan / td.colSpan with the specification:
+ - https://html.spec.whatwg.org/multipage/tables.html#htmltablecellelement
+ - https://html.spec.whatwg.org/multipage/tables.html#dom-tdth-colspan
+ - https://html.spec.whatwg.org/multipage/tables.html#dom-tdth-rowspan
+
+ In particular, the following changes were made:
+ - Change type from 'long' to 'unsigned long'.
+ - Use HTML rules for parsing unsigned integers:
+ - https://html.spec.whatwg.org/multipage/infrastructure.html#rules-for-parsing-non-negative-integers
+ - Use 1 as default value when the input value is out of range instead
+ of 0 when setting.
+ - rowspan is still clamped to [1, 8190] internally but we now expose the
+ unclamped value to JS as this is an internal restriction. The same is
+ done for a colSpan value of 0, we expose 0 to the Web but clamp to 1
+ internally.
+
+ No new tests, already covered by existing test.
+
+ * html/HTMLTableCellElement.cpp:
+ (WebCore::HTMLTableCellElement::colSpan):
+ (WebCore::HTMLTableCellElement::rowSpan):
+ (WebCore::HTMLTableCellElement::rowSpanForBindings):
+ (WebCore::HTMLTableCellElement::setColSpan):
+ (WebCore::HTMLTableCellElement::setRowSpanForBindings):
+ (WebCore::HTMLTableCellElement::axis): Deleted.
+ (WebCore::HTMLTableCellElement::headers): Deleted.
+ * html/HTMLTableCellElement.h:
+ * html/HTMLTableCellElement.idl:
+
+2016-02-29 Chris Dumez <cdu...@apple.com>
+
[Web IDL] Add support for [TreatNullAs=EmptyString] and use it
https://bugs.webkit.org/show_bug.cgi?id=154654
Modified: trunk/Source/WebCore/html/HTMLTableCellElement.cpp (197353 => 197354)
--- trunk/Source/WebCore/html/HTMLTableCellElement.cpp 2016-02-29 17:28:13 UTC (rev 197353)
+++ trunk/Source/WebCore/html/HTMLTableCellElement.cpp 2016-02-29 17:32:18 UTC (rev 197354)
@@ -28,14 +28,12 @@
#include "CSSPropertyNames.h"
#include "CSSValueKeywords.h"
#include "HTMLNames.h"
+#include "HTMLParserIdioms.h"
#include "HTMLTableElement.h"
#include "RenderTableCell.h"
namespace WebCore {
-// Clamp rowspan at 8k to match Firefox.
-static const int maxRowspan = 8190;
-
using namespace HTMLNames;
HTMLTableCellElement::HTMLTableCellElement(const QualifiedName& tagName, Document& document)
@@ -44,18 +42,28 @@
ASSERT(tagName == thTag || tagName == tdTag);
}
-int HTMLTableCellElement::colSpan() const
+unsigned HTMLTableCellElement::colSpan() const
{
- const AtomicString& colSpanValue = fastGetAttribute(colspanAttr);
- return std::max(1, colSpanValue.toInt());
+ return std::max(1u, colSpanForBindings());
}
-int HTMLTableCellElement::rowSpan() const
+unsigned HTMLTableCellElement::colSpanForBindings() const
{
- const AtomicString& rowSpanValue = fastGetAttribute(rowspanAttr);
- return std::max(1, std::min(rowSpanValue.toInt(), maxRowspan));
+ return limitToOnlyHTMLNonNegative(fastGetAttribute(colspanAttr), 1u);
}
+unsigned HTMLTableCellElement::rowSpan() const
+{
+ static const unsigned maxRowspan = 8190;
+ // FIXME: a rowSpan equal to 0 should be allowed, and mean that the cell is to span all the remaining rows in the row group.
+ return std::max(1u, std::min(rowSpanForBindings(), maxRowspan));
+}
+
+unsigned HTMLTableCellElement::rowSpanForBindings() const
+{
+ return limitToOnlyHTMLNonNegative(fastGetAttribute(rowspanAttr), 1u);
+}
+
int HTMLTableCellElement::cellIndex() const
{
int index = 0;
@@ -131,9 +139,9 @@
return fastGetAttribute(axisAttr);
}
-void HTMLTableCellElement::setColSpan(int n)
+void HTMLTableCellElement::setColSpanForBindings(unsigned n)
{
- setIntegralAttribute(colspanAttr, n);
+ setAttributeWithoutSynchronization(colspanAttr, AtomicString::number(limitToOnlyHTMLNonNegative(n, 1)));
}
String HTMLTableCellElement::headers() const
@@ -141,9 +149,9 @@
return fastGetAttribute(headersAttr);
}
-void HTMLTableCellElement::setRowSpan(int n)
+void HTMLTableCellElement::setRowSpanForBindings(unsigned n)
{
- setIntegralAttribute(rowspanAttr, n);
+ setAttributeWithoutSynchronization(rowspanAttr, AtomicString::number(limitToOnlyHTMLNonNegative(n, 1)));
}
String HTMLTableCellElement::scope() const
Modified: trunk/Source/WebCore/html/HTMLTableCellElement.h (197353 => 197354)
--- trunk/Source/WebCore/html/HTMLTableCellElement.h 2016-02-29 17:28:13 UTC (rev 197353)
+++ trunk/Source/WebCore/html/HTMLTableCellElement.h 2016-02-29 17:32:18 UTC (rev 197354)
@@ -33,12 +33,14 @@
class HTMLTableCellElement : public HTMLTablePartElement {
public:
int cellIndex() const;
- int colSpan() const;
- int rowSpan() const;
+ unsigned colSpan() const;
+ unsigned colSpanForBindings() const;
+ unsigned rowSpan() const;
+ unsigned rowSpanForBindings() const;
void setCellIndex(int);
- void setColSpan(int);
- void setRowSpan(int);
+ void setColSpanForBindings(unsigned);
+ void setRowSpanForBindings(unsigned);
String abbr() const;
String axis() const;
Modified: trunk/Source/WebCore/html/HTMLTableCellElement.idl (197353 => 197354)
--- trunk/Source/WebCore/html/HTMLTableCellElement.idl 2016-02-29 17:28:13 UTC (rev 197353)
+++ trunk/Source/WebCore/html/HTMLTableCellElement.idl 2016-02-29 17:32:18 UTC (rev 197354)
@@ -25,15 +25,21 @@
[Reflect] attribute DOMString bgColor;
[Reflect=char] attribute DOMString ch;
[Reflect=charoff] attribute DOMString chOff;
- attribute long colSpan;
+#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C || defined(LANGUAGE_GOBJECT) && LANGUAGE_GOBJECT
+ [ImplementedAs=colSpanForBindings] attribute long colSpan;
+ [ImplementedAs=rowSpanForBindings] attribute long rowSpan;
+#else
+ [ImplementedAs=colSpanForBindings] attribute unsigned long colSpan;
+ [ImplementedAs=rowSpanForBindings] attribute unsigned long rowSpan;
+#endif
+
// FIXME: This is supposed to be:
// [PutForwards=value] readonly attribute DOMTokenList headers;
[Reflect] attribute DOMString headers;
[Reflect] attribute DOMString height;
[Reflect] attribute boolean noWrap;
- attribute long rowSpan;
[Reflect] attribute DOMString vAlign;
[Reflect] attribute DOMString width;