Skip to content
Permalink
Browse files

introduce loop over each mathml element (#22300)

* Update tabindex-001.html

* Update tabindex-001.html

remove weird copy paste thing

* Update tabindex-001.html

Fix trailing whitespace lint errors
  • Loading branch information
bkardell committed Mar 19, 2020
1 parent 93411c9 commit 4817abed2149554cbfc6981c0381ae9e8d26923e
Showing with 37 additions and 20 deletions.
  1. +37 −20 mathml/relations/html5-tree/tabindex-001.html
@@ -6,36 +6,53 @@
<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#css-styling">
<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#the-top-level-math-element">
<meta name="assert" content="Verify default values for the tabIndex attribute">

<script src="/mathml/support/mathml-fragments.js"></script>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
<body>
<div id="log"></div>
<math>
<mrow id="mrow" onfocus="alert('fail')"></mrow>
<mrow id="mrow-link" href="javascript:alert('fail')" onfocus="alert('fail')"></mrow>
</math>
<script>
const htmlLinkableElements =
new Set([
'mi', 'mo', 'mn', 'ms', 'mtext', 'mrow'
]);

Object.keys(MathMLFragments).forEach(elName => {
const mathEl = document.querySelector('math');

mathEl.innerHTML = `
<${elName} id="el" onfocus="alert('fail')"></${elName}>
<${elName} id="el-link" href="javascript:alert('fail')" onfocus="alert('fail')"></${elName}>
`;

const el = mathEl.querySelector('#el');
const elLink = mathEl.querySelector('#el-link');

const expectedDefault = (htmlLinkableElements.has(elName)) ? 0 : -1;

test(() => {
const mrow = document.getElementById('mrow');
assert_equals(mrow.tabIndex, 0, "no attribute");
mrow.setAttribute("tabindex", "invalid");
assert_equals(mrow.getAttribute("tabindex"), "invalid");
assert_equals(mrow.tabIndex, 0, "invalid");
mrow.setAttribute("tabindex", "9999999999");
assert_equals(mrow.getAttribute("tabindex"), "9999999999");
assert_equals(mrow.tabIndex, 0, "too large integer");
}, "default and invalid values on mrow");
assert_equals(el.tabIndex, expectedDefault, "no attribute");
el.setAttribute("tabindex", "invalid");
assert_equals(el.getAttribute("tabindex"), "invalid");
assert_equals(el.tabIndex, expectedDefault, "invalid");
el.setAttribute("tabindex", "9999999999");
assert_equals(el.getAttribute("tabindex"), "9999999999");
assert_equals(el.tabIndex, expectedDefault, "too large integer");
}, `default and invalid values for ${elName} without href`);
test(() => {
const mrowLink = document.getElementById('mrow-link');
assert_equals(mrow.tabIndex, 0, "no attribute");
mrow.setAttribute("tabindex", "invalid");
assert_equals(mrow.getAttribute("tabindex"), "invalid");
assert_equals(mrow.tabIndex, 0, "invalid");
mrow.setAttribute("tabindex", "9999999999");
assert_equals(mrow.getAttribute("tabindex"), "9999999999");
assert_equals(mrow.tabIndex, 0, "too large integer");
}, "default and invalid values on MathML link");
assert_equals(elLink.tabIndex, expectedDefault, "no attribute");
elLink.setAttribute("tabindex", "invalid");
assert_equals(elLink.getAttribute("tabindex"), "invalid");
assert_equals(elLink.tabIndex, expectedDefault, "invalid");
elLink.setAttribute("tabindex", "9999999999");
assert_equals(elLink.getAttribute("tabindex"), "9999999999");
assert_equals(elLink.tabIndex, expectedDefault, "too large integer");
}, `default and invalid values for ${elName} with href`);
});
</script>
</body>
</html>

0 comments on commit 4817abe

Please sign in to comment.
You can’t perform that action at this time.