Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

/* Any copyright is dedicated to the Public Domain.
"use strict";
add_task(async function test_shared_array_buffer_worker() {
const extension_description = {
isPrivileged: null,
async background() {
browser.test.onMessage.addListener(async isPrivileged => {
const worker = new Worker("worker.js");
worker.isPrivileged = isPrivileged;
worker.onmessage = function (e) {
const msg = `${
this.isPrivileged
? "privileged addon can"
: "non-privileged addon can't"
} instantiate a SharedArrayBuffer
in a worker`;
if (e.data === this.isPrivileged) {
browser.test.succeed(msg);
} else {
browser.test.fail(msg);
}
browser.test.sendMessage("test-sab-worker:done");
};
});
},
files: {
"worker.js": function () {
try {
new SharedArrayBuffer(1);
this.postMessage(true);
} catch (e) {
this.postMessage(false);
}
},
},
};
// This test attempts to verify that a worker inside a privileged addon
// is allowed to instantiate a SharedArrayBuffer
extension_description.isPrivileged = true;
let extension = ExtensionTestUtils.loadExtension(extension_description);
await extension.startup();
extension.sendMessage(extension_description.isPrivileged);
await extension.awaitMessage("test-sab-worker:done");
await extension.unload();
// This test attempts to verify that a worker inside a non privileged addon
// is not allowed to instantiate a SharedArrayBuffer
extension_description.isPrivileged = false;
extension = ExtensionTestUtils.loadExtension(extension_description);
await extension.startup();
extension.sendMessage(extension_description.isPrivileged);
await extension.awaitMessage("test-sab-worker:done");
await extension.unload();
});
add_task(async function test_shared_array_buffer_content() {
let extension_description = {
isPrivileged: null,
async background() {
browser.test.onMessage.addListener(async isPrivileged => {
let succeed = null;
try {
new SharedArrayBuffer(1);
succeed = true;
} catch (e) {
succeed = false;
} finally {
const msg = `${
isPrivileged ? "privileged addon can" : "non-privileged addon can't"
} instantiate a SharedArrayBuffer
in the main thread`;
if (succeed === isPrivileged) {
browser.test.succeed(msg);
} else {
browser.test.fail(msg);
}
browser.test.sendMessage("test-sab-content:done");
}
});
},
};
// This test attempts to verify that a non privileged addon
// is allowed to instantiate a sharedarraybuffer
extension_description.isPrivileged = true;
let extension = ExtensionTestUtils.loadExtension(extension_description);
await extension.startup();
extension.sendMessage(extension_description.isPrivileged);
await extension.awaitMessage("test-sab-content:done");
await extension.unload();
// This test attempts to verify that a non privileged addon
// is not allowed to instantiate a sharedarraybuffer
extension_description.isPrivileged = false;
extension = ExtensionTestUtils.loadExtension(extension_description);
await extension.startup();
extension.sendMessage(extension_description.isPrivileged);
await extension.awaitMessage("test-sab-content:done");
await extension.unload();
});