Automatic update from web-platform-tests Speculation Rules prerender tests should check for support We're seeing timeouts on the STP bots, because spending over an hour timing out on speculation rules tests just eats into the timeout. -- wpt-commits: 9f7999f4b3dd412a338f3231228e64230d6a6531 wpt-pr: 59217
50 lines
1.8 KiB
HTML
50 lines
1.8 KiB
HTML
<!DOCTYPE html>
|
|
<title>Construction of Web Workers in cross-origin iframe is deferred</title>
|
|
<meta name="timeout" content="long">
|
|
<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>
|
|
<script src="resources/utils.js"></script>
|
|
|
|
<!-- This is a regression test for https://crbug.com/1424250 -->
|
|
<body>
|
|
<script>
|
|
setup(() => assertSpeculationRulesIsSupported('prerender'));
|
|
|
|
promise_test(async t => {
|
|
const uid = token();
|
|
const bc = new PrerenderChannel('test-channel', uid);
|
|
const gotMessage = new Promise(resolve => {
|
|
bc.addEventListener('message', e => {
|
|
resolve(e.data);
|
|
}, {once: true});
|
|
});
|
|
|
|
// This cross-origin iframe starts a dedicated worker and sends a message to
|
|
// this document once loading the worker is completed.
|
|
const crossOriginUrl =
|
|
new URL(`resources/workers-in-cross-origin-iframe.html?uid=${uid}`,
|
|
get_host_info()['HTTPS_REMOTE_ORIGIN'] +
|
|
window.location.pathname);
|
|
|
|
// Start prerendering. Loading the cross-origin iframe in a prerendered page
|
|
// will be deferred until prerender activation.
|
|
const {exec, activate} = await create_prerendered_page(t);
|
|
await exec(crossOriginUrl => {
|
|
const iframe = document.createElement('iframe');
|
|
iframe.src = crossOriginUrl;
|
|
document.body.appendChild(iframe);
|
|
}, [crossOriginUrl.href]);
|
|
|
|
// Activate. This resumes loading the cross-origin iframe.
|
|
await activate();
|
|
|
|
// Wait for the completion of the worker creation.
|
|
assert_equals(await gotMessage, 'Success');
|
|
}, "Dedicated workers in cross-origin iframe should be loaded after " +
|
|
"activation");
|
|
</script>
|