Title: [197354] trunk
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;
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to