commit 8aa37ba50f5decc79cf73787581badb106d1dd74
parent 2786c0f5b896a22b0fd61f60d91bedb8177b9673
Author: Rob Wu <rob@robwu.nl>
Date: Fri, 17 Oct 2025 12:29:44 +0000
Bug 1994180 - Correctly reference "Manage extensions" string r=rpl,fluent-reviewers,bolsson
Differential Revision: https://phabricator.services.mozilla.com/D268544
Diffstat:
4 files changed, 82 insertions(+), 12 deletions(-)
diff --git a/browser/base/content/browser-addons.js b/browser/base/content/browser-addons.js
@@ -2427,7 +2427,7 @@ var gUnifiedExtensions = {
);
document.l10n.setAttributes(
emptyStateBox.querySelector("description"),
- "unified-extensions-empty-content-explain-enable"
+ "unified-extensions-empty-content-explain-enable2"
);
emptyStateBox.hidden = false;
this.isAtLeastOneExtensionWithPBMOptIn().then(result => {
@@ -2436,7 +2436,7 @@ var gUnifiedExtensions = {
if (!result) {
document.l10n.setAttributes(
emptyStateBox.querySelector("description"),
- "unified-extensions-empty-content-explain-manage"
+ "unified-extensions-empty-content-explain-manage2"
);
}
});
@@ -2451,8 +2451,8 @@ var gUnifiedExtensions = {
document.l10n.setAttributes(
emptyStateBox.querySelector("description"),
disabledExtensionsInfo.isAnyEnableable
- ? "unified-extensions-empty-content-explain-enable"
- : "unified-extensions-empty-content-explain-manage"
+ ? "unified-extensions-empty-content-explain-enable2"
+ : "unified-extensions-empty-content-explain-manage2"
);
emptyStateBox.hidden = false;
} else if (!policies.length) {
diff --git a/browser/components/extensions/test/browser/browser_unified_extensions_empty_panel.js b/browser/components/extensions/test/browser/browser_unified_extensions_empty_panel.js
@@ -97,6 +97,31 @@ function getDiscoverButton(win) {
);
}
+async function checkManageExtensionsText(elem) {
+ const l10nId = elem.dataset.l10nId;
+ const doc = elem.ownerDocument;
+ if (doc.hasPendingL10nMutations) {
+ await BrowserTestUtils.waitForEvent(doc, "L10nMutationsFinished");
+ }
+ const expectedButtonText = "Manage extensions";
+ let expectedTextContent;
+ if (l10nId === "unified-extensions-empty-content-explain-enable2") {
+ expectedTextContent =
+ "Select “Manage extensions” to enable them in settings.";
+ } else if (l10nId === "unified-extensions-empty-content-explain-manage2") {
+ expectedTextContent =
+ "Select “Manage extensions” to manage them in settings.";
+ } else {
+ ok(false, `Unexpected data-l10n-id: ${l10nId}`);
+ return;
+ }
+ ok(
+ expectedTextContent.includes(expectedButtonText),
+ "Description contains button text ('Manage extensions')"
+ );
+ is(expectedTextContent, elem.textContent, "Description has expected text");
+}
+
add_task(async function test_button_opens_discopane_when_no_extension() {
await BrowserTestUtils.withNewTab(
{ gBrowser, url: "about:robots" },
@@ -310,10 +335,12 @@ add_task(async function test_button_click_in_pbm_without_private_extensions() {
);
is(
emptyStateBox.querySelector("description").getAttribute("data-l10n-id"),
- "unified-extensions-empty-content-explain-enable",
+ "unified-extensions-empty-content-explain-enable2",
"Has description pointing to Manage extensions button."
);
+ await checkManageExtensionsText(emptyStateBox.querySelector("description"));
+
await BrowserTestUtils.closeWindow(win);
await Promise.all(extensions.map(extension => extension.unload()));
@@ -378,10 +405,12 @@ add_task(async function test_button_click_in_pbm_and_incognito_not_allowed() {
);
is(
emptyStateBox.querySelector("description").getAttribute("data-l10n-id"),
- "unified-extensions-empty-content-explain-manage",
+ "unified-extensions-empty-content-explain-manage2",
"Has description pointing to Manage extensions button with text MANAGE, not ENABLE"
);
+ await checkManageExtensionsText(emptyStateBox.querySelector("description"));
+
await BrowserTestUtils.closeWindow(win);
await Promise.all(extensions.map(extension => extension.unload()));
@@ -420,10 +449,12 @@ add_task(async function test_button_click_in_pbm_pinned_and_no_access() {
);
is(
emptyStateBox.querySelector("description").getAttribute("data-l10n-id"),
- "unified-extensions-empty-content-explain-enable",
+ "unified-extensions-empty-content-explain-enable2",
"Has description pointing to Manage extensions button."
);
+ await checkManageExtensionsText(emptyStateBox.querySelector("description"));
+
await BrowserTestUtils.closeWindow(win);
await Promise.all(extensions.map(extension => extension.unload()));
@@ -449,10 +480,12 @@ add_task(async function test_empty_state_with_disabled_addon() {
);
is(
emptyStateBox.querySelector("description").getAttribute("data-l10n-id"),
- "unified-extensions-empty-content-explain-enable",
+ "unified-extensions-empty-content-explain-enable2",
"Has description pointing to Manage extensions button."
);
+ await checkManageExtensionsText(emptyStateBox.querySelector("description"));
+
await BrowserTestUtils.closeWindow(win);
await extension.unload();
@@ -558,15 +591,17 @@ async function do_test_empty_state_with_blocklisted_addon(isSoftBlock) {
if (isSoftBlock) {
is(
emptyStateBox.querySelector("description").getAttribute("data-l10n-id"),
- "unified-extensions-empty-content-explain-enable",
+ "unified-extensions-empty-content-explain-enable2",
"Has description pointing to Manage extensions button with text ENABLE"
);
+ await checkManageExtensionsText(emptyStateBox.querySelector("description"));
} else {
is(
emptyStateBox.querySelector("description").getAttribute("data-l10n-id"),
- "unified-extensions-empty-content-explain-manage",
+ "unified-extensions-empty-content-explain-manage2",
"Has description pointing to Manage extensions button with text MANAGE, not ENABLE"
);
+ await checkManageExtensionsText(emptyStateBox.querySelector("description"));
}
await closeExtensionsPanel(window);
diff --git a/browser/locales/en-US/browser/unifiedExtensions.ftl b/browser/locales/en-US/browser/unifiedExtensions.ftl
@@ -15,8 +15,8 @@ unified-extensions-empty-reason-private-browsing-not-allowed = You have extensio
unified-extensions-empty-reason-extension-not-enabled = You have extensions installed, but not enabled
# In this headline, “Level up” means to enhance your browsing experience.
unified-extensions-empty-reason-zero-extensions-onboarding = Level up your browsing with extensions
-unified-extensions-empty-content-explain-enable = Select “{ unified-extensions-item-message-manage }” to enable them in settings.
-unified-extensions-empty-content-explain-manage = Select “{ unified-extensions-item-message-manage }” to manage them in settings.
+unified-extensions-empty-content-explain-enable2 = Select “{ unified-extensions-manage-extensions.label }” to enable them in settings.
+unified-extensions-empty-content-explain-manage2 = Select “{ unified-extensions-manage-extensions.label }” to manage them in settings.
unified-extensions-empty-content-explain-extensions-onboarding = Personalize { -brand-short-name } by changing how it looks and performs or boosting privacy and safety.
## An extension in the main list
diff --git a/python/l10n/fluent_migrations/bug_1994180_fix_manage_extensions_reference.py b/python/l10n/fluent_migrations/bug_1994180_fix_manage_extensions_reference.py
@@ -0,0 +1,35 @@
+# Any copyright is dedicated to the Public Domain.
+# http://creativecommons.org/publicdomain/zero/1.0/
+
+from fluent.migrate.transforms import TransformPattern
+import fluent.syntax.ast as FTL
+
+
+class FIXUP_REFERENCE(TransformPattern):
+ def visit_MessageReference(self, node):
+ if node.id.name == "unified-extensions-item-message-manage":
+ node.id.name = "unified-extensions-manage-extensions.label"
+ return node
+
+
+def migrate(ctx):
+ """Bug 1994180 - Change unified-extensions-item-message-manage reference to unified-extensions-manage-extensions.label, part {index}"""
+ path = "browser/browser/unifiedExtensions.ftl"
+ ctx.add_transforms(
+ path,
+ path,
+ [
+ FTL.Message(
+ id=FTL.Identifier("unified-extensions-empty-content-explain-enable2"),
+ value=FIXUP_REFERENCE(
+ path, "unified-extensions-empty-content-explain-enable"
+ ),
+ ),
+ FTL.Message(
+ id=FTL.Identifier("unified-extensions-empty-content-explain-manage2"),
+ value=FIXUP_REFERENCE(
+ path, "unified-extensions-empty-content-explain-manage"
+ ),
+ ),
+ ],
+ )