| <!doctype HTML> |
| |
| <div id="container" style ="contain:style layout"> |
| <div id="focusable" tabIndex="0"> |
| Focusable div |
| </div> |
| </div> |
| |
| <script src="../../resources/testharness.js"></script> |
| <script src="../../resources/testharnessreport.js"></script> |
| |
| <script> |
| async_test((t) => { |
| |
| async function focusNonActivatableTest() { |
| let acquire_promise = container.displayLock.acquire({ timeout: Infinity }); |
| await acquire_promise; |
| t.step(() => assert_not_equals(document.activeElement, focusable)); |
| focusable.focus(); |
| t.step(() => assert_not_equals(document.activeElement, focusable)); |
| focusActivatableTest(); |
| } |
| |
| async function focusActivatableTest() { |
| t.step(() => assert_not_equals(document.activeElement, focusable)); |
| let acquire_promise = container.displayLock.acquire({ timeout: Infinity, activatable: true }); |
| await acquire_promise; |
| focusable.focus(); |
| t.step(() => assert_equals(document.activeElement, focusable)); |
| t.done(); |
| } |
| |
| window.onload = function() { |
| requestAnimationFrame(() => requestAnimationFrame(focusNonActivatableTest)); |
| }; |
| }, "Testing focus and force layout on element with locked flat-tree ancestor"); |
| </script> |