From 04bc9b14d0c02a2968adbd1c1f3f40026e644e14 Mon Sep 17 00:00:00 2001 From: Jonatan Klemets Date: Sun, 23 Jul 2023 20:03:43 +0300 Subject: [PATCH] LibWeb: Use parse_non_negative_integer for colspan and rowspan parsing `DeprecatedString::to_int` calls `StringUtils::convert_to_int` internally. However, the integer parsing is not done in an HTML spec-compliant way. For example, `colspan="2;"` is valid according to the spec. But, with the current implementation, we will fail to parse "2;", and instead fall back to using 1 as the colspan value. This patch changes the `HTMLTableCellElement::col_span` and `HTMLTableCellElement::row_span` methods to use the `Web::HTML::parse_non_negative_integer` function that will parse the attribute value in an HTML spec-compliant way. --- .../colspan-with-trailing-characters.txt | 120 +++++++++++ .../rowspan-with-trailing-characters.txt | 204 ++++++++++++++++++ .../colspan-with-trailing-characters.html | 33 +++ .../rowspan-with-trailing-characters.html | 45 ++++ .../LibWeb/HTML/HTMLTableCellElement.cpp | 5 +- 5 files changed, 405 insertions(+), 2 deletions(-) create mode 100644 Tests/LibWeb/Layout/expected/table/colspan-with-trailing-characters.txt create mode 100644 Tests/LibWeb/Layout/expected/table/rowspan-with-trailing-characters.txt create mode 100644 Tests/LibWeb/Layout/input/table/colspan-with-trailing-characters.html create mode 100644 Tests/LibWeb/Layout/input/table/rowspan-with-trailing-characters.html diff --git a/Tests/LibWeb/Layout/expected/table/colspan-with-trailing-characters.txt b/Tests/LibWeb/Layout/expected/table/colspan-with-trailing-characters.txt new file mode 100644 index 0000000000..19bd62e9eb --- /dev/null +++ b/Tests/LibWeb/Layout/expected/table/colspan-with-trailing-characters.txt @@ -0,0 +1,120 @@ +Viewport <#document> at (0,0) content-size 800x600 children: not-inline + BlockContainer at (0,0) content-size 800x103.875 [BFC] children: not-inline + BlockContainer <(anonymous)> at (0,0) content-size 800x0 children: inline + TextNode <#text> + BlockContainer at (8,8) content-size 784x87.875 children: not-inline + BlockContainer <(anonymous)> at (8,8) content-size 784x0 children: inline + TextNode <#text> + TableWrapper <(anonymous)> at (8,8) content-size 229.359375x87.875 [BFC] children: not-inline + Box at (9,9) content-size 227.359375x85.875 table-box [TFC] children: not-inline + BlockContainer <(anonymous)> (not painted) children: inline + TextNode <#text> + Box at (9,9) content-size 227.359375x85.875 table-row-group children: not-inline + Box at (9,9) content-size 227.359375x21.46875 table-row children: not-inline + BlockContainer <(anonymous)> (not painted) children: inline + TextNode <#text> + BlockContainer at (9,30.46875) content-size 227.359375x21.46875 table-row children: not-inline + BlockContainer <(anonymous)> (not painted) children: inline + TextNode <#text> + BlockContainer at (9,51.9375) content-size 227.359375x21.46875 table-row children: not-inline + BlockContainer <(anonymous)> (not painted) children: inline + TextNode <#text> + BlockContainer at (9,73.40625) content-size 227.359375x21.46875 table-row children: not-inline + BlockContainer <(anonymous)> (not painted) children: inline + TextNode <#text> + BlockContainer
at (11,11) content-size 70.046875x17.46875 table-cell [BFC] children: inline + line 0 width: 70.046875, height: 17.46875, bottom: 17.46875, baseline: 13.53125 + frag 0 from TextNode start: 0, length: 8, rect: [11,11 70.046875x17.46875] + "Header 1" + TextNode <#text> + BlockContainer <(anonymous)> (not painted) children: inline + TextNode <#text> + BlockContainer at (85.046875,11) content-size 72.515625x17.46875 table-cell [BFC] children: inline + line 0 width: 72.515625, height: 17.46875, bottom: 17.46875, baseline: 13.53125 + frag 0 from TextNode start: 0, length: 8, rect: [85.046875,11 72.515625x17.46875] + "Header 2" + TextNode <#text> + BlockContainer <(anonymous)> (not painted) children: inline + TextNode <#text> + BlockContainer at (161.5625,11) content-size 72.796875x17.46875 table-cell [BFC] children: inline + line 0 width: 72.796875, height: 17.46875, bottom: 17.46875, baseline: 13.53125 + frag 0 from TextNode start: 0, length: 8, rect: [161.5625,11 72.796875x17.46875] + "Header 3" + TextNode <#text> + BlockContainer <(anonymous)> (not painted) children: inline + TextNode <#text> + BlockContainer <(anonymous)> (not painted) children: inline + TextNode <#text> + Box
at (11,32.46875) content-size 223.359375x17.46875 table-cell [BFC] children: inline + line 0 width: 41.84375, height: 17.46875, bottom: 17.46875, baseline: 13.53125 + frag 0 from TextNode start: 0, length: 6, rect: [102,32.46875 41.84375x17.46875] + "Cell 1" + TextNode <#text> + BlockContainer <(anonymous)> (not painted) children: inline + TextNode <#text> + BlockContainer <(anonymous)> (not painted) children: inline + TextNode <#text> + Box
at (11,53.9375) content-size 223.359375x17.46875 table-cell [BFC] children: inline + line 0 width: 44.3125, height: 17.46875, bottom: 17.46875, baseline: 13.53125 + frag 0 from TextNode start: 0, length: 6, rect: [101,53.9375 44.3125x17.46875] + "Cell 2" + TextNode <#text> + BlockContainer <(anonymous)> (not painted) children: inline + TextNode <#text> + BlockContainer <(anonymous)> (not painted) children: inline + TextNode <#text> + Box
at (11,75.40625) content-size 70.046875x17.46875 table-cell [BFC] children: inline + line 0 width: 44.59375, height: 17.46875, bottom: 17.46875, baseline: 13.53125 + frag 0 from TextNode start: 0, length: 6, rect: [24,75.40625 44.59375x17.46875] + "Cell 3" + TextNode <#text> + BlockContainer <(anonymous)> (not painted) children: inline + TextNode <#text> + BlockContainer at (85.046875,75.40625) content-size 72.515625x17.46875 table-cell [BFC] children: inline + line 0 width: 43.25, height: 17.46875, bottom: 17.46875, baseline: 13.53125 + frag 0 from TextNode start: 0, length: 6, rect: [100.046875,75.40625 43.25x17.46875] + "Cell 4" + TextNode <#text> + BlockContainer <(anonymous)> (not painted) children: inline + TextNode <#text> + BlockContainer at (161.5625,75.40625) content-size 72.796875x17.46875 table-cell [BFC] children: inline + line 0 width: 43.953125, height: 17.46875, bottom: 17.46875, baseline: 13.53125 + frag 0 from TextNode start: 0, length: 6, rect: [175.5625,75.40625 43.953125x17.46875] + "Cell 5" + TextNode <#text> + BlockContainer <(anonymous)> (not painted) children: inline + TextNode <#text> + BlockContainer <(anonymous)> (not painted) children: inline + TextNode <#text> + BlockContainer <(anonymous)> at (8,95.875) content-size 784x0 children: inline + TextNode <#text> + +ViewportPaintable (Viewport<#document>) [0,0 800x600] + PaintableWithLines (BlockContainer) [0,0 800x103.875] + PaintableWithLines (BlockContainer(anonymous)) [0,0 800x0] + PaintableWithLines (BlockContainer) [8,8 784x87.875] + PaintableWithLines (BlockContainer(anonymous)) [8,8 784x0] + PaintableWithLines (TableWrapper(anonymous)) [8,8 229.359375x87.875] + PaintableBox (Box) [8,8 229.359375x87.875] + PaintableBox (Box) [9,9 227.359375x85.875] + PaintableBox (Box) [9,9 227.359375x21.46875] + PaintableWithLines (BlockContainer) [9,30.46875 227.359375x21.46875] + PaintableWithLines (BlockContainer) [9,51.9375 227.359375x21.46875] + PaintableWithLines (BlockContainer) [9,73.40625 227.359375x21.46875] + PaintableWithLines (BlockContainer
) [9,9 74.046875x21.46875] + TextPaintable (TextNode<#text>) + PaintableWithLines (BlockContainer) [83.046875,9 76.515625x21.46875] + TextPaintable (TextNode<#text>) + PaintableWithLines (BlockContainer) [159.5625,9 76.796875x21.46875] + TextPaintable (TextNode<#text>) + PaintableBox (Box
) [9,30.46875 227.359375x21.46875] + TextPaintable (TextNode<#text>) + PaintableBox (Box
) [9,51.9375 227.359375x21.46875] + TextPaintable (TextNode<#text>) + PaintableBox (Box
) [9,73.40625 74.046875x21.46875] + TextPaintable (TextNode<#text>) + PaintableWithLines (BlockContainer) [83.046875,73.40625 76.515625x21.46875] + TextPaintable (TextNode<#text>) + PaintableWithLines (BlockContainer) [159.5625,73.40625 76.796875x21.46875] + TextPaintable (TextNode<#text>) + PaintableWithLines (BlockContainer(anonymous)) [8,95.875 784x0] diff --git a/Tests/LibWeb/Layout/expected/table/rowspan-with-trailing-characters.txt b/Tests/LibWeb/Layout/expected/table/rowspan-with-trailing-characters.txt new file mode 100644 index 0000000000..2608bae814 --- /dev/null +++ b/Tests/LibWeb/Layout/expected/table/rowspan-with-trailing-characters.txt @@ -0,0 +1,204 @@ +Viewport <#document> at (0,0) content-size 800x600 children: not-inline + BlockContainer at (0,0) content-size 800x146.8125 [BFC] children: not-inline + BlockContainer <(anonymous)> at (0,0) content-size 800x0 children: inline + TextNode <#text> + BlockContainer at (8,8) content-size 784x130.8125 children: not-inline + BlockContainer <(anonymous)> at (8,8) content-size 784x0 children: inline + TextNode <#text> + TableWrapper <(anonymous)> at (8,8) content-size 229.359375x130.8125 [BFC] children: not-inline + Box at (9,9) content-size 227.359375x128.8125 table-box [TFC] children: not-inline + BlockContainer <(anonymous)> (not painted) children: inline + TextNode <#text> + Box at (9,9) content-size 227.359375x128.8125 table-row-group children: not-inline + Box at (9,9) content-size 227.359375x21.46875 table-row children: not-inline + BlockContainer <(anonymous)> (not painted) children: inline + TextNode <#text> + BlockContainer at (9,30.46875) content-size 227.359375x21.46875 table-row children: not-inline + BlockContainer <(anonymous)> (not painted) children: inline + TextNode <#text> + BlockContainer at (9,51.9375) content-size 227.359375x21.46875 table-row children: not-inline + BlockContainer <(anonymous)> (not painted) children: inline + TextNode <#text> + BlockContainer at (9,73.40625) content-size 227.359375x21.46875 table-row children: not-inline + BlockContainer <(anonymous)> (not painted) children: inline + TextNode <#text> + BlockContainer at (9,94.875) content-size 227.359375x21.46875 table-row children: not-inline + BlockContainer <(anonymous)> (not painted) children: inline + TextNode <#text> + BlockContainer at (9,116.34375) content-size 227.359375x21.46875 table-row children: not-inline + BlockContainer <(anonymous)> (not painted) children: inline + TextNode <#text> + BlockContainer
at (11,11) content-size 70.046875x17.46875 table-cell [BFC] children: inline + line 0 width: 70.046875, height: 17.46875, bottom: 17.46875, baseline: 13.53125 + frag 0 from TextNode start: 0, length: 8, rect: [11,11 70.046875x17.46875] + "Header 1" + TextNode <#text> + BlockContainer <(anonymous)> (not painted) children: inline + TextNode <#text> + BlockContainer at (85.046875,11) content-size 72.515625x17.46875 table-cell [BFC] children: inline + line 0 width: 72.515625, height: 17.46875, bottom: 17.46875, baseline: 13.53125 + frag 0 from TextNode start: 0, length: 8, rect: [85.046875,11 72.515625x17.46875] + "Header 2" + TextNode <#text> + BlockContainer <(anonymous)> (not painted) children: inline + TextNode <#text> + BlockContainer at (161.5625,11) content-size 72.796875x17.46875 table-cell [BFC] children: inline + line 0 width: 72.796875, height: 17.46875, bottom: 17.46875, baseline: 13.53125 + frag 0 from TextNode start: 0, length: 8, rect: [161.5625,11 72.796875x17.46875] + "Header 3" + TextNode <#text> + BlockContainer <(anonymous)> (not painted) children: inline + TextNode <#text> + BlockContainer <(anonymous)> (not painted) children: inline + TextNode <#text> + Box
at (11,32.46875) content-size 70.046875x17.46875 table-cell [BFC] children: inline + line 0 width: 41.84375, height: 17.46875, bottom: 17.46875, baseline: 13.53125 + frag 0 from TextNode start: 0, length: 6, rect: [25,32.46875 41.84375x17.46875] + "Cell 1" + TextNode <#text> + BlockContainer <(anonymous)> (not painted) children: inline + TextNode <#text> + BlockContainer at (85.046875,32.46875) content-size 72.515625x17.46875 table-cell [BFC] children: inline + line 0 width: 44.3125, height: 17.46875, bottom: 17.46875, baseline: 13.53125 + frag 0 from TextNode start: 0, length: 6, rect: [99.046875,32.46875 44.3125x17.46875] + "Cell 2" + TextNode <#text> + BlockContainer <(anonymous)> (not painted) children: inline + TextNode <#text> + BlockContainer at (161.5625,43.203125) content-size 72.796875x17.46875 table-cell [BFC] children: inline + line 0 width: 44.59375, height: 17.46875, bottom: 17.46875, baseline: 13.53125 + frag 0 from TextNode start: 0, length: 6, rect: [175.5625,43.203125 44.59375x17.46875] + "Cell 3" + TextNode <#text> + BlockContainer <(anonymous)> (not painted) children: inline + TextNode <#text> + BlockContainer <(anonymous)> (not painted) children: inline + TextNode <#text> + Box
at (11,53.9375) content-size 70.046875x17.46875 table-cell [BFC] children: inline + line 0 width: 43.25, height: 17.46875, bottom: 17.46875, baseline: 13.53125 + frag 0 from TextNode start: 0, length: 6, rect: [24,53.9375 43.25x17.46875] + "Cell 4" + TextNode <#text> + BlockContainer <(anonymous)> (not painted) children: inline + TextNode <#text> + BlockContainer at (85.046875,53.9375) content-size 72.515625x17.46875 table-cell [BFC] children: inline + line 0 width: 43.953125, height: 17.46875, bottom: 17.46875, baseline: 13.53125 + frag 0 from TextNode start: 0, length: 6, rect: [99.046875,53.9375 43.953125x17.46875] + "Cell 5" + TextNode <#text> + BlockContainer <(anonymous)> (not painted) children: inline + TextNode <#text> + BlockContainer <(anonymous)> (not painted) children: inline + TextNode <#text> + Box
at (11,75.40625) content-size 70.046875x17.46875 table-cell [BFC] children: inline + line 0 width: 44.234375, height: 17.46875, bottom: 17.46875, baseline: 13.53125 + frag 0 from TextNode start: 0, length: 6, rect: [24,75.40625 44.234375x17.46875] + "Cell 6" + TextNode <#text> + BlockContainer <(anonymous)> (not painted) children: inline + TextNode <#text> + BlockContainer at (85.046875,75.40625) content-size 72.515625x17.46875 table-cell [BFC] children: inline + line 0 width: 44.21875, height: 17.46875, bottom: 17.46875, baseline: 13.53125 + frag 0 from TextNode start: 0, length: 6, rect: [99.046875,75.40625 44.21875x17.46875] + "Cell 7" + TextNode <#text> + BlockContainer <(anonymous)> (not painted) children: inline + TextNode <#text> + BlockContainer at (161.5625,75.40625) content-size 72.796875x17.46875 table-cell [BFC] children: inline + line 0 width: 44.984375, height: 17.46875, bottom: 17.46875, baseline: 13.53125 + frag 0 from TextNode start: 0, length: 6, rect: [175.5625,75.40625 44.984375x17.46875] + "Cell 8" + TextNode <#text> + BlockContainer <(anonymous)> (not painted) children: inline + TextNode <#text> + BlockContainer <(anonymous)> (not painted) children: inline + TextNode <#text> + Box
at (11,96.875) content-size 70.046875x17.46875 table-cell [BFC] children: inline + line 0 width: 44.328125, height: 17.46875, bottom: 17.46875, baseline: 13.53125 + frag 0 from TextNode start: 0, length: 6, rect: [24,96.875 44.328125x17.46875] + "Cell 9" + TextNode <#text> + BlockContainer <(anonymous)> (not painted) children: inline + TextNode <#text> + BlockContainer at (85.046875,96.875) content-size 72.515625x17.46875 table-cell [BFC] children: inline + line 0 width: 51.4375, height: 17.46875, bottom: 17.46875, baseline: 13.53125 + frag 0 from TextNode start: 0, length: 7, rect: [96.046875,96.875 51.4375x17.46875] + "Cell 10" + TextNode <#text> + BlockContainer <(anonymous)> (not painted) children: inline + TextNode <#text> + BlockContainer at (161.5625,107.609375) content-size 72.796875x17.46875 table-cell [BFC] children: inline + line 0 width: 48.1875, height: 17.46875, bottom: 17.46875, baseline: 13.53125 + frag 0 from TextNode start: 0, length: 7, rect: [173.5625,107.609375 48.1875x17.46875] + "Cell 11" + TextNode <#text> + BlockContainer <(anonymous)> (not painted) children: inline + TextNode <#text> + BlockContainer <(anonymous)> (not painted) children: inline + TextNode <#text> + Box
at (11,118.34375) content-size 70.046875x17.46875 table-cell [BFC] children: inline + line 0 width: 50.65625, height: 17.46875, bottom: 17.46875, baseline: 13.53125 + frag 0 from TextNode start: 0, length: 7, rect: [21,118.34375 50.65625x17.46875] + "Cell 12" + TextNode <#text> + BlockContainer <(anonymous)> (not painted) children: inline + TextNode <#text> + BlockContainer at (85.046875,118.34375) content-size 72.515625x17.46875 table-cell [BFC] children: inline + line 0 width: 50.9375, height: 17.46875, bottom: 17.46875, baseline: 13.53125 + frag 0 from TextNode start: 0, length: 7, rect: [96.046875,118.34375 50.9375x17.46875] + "Cell 13" + TextNode <#text> + BlockContainer <(anonymous)> (not painted) children: inline + TextNode <#text> + BlockContainer <(anonymous)> (not painted) children: inline + TextNode <#text> + BlockContainer <(anonymous)> at (8,138.8125) content-size 784x0 children: inline + TextNode <#text> + +ViewportPaintable (Viewport<#document>) [0,0 800x600] + PaintableWithLines (BlockContainer) [0,0 800x146.8125] + PaintableWithLines (BlockContainer(anonymous)) [0,0 800x0] + PaintableWithLines (BlockContainer) [8,8 784x130.8125] + PaintableWithLines (BlockContainer(anonymous)) [8,8 784x0] + PaintableWithLines (TableWrapper(anonymous)) [8,8 229.359375x130.8125] + PaintableBox (Box) [8,8 229.359375x130.8125] + PaintableBox (Box) [9,9 227.359375x128.8125] + PaintableBox (Box) [9,9 227.359375x21.46875] + PaintableWithLines (BlockContainer) [9,30.46875 227.359375x21.46875] overflow: [9,30.46875 227.359375x42.9375] + PaintableWithLines (BlockContainer) [9,51.9375 227.359375x21.46875] + PaintableWithLines (BlockContainer) [9,73.40625 227.359375x21.46875] + PaintableWithLines (BlockContainer) [9,94.875 227.359375x21.46875] overflow: [9,94.875 227.359375x42.9375] + PaintableWithLines (BlockContainer) [9,116.34375 227.359375x21.46875] + PaintableWithLines (BlockContainer
) [9,9 74.046875x21.46875] + TextPaintable (TextNode<#text>) + PaintableWithLines (BlockContainer) [83.046875,9 76.515625x21.46875] + TextPaintable (TextNode<#text>) + PaintableWithLines (BlockContainer) [159.5625,9 76.796875x21.46875] + TextPaintable (TextNode<#text>) + PaintableBox (Box
) [9,30.46875 74.046875x21.46875] + TextPaintable (TextNode<#text>) + PaintableWithLines (BlockContainer) [83.046875,30.46875 76.515625x21.46875] + TextPaintable (TextNode<#text>) + PaintableWithLines (BlockContainer) [159.5625,30.46875 76.796875x42.9375] + TextPaintable (TextNode<#text>) + PaintableBox (Box
) [9,51.9375 74.046875x21.46875] + TextPaintable (TextNode<#text>) + PaintableWithLines (BlockContainer) [83.046875,51.9375 76.515625x21.46875] + TextPaintable (TextNode<#text>) + PaintableBox (Box
) [9,73.40625 74.046875x21.46875] + TextPaintable (TextNode<#text>) + PaintableWithLines (BlockContainer) [83.046875,73.40625 76.515625x21.46875] + TextPaintable (TextNode<#text>) + PaintableWithLines (BlockContainer) [159.5625,73.40625 76.796875x21.46875] + TextPaintable (TextNode<#text>) + PaintableBox (Box
) [9,94.875 74.046875x21.46875] + TextPaintable (TextNode<#text>) + PaintableWithLines (BlockContainer) [83.046875,94.875 76.515625x21.46875] + TextPaintable (TextNode<#text>) + PaintableWithLines (BlockContainer) [159.5625,94.875 76.796875x42.9375] + TextPaintable (TextNode<#text>) + PaintableBox (Box
) [9,116.34375 74.046875x21.46875] + TextPaintable (TextNode<#text>) + PaintableWithLines (BlockContainer) [83.046875,116.34375 76.515625x21.46875] + TextPaintable (TextNode<#text>) + PaintableWithLines (BlockContainer(anonymous)) [8,138.8125 784x0] diff --git a/Tests/LibWeb/Layout/input/table/colspan-with-trailing-characters.html b/Tests/LibWeb/Layout/input/table/colspan-with-trailing-characters.html new file mode 100644 index 0000000000..5ae8c1d314 --- /dev/null +++ b/Tests/LibWeb/Layout/input/table/colspan-with-trailing-characters.html @@ -0,0 +1,33 @@ + + + + Colspan relaxed parsing + + + + + + + + + + + + + + + + + + + + +
Header 1Header 2Header 3
Cell 1
Cell 2
Cell 3Cell 4Cell 5
+ + \ No newline at end of file diff --git a/Tests/LibWeb/Layout/input/table/rowspan-with-trailing-characters.html b/Tests/LibWeb/Layout/input/table/rowspan-with-trailing-characters.html new file mode 100644 index 0000000000..394b867b91 --- /dev/null +++ b/Tests/LibWeb/Layout/input/table/rowspan-with-trailing-characters.html @@ -0,0 +1,45 @@ + + + + Rowspan relaxed parsing + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Header 1Header 2Header 3
Cell 1Cell 2Cell 3
Cell 4Cell 5
Cell 6Cell 7Cell 8
Cell 9Cell 10Cell 11
Cell 12Cell 13
+ + \ No newline at end of file diff --git a/Userland/Libraries/LibWeb/HTML/HTMLTableCellElement.cpp b/Userland/Libraries/LibWeb/HTML/HTMLTableCellElement.cpp index 15f946d1e8..17c8fa02ea 100644 --- a/Userland/Libraries/LibWeb/HTML/HTMLTableCellElement.cpp +++ b/Userland/Libraries/LibWeb/HTML/HTMLTableCellElement.cpp @@ -14,6 +14,7 @@ #include #include #include +#include #include namespace Web::HTML { @@ -96,7 +97,7 @@ void HTMLTableCellElement::apply_presentational_hints(CSS::StyleProperties& styl unsigned int HTMLTableCellElement::col_span() const { - return attribute(HTML::AttributeNames::colspan).to_uint().value_or(1); + return Web::HTML::parse_non_negative_integer(attribute(HTML::AttributeNames::colspan)).value_or(1); } WebIDL::ExceptionOr HTMLTableCellElement::set_col_span(unsigned int value) @@ -106,7 +107,7 @@ WebIDL::ExceptionOr HTMLTableCellElement::set_col_span(unsigned int value) unsigned int HTMLTableCellElement::row_span() const { - return attribute(HTML::AttributeNames::rowspan).to_uint().value_or(1); + return Web::HTML::parse_non_negative_integer(attribute(HTML::AttributeNames::rowspan)).value_or(1); } WebIDL::ExceptionOr HTMLTableCellElement::set_row_span(unsigned int value)