blob: 2c30a8499c78df629096dd367274c1172abf5dc7 [file] [log] [blame]
<!DOCTYPE html>
<script src="../../../../../resources/testharness.js"></script>
<script src="../../../../../resources/testharnessreport.js"></script>
<script src="../../../../../fast/spatial-navigation/resources/snav-testharness.js"></script>
<style>
div {
width: 100px;
height: 100px;
margin: 5px;
border: 1px solid black;
}
</style>
<div id="first" tabindex="0">First</div>
<iframe id="iframe"
srcdoc="<!DOCTYPE html>
<style>
div {
width: 100px;
height: 100px;
margin: 5px;
border: 1px solid black;
}
</style>
<div id='inner' tabindex='0'>Inner</div>"></iframe>
<div id="second" tabindex="0">Second</div>
<div id="third" tabindex="0">Third</div>
<script>
// This test checks that interest is correctly reset when the interested
// element is in a document that's been detached (e.g. navigated away).
const t = async_test("Interested element's document is detached.");
addEventListener('load', t.step_func(() => {
let first = document.getElementById("first");
let inner = window.frames[0].document.getElementById('inner');
let iframe = document.getElementById("iframe");
let second = document.getElementById("second");
let third = document.getElementById("third");
assert_true(!!window.internals);
// Move interest to 'inner'.
snav.triggerMove('Down'); // move to first
snav.triggerMove('Down'); // move to iframe
snav.triggerMove('Down'); // move to inner
// Enter focus into 'second'
assert_equals(window.internals.interestedElement,
inner,
"'inner' element has interest");
// Navigate the iframe to about:blank. This should reset interest.
iframe.addEventListener('load', t.step_func(() => {
assert_equals(window.internals.interestedElement,
null,
"Interested element cleared after navigating document");
// Send down arrow key. Should start navigation from top of page and focus
// 'first'.
snav.triggerMove('Down');
assert_equals(window.internals.interestedElement,
first,
"Navigating after reset starts at document top");
t.done();
}));
window.frames[0].window.location = 'about:blank';
}));
</script>