| <!DOCTYPE html> |
| <title>Anchor based focusing across a fenced frame boundary</title> |
| <script src="/resources/testdriver.js"></script> |
| <script src="/resources/testdriver-actions.js"></script> |
| <script src="/resources/testdriver-vendor.js"></script> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="/common/utils.js"></script> |
| <script src="/common/dispatcher/dispatcher.js"></script> |
| <script src="resources/utils.js"></script> |
| |
| <body> |
| <script> |
| function attemptAutofocus(frame) { |
| return frame.execute(async () => { |
| let autofocusInput = document.createElement('input'); |
| autofocusInput.id = "myinput"; |
| document.body.appendChild(autofocusInput); |
| document.location.href = document.location.href + "#myinput"; |
| await new Promise(resolve => requestAnimationFrame(resolve)); |
| return document.activeElement == autofocusInput; |
| }); |
| } |
| |
| promise_test(async () => { |
| const frame = attachFencedFrameContext(); |
| let autofocusIsFocused = await attemptAutofocus(frame); |
| assert_false(autofocusIsFocused, |
| "element should not get focus through anchor focusing"); |
| }, "Anchor focusing is blocked on an element in a fenced frame " + |
| "without user activation."); |
| |
| promise_test(async () => { |
| const frame = attachFencedFrameContext(); |
| const actions = new test_driver.Actions(); |
| await actions.pointerMove(0, 0, {origin: frame.element}) |
| .pointerDown() |
| .pointerUp() |
| .send(); |
| let autofocusIsFocused = await attemptAutofocus(frame); |
| assert_true(autofocusIsFocused, |
| "element should get focus through anchor focusing"); |
| }, "Anchor focusing is allowed on an element in a fenced frame " + |
| "with user activation."); |
| </script> |
| </body> |
| </html> |