diff options
Diffstat (limited to 'testing/web-platform/tests/longtask-timing/shared-renderer')
2 files changed, 62 insertions, 0 deletions
diff --git a/testing/web-platform/tests/longtask-timing/shared-renderer/longtask-in-new-window.html b/testing/web-platform/tests/longtask-timing/shared-renderer/longtask-in-new-window.html new file mode 100644 index 0000000000..7668d995d8 --- /dev/null +++ b/testing/web-platform/tests/longtask-timing/shared-renderer/longtask-in-new-window.html @@ -0,0 +1,48 @@ +<!DOCTYPE HTML> +<meta charset=utf-8> +<title>LongTask Timing: long task in another window</title> +<body> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<script> +/* This test should pass even when windows share a single renderer process. + This window opens a new window which contains a longtask. We test that the + longtask from the new window is not observed by the observer of this window. */ +async_test(t => { + assert_implements(window.PerformanceLongTaskTiming, 'Longtasks are not supported.'); + const observer = new PerformanceObserver( + t.step_func(function (entryList) { + const entries = entryList.getEntries(); + let markFound = false; + for (let i = 0; i < entries.length; ++i) { + const entry = entries[i]; + // We do not expect to observe longtasks but the work being made in this window may produce a longtask. + assert_true(entry.entryType === 'longtask' || + entry.entryType === 'mark'); + if (entry.entryType === 'mark') { + markFound = true; + continue; + } + // If a longtask is observed, it must come from this window. + assert_equals(entry.name, 'self'); + } + // If we found the mark, then the other window longtask is done. + if (markFound) + t.done(); + }) + ); + observer.observe({entryTypes: ['mark', 'longtask']}); + + window.onload = () => { + // Open a window with a longtask. + const other_window = window.open('resources/frame-with-longtask.html'); + window.addEventListener('message', t.step_func(e => { + // Do a mark (after the other window's longtask) to fire the callback. + self.performance.mark('mark1'); + })); + }; +}, 'A longtask in a frame from window.open is not reported in original frame'); +</script> +</body> diff --git a/testing/web-platform/tests/longtask-timing/shared-renderer/resources/frame-with-longtask.html b/testing/web-platform/tests/longtask-timing/shared-renderer/resources/frame-with-longtask.html new file mode 100644 index 0000000000..9d0273e192 --- /dev/null +++ b/testing/web-platform/tests/longtask-timing/shared-renderer/resources/frame-with-longtask.html @@ -0,0 +1,14 @@ +<!DOCTYPE HTML> +<meta charset=utf-8> +<meta name="viewport" content="width=device-width"> + +<title>Long Task Frame</title> +<body> +<h1>Long Task plus PostMessage</h1> + +<script> + const begin = window.performance.now(); + while (window.performance.now() < begin + 60); + window.opener.postMessage('Finished.', '*'); +</script> +</body> |