blob: 9e5183b836a3181306515b43e01495059bbf814f [file] [log] [blame]
(async function(testRunner) {
const {page, session, dp} = await testRunner.startURL(
'/',
`Verifies that Network.emulateNetworkConditions stops requests when offline is enabled for dedicated workers.`);
await dp.Target.setAutoAttach(
{autoAttach: true, waitForDebuggerOnStart: false, flatten: true});
const dedicatedWorkerSession = await new Promise(async resolve => {
const dedicatedWorkerSessionPromise = new Promise(resolve => {
dp.Target.onAttachedToTarget(event => {
resolve(session.createChild(event.params.sessionId));
});
});
await session.evaluateAsync(`
new Promise(resolve => {
const worker = new Worker('resources/dedicated-worker.js')
worker.onmessage = () => resolve();
});`);
resolve(await dedicatedWorkerSessionPromise);
});
const dwdp = dedicatedWorkerSession.protocol;
await dwdp.Network.enable();
// Calling Network.emulateNetworkConditions on the main target should affect
// the requests that the dedicated worker makes. Workers don't support
// emulateNetworkConditions.
await dp.Network.emulateNetworkConditions({
downloadThroughput: -1,
latency: 0,
offline: true,
uploadThroughput: -1
});
dedicatedWorkerSession.evaluate(`fetch('/')`);
const loadingFailed = await dwdp.Network.onceLoadingFailed();
testRunner.log('loadingFailed.params.errorText: ' + loadingFailed.params.errorText);
testRunner.log('navigator.onLine: ' + await dedicatedWorkerSession.evaluate('navigator.onLine'));
testRunner.completeTest();
})
// TODO(jarhar): Add a test like this for shared workers when we can auto attach
// to them: http://crbug.com/851323
// https://chromium-review.googlesource.com/c/chromium/src/+/2198548