From 6bf0a5cb5034a7e684dcc3500e841785237ce2dd Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 19:32:43 +0200 Subject: Adding upstream version 1:115.7.0. Signed-off-by: Daniel Baumann --- .../test/xpcshell/test_ext_shared_array_buffer.js | 104 +++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 toolkit/components/extensions/test/xpcshell/test_ext_shared_array_buffer.js (limited to 'toolkit/components/extensions/test/xpcshell/test_ext_shared_array_buffer.js') diff --git a/toolkit/components/extensions/test/xpcshell/test_ext_shared_array_buffer.js b/toolkit/components/extensions/test/xpcshell/test_ext_shared_array_buffer.js new file mode 100644 index 0000000000..b2a9d81a27 --- /dev/null +++ b/toolkit/components/extensions/test/xpcshell/test_ext_shared_array_buffer.js @@ -0,0 +1,104 @@ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ + +"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(); +}); -- cgit v1.2.3