From 02ac792b198ac2b5d95f4667d51b53d165efc378 Mon Sep 17 00:00:00 2001 From: Noemi Erli Date: Thu, 29 Feb 2024 22:43:51 +0200 Subject: [PATCH] Backed out changeset 9b4da905ce36 (bug 1789727) for causing failures in browser_asrouter_toolbarbadge.js CLOSED TREE --- browser/app/profile/firefox.js | 8 +- .../browser_startup_content_mainthreadio.js | 7 -- browser/components/BrowserGlue.sys.mjs | 32 +++--- .../screenshots/ScreenshotsUtils.sys.mjs | 7 +- .../browser_screenshots_test_toggle_pref.js | 97 +++++++------------ .../screenshots/test/browser/browser.toml | 6 +- .../harness/telemetry_harness/runner.py | 3 - 7 files changed, 53 insertions(+), 107 deletions(-) diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js index f41b76fb82df..c1224e80205e 100644 --- a/browser/app/profile/firefox.js +++ b/browser/app/profile/firefox.js @@ -2406,12 +2406,8 @@ pref("browser.suppress_first_window_animation", true); // Preference that allows individual users to disable Screenshots. pref("extensions.screenshots.disabled", false); -// Preference that determines whether Screenshots uses the dedicated browser component -#ifdef NIGHTLY_BUILD - pref("screenshots.browser.component.enabled", true); -#else - pref("screenshots.browser.component.enabled", false); -#endif +// Preference that determines whether Screenshots is opened as a dedicated browser component +pref("screenshots.browser.component.enabled", false); // Preference that determines what button to focus pref("screenshots.browser.component.last-saved-method", "download"); diff --git a/browser/base/content/test/performance/browser_startup_content_mainthreadio.js b/browser/base/content/test/performance/browser_startup_content_mainthreadio.js index e26736306466..e60b95bb3cab 100644 --- a/browser/base/content/test/performance/browser_startup_content_mainthreadio.js +++ b/browser/base/content/test/performance/browser_startup_content_mainthreadio.js @@ -152,13 +152,6 @@ const processes = { condition: WIN, stat: 1, }, - { - // We should remove this in bug 1882427 - path: "*screenshots@mozilla.org.xpi", - condition: true, - ignoreIfUnused: true, - close: 1, - }, ], }; diff --git a/browser/components/BrowserGlue.sys.mjs b/browser/components/BrowserGlue.sys.mjs index 55d535e74f60..bced81a71fd2 100644 --- a/browser/components/BrowserGlue.sys.mjs +++ b/browser/components/BrowserGlue.sys.mjs @@ -2144,31 +2144,26 @@ BrowserGlue.prototype = { const COMPONENT_PREF = "screenshots.browser.component.enabled"; const ID = "screenshots@mozilla.org"; const _checkScreenshotsPref = async () => { + let addon = await lazy.AddonManager.getAddonByID(ID); + if (!addon) { + return; + } let screenshotsDisabled = Services.prefs.getBoolPref( SCREENSHOTS_PREF, false ); - let componentEnabled = Services.prefs.getBoolPref(COMPONENT_PREF, true); - - let screenshotsAddon = await lazy.AddonManager.getAddonByID(ID); - + let componentEnabled = Services.prefs.getBoolPref(COMPONENT_PREF, false); if (screenshotsDisabled) { if (componentEnabled) { lazy.ScreenshotsUtils.uninitialize(); - } else if (screenshotsAddon?.isActive) { - await screenshotsAddon.disable({ allowSystemAddons: true }); + } else { + await addon.disable({ allowSystemAddons: true }); } } else if (componentEnabled) { lazy.ScreenshotsUtils.initialize(); - if (screenshotsAddon?.isActive) { - await screenshotsAddon.disable({ allowSystemAddons: true }); - } + await addon.disable({ allowSystemAddons: true }); } else { - try { - await screenshotsAddon.enable({ allowSystemAddons: true }); - } catch (ex) { - console.error(`Error trying to enable screenshots extension: ${ex}`); - } + await addon.enable({ allowSystemAddons: true }); lazy.ScreenshotsUtils.uninitialize(); } }; @@ -2439,6 +2434,7 @@ BrowserGlue.prototype = { LATE_TASKS_IDLE_TIME_SEC ); + this._monitorScreenshotsPref(); this._monitorWebcompatReporterPref(); this._monitorHTTPSOnlyPref(); this._monitorIonPref(); @@ -2791,9 +2787,13 @@ BrowserGlue.prototype = { }, { - name: "BrowserGlue._monitorScreenshotsPref", + name: "ScreenshotsUtils.initialize", task: () => { - this._monitorScreenshotsPref(); + if ( + Services.prefs.getBoolPref("screenshots.browser.component.enabled") + ) { + lazy.ScreenshotsUtils.initialize(); + } }, }, diff --git a/browser/components/screenshots/ScreenshotsUtils.sys.mjs b/browser/components/screenshots/ScreenshotsUtils.sys.mjs index 89880a630e9f..68e4f896bfff 100644 --- a/browser/components/screenshots/ScreenshotsUtils.sys.mjs +++ b/browser/components/screenshots/ScreenshotsUtils.sys.mjs @@ -544,12 +544,7 @@ export var ScreenshotsUtils = { * @param browser The current browser. */ closeOverlay(browser, options = {}) { - // If the actor has been unregistered (e.g. if the component enabled pref is flipped false) - // its possible getActor will throw an exception. That's ok. - let actor; - try { - actor = this.getActor(browser); - } catch (ex) {} + let actor = this.getActor(browser); actor?.sendAsyncMessage("Screenshots:HideOverlay", options); if (this.browserToScreenshotsState.has(browser)) { diff --git a/browser/components/screenshots/tests/browser/browser_screenshots_test_toggle_pref.js b/browser/components/screenshots/tests/browser/browser_screenshots_test_toggle_pref.js index ad262a7e6754..0aafba8fb3a8 100644 --- a/browser/components/screenshots/tests/browser/browser_screenshots_test_toggle_pref.js +++ b/browser/components/screenshots/tests/browser/browser_screenshots_test_toggle_pref.js @@ -9,7 +9,6 @@ const { sinon } = ChromeUtils.importESModule( ChromeUtils.defineESModuleGetters(this, { ScreenshotsUtils: "resource:///modules/ScreenshotsUtils.sys.mjs", - AddonManager: "resource://gre/modules/AddonManager.sys.mjs", }); ChromeUtils.defineLazyGetter(this, "ExtensionManagement", () => { const { Management } = ChromeUtils.importESModule( @@ -18,11 +17,7 @@ ChromeUtils.defineLazyGetter(this, "ExtensionManagement", () => { return Management; }); -const COMPONENT_PREF = "screenshots.browser.component.enabled"; -const SCREENSHOTS_PREF = "extensions.screenshots.disabled"; -const SCREENSHOT_EXTENSION = "screenshots@mozilla.org"; - -add_task(async function test_toggling_screenshots_pref() { +add_task(async function test() { let observerSpy = sinon.spy(); let notifierSpy = sinon.spy(); @@ -36,24 +31,13 @@ add_task(async function test_toggling_screenshots_pref() { ScreenshotsUtils.notify.wrappedMethod.apply(this, arguments); }); - // wait for startup idle tasks to complete - await new Promise(resolve => ChromeUtils.idleDispatch(resolve)); - ok(Services.prefs.getBoolPref(COMPONENT_PREF), "Component enabled"); - ok(!Services.prefs.getBoolPref(SCREENSHOTS_PREF), "Screenshots enabled"); - - let addon = await AddonManager.getAddonByID(SCREENSHOT_EXTENSION); - await BrowserTestUtils.waitForCondition( - () => !addon.isActive, - "The extension is not active when the component is prefd on" - ); - await BrowserTestUtils.withNewTab( { gBrowser, url: SHORT_TEST_PAGE, }, async browser => { - function extensionEventPromise(eventName, id) { + function awaitExtensionEvent(eventName, id) { return new Promise(resolve => { let listener = (_eventName, ...args) => { let extension = args[0]; @@ -65,21 +49,9 @@ add_task(async function test_toggling_screenshots_pref() { ExtensionManagement.on(eventName, listener); }); } + const SCREENSHOT_EXTENSION = "screenshots@mozilla.org"; let helper = new ScreenshotsHelper(browser); - ok( - addon.userDisabled, - "The extension is disabled when the component is prefd on" - ); - ok( - !addon.isActive, - "The extension is not initially active when the component is prefd on" - ); - await BrowserTestUtils.waitForCondition( - () => ScreenshotsUtils.initialized, - "The component is initialized" - ); - ok(ScreenshotsUtils.initialized, "The component is initialized"); ok(observerSpy.notCalled, "Observer not called"); helper.triggerUIFromToolbar(); @@ -108,20 +80,12 @@ add_task(async function test_toggling_screenshots_pref() { Assert.equal(observerSpy.callCount, 3, "Observer function called thrice"); - let extensionReadyPromise = extensionEventPromise( - "ready", - SCREENSHOT_EXTENSION - ); - Services.prefs.setBoolPref(COMPONENT_PREF, false); + const COMPONENT_PREF = "screenshots.browser.component.enabled"; + await SpecialPowers.pushPrefEnv({ + set: [[COMPONENT_PREF, false]], + }); ok(!Services.prefs.getBoolPref(COMPONENT_PREF), "Extension enabled"); - - info("Waiting for the extension ready event"); - await extensionReadyPromise; - await BrowserTestUtils.waitForCondition( - () => !addon.userDisabled, - "The extension gets un-disabled when the component is prefd off" - ); - ok(addon.isActive, "Extension is active"); + await awaitExtensionEvent("ready", SCREENSHOT_EXTENSION); helper.triggerUIFromToolbar(); Assert.equal( @@ -130,7 +94,6 @@ add_task(async function test_toggling_screenshots_pref() { "Observer function still called thrice" ); - info("Waiting for the extensions overlay"); await SpecialPowers.spawn( browser, ["#firefox-screenshots-preselection-iframe"], @@ -152,7 +115,6 @@ add_task(async function test_toggling_screenshots_pref() { } ); - info("Waiting for the extensions overlay"); helper.triggerUIFromToolbar(); await SpecialPowers.spawn( browser, @@ -240,7 +202,9 @@ add_task(async function test_toggling_screenshots_pref() { "screenshots-component-initialized" ); - Services.prefs.setBoolPref(COMPONENT_PREF, true); + await SpecialPowers.pushPrefEnv({ + set: [[COMPONENT_PREF, true]], + }); ok(Services.prefs.getBoolPref(COMPONENT_PREF), "Component enabled"); // Needed for component to initialize await componentReady; @@ -251,6 +215,12 @@ add_task(async function test_toggling_screenshots_pref() { 4, "Observer function called four times" ); + + const SCREENSHOTS_PREF = "extensions.screenshots.disabled"; + await SpecialPowers.pushPrefEnv({ + set: [[SCREENSHOTS_PREF, true]], + }); + ok(Services.prefs.getBoolPref(SCREENSHOTS_PREF), "Screenshots disabled"); } ); @@ -260,9 +230,7 @@ add_task(async function test_toggling_screenshots_pref() { url: SHORT_TEST_PAGE, }, async browser => { - Services.prefs.setBoolPref(SCREENSHOTS_PREF, true); - Services.prefs.setBoolPref(COMPONENT_PREF, true); - + const SCREENSHOTS_PREF = "extensions.screenshots.disabled"; ok(Services.prefs.getBoolPref(SCREENSHOTS_PREF), "Screenshots disabled"); ok( @@ -287,22 +255,21 @@ add_task(async function test_toggling_screenshots_pref() { menu.hidePopup(); await popuphidden; - let componentReady = TestUtils.topicObserved( - "screenshots-component-initialized" - ); - - Services.prefs.setBoolPref(SCREENSHOTS_PREF, false); - + await SpecialPowers.pushPrefEnv({ + set: [[SCREENSHOTS_PREF, false]], + }); ok(!Services.prefs.getBoolPref(SCREENSHOTS_PREF), "Screenshots enabled"); + } + ); - await componentReady; - - ok(ScreenshotsUtils.initialized, "The component is initialized"); - - ok( - !document.getElementById("screenshot-button").disabled, - "Toolbar button is enabled" - ); + await BrowserTestUtils.withNewTab( + { + gBrowser, + url: SHORT_TEST_PAGE, + }, + async browser => { + const SCREENSHOTS_PREF = "extensions.screenshots.disabled"; + ok(!Services.prefs.getBoolPref(SCREENSHOTS_PREF), "Screenshots enabled"); let helper = new ScreenshotsHelper(browser); @@ -317,4 +284,6 @@ add_task(async function test_toggling_screenshots_pref() { observerStub.restore(); notifierStub.restore(); + + await SpecialPowers.popPrefEnv(); }); diff --git a/browser/extensions/screenshots/test/browser/browser.toml b/browser/extensions/screenshots/test/browser/browser.toml index 9721a44689ba..240471cc7d65 100644 --- a/browser/extensions/screenshots/test/browser/browser.toml +++ b/browser/extensions/screenshots/test/browser/browser.toml @@ -1,9 +1,5 @@ [DEFAULT] -# The Screenshots extension is disabled by default in Mochitests. We re-enable it here, since it's a more realistic configuration. -prefs = [ - "extensions.screenshots.disabled=false", - "screenshots.browser.component.enabled=false", -] +prefs = ["extensions.screenshots.disabled=false",] # The Screenshots extension is disabled by default in Mochitests. We re-enable it here, since it's a more realistic configuration. ["browser_screenshot_button.js"] diff --git a/toolkit/components/telemetry/tests/marionette/harness/telemetry_harness/runner.py b/toolkit/components/telemetry/tests/marionette/harness/telemetry_harness/runner.py index 29b03e4f55fe..37a91023cef0 100644 --- a/toolkit/components/telemetry/tests/marionette/harness/telemetry_harness/runner.py +++ b/toolkit/components/telemetry/tests/marionette/harness/telemetry_harness/runner.py @@ -52,9 +52,6 @@ class TelemetryTestRunner(BaseMarionetteTestRunner): # Disable Normandy a little harder (bug 1608807). # This should also disable Nimbus. "app.shield.optoutstudies.enabled": False, - # Bug 1789727: Keep the screenshots extension disabled to avoid - # disabling the addon resulting in extra subsessions - "screenshots.browser.component.enabled": False, } )