tor-browser

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

tabindex-001.tentative.html (2343B)


      1 <!DOCTYPE html>
      2 <html>
      3 <head>
      4 <meta charset="utf-8"/>
      5 <title>MathML tabIndex attribute</title>
      6 <link rel="help" href="https://w3c.github.io/mathml-core/#css-styling">
      7 <link rel="help" href="https://w3c.github.io/mathml-core/#the-top-level-math-element">
      8 <meta name="assert" content="Verify default values for the tabIndex attribute">
      9 
     10 <script src="/mathml/support/mathml-fragments.js"></script>
     11 <script src="/resources/testharness.js"></script>
     12 <script src="/resources/testharnessreport.js"></script>
     13 </head>
     14 <body>
     15  <div id="log"></div>
     16  <math>
     17  </math>
     18  <script>
     19    const htmlLinkableElements =
     20      new Set([
     21        'mi', 'mo', 'mn', 'ms', 'mtext', 'mrow'
     22      ]);
     23 
     24    Object.keys(MathMLFragments).forEach(elName => {
     25        const mathEl = document.querySelector('math');
     26 
     27        mathEl.innerHTML = `
     28        <${elName} id="el" onfocus="alert('fail')"></${elName}>
     29        <${elName} id="el-link" href="javascript:alert('fail')" onfocus="alert('fail')"></${elName}>
     30        `;
     31 
     32        const el = mathEl.querySelector('#el');
     33        const elLink = mathEl.querySelector('#el-link');
     34 
     35        const expectedDefault = (htmlLinkableElements.has(elName)) ? 0 : -1;
     36 
     37        test(() => {
     38            assert_equals(el.tabIndex, expectedDefault, "no attribute");
     39            el.setAttribute("tabindex", "invalid");
     40            assert_equals(el.getAttribute("tabindex"), "invalid");
     41            assert_equals(el.tabIndex, expectedDefault, "invalid");
     42            el.setAttribute("tabindex", "9999999999");
     43            assert_equals(el.getAttribute("tabindex"), "9999999999");
     44            assert_equals(el.tabIndex, expectedDefault, "too large integer");
     45        }, `default and invalid values for ${elName} without href`);
     46        test(() => {
     47            assert_equals(elLink.tabIndex, expectedDefault, "no attribute");
     48            elLink.setAttribute("tabindex", "invalid");
     49            assert_equals(elLink.getAttribute("tabindex"), "invalid");
     50            assert_equals(elLink.tabIndex, expectedDefault, "invalid");
     51            elLink.setAttribute("tabindex", "9999999999");
     52            assert_equals(elLink.getAttribute("tabindex"), "9999999999");
     53            assert_equals(elLink.tabIndex, expectedDefault, "too large integer");
     54        }, `default and invalid values for ${elName} with href`);
     55    });
     56  </script>
     57 </body>
     58 </html>