tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

span-limits.html (3462B)


      1 <!DOCTYPE html>
      2 <title>Limits on colSpan/rowSpan</title>
      3 <meta name="timeout" content="long">
      4 <script src=/resources/testharness.js></script>
      5 <script src=/resources/testharnessreport.js></script>
      6 <div id=log></div>
      7 
      8 <table border=1>
      9  <tr><td colspan=500>a<td colspan=500 id=a1>a
     10  <!-- This cell must span the previous two -->
     11  <tr><td colspan=1000 id=a2>a
     12 </table>
     13 
     14 <table border=1>
     15  <tr><td colspan=1000 id=b1>a<td>a
     16  <!-- This cell must span only the first cell in the previous row -->
     17  <tr><td colspan=1001 id=b2>a
     18 </table>
     19 
     20 <table border=1 style="float:left">
     21  <!-- The first column must go all the way down to the bottom -->
     22  <tr><td rowspan=65534 id=c1>a<td>
     23  <!-- We'll add another 65533 rows later -->
     24 </table>
     25 
     26 <table border=1>
     27  <!-- The first column must go one cell below the bottom -->
     28  <tr><td rowspan=65535 id=d1>a<td>
     29  <!-- We'll add another 65534 rows later -->
     30 </table>
     31 
     32 <table>
     33    <tr>
     34        <td id="rowspan-limit-test1" rowspan=5></td>
     35        <td id="rowspan-limit-test2" rowspan=0></td>
     36        <td id="rowspan-limit-test3" rowspan=1000></td>
     37        <td id="rowspan-limit-test4" rowspan=65534></td>
     38        <td id="rowspan-limit-test5" rowspan=65535></td>
     39        <td id="rowspan-limit-test6" rowspan=5555555></td>
     40    </tr>
     41 </table>
     42 
     43 <script>
     44 var $ = document.querySelector.bind(document);
     45 
     46 test(() => {
     47    assert_equals($("#a2").getBoundingClientRect().right,
     48                  $("#a1").getBoundingClientRect().right);
     49 }, "colspan of 1000 must work");
     50 
     51 test(() => {
     52    assert_equals($("#b2").getBoundingClientRect().right,
     53                  $("#b1").getBoundingClientRect().right);
     54 }, "colspan of 1001 must be treated as 1000");
     55 
     56 test(() => {
     57    var s = "";
     58    for (var i = 0; i < 65532; i++) {
     59      s += "<tr><td>";
     60    }
     61    s += "<tr><td id=c2>";
     62    document.querySelectorAll("table")[2].firstElementChild.innerHTML += s;
     63    assert_equals($("#c1").getBoundingClientRect().bottom,
     64                  $("#c2").getBoundingClientRect().bottom);
     65 }, "rowspan of 65534 must work");
     66 
     67 test(() => {
     68    var s = "";
     69    for (var i = 0; i < 65532; i++) {
     70      s += "<tr><td>";
     71    }
     72    s += "<tr><td id=d2><tr><td>a<td>";
     73    document.querySelectorAll("table")[3].firstElementChild.innerHTML += s;
     74    assert_equals($("#d1").getBoundingClientRect().bottom,
     75                  $("#d2").getBoundingClientRect().bottom);
     76 }, "rowspan of 65535 must be treated as 65534");
     77 
     78 test(() => {
     79    let td = document.createElement("td");
     80    td.rowSpan = 5;
     81    assert_equals(td.rowSpan, 5);
     82 
     83    td.rowSpan = 0;
     84    assert_equals(td.rowSpan, 0);
     85 
     86    td.rowSpan = 1000;
     87    assert_equals(td.rowSpan, 1000);
     88 
     89    td.rowSpan = 65534;
     90    assert_equals(td.rowSpan, 65534);
     91 
     92    td.rowSpan = 65535;
     93    assert_equals(td.rowSpan, 65534);
     94 
     95    td.rowSpan = 555555;
     96    assert_equals(td.rowSpan, 65534);
     97 }, "rowspan must be clamped to [0, 65534] when set via script");
     98 
     99 test(() => {
    100    assert_equals(document.getElementById("rowspan-limit-test1").rowSpan, 5);
    101    assert_equals(document.getElementById("rowspan-limit-test2").rowSpan, 0);
    102    assert_equals(document.getElementById("rowspan-limit-test3").rowSpan, 1000);
    103    assert_equals(document.getElementById("rowspan-limit-test4").rowSpan, 65534);
    104    assert_equals(document.getElementById("rowspan-limit-test5").rowSpan, 65534);
    105    assert_equals(document.getElementById("rowspan-limit-test6").rowSpan, 65534);
    106 }, "rowspan must be clamped to [0, 65534] when parsing attributes");
    107 </script>