blob: b8173aa054e607b66550507c9cca0a41812bc7e5 [file] [log] [blame]
<!DOCTYPE html>
<html>
<body>
<p>Tests for moving focus by pressing tab key across label and legend elements.<br>
To manually test, press tab key seven times then shift+tab six times.<br>
It should traverse focusable elements in the ascending order from 1 to 7 and then in the descending order back to 1.</p>
</p>
<input id="startingNode">
<div id="test-content">
<label title="FAIL - a non-focusable label with an input should not be focused">
<input title="1. An input element inside a non-focusable label element">hello
</label>
<label tabindex="0" title="2. A label element with an input element">
<input title="3. An input elment inside a focusable label element">world</label>
<label tabindex="0" title="4. A label element with just text">webkit</label>
<label title="FAIL - an label element without tabindex should not be focused">rocks</label>
<fieldset tabindex="0" title="5. A fieldset element with tabindex">
<legend tabindex="0" title="6. A focusable legend element inside a fieldset element">foo</legend>
<input title="7. An input element inside a fieldset element">
</fieldset>
</div>
<style> :focus { background: red; } </style>
<pre id="result"></pre>
<script>
function moveFocusForward(focusCount)
{
setTimeout(function () {
if (!focusCount)
return moveFocusBackward(7);
eventSender.keyDown('\t');
setTimeout(function () {
moveFocusForward(focusCount - 1);
}, 1);
}, 1);
}
function moveFocusBackward(focusCount)
{
setTimeout(function () {
if (!focusCount) {
testContent.style.display = 'none';
testRunner.notifyDone();
return;
}
eventSender.keyDown('\t', ['shiftKey']);
setTimeout(function () {
moveFocusBackward(focusCount - 1);
}, 1);
}, 1);
}
let testContent = document.getElementById('test-content');
window.onload = () => {
document.getElementById('startingNode').focus();
if (window.eventSender) {
testRunner.dumpAsText();
testRunner.waitUntilDone();
}
moveFocusForward(7);
}
testContent.querySelectorAll('*').forEach((element) => {
element.onfocus = function () {
document.getElementById('result').textContent += (element.title || 'FAIL - focused an unexpected element') + '\n';
}
});
</script>
</body>
</html>