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:
Dave Tapuska 2018-07-07 12:50:24 +00:00 коммит произвёл James Graham
Родитель b799cad93a
Коммит 2b36496d6b
7 изменённых файлов: 273 добавлений и 0 удалений

Просмотреть файл

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