From cc57189ab5219e7c2089cd6bee0fbcd083a41b4f Mon Sep 17 00:00:00 2001 From: Niklas Baumgardner Date: Tue, 4 Oct 2022 00:03:56 +0000 Subject: [PATCH] Bug 1790855 - Enable screenshots button on about pages when screenshots component is enabled. r=sfoster Differential Revision: https://phabricator.services.mozilla.com/D157355 --- browser/base/content/browser.js | 56 +++++++++++++++++-- browser/base/content/nsContextMenu.js | 3 +- ...browser_screenshots_test_toolbar_button.js | 4 +- 3 files changed, 54 insertions(+), 9 deletions(-) diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js index f119ee935030..8c70e7444ee5 100644 --- a/browser/base/content/browser.js +++ b/browser/base/content/browser.js @@ -547,6 +547,34 @@ XPCOMUtils.defineLazyPreferenceGetter( true ); +XPCOMUtils.defineLazyPreferenceGetter( + this, + "gScreenshotsDisabled", + "extensions.screenshots.disabled", + false, + () => { + Services.obs.notifyObservers( + window, + "toggle-screenshot-disable", + gScreenshots.shouldScreenshotsButtonBeDisabled() + ); + } +); + +XPCOMUtils.defineLazyPreferenceGetter( + this, + "gScreenshotsComponentEnabled", + "screenshots.browser.component.enabled", + false, + () => { + Services.obs.notifyObservers( + window, + "toggle-screenshot-disable", + gScreenshots.shouldScreenshotsButtonBeDisabled() + ); + } +); + customElements.setElementCreationCallback("translation-notification", () => { Services.scriptloader.loadSubScript( "chrome://browser/content/translation-notification.js", @@ -679,6 +707,25 @@ var gNavigatorBundle = { }, }; +var gScreenshots = { + shouldScreenshotsButtonBeDisabled(uri) { + // About pages other than about:reader are not currently supported by + // the screenshots extension (see Bug 1620992). + let shouldBeDisabled; + if (uri) { + shouldBeDisabled = + gScreenshotsDisabled || + (!gScreenshotsComponentEnabled && + uri.scheme === "about" && + !uri.spec.startsWith("about:reader")); + } else { + shouldBeDisabled = gScreenshotsDisabled || !gScreenshotsComponentEnabled; + } + + return shouldBeDisabled; + }, +}; + function updateFxaToolbarMenu(enable, isInitialUpdate = false) { // We only show the Firefox Account toolbar menu if the feature is enabled and // if sync is enabled. @@ -5441,14 +5488,13 @@ var XULBrowserWindow = { closeOpenPanels("panel[locationspecific='true']"); } - // About pages other than about:reader are not currently supported by - // screenshots (see Bug 1620992). + let screenshotsButtonsDisabled = gScreenshots.shouldScreenshotsButtonBeDisabled( + aLocationURI + ); Services.obs.notifyObservers( window, "toggle-screenshot-disable", - (aLocationURI.scheme == "about" && - !aLocationURI.spec.startsWith("about:reader")) || - Services.prefs.getBoolPref("extensions.screenshots.disabled") + screenshotsButtonsDisabled ); gPermissionPanel.onLocationChange(); diff --git a/browser/base/content/nsContextMenu.js b/browser/base/content/nsContextMenu.js index 3175e7f5b60a..4a947a5af3fc 100644 --- a/browser/base/content/nsContextMenu.js +++ b/browser/base/content/nsContextMenu.js @@ -1280,8 +1280,7 @@ class nsContextMenu { // screenshots (see Bug 1620992) let uri = this.contentData?.documentURIObject; let shouldShow = - !screenshotsDisabled && - (uri.scheme != "about" || uri.spec.startsWith("about:reader")) && + !gScreenshots.shouldScreenshotsButtonBeDisabled(uri) && this.inTabBrowser && !this.onTextInput && !this.onLink && diff --git a/browser/components/screenshots/tests/browser/browser_screenshots_test_toolbar_button.js b/browser/components/screenshots/tests/browser/browser_screenshots_test_toolbar_button.js index fb4bb133bcfc..5ad7d321927f 100644 --- a/browser/components/screenshots/tests/browser/browser_screenshots_test_toolbar_button.js +++ b/browser/components/screenshots/tests/browser/browser_screenshots_test_toolbar_button.js @@ -19,8 +19,8 @@ add_task(async function testScreenshotButtonDisabled() { await BrowserTestUtils.withNewTab("about:home", () => { Assert.equal( screenshotBtn.disabled, - true, - "Screenshots button is now disabled" + false, + "Screenshots button is still enabled on about pages" ); }); });