<!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>