76 lines
2.1 KiB
JavaScript
76 lines
2.1 KiB
JavaScript
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
|
|
// https://html.spec.whatwg.org/multipage/workers.html#dom-sharedworker attempting
|
|
// 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 _ => {}
|
|
);
|