| <!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> |
| <div id="second" tabindex="0">Second</div> |
| <div id="third" tabindex="0">Third</div> |
| |
| <script> |
| var resultMap = [ |
| ["Down", "first"], |
| ["Down", "second"], |
| ["Down", "third"], |
| ]; |
| |
| // This test checks that the "focusless spatial navigation" when in a11y does |
| // dispatch key events to elements (since they will have focus). |
| let no_keyboard_events_test = |
| async_test("Focusless SpatNav A11y Does Dispatch KeyboardEvents"); |
| |
| var count = 0; |
| for (let id of ['first', 'second']) { |
| let e = document.getElementById(id); |
| e.addEventListener('keydown', e => { count++; }); |
| } |
| document.getElementById('third').addEventListener( |
| 'keydown', |
| no_keyboard_events_test.unreached_func( |
| 'Should not have sent a keyboard event to the third div')); |
| |
| let postAssertsFunc = no_keyboard_events_test.step_func_done(() => { |
| // We should send a keyboard event each time focus leaves a div. Should |
| // happen twice. |
| assert_equals(count, 2); |
| }); |
| |
| snav.assertFocusMoves(resultMap, |
| true /* enableSpatnav */, |
| postAssertsFunc, |
| true /* focuslessSpatNav */ ); |
| </script> |