1 /* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5 add_task(async function test() {
6 await SpecialPowers.pushPrefEnv({
9 "dom.postMessage.sharedArrayBuffer.bypassCOOP_COEP.insecure.enabled",
15 const testURL = getRootDirectory(gTestPath) + "empty.html";
16 let tab = BrowserTestUtils.addTab(gBrowser, testURL);
17 gBrowser.selectedTab = tab;
19 await BrowserTestUtils.browserLoaded(gBrowser.getBrowserForTab(tab));
21 let promise = new Promise(resolve => {
22 const ConsoleAPIStorage = SpecialPowers.Cc[
23 "@mozilla.org/consoleAPI-storage;1"
24 ].getService(SpecialPowers.Ci.nsIConsoleAPIStorage);
26 function consoleListener() {
27 this.onConsoleLogEvent = this.onConsoleLogEvent.bind(this);
28 ConsoleAPIStorage.addLogEventListener(
29 this.onConsoleLogEvent,
30 SpecialPowers.wrap(document).nodePrincipal
32 Services.obs.addObserver(this, "console-api-profiler");
36 consoleListener.prototype = {
37 onConsoleLogEvent(aSubject) {
38 var obj = aSubject.wrappedJSObject;
42 "Hello world from a SharedWorker!",
43 "A message from a SharedWorker \\o/"
45 is(obj.ID, "sharedWorker_console.js", "The ID is SharedWorker");
46 is(obj.innerID, "SharedWorker", "The ID is SharedWorker");
47 is(order++, 1, "Then a first log message.");
52 "A message from a SharedWorker \\o/"
55 obj.arguments[1].constructor.name,
57 "We got a direct reference to the SharedArrayBuffer coming from the worker thread"
59 is(obj.ID, "sharedWorker_console.js", "The ID is SharedWorker");
60 is(obj.innerID, "SharedWorker", "The ID is SharedWorker");
61 is(order++, 2, "Then a second log message.");
63 ConsoleAPIStorage.removeLogEventListener(this.onConsoleLogEvent);
68 observe: (aSubject, aTopic) => {
69 ok(true, "Something has been received");
71 if (aTopic == "console-api-profiler") {
72 var obj = aSubject.wrappedJSObject;
75 "Hello profiling from a SharedWorker!",
76 "A message from a SharedWorker \\o/"
78 is(order++, 0, "First a profiler message.");
80 Services.obs.removeObserver(cl, "console-api-profiler");
85 var cl = new consoleListener();
88 await SpecialPowers.spawn(tab.linkedBrowser, [], async function () {
89 new content.SharedWorker("sharedWorker_console.js");
94 await BrowserTestUtils.removeTab(tab);