diff options
Diffstat (limited to 'testing/web-platform/tests/idle-detection/page-visibility.https.html')
-rw-r--r-- | testing/web-platform/tests/idle-detection/page-visibility.https.html | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/testing/web-platform/tests/idle-detection/page-visibility.https.html b/testing/web-platform/tests/idle-detection/page-visibility.https.html new file mode 100644 index 0000000000..550683f704 --- /dev/null +++ b/testing/web-platform/tests/idle-detection/page-visibility.https.html @@ -0,0 +1,79 @@ +<!DOCTYPE html> +<link rel="help" href="https://github.com/samuelgoto/idle-detection"> +<title>Tests the Idle Detection API</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/test-only-api.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/page-visibility/resources/window_state_context.js"></script> +<script src="resources/idle-detection-helper.js"></script> +<script> +'use strict'; + +promise_setup(async t => { + await test_driver.set_permission({ name: 'idle-detection' }, 'granted'); + if (isChromiumBased) { + await loadChromiumResources(); + } +}) + +promise_test(async t => { + let monitor; + + expect(addMonitor).andReturn(async (monitorPtr) => { + monitor = monitorPtr; + return { + error: IdleDetectorError.SUCCESS, + state: { + idleTime: null, + screenLocked: false + } + }; + }); + + const controller = new AbortController(); + t.add_cleanup(() => { + controller.abort(); + }); + const detector = new IdleDetector(); + const watcher = new EventWatcher(t, detector, ["change"]); + const initial_state = watcher.wait_for("change"); + + await detector.start({threshold: 60000, signal: controller.signal}); + await initial_state; + + assert_equals(detector.userState, "active"); + assert_false(document.hidden); + + const {minimize, restore} = window_state_context(t); + + await minimize(); + monitor.update( + { + idleTime: { milliseconds: 0 }, + screenLocked: false + }, + /*is_overridden_by_devtools=*/true + ); + + // Assert that the detector works while the page is not visible. + await watcher.wait_for("change"); + assert_equals(detector.userState, "idle"); + assert_true(document.hidden); + + await restore(); + monitor.update( + { + idleTime: null, + screenLocked: false + }, + /*is_overridden_by_devtools=*/true + ); + + await watcher.wait_for("change"); + assert_equals(detector.userState, "active"); + assert_false(document.hidden); +}, 'Page visibility.'); + +</script> |