diff options
Diffstat (limited to 'testing/web-platform/tests/html/user-activation/chained-setTimeout.html')
-rw-r--r-- | testing/web-platform/tests/html/user-activation/chained-setTimeout.html | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/user-activation/chained-setTimeout.html b/testing/web-platform/tests/html/user-activation/chained-setTimeout.html new file mode 100644 index 0000000000..a530837392 --- /dev/null +++ b/testing/web-platform/tests/html/user-activation/chained-setTimeout.html @@ -0,0 +1,63 @@ +<!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> + <script> + let chained_timeout_test = async_test("Chained setTimeout test"); + + const max_call_depth = 3; + const delay_ms = 10; + + function testInitialStates(depth) { + assert_true(1 <= depth && depth <= max_call_depth); + + chained_timeout_test.step_timeout(() => { + let test_name = "Call-depth=" + depth + ": initial activation states are false"; + test(() => { + assert_false(navigator.userActivation.isActive); + assert_false(navigator.userActivation.hasBeenActive); + }, test_name); + + if (depth < max_call_depth) + testInitialStates(depth+1); + else + test_driver.click(document.body); + }, delay_ms); + } + + function testFinalStates(depth) { + assert_true(1 <= depth && depth <= max_call_depth); + + chained_timeout_test.step_timeout(() => { + let test_name = "Call-depth=" + depth + ": after-click activation states are true"; + test(() => { + assert_true(navigator.userActivation.isActive); + assert_true(navigator.userActivation.hasBeenActive); + }, test_name); + + if (depth < max_call_depth) + testFinalStates(depth+1); + else + chained_timeout_test.done(); + }, delay_ms) + } + + function run() { + window.addEventListener("click", event => { + testFinalStates(1); + }); + + testInitialStates(1); + } + </script> +</head> +<body onload="run()"> + <h1>User activation state in chained setTimeout calls</h1> + <p>Tests that user activation state is visible in arbitrary call depth of setTimeout.</p> + <ol id="instructions"> + <li>Click anywhere in the document. + </ol></body> +</html> |