зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1467030 [wpt PR 11361] - Add an API to query whether the window has seen a user gesture., a=testonly
Automatic update from web-platform-testsAdd an API to query whether the window has seen a user gesture. Add a variable on the navigator object to query whether the frame has seen a user activation ever. The postMessage part of the proposal will be done in a separate patch, this change is limited to just adding the object definition and exposing it on navigator. https://github.com/dtapuska/useractivation https://github.com/whatwg/html/issues/1983 BUG=846858 Change-Id: I6ca4c80f4096bfae9ca13b175b46df6b4486a6dd Reviewed-on: https://chromium-review.googlesource.com/1076979 Commit-Queue: Dave Tapuska <dtapuska@chromium.org> Reviewed-by: Rick Byers <rbyers@chromium.org> Reviewed-by: Mustaq Ahmed <mustaq@chromium.org> Cr-Commit-Position: refs/heads/master@{#572847} -- wpt-commits: dfca5197519caef6c189636b5d80b33e3424e91e wpt-pr: 11361
This commit is contained in:
Родитель
b799cad93a
Коммит
2b36496d6b
|
@ -288373,6 +288373,16 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"html/user-activation/resources/child-one.html": [
|
||||
[
|
||||
{}
|
||||
]
|
||||
],
|
||||
"html/user-activation/resources/child-two.html": [
|
||||
[
|
||||
{}
|
||||
]
|
||||
],
|
||||
"html/webappapis/.gitkeep": [
|
||||
[
|
||||
{}
|
||||
|
@ -353060,6 +353070,38 @@
|
|||
}
|
||||
]
|
||||
],
|
||||
"html/user-activation/activation-api-click.tentative.html": [
|
||||
[
|
||||
"/html/user-activation/activation-api-click.tentative.html",
|
||||
{
|
||||
"testdriver": true
|
||||
}
|
||||
]
|
||||
],
|
||||
"html/user-activation/activation-api-iframe-no-activate.tenative.html": [
|
||||
[
|
||||
"/html/user-activation/activation-api-iframe-no-activate.tenative.html",
|
||||
{
|
||||
"testdriver": true
|
||||
}
|
||||
]
|
||||
],
|
||||
"html/user-activation/activation-api-iframe.tenative.html": [
|
||||
[
|
||||
"/html/user-activation/activation-api-iframe.tenative.html",
|
||||
{
|
||||
"testdriver": true
|
||||
}
|
||||
]
|
||||
],
|
||||
"html/user-activation/activation-api-setTimeout.tentative.html": [
|
||||
[
|
||||
"/html/user-activation/activation-api-setTimeout.tentative.html",
|
||||
{
|
||||
"testdriver": true
|
||||
}
|
||||
]
|
||||
],
|
||||
"html/webappapis/animation-frames/callback-exception.html": [
|
||||
[
|
||||
"/html/webappapis/animation-frames/callback-exception.html",
|
||||
|
@ -592649,10 +592691,34 @@
|
|||
"2bea14569ddd5c874a05d7ad72f083b2918d6e84",
|
||||
"support"
|
||||
],
|
||||
"html/user-activation/activation-api-click.tentative.html": [
|
||||
"24ce6e1a4963aef7638ce2b69c8476dcda6513ce",
|
||||
"testharness"
|
||||
],
|
||||
"html/user-activation/activation-api-iframe-no-activate.tenative.html": [
|
||||
"f04d5b96b044354727a8a838b49b809ff0e613e2",
|
||||
"testharness"
|
||||
],
|
||||
"html/user-activation/activation-api-iframe.tenative.html": [
|
||||
"3a1e3a31382debb324f5917a63c30303391aed50",
|
||||
"testharness"
|
||||
],
|
||||
"html/user-activation/activation-api-setTimeout.tentative.html": [
|
||||
"9cdb756da2a3651437efd2666255e1e7e26bd108",
|
||||
"testharness"
|
||||
],
|
||||
"html/user-activation/activation-thru-contextmenu-event-manual.html": [
|
||||
"6383438f2069930b8f7fe684c5a2850d138e6073",
|
||||
"manual"
|
||||
],
|
||||
"html/user-activation/resources/child-one.html": [
|
||||
"9d00ea8b452c936983e9c334bdb9722608807555",
|
||||
"support"
|
||||
],
|
||||
"html/user-activation/resources/child-two.html": [
|
||||
"3789d0029711f4333e301955d4ff4b8b35a581b6",
|
||||
"support"
|
||||
],
|
||||
"html/webappapis/.gitkeep": [
|
||||
"da39a3ee5e6b4b0d3255bfef95601890afd80709",
|
||||
"support"
|
||||
|
|
|
@ -0,0 +1,34 @@
|
|||
<!DOCTYPE html>
|
||||
<!--
|
||||
Tentative due to:
|
||||
https://github.com/whatwg/html/issues/1983
|
||||
-->
|
||||
<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>Clicking on document sets user activation</h1>
|
||||
<p>Click anywhere in the document.</p>
|
||||
<script>
|
||||
async_test(function(t) {
|
||||
assert_false(navigator.userActivation.hasBeenActive);
|
||||
assert_false(navigator.userActivation.isActive);
|
||||
window.addEventListener("click", t.step_func_done(event => {
|
||||
assert_true(navigator.userActivation.hasBeenActive);
|
||||
assert_true(navigator.userActivation.isActive);
|
||||
|
||||
// Opening a window should consume the activation.
|
||||
var win = window.open('404.html');
|
||||
win.close();
|
||||
assert_true(navigator.userActivation.hasBeenActive);
|
||||
assert_false(navigator.userActivation.isActive);
|
||||
}));
|
||||
test_driver.click(document.body);
|
||||
}, "Values adjust on activity");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,58 @@
|
|||
<!DOCTYPE html>
|
||||
<!--
|
||||
Tentative due to:
|
||||
https://github.com/whatwg/html/issues/3739
|
||||
|
||||
-->
|
||||
<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>Clicking in parent frame does not propagate state to child</h1>
|
||||
<ol id="instructions">
|
||||
<li>Click this instruction text.
|
||||
</ol>
|
||||
<iframe id="child" width="200" height="200"></iframe>
|
||||
<script>
|
||||
async_test(function(t) {
|
||||
var child = document.getElementById("child");
|
||||
assert_false(navigator.userActivation.isActive);
|
||||
assert_false(navigator.userActivation.hasBeenActive);
|
||||
window.addEventListener("message", t.step_func(event => {
|
||||
var msg = JSON.parse(event.data);
|
||||
if (msg.type == 'child-one-loaded') {
|
||||
// state should be false after load
|
||||
assert_false(msg.isActive);
|
||||
assert_false(msg.hasBeenActive);
|
||||
|
||||
// click in parent document
|
||||
test_driver.click(document.getElementById('instructions'));
|
||||
} else if (msg.type == 'child-one-report') {
|
||||
// state should be false after asked to report
|
||||
assert_false(msg.isActive);
|
||||
assert_false(msg.hasBeenActive);
|
||||
t.done();
|
||||
}
|
||||
}));
|
||||
window.addEventListener("click", t.step_func(event => {
|
||||
assert_true(navigator.userActivation.isActive);
|
||||
assert_true(navigator.userActivation.hasBeenActive);
|
||||
|
||||
// Opening a window should consume the activation.
|
||||
var win = window.open('404.html');
|
||||
win.close();
|
||||
assert_false(navigator.userActivation.isActive);
|
||||
assert_true(navigator.userActivation.hasBeenActive);
|
||||
|
||||
// ask child to report their state
|
||||
child.contentWindow.postMessage('report', '*');
|
||||
}));
|
||||
child.src = "resources/child-one.html";
|
||||
}, "Values adjust on activity");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,52 @@
|
|||
<!DOCTYPE html>
|
||||
<!--
|
||||
Tentative due to:
|
||||
https://github.com/whatwg/html/issues/3739
|
||||
|
||||
-->
|
||||
<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>Clicking in iframe has activation state in child</h1>
|
||||
<ol id="instructions">
|
||||
<li>Click inside the red area.
|
||||
</ol>
|
||||
<iframe id="child" width="200" height="200"></iframe>
|
||||
<script>
|
||||
async_test(function(t) {
|
||||
var child = document.getElementById("child");
|
||||
assert_false(navigator.userActivation.isActive);
|
||||
assert_false(navigator.userActivation.hasBeenActive);
|
||||
window.addEventListener("message", t.step_func(event => {
|
||||
var msg = JSON.parse(event.data);
|
||||
if (msg.type == 'child-one-loaded') {
|
||||
// values have false after load
|
||||
assert_false(msg.isActive);
|
||||
assert_false(msg.hasBeenActive);
|
||||
test_driver.click(child);
|
||||
} else if (msg.type == 'child-one-clicked') {
|
||||
// values have activation state on click
|
||||
assert_true(navigator.userActivation.isActive);
|
||||
assert_true(navigator.userActivation.hasBeenActive);
|
||||
assert_true(msg.isActive);
|
||||
assert_true(msg.hasBeenActive);
|
||||
child.src = "resources/child-two.html";
|
||||
} else if (msg.type == 'child-two-loaded') {
|
||||
// values are reset after navigation
|
||||
assert_true(navigator.userActivation.isActive);
|
||||
assert_true(navigator.userActivation.hasBeenActive);
|
||||
assert_false(msg.isActive);
|
||||
assert_false(msg.hasBeenActive);
|
||||
t.done();
|
||||
}
|
||||
}));
|
||||
child.src = "resources/child-one.html";
|
||||
}, "Values adjust on activity");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,36 @@
|
|||
<!DOCTYPE html>
|
||||
<!--
|
||||
Tentative due to:
|
||||
https://github.com/whatwg/html/issues/1983
|
||||
-->
|
||||
<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>Clicking on document sets user activation even after setTimeout</h1>
|
||||
<p>Click anywhere in the document.</p>
|
||||
<script>
|
||||
async_test(function(t) {
|
||||
assert_false(navigator.userActivation.hasBeenActive);
|
||||
assert_false(navigator.userActivation.isActive);
|
||||
window.addEventListener("click", event => {
|
||||
t.step_timeout(() => {
|
||||
assert_true(navigator.userActivation.hasBeenActive);
|
||||
assert_true(navigator.userActivation.isActive);
|
||||
|
||||
// Opening a window should consume the activation.
|
||||
window.open('404.html');
|
||||
assert_true(navigator.userActivation.hasBeenActive);
|
||||
assert_false(navigator.userActivation.isActive);
|
||||
t.done();
|
||||
}, 0);
|
||||
});
|
||||
test_driver.click(document.body);
|
||||
}, "Values adjust on activity");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,20 @@
|
|||
<!DOCTYPE html>
|
||||
<body style="background: red;">
|
||||
<script>
|
||||
window.parent.postMessage(JSON.stringify({"type": "child-one-loaded", "isActive": navigator.userActivation.isActive,
|
||||
"hasBeenActive": navigator.userActivation.hasBeenActive}), "*");
|
||||
|
||||
window.addEventListener("click", event => {
|
||||
window.parent.postMessage(JSON.stringify({"type": "child-one-clicked", "isActive": navigator.userActivation.isActive,
|
||||
"hasBeenActive": navigator.userActivation.hasBeenActive}), "*");
|
||||
});
|
||||
|
||||
window.addEventListener("message", event => {
|
||||
if (event.data == "report") {
|
||||
window.parent.postMessage(JSON.stringify({"type": "child-one-report", "isActive": navigator.userActivation.isActive,
|
||||
"hasBeenActive": navigator.userActivation.hasBeenActive}), "*");
|
||||
}
|
||||
});
|
||||
|
||||
</script>
|
||||
</body>
|
|
@ -0,0 +1,7 @@
|
|||
<!DOCTYPE html>
|
||||
<body style="background: red;">
|
||||
<script>
|
||||
window.parent.postMessage(JSON.stringify({"type": "child-two-loaded", "isActive": navigator.userActivation.isActive,
|
||||
"hasBeenActive": navigator.userActivation.hasBeenActive}), "*");
|
||||
</script>
|
||||
</body>
|
Загрузка…
Ссылка в новой задаче