From f3ff70982157b41aa10b4b89483c42a730944d21 Mon Sep 17 00:00:00 2001 From: Aron Cseh Date: Wed, 24 Apr 2024 12:05:07 +0300 Subject: [PATCH] Backed out changeset fd7d96cffddb (bug 1891789) for causing xpcshell failures on test_worker.js CLOSED TREE --- dom/console/Console.h | 1 - dom/console/ConsoleInstance.cpp | 23 ++------- dom/console/ConsoleInstance.h | 1 - dom/console/tests/xpcshell/test_worker.js | 59 ----------------------- dom/console/tests/xpcshell/worker.mjs | 15 ------ dom/console/tests/xpcshell/xpcshell.toml | 5 -- toolkit/docs/javascript-logging.md | 3 -- 7 files changed, 4 insertions(+), 103 deletions(-) delete mode 100644 dom/console/tests/xpcshell/test_worker.js delete mode 100644 dom/console/tests/xpcshell/worker.mjs diff --git a/dom/console/Console.h b/dom/console/Console.h index bce205813071..5898c6b0f54a 100644 --- a/dom/console/Console.h +++ b/dom/console/Console.h @@ -134,7 +134,6 @@ class Console final : public nsIObserver, public nsSupportsWeakReference { MOZ_CAN_RUN_SCRIPT static void Clear(const GlobalObject& aGlobal); - MOZ_CAN_RUN_SCRIPT static already_AddRefed CreateInstance( const GlobalObject& aGlobal, const ConsoleInstanceOptions& aOptions); diff --git a/dom/console/ConsoleInstance.cpp b/dom/console/ConsoleInstance.cpp index a73b83ee4c64..ade82be50fb7 100644 --- a/dom/console/ConsoleInstance.cpp +++ b/dom/console/ConsoleInstance.cpp @@ -65,24 +65,9 @@ ConsoleInstance::ConsoleInstance(JSContext* aCx, if (!aOptions.mMaxLogLevelPref.IsEmpty()) { if (!NS_IsMainThread()) { + NS_WARNING("Console.maxLogLevelPref is not supported on workers!"); // Set the log level based on what we have. SetLogLevel(); - - // Flag an error to the console. - JS::Rooted msg(aCx); - if (!ToJSValue( - aCx, - nsLiteralCString( - "Console.maxLogLevelPref is not supported within workers!"), - &msg)) { - JS_ClearPendingException(aCx); - return; - } - - AutoTArray sequence; - SequenceRooter rootedSequence(aCx, &sequence); - sequence.AppendElement(std::move(msg)); - this->Error(aCx, std::move(sequence)); return; } @@ -95,9 +80,8 @@ ConsoleInstance::ConsoleInstance(JSContext* aCx, } ConsoleInstance::~ConsoleInstance() { - // We should only ever have set `mMaxLogLevelPref` when on the main thread, - // but check it here to be safe. - if (!mMaxLogLevelPref.IsEmpty() && NS_IsMainThread()) { + AssertIsOnMainThread(); + if (!mMaxLogLevelPref.IsEmpty()) { Preferences::UnregisterCallback(MaxLogLevelPrefChangedCallback, mMaxLogLevelPref, this); } @@ -144,6 +128,7 @@ void ConsoleInstance::SetLogLevel() { // static void ConsoleInstance::MaxLogLevelPrefChangedCallback( const char* /* aPrefName */, void* aSelf) { + AssertIsOnMainThread(); auto* instance = static_cast(aSelf); if (MOZ_UNLIKELY(!instance->mConsole)) { // We've been unlinked already but not destroyed yet. Bail. diff --git a/dom/console/ConsoleInstance.h b/dom/console/ConsoleInstance.h index 3d0e4ddcde9e..5d322a867b36 100644 --- a/dom/console/ConsoleInstance.h +++ b/dom/console/ConsoleInstance.h @@ -16,7 +16,6 @@ class ConsoleInstance final : public nsISupports, public nsWrapperCache { NS_DECL_CYCLE_COLLECTING_ISUPPORTS NS_DECL_CYCLE_COLLECTION_WRAPPERCACHE_CLASS(ConsoleInstance) - MOZ_CAN_RUN_SCRIPT explicit ConsoleInstance(JSContext* aCx, const ConsoleInstanceOptions& aOptions); diff --git a/dom/console/tests/xpcshell/test_worker.js b/dom/console/tests/xpcshell/test_worker.js deleted file mode 100644 index 7792dfc2da5e..000000000000 --- a/dom/console/tests/xpcshell/test_worker.js +++ /dev/null @@ -1,59 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - http://creativecommons.org/publicdomain/zero/1.0/ */ - -/** - * Tests for console.createInstance usage in workers. - * - * Also tests that the use of `maxLogLevelPref` logs an error, and log levels - * fallback to the `maxLogLevel` option. - */ - -"use strict"; - -let { TestUtils } = ChromeUtils.importESModule( - "resource://testing-common/TestUtils.sys.mjs" -); - -add_task(async function () { - let endConsoleListening = TestUtils.listenForConsoleMessages(); - let workerCompleteDeferred = Promise.withResolvers(); - - const worker = new ChromeWorker("resource://test/worker.mjs"); - worker.onmessage = workerCompleteDeferred.resolve; - worker.postMessage({}); - - await workerCompleteDeferred.promise; - - let messages = await endConsoleListening(); - - // Should log that we can't use `maxLogLevelPref`, and the warning message. - // The info message should not be logged, as that's lower than the specified - // `maxLogLevel` in the worker. - Assert.equal(messages.length, 2, "Should have received two messages"); - - // First message should be the error that `maxLogLevelPref` cannot be used. - Assert.equal(messages[0].level, "error", "Should be an error message"); - Assert.equal( - messages[0].prefix, - "testPrefix", - "Should have the correct prefix" - ); - Assert.equal( - messages[0].arguments[0], - "Console.maxLogLevelPref is not supported within workers!", - "Should have the correct message text" - ); - - // Second message should be the warning. - Assert.equal(messages[1].level, "warn", "Should be a warning message"); - Assert.equal( - messages[1].prefix, - "testPrefix", - "Should have the correct prefix" - ); - Assert.equal( - messages[1].arguments[0], - "Test Warn", - "Should have the correct message text" - ); -}); diff --git a/dom/console/tests/xpcshell/worker.mjs b/dom/console/tests/xpcshell/worker.mjs deleted file mode 100644 index 4a1ff21b0042..000000000000 --- a/dom/console/tests/xpcshell/worker.mjs +++ /dev/null @@ -1,15 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ */ - -onmessage = () => { - let logConsole = console.createInstance({ - maxLogLevelPref: "browser.test.logLevel", - maxLogLevel: "Warn", - prefix: "testPrefix", - }); - - logConsole.warn("Test Warn"); - logConsole.info("Test Info"); - - postMessage({}); -}; diff --git a/dom/console/tests/xpcshell/xpcshell.toml b/dom/console/tests/xpcshell/xpcshell.toml index 2a6a503531be..c5cc54d66539 100644 --- a/dom/console/tests/xpcshell/xpcshell.toml +++ b/dom/console/tests/xpcshell/xpcshell.toml @@ -11,8 +11,3 @@ support-files = "" ["test_formatting.js"] ["test_reportForServiceWorkerScope.js"] - -["test_worker.js"] -support-files = [ - "worker.mjs", -] diff --git a/toolkit/docs/javascript-logging.md b/toolkit/docs/javascript-logging.md index ae143c86b60f..520a745cfd65 100644 --- a/toolkit/docs/javascript-logging.md +++ b/toolkit/docs/javascript-logging.md @@ -76,9 +76,6 @@ lazy.logConsole.error("Something bad happened"); lazy.logConsole.debug("foo", 123) ``` -**Note:** Workers are not able to access preferences, and therefore must use -`maxLogLevel` rather than `maxLogLevelPref`. - ### Other Options to console.createInstance `console.createInstance` may be passed other options. See