Bug 934205 - Add link to install more themes from the Add-on Manager. Original patch written by MattN. r?mattn
MozReview-Commit-ID: 4LeqpQyFxDg
--- a/browser/app/profile/firefox.js
+++ b/browser/app/profile/firefox.js
@@ -44,16 +44,17 @@ pref("extensions.getAddons.cache.enabled
pref("extensions.getAddons.maxResults", 15);
pref("extensions.getAddons.get.url", "https://services.addons.mozilla.org/%LOCALE%/firefox/api/%API_VERSION%/search/guid:%IDS%?src=firefox&appOS=%OS%&appVersion=%VERSION%");
pref("extensions.getAddons.getWithPerformance.url", "https://services.addons.mozilla.org/%LOCALE%/firefox/api/%API_VERSION%/search/guid:%IDS%?src=firefox&appOS=%OS%&appVersion=%VERSION%&tMain=%TIME_MAIN%&tFirstPaint=%TIME_FIRST_PAINT%&tSessionRestored=%TIME_SESSION_RESTORED%");
pref("extensions.getAddons.search.browseURL", "https://addons.mozilla.org/%LOCALE%/firefox/search?q=%TERMS%&platform=%OS%&appver=%VERSION%");
pref("extensions.getAddons.search.url", "https://services.addons.mozilla.org/%LOCALE%/firefox/api/%API_VERSION%/search/%TERMS%/all/%MAX_RESULTS%/%OS%/%VERSION%/%COMPATIBILITY_MODE%?src=firefox");
pref("extensions.webservice.discoverURL", "https://discovery.addons.mozilla.org/%LOCALE%/firefox/discovery/pane/%VERSION%/%OS%/%COMPATIBILITY_MODE%");
pref("extensions.getAddons.recommended.url", "https://services.addons.mozilla.org/%LOCALE%/%APP%/api/%API_VERSION%/list/recommended/all/%MAX_RESULTS%/%OS%/%VERSION%?src=firefox");
pref("extensions.getAddons.link.url", "https://addons.mozilla.org/%LOCALE%/firefox/");
+pref("extensions.getAddons.themes.browseURL", "https://addons.mozilla.org/%LOCALE%/firefox/themes/?src=firefox");
pref("extensions.update.autoUpdateDefault", true);
pref("extensions.hotfix.id", "firefox-hotfix@mozilla.org");
pref("extensions.hotfix.cert.checkAttributes", true);
pref("extensions.hotfix.certs.1.sha1Fingerprint", "91:53:98:0C:C1:86:DF:47:8F:35:22:9E:11:C9:A7:31:04:49:A1:AA");
pref("extensions.hotfix.certs.2.sha1Fingerprint", "39:E7:2B:7A:5B:CF:37:78:F9:5D:4A:E0:53:2D:2F:3D:68:53:C5:60");
--- a/toolkit/locales/en-US/chrome/mozapps/extensions/extensions.dtd
+++ b/toolkit/locales/en-US/chrome/mozapps/extensions/extensions.dtd
@@ -15,16 +15,19 @@
<!ENTITY listEmpty.recentUpdates.label "You haven’t recently updated any add-ons">
<!ENTITY listEmpty.findUpdates.label "Check For Updates">
<!ENTITY listEmpty.search.label "Could not find any matching add-ons">
<!ENTITY listEmpty.button.label "Learn more about add-ons">
<!ENTITY installAddonFromFile.label "Install Add-on From File…">
<!ENTITY installAddonFromFile.accesskey "I">
<!ENTITY toolsMenu.tooltip "Tools for all add-ons">
+<!ENTITY getThemes.description "Looking to personalize your browser?">
+<!ENTITY getThemes.learnMore "Choose from thousands of themes.">
+
<!ENTITY cmd.back.tooltip "Go back one page">
<!ENTITY cmd.forward.tooltip "Go forward one page">
<!ENTITY showUnsignedExtensions.button.label "Some extensions could not be verified">
<!ENTITY showAllExtensions.button.label "Show all extensions">
<!ENTITY debugAddons.label "Debug Add-ons">
<!ENTITY debugAddons.accesskey "B">
--- a/toolkit/mozapps/extensions/content/extensions.css
+++ b/toolkit/mozapps/extensions/content/extensions.css
@@ -193,20 +193,18 @@ setting[type="menulist"] {
/* Plugins aren't yet disabled by safemode (bug 342333),
so don't show that warning when viewing plugins. */
#addons-page[warning="safemode"] .view-pane[type="plugin"] .global-warning-container,
#addons-page[warning="safemode"] #detail-view[loading="true"] .global-warning {
display: none;
}
-#addons-page .view-pane:not([type="plugin"]) #plugindeprecation-notice {
- display: none;
-}
-
+#addons-page .view-pane:not([type="theme"]) #getthemes-container,
+#addons-page .view-pane:not([type="plugin"]) #plugindeprecation-notice,
#addons-page .view-pane:not([type="experiment"]) .experiment-info-container {
display: none;
}
.addon .relnotes {
-moz-user-select: text;
}
#detail-name, #detail-desc, #detail-fulldesc {
--- a/toolkit/mozapps/extensions/content/extensions.js
+++ b/toolkit/mozapps/extensions/content/extensions.js
@@ -2759,16 +2759,23 @@ var gListView = {
}
if (Preferences.get("plugin.load_flash_only", true)) {
document.getElementById("plugindeprecation-learnmore-link")
.setAttribute("href", Services.urlFormatter.formatURLPref("app.support.baseURL") + "npapi");
} else {
document.getElementById("plugindeprecation-notice").hidden = true;
}
+
+ if (Preferences.get("extensions.getAddons.themes.browseURL", "")) {
+ document.getElementById("getthemes-learnmore-link")
+ .setAttribute("href", Services.urlFormatter.formatURLPref("extensions.getAddons.themes.browseURL"));
+ } else {
+ document.getElementById("getthemes-container").hidden = true;
+ }
},
show: function(aType, aRequest) {
let showOnlyDisabledUnsigned = false;
if (aType.endsWith("?unsigned=true")) {
aType = aType.replace(/\?.*/, "");
showOnlyDisabledUnsigned = true;
}
--- a/toolkit/mozapps/extensions/content/extensions.xul
+++ b/toolkit/mozapps/extensions/content/extensions.xul
@@ -355,16 +355,23 @@
</vbox>
<vbox id="plugindeprecation-notice" class="alert-container">
<hbox class="alert">
<description>&pluginDeprecation.description;  
<label class="text-link plain" id="plugindeprecation-learnmore-link">&pluginDeprecation.learnMore;</label>
</description>
</hbox>
</vbox>
+ <vbox id="getthemes-container" class="alert-container">
+ <hbox class="alert">
+ <description>&getThemes.description;  
+ <label class="text-link plain" id="getthemes-learnmore-link">&getThemes.learnMore;</label>
+ </description>
+ </hbox>
+ </vbox>
<hbox class="view-header global-warning-container">
<!-- global warnings -->
<hbox class="global-warning" flex="1">
<hbox class="global-warning-safemode" flex="1" align="center"
tooltiptext="&warning.safemode.label;">
<image class="warning-icon"/>
<label class="global-warning-text" flex="1" crop="end"
value="&warning.safemode.label;"/>
--- a/toolkit/mozapps/extensions/test/browser/browser.ini
+++ b/toolkit/mozapps/extensions/test/browser/browser.ini
@@ -49,16 +49,17 @@ support-files =
!/toolkit/mozapps/extensions/test/xpinstall/unsigned.xpi
!/toolkit/mozapps/extensions/test/xpinstall/amosigned.xpi
[browser_addonrepository_performance.js]
[browser_bug557956.js]
[browser_bug616841.js]
[browser_cancelCompatCheck.js]
[browser_checkAddonCompatibility.js]
+[browser_getmorethemes.js]
[browser_gmpProvider.js]
[browser_hotfix.js]
# Verifies the old style of signing hotfixes
skip-if = require_signing
[browser_installssl.js]
[browser_newaddon.js]
[browser_updatessl.js]
[browser_system_addons_are_e10s.js]
new file mode 100644
--- /dev/null
+++ b/toolkit/mozapps/extensions/test/browser/browser_getmorethemes.js
@@ -0,0 +1,46 @@
+const MAIN_URL = "https://example.com/" + RELATIVE_DIR + "discovery.html";
+const PREF_GETTHEMESURL = "extensions.getAddons.themes.browseURL";
+
+add_task(function* getthemes_link_visible_on_appearance_when_pref_set() {
+ yield SpecialPowers.pushPrefEnv({set: [[PREF_GETTHEMESURL, MAIN_URL]]});
+
+ let aManager = yield open_manager("addons://list/extension");
+ info("Testing theme discovery information");
+ var button = aManager.document.querySelector("#getthemes-learnmore-link");
+ is_element_hidden(button, "Thume discovery button should be hidden");
+
+ info("Changing view to appearance");
+ EventUtils.synthesizeMouseAtCenter(aManager.document.getElementById("category-theme"), { }, aManager);
+
+ yield new Promise(resolve => wait_for_view_load(aManager, resolve));
+ button = aManager.document.querySelector("#getthemes-learnmore-link");
+ is_element_visible(button, "Theme discovery message should be visible");
+
+ info("Clicking button to get more themes");
+ let awaitNewTab = BrowserTestUtils.waitForNewTab(gBrowser, MAIN_URL);
+ EventUtils.synthesizeMouseAtCenter(button, { }, aManager);
+ yield awaitNewTab;
+
+ is(gBrowser.currentURI.spec, Services.urlFormatter.formatURLPref(PREF_GETTHEMESURL), "Theme discovery URL should match");
+
+ yield BrowserTestUtils.removeTab(gBrowser.selectedTab);
+ yield close_manager(aManager);
+});
+
+add_task(function* getthemes_link_hidden_on_appearance_when_pref_cleared() {
+ yield SpecialPowers.pushPrefEnv({set: [[PREF_GETTHEMESURL, ""]]});
+
+ let aManager = yield open_manager("addons://list/extension");
+ info("Testing theme discovery information");
+ var button = aManager.document.querySelector("#getthemes-learnmore-link");
+ is_element_hidden(button, "Thume discovery button should be hidden");
+
+ info("Changing view to appearance");
+ EventUtils.synthesizeMouseAtCenter(aManager.document.getElementById("category-theme"), { }, aManager);
+
+ yield new Promise(resolve => wait_for_view_load(aManager, resolve));
+ button = aManager.document.querySelector("#getthemes-learnmore-link");
+ is_element_hidden(button, "Theme discovery message should be hidden");
+
+ yield close_manager(aManager);
+});