48 lines
1.9 KiB
HTML
48 lines
1.9 KiB
HTML
<!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>
|