62 lines
2.1 KiB
HTML
62 lines
2.1 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
<script src="/resources/testdriver.js"></script>
|
|
<script src="/resources/testdriver-vendor.js"></script>
|
|
</head>
|
|
<body>
|
|
<h1>Post-navigation activation state in child</h1>
|
|
<p>
|
|
Tests that navigating a same-origin child frame resets its activation
|
|
states.
|
|
</p>
|
|
<ol id="instructions">
|
|
<li>Click inside the yellow area.</li>
|
|
</ol>
|
|
|
|
<iframe id="child" width="200" height="50"> </iframe>
|
|
<script>
|
|
function message(type) {
|
|
return new Promise((resolve) => {
|
|
window.addEventListener("message", function listener(event) {
|
|
const data = JSON.parse(event.data);
|
|
if (data.type === type) {
|
|
window.removeEventListener("message", listener);
|
|
resolve(data);
|
|
}
|
|
});
|
|
});
|
|
}
|
|
promise_test(async (t) => {
|
|
var child = document.getElementById("child");
|
|
child.src = "./resources/child-one.html";
|
|
const unclickeData = await message("child-one-loaded");
|
|
assert_false(navigator.userActivation.isActive);
|
|
assert_false(navigator.userActivation.hasBeenActive);
|
|
assert_false(unclickeData.isActive);
|
|
assert_false(unclickeData.hasBeenActive);
|
|
|
|
const [, child1Data] = await Promise.all([
|
|
test_driver.click(child),
|
|
message("child-one-clicked"),
|
|
]);
|
|
|
|
assert_true(navigator.userActivation.isActive);
|
|
assert_true(navigator.userActivation.hasBeenActive);
|
|
assert_true(child1Data.isActive);
|
|
assert_true(child1Data.hasBeenActive);
|
|
|
|
child.src = "./resources/child-two.html";
|
|
|
|
const child2Data = await message("child-two-loaded");
|
|
|
|
assert_true(navigator.userActivation.isActive);
|
|
assert_true(navigator.userActivation.hasBeenActive);
|
|
assert_false(child2Data.isActive);
|
|
assert_false(child2Data.hasBeenActive);
|
|
}, "Post-navigation state reset.");
|
|
</script>
|
|
</body>
|
|
</html>
|