diff options
Diffstat (limited to 'testing/web-platform/tests/speculation-rules/prerender/restriction-focus.html')
-rw-r--r-- | testing/web-platform/tests/speculation-rules/prerender/restriction-focus.html | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/testing/web-platform/tests/speculation-rules/prerender/restriction-focus.html b/testing/web-platform/tests/speculation-rules/prerender/restriction-focus.html new file mode 100644 index 0000000000..1149b8bd09 --- /dev/null +++ b/testing/web-platform/tests/speculation-rules/prerender/restriction-focus.html @@ -0,0 +1,40 @@ +<!DOCTYPE html> +<title>Prerendering documents are not focused</title> +<meta name="timeout" content="long"> +<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> +<input type="text" id = "prerenderTextField"> +<script> + +setup(() => assertSpeculationRulesIsSupported()); + +promise_test(async t => { + document.getElementById('prerenderTextField').focus(); + assert_true( + document.hasFocus(), + 'Initial document should have focus.'); + + const {exec} = await create_prerendered_page(t); + const result = await exec(() => { + const element = document.createElement('input'); + element.setAttribute('type', 'text'); + document.body.appendChild(element); + element.focus(); + + // Post the focus and active states to the initiator page. + return { + activeElementUpdated: document.activeElement === element, + documentHasFocus: document.hasFocus() + }; + }) + + assert_true(result.activeElementUpdated, 'Active element has been updated'); + assert_false(result.documentHasFocus, 'Document should not have focus'); +}, 'Prerendering document should update the active element but not have focus'); + +</script> +</body> |