0
Fork 0
mirror of https://codeberg.org/librewolf/source.git synced 2024-12-22 21:53:31 -05:00

backport D169570, D167444 and D167563

This commit is contained in:
Malte Jürgens 2023-02-15 11:20:09 +01:00
parent 8035755185
commit 29158b63d4
No known key found for this signature in database
GPG key ID: D29FBD5F93C0CFC3
2 changed files with 95 additions and 0 deletions

View file

@ -10,6 +10,7 @@ patches/librewolf-pref-pane.patch
patches/librewolf-prefs.patch patches/librewolf-prefs.patch
patches/mozilla_dirs.patch patches/mozilla_dirs.patch
patches/remove_addons.patch patches/remove_addons.patch
patches/rfp-performance-api.patch
patches/sed-patches/allow-searchengines-non-esr.patch patches/sed-patches/allow-searchengines-non-esr.patch
patches/sed-patches/disable-pocket.patch patches/sed-patches/disable-pocket.patch
patches/sed-patches/stop-undesired-requests.patch patches/sed-patches/stop-undesired-requests.patch
@ -25,4 +26,5 @@ patches/ui-patches/remove-cfrprefs.patch
patches/ui-patches/remove-organization-policy-banner.patch patches/ui-patches/remove-organization-policy-banner.patch
patches/ui-patches/remove-snippets-from-home.patch patches/ui-patches/remove-snippets-from-home.patch
patches/ui-patches/website-appearance-ui-rfp.patch patches/ui-patches/website-appearance-ui-rfp.patch
patches/unified-extensions-dont-show-recommendations.patch
patches/urlbarprovider-interventions.patch patches/urlbarprovider-interventions.patch

View file

@ -0,0 +1,93 @@
# Backport of https://phabricator.services.mozilla.com/D169570
# Should land in 112.0
--- a/browser/base/content/browser-addons.js
+++ b/browser/base/content/browser-addons.js
@@ -1472,11 +1472,19 @@
}
// The button should directly open `about:addons` when the user does not
// have any active extensions listed in the unified extensions panel.
if (!this.hasExtensionsInPanel()) {
- await BrowserOpenAddonsMgr("addons://discover/");
+ let viewID;
+ if (
+ Services.prefs.getBoolPref("extensions.getAddons.showPane", true)
+ ) {
+ viewID = "addons://discover/";
+ } else {
+ viewID = "addons://list/extension";
+ }
+ await BrowserOpenAddonsMgr(viewID);
return;
}
}
let panel = this.panel;
--- a/browser/components/extensions/test/browser/browser_unified_extensions.js
+++ b/browser/components/extensions/test/browser/browser_unified_extensions.js
@@ -485,10 +485,64 @@
gUnifiedExtensions.getActivePolicies = origGetActivePolicies;
});
add_task(
+ async function test_button_opens_extlist_when_no_extension_and_pane_disabled() {
+ // If extensions.getAddons.showPane is set to false, there is no "Recommended" tab,
+ // so we need to make sure we don't navigate to it.
+
+ // The test harness registers regular extensions so we need to mock the
+ // `getActivePolicies` extension to simulate zero extensions installed.
+ const origGetActivePolicies = gUnifiedExtensions.getActivePolicies;
+ gUnifiedExtensions.getActivePolicies = () => [];
+
+ await SpecialPowers.pushPrefEnv({
+ set: [
+ // Set this to another value to make sure not to "accidentally" land on the right page
+ ["extensions.ui.lastCategory", "addons://list/theme"],
+ ["extensions.getAddons.showPane", false],
+ ],
+ });
+
+ await BrowserTestUtils.withNewTab(
+ { gBrowser, url: "about:robots" },
+ async () => {
+ const { button } = gUnifiedExtensions;
+ ok(button, "expected button");
+
+ // Primary click should open about:addons.
+ const tabPromise = BrowserTestUtils.waitForNewTab(
+ gBrowser,
+ "about:addons",
+ true
+ );
+
+ button.click();
+
+ const tab = await tabPromise;
+ is(
+ gBrowser.currentURI.spec,
+ "about:addons",
+ "expected about:addons to be open"
+ );
+ is(
+ gBrowser.selectedBrowser.contentWindow.gViewController.currentViewId,
+ "addons://list/extension",
+ "expected about:addons to show the extension list"
+ );
+ BrowserTestUtils.removeTab(tab);
+ }
+ );
+
+ await SpecialPowers.popPrefEnv();
+
+ gUnifiedExtensions.getActivePolicies = origGetActivePolicies;
+ }
+);
+
+add_task(
async function test_unified_extensions_panel_not_open_in_customization_mode() {
const listView = getListView();
ok(listView, "expected list view");
const throwIfExecuted = () => {
throw new Error("panel should not have been shown");