diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 01:47:29 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 01:47:29 +0000 |
commit | 0ebf5bdf043a27fd3dfb7f92e0cb63d88954c44d (patch) | |
tree | a31f07c9bcca9d56ce61e9a1ffd30ef350d513aa /testing/web-platform/tests/long-animation-frame/tentative/loaf-iframe-popup.html | |
parent | Initial commit. (diff) | |
download | firefox-esr-0ebf5bdf043a27fd3dfb7f92e0cb63d88954c44d.tar.xz firefox-esr-0ebf5bdf043a27fd3dfb7f92e0cb63d88954c44d.zip |
Adding upstream version 115.8.0esr.upstream/115.8.0esr
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/long-animation-frame/tentative/loaf-iframe-popup.html')
-rw-r--r-- | testing/web-platform/tests/long-animation-frame/tentative/loaf-iframe-popup.html | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/testing/web-platform/tests/long-animation-frame/tentative/loaf-iframe-popup.html b/testing/web-platform/tests/long-animation-frame/tentative/loaf-iframe-popup.html new file mode 100644 index 0000000000..565273b6c6 --- /dev/null +++ b/testing/web-platform/tests/long-animation-frame/tentative/loaf-iframe-popup.html @@ -0,0 +1,65 @@ +<!DOCTYPE HTML> +<meta charset=utf-8> +<title>Long Animation Frame Timing: iframes & popups</title> +<meta name="timeout" content="long"> +<body> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/common/get-host-info.sub.js"></script> +<script src="/common/utils.js"></script> +<script src="/common/dispatcher/dispatcher.js"></script> +<script src="resources/utils.js"></script> +<div id="log"></div> +<script> +const host_info = get_host_info(); +const {ORIGIN, REMOTE_ORIGIN, HTTP_NOTSAMESITE_ORIGIN} = host_info; + +promise_test(async t => { + const [executor] = await prepare_exec_iframe(t, ORIGIN); + await expect_no_long_frame(() => executor.execute_script((duration) => { + const deadline = performance.now() + duration; + while (performance.now() < deadline) {} + }, [very_long_frame_duration]), t); +}, 'A long busy wait without render in a same-origin iframe is not a long animation frame'); + +promise_test(async t => { + const [executor] = await prepare_exec_iframe(t, HTTP_NOTSAMESITE_ORIGIN); + await expect_no_long_frame(() => executor.execute_script((duration) => { + const deadline = performance.now() + duration; + while (performance.now() < deadline) {} + }, [very_long_frame_duration]), t); +}, 'A long busy wait in a cross-origin iframe is not a long animation frame'); + +promise_test(async t => { + const [executor] = await prepare_exec_iframe(t, ORIGIN); + await expect_long_frame(() => executor.execute_script(async (duration) => { + await new Promise(resolve => window.requestAnimationFrame(resolve)); + const deadline = performance.now() + duration; + while (performance.now() < deadline) {} + }, [very_long_frame_duration]), t); +}, 'A long busy wait in a same-origin requestAnimationFrame is a long animation frame'); + +promise_test(async t => { + const [executor] = await prepare_exec_popup(t, ORIGIN); + await expect_no_long_frame(() => executor.execute_script((duration) => { + const deadline = performance.now() + duration; + while (performance.now() < deadline) {} + }, [very_long_frame_duration]), t); +}, 'A long busy wait in a same-origin popup is a not long animation frame'); + +for (const origin of ["ORIGIN", "REMOTE_ORIGIN", "HTTP_NOTSAMESITE_ORIGIN"]) { + promise_test(async t => { + const [executor] = await prepare_exec_iframe(t, host_info[origin]); + const entry = await executor.execute_script(async (duration) => { + const entryPromise = new Promise(resolve => new PerformanceObserver(list => { + resolve(list.getEntries(0)); + }).observe({entryTypes: ["long-animation-frame"]})); + const deadline = performance.now() + duration; + while (performance.now() < deadline) {} + return entryPromise; + }, [very_long_frame_duration]); + }, `frames receive own long animation frames (${origin})`); +} + +</script> +</body> |