Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Errors

PartitionedStorageHelper.runTestInNormalAndPrivateMode(
"SharedWorkers",
async (win3rdParty, win1stParty) => {
// This test fails if run with an HTTPS 3rd-party URL because the shared worker
// which would start from the window opened from 3rdPartyStorage.html will become
// secure context and per step 11.4.3 of
// to run the SharedWorker constructor would emit an error event.
is(
win3rdParty.location.protocol,
"http:",
"Our 3rd party URL shouldn't be HTTPS"
);
let sh1 = new win1stParty.SharedWorker("sharedWorker.js");
await new Promise(resolve => {
sh1.port.onmessage = e => {
is(e.data, 1, "We expected 1 connection");
resolve();
};
sh1.port.postMessage("count");
});
let sh3 = new win3rdParty.SharedWorker("sharedWorker.js");
await new Promise(resolve => {
sh3.port.onmessage = e => {
is(e.data, 1, `We expected 1 connection for 3rd party SharedWorker`);
resolve();
};
sh3.onerror = _ => {
ok(false, "We should not be here");
resolve();
};
sh3.port.postMessage("count");
});
sh1.port.postMessage("close");
sh3.port.postMessage("close");
},
async _ => {
await new Promise(resolve => {
Services.clearData.deleteData(Ci.nsIClearDataService.CLEAR_ALL, () =>
resolve()
);
});
},
[],
false
);
PartitionedStorageHelper.runPartitioningTestInNormalAndPrivateMode(
"Partitioned tabs - SharedWorker",
"sharedworker",
// getDataCallback
async win => {
win.sh = new win.SharedWorker("partitionedSharedWorker.js");
return new Promise(resolve => {
win.sh.port.onmessage = e => {
resolve(e.data);
};
win.sh.port.postMessage({ what: "get" });
});
},
// addDataCallback
async (win, value) => {
win.sh = new win.SharedWorker("partitionedSharedWorker.js");
win.sh.port.postMessage({ what: "put", value });
return true;
},
// cleanup
async _ => {}
);