--- a/browser/app/profile/firefox.js
+++ b/browser/app/profile/firefox.js
@@ -38,23 +38,20 @@ pref("extensions.minCompatibleAppVersion
pref("extensions.checkCompatibility.temporaryThemeOverride_minAppVersion", "29.0a1");
pref("xpinstall.customConfirmationUI", true);
pref("extensions.webextPermissionPrompts", true);
pref("extensions.webextOptionalPermissionPrompts", true);
// Preferences for AMO integration
pref("extensions.getAddons.cache.enabled", true);
-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");
--- a/mobile/android/app/mobile.js
+++ b/mobile/android/app/mobile.js
@@ -206,21 +206,17 @@ pref("extensions.update.url", "https://v
pref("extensions.update.background.url", "https://versioncheck-bg.addons.mozilla.org/update/VersionCheck.php?reqVersion=%REQ_VERSION%&id=%ITEM_ID%&version=%ITEM_VERSION%&maxAppVersion=%ITEM_MAXAPPVERSION%&status=%ITEM_STATUS%&appID=%APP_ID%&appVersion=%APP_VERSION%&appOS=%APP_OS%&appABI=%APP_ABI%&locale=%APP_LOCALE%¤tAppVersion=%CURRENT_APP_VERSION%&updateType=%UPDATE_TYPE%&compatMode=%COMPATIBILITY_MODE%");
pref("extensions.hotfix.id", "firefox-android-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");
/* preferences for the Get Add-ons pane */
pref("extensions.getAddons.cache.enabled", true);
-pref("extensions.getAddons.maxResults", 15);
-pref("extensions.getAddons.recommended.browseURL", "https://addons.mozilla.org/%LOCALE%/android/recommended/");
-pref("extensions.getAddons.recommended.url", "https://services.addons.mozilla.org/%LOCALE%/android/api/%API_VERSION%/list/featured/all/%MAX_RESULTS%/%OS%/%VERSION%");
pref("extensions.getAddons.search.browseURL", "https://addons.mozilla.org/%LOCALE%/android/search?q=%TERMS%&platform=%OS%&appver=%VERSION%");
-pref("extensions.getAddons.search.url", "https://services.addons.mozilla.org/%LOCALE%/android/api/%API_VERSION%/search/%TERMS%/all/%MAX_RESULTS%/%OS%/%VERSION%/%COMPATIBILITY_MODE%");
pref("extensions.getAddons.browseAddons", "https://addons.mozilla.org/%LOCALE%/android/");
pref("extensions.getAddons.get.url", "https://services.addons.mozilla.org/%LOCALE%/android/api/%API_VERSION%/search/guid:%IDS%?src=mobile&appOS=%OS%&appVersion=%VERSION%");
pref("extensions.getAddons.getWithPerformance.url", "https://services.addons.mozilla.org/%LOCALE%/android/api/%API_VERSION%/search/guid:%IDS%?src=mobile&appOS=%OS%&appVersion=%VERSION%&tMain=%TIME_MAIN%&tFirstPaint=%TIME_FIRST_PAINT%&tSessionRestored=%TIME_SESSION_RESTORED%");
/* preference for the locale picker */
pref("extensions.getLocales.get.url", "");
pref("extensions.compatability.locales.buildid", "0");
--- a/testing/profiles/prefs_general.js
+++ b/testing/profiles/prefs_general.js
@@ -122,21 +122,19 @@ user_pref("extensions.blocklist.itemURL"
user_pref("extensions.blocklist.url", "http://%(server)s/extensions-dummy/blocklistURL");
user_pref("extensions.hotfix.url", "http://%(server)s/extensions-dummy/hotfixURL");
user_pref("extensions.systemAddon.update.url", "http://%(server)s/dummy-system-addons.xml");
// Turn off extension updates so they don't bother tests
user_pref("extensions.update.enabled", false);
// Make sure opening about:addons won't hit the network
user_pref("extensions.webservice.discoverURL", "http://%(server)s/extensions-dummy/discoveryURL");
// Make sure AddonRepository won't hit the network
-user_pref("extensions.getAddons.maxResults", 0);
user_pref("extensions.getAddons.get.url", "http://%(server)s/extensions-dummy/repositoryGetURL");
user_pref("extensions.getAddons.getWithPerformance.url", "http://%(server)s/extensions-dummy/repositoryGetWithPerformanceURL");
user_pref("extensions.getAddons.search.browseURL", "http://%(server)s/extensions-dummy/repositoryBrowseURL");
-user_pref("extensions.getAddons.search.url", "http://%(server)s/extensions-dummy/repositorySearchURL");
// Ensure blocklist updates don't hit the network
user_pref("services.settings.server", "http://%(server)s/dummy-kinto/v1");
// Make sure SNTP requests don't hit the network
user_pref("network.sntp.pools", "%(server)s");
// We know the SNTP request will fail, since localhost isn't listening on
// port 135. The default number of retries (10) is excessive, but retrying
// at least once will mean that codepath is still tested in automation.
user_pref("network.sntp.maxRetryCount", 1);
--- a/testing/talos/talos/config.py
+++ b/testing/talos/talos/config.py
@@ -144,26 +144,23 @@ DEFAULTS = dict(
'extensions.blocklist.enabled': False,
'extensions.blocklist.url':
'http://127.0.0.1/extensions-dummy/blocklistURL',
'extensions.hotfix.url':
'http://127.0.0.1/extensions-dummy/hotfixURL',
'extensions.update.enabled': False,
'extensions.webservice.discoverURL':
'http://127.0.0.1/extensions-dummy/discoveryURL',
- 'extensions.getAddons.maxResults': 0,
'extensions.getAddons.get.url':
'http://127.0.0.1/extensions-dummy/repositoryGetURL',
'extensions.getAddons.getWithPerformance.url':
'http://127.0.0.1/extensions-dummy'
'/repositoryGetWithPerformanceURL',
'extensions.getAddons.search.browseURL':
'http://127.0.0.1/extensions-dummy/repositoryBrowseURL',
- 'extensions.getAddons.search.url':
- 'http://127.0.0.1/extensions-dummy/repositorySearchURL',
'media.gmp-manager.url':
'http://127.0.0.1/gmpmanager-dummy/update.xml',
'media.gmp-manager.updateEnabled': False,
'extensions.systemAddon.update.url':
'http://127.0.0.1/dummy-system-addons.xml',
'extensions.shield-recipe-client.api_url':
'https://127.0.0.1/selfsupport-dummy/',
'browser.ping-centre.staging.endpoint':
--- a/testing/talos/talos/unittests/test_talosconfig_browser_config.json
+++ b/testing/talos/talos/unittests/test_talosconfig_browser_config.json
@@ -1,1 +1,1 @@
-{'deviceroot': '', 'dirs': {}, 'repository': 'http://hg.mozilla.org/releases/mozilla-release', 'buildid': '20131205075310', 'results_log': 'pathtoresults_log', 'symbols_path': None, 'bcontroller_config': 'pathtobcontroller', 'host': '', 'browser_name': 'Firefox', 'sourcestamp': '39faf812aaec', 'remote': False, 'child_process': 'plugin-container', 'branch_name': '', 'browser_version': '26.0', 'extra_args': '', 'develop': True, 'preferences': {'browser.display.overlaynavbuttons': False, 'extensions.getAddons.get.url': 'http://127.0.0.1/extensions-dummy/repositoryGetURL', 'dom.max_chrome_script_run_time': 0, 'network.proxy.type': 1, 'extensions.update.background.url': 'http://127.0.0.1/extensions-dummy/updateBackgroundURL', 'network.proxy.http': 'localhost', 'plugins.update.url': 'http://127.0.0.1/plugins-dummy/updateCheckURL', 'dom.max_script_run_time': 0, 'extensions.update.enabled': False, 'browser.safebrowsing.keyURL': 'http://127.0.0.1/safebrowsing-dummy/newkey', 'media.navigator.permission.disabled': True, 'app.update.enabled': False, 'extensions.blocklist.url': 'http://127.0.0.1/extensions-dummy/blocklistURL', 'browser.EULA.override': True, 'extensions.checkCompatibility': False, 'talos.logfile': 'pathtofile', 'browser.safebrowsing.gethashURL': 'http://127.0.0.1/safebrowsing-dummy/gethash', 'extensions.hotfix.url': 'http://127.0.0.1/extensions-dummy/hotfixURL', 'dom.disable_window_move_resize': True, 'network.proxy.http_port': 80, 'browser.dom.window.dump.enabled': True, 'extensions.update.url': 'http://127.0.0.1/extensions-dummy/updateURL', 'browser.chrome.dynamictoolbar': False, 'browser.link.open_newwindow': 2, 'extensions.getAddons.search.url': 'http://127.0.0.1/extensions-dummy/repositorySearchURL', 'browser.cache.disk.smart_size.first_run': False, 'security.turn_off_all_security_so_that_viruses_can_take_over_this_computer': True, 'dom.disable_open_during_load': False, 'extensions.getAddons.search.browseURL': 'http://127.0.0.1/extensions-dummy/repositoryBrowseURL', 'browser.cache.disk.smart_size.enabled': False, 'extensions.getAddons.getWithPerformance.url': 'http://127.0.0.1/extensions-dummy/repositoryGetWithPerformanceURL', 'hangmonitor.timeout': 0, 'extensions.getAddons.maxResults': 0, 'dom.send_after_paint_to_content': True, 'security.fileuri.strict_origin_policy': False, 'media.capturestream_hints.enabled': True, 'extensions.update.notifyUser': False, 'extensions.blocklist.enabled': False, 'browser.bookmarks.max_backups': 0, 'browser.shell.checkDefaultBrowser': False, 'media.peerconnection.enabled': True, 'dom.disable_window_flip': True, 'security.enable_java': False, 'browser.warnOnQuit': False, 'media.navigator.enabled': True, 'browser.safebrowsing.updateURL': 'http://127.0.0.1/safebrowsing-dummy/update', 'dom.allow_scripts_to_close_windows': True, 'extensions.webservice.discoverURL': 'http://127.0.0.1/extensions-dummy/discoveryURL'}, 'test_timeout': 1200, 'title': 'qm-pxp01', 'error_filename': 'pathtoerrorfile', 'webserver': 'localhost:15707', 'browser_path':ffox_path, 'port': 20701, 'browser_log': 'browser_output.txt', 'process': 'firefox.exe', 'xperf_path': 'C:/Program Files/Microsoft Windows Performance Toolkit/xperf.exe', 'extensions': ['pathtopageloader'], 'fennecIDs': '', 'env': {'NO_EM_RESTART': '1'}, 'init_url': 'http://localhost:15707/getInfo.html', 'browser_wait': 5}
\ No newline at end of file
+{'deviceroot': '', 'dirs': {}, 'repository': 'http://hg.mozilla.org/releases/mozilla-release', 'buildid': '20131205075310', 'results_log': 'pathtoresults_log', 'symbols_path': None, 'bcontroller_config': 'pathtobcontroller', 'host': '', 'browser_name': 'Firefox', 'sourcestamp': '39faf812aaec', 'remote': False, 'child_process': 'plugin-container', 'branch_name': '', 'browser_version': '26.0', 'extra_args': '', 'develop': True, 'preferences': {'browser.display.overlaynavbuttons': False, 'extensions.getAddons.get.url': 'http://127.0.0.1/extensions-dummy/repositoryGetURL', 'dom.max_chrome_script_run_time': 0, 'network.proxy.type': 1, 'extensions.update.background.url': 'http://127.0.0.1/extensions-dummy/updateBackgroundURL', 'network.proxy.http': 'localhost', 'plugins.update.url': 'http://127.0.0.1/plugins-dummy/updateCheckURL', 'dom.max_script_run_time': 0, 'extensions.update.enabled': False, 'browser.safebrowsing.keyURL': 'http://127.0.0.1/safebrowsing-dummy/newkey', 'media.navigator.permission.disabled': True, 'app.update.enabled': False, 'extensions.blocklist.url': 'http://127.0.0.1/extensions-dummy/blocklistURL', 'browser.EULA.override': True, 'extensions.checkCompatibility': False, 'talos.logfile': 'pathtofile', 'browser.safebrowsing.gethashURL': 'http://127.0.0.1/safebrowsing-dummy/gethash', 'extensions.hotfix.url': 'http://127.0.0.1/extensions-dummy/hotfixURL', 'dom.disable_window_move_resize': True, 'network.proxy.http_port': 80, 'browser.dom.window.dump.enabled': True, 'extensions.update.url': 'http://127.0.0.1/extensions-dummy/updateURL', 'browser.chrome.dynamictoolbar': False, 'browser.link.open_newwindow': 2, 'browser.cache.disk.smart_size.first_run': False, 'security.turn_off_all_security_so_that_viruses_can_take_over_this_computer': True, 'dom.disable_open_during_load': False, 'extensions.getAddons.search.browseURL': 'http://127.0.0.1/extensions-dummy/repositoryBrowseURL', 'browser.cache.disk.smart_size.enabled': False, 'extensions.getAddons.getWithPerformance.url': 'http://127.0.0.1/extensions-dummy/repositoryGetWithPerformanceURL', 'hangmonitor.timeout': 0, 'dom.send_after_paint_to_content': True, 'security.fileuri.strict_origin_policy': False, 'media.capturestream_hints.enabled': True, 'extensions.update.notifyUser': False, 'extensions.blocklist.enabled': False, 'browser.bookmarks.max_backups': 0, 'browser.shell.checkDefaultBrowser': False, 'media.peerconnection.enabled': True, 'dom.disable_window_flip': True, 'security.enable_java': False, 'browser.warnOnQuit': False, 'media.navigator.enabled': True, 'browser.safebrowsing.updateURL': 'http://127.0.0.1/safebrowsing-dummy/update', 'dom.allow_scripts_to_close_windows': True, 'extensions.webservice.discoverURL': 'http://127.0.0.1/extensions-dummy/discoveryURL'}, 'test_timeout': 1200, 'title': 'qm-pxp01', 'error_filename': 'pathtoerrorfile', 'webserver': 'localhost:15707', 'browser_path':ffox_path, 'port': 20701, 'browser_log': 'browser_output.txt', 'process': 'firefox.exe', 'xperf_path': 'C:/Program Files/Microsoft Windows Performance Toolkit/xperf.exe', 'extensions': ['pathtopageloader'], 'fennecIDs': '', 'env': {'NO_EM_RESTART': '1'}, 'init_url': 'http://localhost:15707/getInfo.html', 'browser_wait': 5}
--- a/toolkit/locales/en-US/chrome/mozapps/extensions/extensions.dtd
+++ b/toolkit/locales/en-US/chrome/mozapps/extensions/extensions.dtd
@@ -9,17 +9,16 @@
The search command key should match findOnCmd.commandkey from browser.dtd -->
<!ENTITY search.commandkey "f">
<!ENTITY loading.label "Loading…">
<!ENTITY listEmpty.installed.label "You don’t have any add-ons of this type installed">
<!ENTITY listEmpty.availableUpdates.label "No updates found">
<!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.">
@@ -34,17 +33,16 @@
<!ENTITY warning.checkcompatibility.label "Add-on compatibility checking is disabled. You may have incompatible add-ons.">
<!ENTITY warning.checkcompatibility.enable.label "Enable">
<!ENTITY warning.checkcompatibility.enable.tooltip "Enable add-on compatibility checking">
<!ENTITY warning.updatesecurity.label "Add-on update security checking is disabled. You may be compromised by updates.">
<!ENTITY warning.updatesecurity.enable.label "Enable">
<!ENTITY warning.updatesecurity.enable.tooltip "Enable add-on update security checking">
<!-- categories / views -->
-<!ENTITY view.search.label "Search">
<!ENTITY view.discover.label "Get Add-ons">
<!ENTITY view.recentUpdates.label "Recent Updates">
<!ENTITY view.availableUpdates.label "Available Updates">
<!-- addon updates -->
<!ENTITY updates.checkForUpdates.label "Check for Updates">
<!ENTITY updates.checkForUpdates.accesskey "C">
<!ENTITY updates.viewUpdates.label "View Recent Updates">
@@ -167,26 +165,16 @@
<!ENTITY progress.cancel.tooltip "Cancel">
<!-- list sorting -->
<!ENTITY sort.name.label "Name">
<!ENTITY sort.name.tooltip "Sort by name">
<!ENTITY sort.dateUpdated.label "Last Updated">
<!ENTITY sort.dateUpdated.tooltip "Sort by date updated">
-<!ENTITY sort.relevance.label "Best match">
-<!ENTITY sort.relevance.tooltip "Sort by relevance">
-<!ENTITY sort.price.label "Price">
-<!ENTITY sort.price.tooltip "Sort by price">
-
-<!ENTITY search.filter2.label "Search:">
-<!ENTITY search.filter2.installed.label "My Add-ons">
-<!ENTITY search.filter2.installed.tooltip "Show installed add-ons">
-<!ENTITY search.filter2.available.label "Available Add-ons">
-<!ENTITY search.filter2.available.tooltip "Show add-ons available to install">
<!ENTITY addon.homepage "Homepage">
<!ENTITY addon.details.label "More">
<!ENTITY addon.details.tooltip "Show more details about this add-on">
<!ENTITY addon.unknownDate "Unknown">
<!-- LOCALIZATION NOTE (addon.legacy.label): This appears in a badge next
to the add-on name for extensions that are not webextensions, which
will stop working in Firefox 57. -->
--- a/toolkit/locales/en-US/chrome/mozapps/extensions/extensions.properties
+++ b/toolkit/locales/en-US/chrome/mozapps/extensions/extensions.properties
@@ -159,30 +159,16 @@ installFromFile.filterName=Add-ons
uninstallAddonTooltip=Uninstall this add-on
uninstallAddonRestartRequiredTooltip=Uninstall this add-on (restart required)
enableAddonTooltip=Enable this add-on
enableAddonRestartRequiredTooltip=Enable this add-on (restart required)
disableAddonTooltip=Disable this add-on
disableAddonRestartRequiredTooltip=Disable this add-on (restart required)
-#LOCALIZATION NOTE (showAllSearchResults): Semicolon-separated list of plural forms.
-# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
-# #1 is the total number of search results
-showAllSearchResults=See one result;See all #1 results
-
-#LOCALIZATION NOTE (addon.purchase.label) displayed on a button in the list
-# view, %S is the price of the add-on including currency symbol
-addon.purchase.label=Purchase for %S…
-addon.purchase.tooltip=Visit the add-ons gallery to purchase this add-on
-#LOCALIZATION NOTE (cmd.purchaseAddon.label) displayed on a button in the detail
-# view, %S is the price of the add-on including currency symbol
-cmd.purchaseAddon.label=Purchase for %S…
-cmd.purchaseAddon.accesskey=u
-
#LOCALIZATION NOTE (eulaHeader) %S is name of the add-on asking the user to agree to the EULA
eulaHeader=%S requires that you accept the following End User License Agreement before installation can proceed:
type.extension.name=Extensions
type.themes.name=Themes
type.locale.name=Languages
type.plugin.name=Plugins
type.dictionary.name=Dictionaries
--- a/toolkit/mozapps/extensions/content/extensions.css
+++ b/toolkit/mozapps/extensions/content/extensions.css
@@ -79,21 +79,16 @@ row[unsupported="true"] {
margin-inline-start: 3px !important;
margin-inline-end: 2px !important;
}
#header-searching:not([active]) {
visibility: hidden;
}
-#search-list[local="false"] > .addon[remote="false"],
-#search-list[remote="false"] > .addon[remote="true"] {
- visibility: collapse;
-}
-
#detail-view {
overflow: auto;
}
.addon:not([notification="warning"]) .warning,
.addon:not([notification="error"]) .error,
.addon:not([notification="info"]) .info,
.addon:not([pending]) .pending,
@@ -107,17 +102,16 @@ row[unsupported="true"] {
#detail-view:not([notification="info"]) .info,
#detail-view:not([pending]) .pending,
#detail-view:not([upgrade="true"]) .update-postfix,
#detail-view[active="true"] .disabled-postfix,
#detail-view[legacy="false"] .legacy-warning,
#detail-view[loading] .detail-view-container,
#detail-view:not([loading]) .alert-container,
.detail-row:not([value]),
-#search-list[remote="false"] #search-allresults-link,
#legacy-list .addon .disabled-postfix {
display: none;
}
#addons-page:not([warning]) #list-view > .global-warning-container {
display: none;
}
#addon-list .date-updated,
--- a/toolkit/mozapps/extensions/content/extensions.js
+++ b/toolkit/mozapps/extensions/content/extensions.js
@@ -45,34 +45,25 @@ XPCOMUtils.defineLazyPreferenceGetter(th
"extensions.allow-non-mpc-extensions", true);
XPCOMUtils.defineLazyPreferenceGetter(this, "SUPPORT_URL", "app.support.baseURL",
"", null, val => Services.urlFormatter.formatURL(val));
const PREF_DISCOVERURL = "extensions.webservice.discoverURL";
const PREF_DISCOVER_ENABLED = "extensions.getAddons.showPane";
const PREF_XPI_ENABLED = "xpinstall.enabled";
-const PREF_MAXRESULTS = "extensions.getAddons.maxResults";
const PREF_GETADDONS_CACHE_ENABLED = "extensions.getAddons.cache.enabled";
const PREF_GETADDONS_CACHE_ID_ENABLED = "extensions.%ID%.getAddons.cache.enabled";
const PREF_UI_TYPE_HIDDEN = "extensions.ui.%TYPE%.hidden";
const PREF_UI_LASTCATEGORY = "extensions.ui.lastCategory";
const PREF_LEGACY_EXCEPTIONS = "extensions.legacy.exceptions";
const PREF_LEGACY_ENABLED = "extensions.legacy.enabled";
const LOADING_MSG_DELAY = 100;
-const SEARCH_SCORE_MULTIPLIER_NAME = 2;
-const SEARCH_SCORE_MULTIPLIER_DESCRIPTION = 2;
-
-// Use integers so search scores are sortable by nsIXULSortService
-const SEARCH_SCORE_MATCH_WHOLEWORD = 10;
-const SEARCH_SCORE_MATCH_WORDBOUNDRY = 6;
-const SEARCH_SCORE_MATCH_SUBSTRING = 3;
-
const UPDATES_RECENT_TIMESPAN = 2 * 24 * 3600000; // 2 days (in milliseconds)
const UPDATES_RELEASENOTES_TRANSFORMFILE = "chrome://mozapps/content/extensions/updateinfo.xsl";
const XMLURI_PARSE_ERROR = "http://www.mozilla.org/newlayout/xml/parsererror.xml";
var gViewDefault = "addons://discover/";
XPCOMUtils.defineLazyGetter(this, "extensionStylesheets", () => {
@@ -210,17 +201,16 @@ function notifyInitialized() {
var event = document.createEvent("Events");
event.initEvent("Initialized", true, true);
document.dispatchEvent(event);
}
}
function shutdown() {
gCategories.shutdown();
- gSearchView.shutdown();
gEventManager.shutdown();
gViewController.shutdown();
Services.obs.removeObserver(sendEMPong, "EM-ping");
}
function sendEMPong(aSubject, aTopic, aData) {
Services.obs.notifyObservers(window, "EM-pong");
}
@@ -723,17 +713,16 @@ var gViewController = {
initialViewSelected: false,
lastHistoryIndex: -1,
initialize() {
this.viewPort = document.getElementById("view-port");
this.headeredViews = document.getElementById("headered-views");
this.headeredViewsDeck = document.getElementById("headered-views-content");
- this.viewObjects.search = gSearchView;
this.viewObjects.discover = gDiscoverView;
this.viewObjects.list = gListView;
this.viewObjects.legacy = gLegacyView;
this.viewObjects.detail = gDetailView;
this.viewObjects.updates = gUpdatesView;
for (let type in this.viewObjects) {
let view = this.viewObjects[type];
@@ -1288,27 +1277,16 @@ var gViewController = {
if (gViewController.currentViewObj == gDetailView)
gViewController.popState(doInstall);
else
doInstall();
}
},
- cmd_purchaseItem: {
- isEnabled(aAddon) {
- if (!aAddon)
- return false;
- return !!aAddon.purchaseURL;
- },
- doCommand(aAddon) {
- openURL(aAddon.purchaseURL);
- }
- },
-
cmd_uninstallItem: {
isEnabled(aAddon) {
if (!aAddon)
return false;
return hasPermission(aAddon, "uninstall");
},
doCommand(aAddon) {
if (gViewController.currentViewObj != gDetailView) {
@@ -1595,23 +1573,22 @@ function shouldShowVersionNumber(aAddon)
// The version number is hidden for lightweight themes.
if (aAddon.type == "theme")
return !/@personas\.mozilla\.org$/.test(aAddon.id);
return true;
}
-function createItem(aObj, aIsInstall, aIsRemote) {
+function createItem(aObj, aIsInstall) {
let item = document.createElement("richlistitem");
item.setAttribute("class", "addon addon-view");
item.setAttribute("name", aObj.name);
item.setAttribute("type", aObj.type);
- item.setAttribute("remote", !!aIsRemote);
if (aIsInstall) {
item.mInstall = aObj;
if (aObj.state != AddonManager.STATE_INSTALLED) {
item.setAttribute("status", "installing");
return item;
}
@@ -1633,17 +1610,17 @@ function createItem(aObj, aIsInstall, aI
return item;
}
function sortElements(aElements, aSortBy, aAscending) {
// aSortBy is an Array of attributes to sort by, in decending
// order of priority.
const DATE_FIELDS = ["updateDate"];
- const NUMERIC_FIELDS = ["size", "relevancescore", "purchaseAmount"];
+ const NUMERIC_FIELDS = ["size", "relevancescore"];
// We're going to group add-ons into the following buckets:
//
// enabledInstalled
// * Enabled
// * Incompatible but enabled because compatibility checking is off
// * Waiting to be installed
// * Waiting to be enabled
@@ -1814,54 +1791,47 @@ function doPendingUninstalls(aListBox) {
}
for (let addon of items)
addon.uninstall();
}
var gCategories = {
node: null,
- _search: null,
initialize() {
this.node = document.getElementById("categories");
- this._search = this.get("addons://search/");
var types = AddonManager.addonTypes;
for (var type in types)
this.onTypeAdded(types[type]);
AddonManager.addTypeListener(this);
// eslint-disable-next-line mozilla/use-default-preference-values
try {
this.node.value = Services.prefs.getCharPref(PREF_UI_LASTCATEGORY);
} catch (e) { }
// If there was no last view or no existing category matched the last view
- // then the list will default to selecting the search category and we never
- // want to show that as the first view so switch to the default category
- if (!this.node.selectedItem || this.node.selectedItem == this._search)
+ // then switch to the default category
+ if (!this.node.selectedItem) {
this.node.value = gViewDefault;
+ }
this.node.addEventListener("select", () => {
- this.maybeHideSearch();
gViewController.loadView(this.node.selectedItem.value);
});
this.node.addEventListener("click", (aEvent) => {
var selectedItem = this.node.selectedItem;
if (aEvent.target.localName == "richlistitem" &&
aEvent.target == selectedItem) {
var viewId = selectedItem.value;
- if (gViewController.parseViewId(viewId).type == "search") {
- viewId += encodeURIComponent(gHeader.searchQuery);
- }
-
gViewController.loadView(viewId);
}
});
},
shutdown() {
AddonManager.removeTypeListener(this);
},
@@ -1995,51 +1965,40 @@ var gCategories = {
if (this.node.selectedItem &&
this.node.selectedItem.value == aId) {
this.node.selectedItem.hidden = false;
this.node.selectedItem.disabled = false;
return;
}
- var item;
- if (view.type == "search")
- item = this._search;
- else
- item = this.get(aId);
+ var item = this.get(aId);
if (item) {
item.hidden = false;
item.disabled = false;
this.node.suppressOnSelect = true;
this.node.selectedItem = item;
this.node.suppressOnSelect = false;
this.node.ensureElementIsVisible(item);
-
- this.maybeHideSearch();
}
},
get(aId) {
var items = document.getElementsByAttribute("value", aId);
if (items.length)
return items[0];
return null;
},
setBadge(aId, aCount) {
let item = this.get(aId);
if (item)
item.badgeCount = aCount;
},
-
- maybeHideSearch() {
- var view = gViewController.parseViewId(this.node.selectedItem.value);
- this._search.disabled = view.type != "search";
- }
};
var gHeader = {
_search: null,
_dest: "",
initialize() {
@@ -2367,364 +2326,16 @@ var gDiscoverView = {
Ci.nsISupportsWeakReference]),
getSelectedAddon() {
return null;
}
};
-var gCachedAddons = {};
-
-var gSearchView = {
- node: null,
- _filter: null,
- _sorters: null,
- _loading: null,
- _listBox: null,
- _emptyNotice: null,
- _allResultsLink: null,
- _lastQuery: null,
- _lastRemoteTotal: 0,
- _pendingSearches: 0,
-
- initialize() {
- this.node = document.getElementById("search-view");
- this._filter = document.getElementById("search-filter-radiogroup");
- this._sorters = document.getElementById("search-sorters");
- this._sorters.handler = this;
- this._loading = document.getElementById("search-loading");
- this._listBox = document.getElementById("search-list");
- this._emptyNotice = document.getElementById("search-list-empty");
- this._allResultsLink = document.getElementById("search-allresults-link");
-
- if (!AddonManager.isInstallEnabled("application/x-xpinstall"))
- this._filter.hidden = true;
-
- this._listBox.addEventListener("keydown", aEvent => {
- if (aEvent.keyCode == aEvent.DOM_VK_RETURN) {
- var item = this._listBox.selectedItem;
- if (item)
- item.showInDetailView();
- }
- });
-
- this._filter.addEventListener("command", () => this.updateView());
- },
-
- shutdown() {
- if (AddonRepository.isSearching)
- AddonRepository.cancelSearch();
- },
-
- get isSearching() {
- return this._pendingSearches > 0;
- },
-
- show(aQuery, aRequest) {
- gEventManager.registerInstallListener(this);
-
- this.showEmptyNotice(false);
- this.showAllResultsLink(0);
- this.showLoading(true);
- this._sorters.showprice = false;
-
- gHeader.searchQuery = aQuery;
- aQuery = aQuery.trim().toLocaleLowerCase();
- if (this._lastQuery == aQuery) {
- this.updateView();
- gViewController.notifyViewChanged();
- return;
- }
- this._lastQuery = aQuery;
-
- if (AddonRepository.isSearching)
- AddonRepository.cancelSearch();
-
- while (this._listBox.firstChild.localName == "richlistitem")
- this._listBox.firstChild.remove();
-
- gCachedAddons = {};
- this._pendingSearches = 2;
- this._sorters.setSort("relevancescore", false);
-
- var elements = [];
-
- let createSearchResults = (aObjsList, aIsInstall, aIsRemote) => {
- for (let index in aObjsList) {
- let obj = aObjsList[index];
- let score = aObjsList.length - index;
- if (!aIsRemote && aQuery.length > 0) {
- score = this.getMatchScore(obj, aQuery);
- if (score == 0)
- continue;
- }
-
- let item = createItem(obj, aIsInstall, aIsRemote);
- item.setAttribute("relevancescore", score);
- if (aIsRemote) {
- gCachedAddons[obj.id] = obj;
- if (obj.purchaseURL)
- this._sorters.showprice = true;
- }
-
- elements.push(item);
- }
- };
-
- let finishSearch = (createdCount) => {
- if (elements.length > 0) {
- sortElements(elements, [this._sorters.sortBy], this._sorters.ascending);
- for (let element of elements)
- this._listBox.insertBefore(element, this._listBox.lastChild);
- this.updateListAttributes();
- }
-
- this._pendingSearches--;
- this.updateView();
-
- if (!this.isSearching)
- gViewController.notifyViewChanged();
- };
-
- getAddonsAndInstalls(null, function(aAddons, aInstalls) {
- if (gViewController && aRequest != gViewController.currentViewRequest)
- return;
-
- createSearchResults(aAddons, false, false);
- createSearchResults(aInstalls, true, false);
- finishSearch();
- });
-
- var maxRemoteResults = Services.prefs.getIntPref(PREF_MAXRESULTS, 0);
-
- if (maxRemoteResults <= 0) {
- finishSearch(0);
- return;
- }
-
- AddonRepository.searchAddons(aQuery, maxRemoteResults, {
- searchFailed: () => {
- if (gViewController && aRequest != gViewController.currentViewRequest)
- return;
-
- this._lastRemoteTotal = 0;
-
- // XXXunf Better handling of AMO search failure. See bug 579502
- finishSearch(0); // Silently fail
- },
-
- searchSucceeded: (aAddonsList, aAddonCount, aTotalResults) => {
- if (gViewController && aRequest != gViewController.currentViewRequest)
- return;
-
- if (aTotalResults > maxRemoteResults)
- this._lastRemoteTotal = aTotalResults;
- else
- this._lastRemoteTotal = 0;
-
- var createdCount = createSearchResults(aAddonsList, false, true);
- finishSearch(createdCount);
- }
- });
- },
-
- showLoading(aLoading) {
- this._loading.hidden = !aLoading;
- this._listBox.hidden = aLoading;
- },
-
- updateView() {
- var showLocal = this._filter.value == "local";
-
- if (!showLocal && !AddonManager.isInstallEnabled("application/x-xpinstall"))
- showLocal = true;
-
- this._listBox.setAttribute("local", showLocal);
- this._listBox.setAttribute("remote", !showLocal);
-
- this.showLoading(this.isSearching && !showLocal);
- if (!this.isSearching) {
- var isEmpty = true;
- var results = this._listBox.getElementsByTagName("richlistitem");
- for (let result of results) {
- var isRemote = (result.getAttribute("remote") == "true");
- if ((isRemote && !showLocal) || (!isRemote && showLocal)) {
- isEmpty = false;
- break;
- }
- }
-
- this.showEmptyNotice(isEmpty);
- this.showAllResultsLink(this._lastRemoteTotal);
- }
-
- gViewController.updateCommands();
- },
-
- hide() {
- gEventManager.unregisterInstallListener(this);
- doPendingUninstalls(this._listBox);
- },
-
- getMatchScore(aObj, aQuery) {
- var score = 0;
- score += this.calculateMatchScore(aObj.name, aQuery,
- SEARCH_SCORE_MULTIPLIER_NAME);
- score += this.calculateMatchScore(aObj.description, aQuery,
- SEARCH_SCORE_MULTIPLIER_DESCRIPTION);
- return score;
- },
-
- calculateMatchScore(aStr, aQuery, aMultiplier) {
- var score = 0;
- if (!aStr || aQuery.length == 0)
- return score;
-
- aStr = aStr.trim().toLocaleLowerCase();
- var haystack = aStr.split(/\s+/);
- var needles = aQuery.split(/\s+/);
-
- for (let needle of needles) {
- for (let hay of haystack) {
- if (hay == needle) {
- // matching whole words is best
- score += SEARCH_SCORE_MATCH_WHOLEWORD;
- } else {
- let i = hay.indexOf(needle);
- if (i == 0) // matching on word boundries is also good
- score += SEARCH_SCORE_MATCH_WORDBOUNDRY;
- else if (i > 0) // substring matches not so good
- score += SEARCH_SCORE_MATCH_SUBSTRING;
- }
- }
- }
-
- // give progressively higher score for longer queries, since longer queries
- // are more likely to be unique and therefore more relevant.
- if (needles.length > 1 && aStr.indexOf(aQuery) != -1)
- score += needles.length;
-
- return score * aMultiplier;
- },
-
- showEmptyNotice(aShow) {
- this._emptyNotice.hidden = !aShow;
- this._listBox.hidden = aShow;
- },
-
- showAllResultsLink(aTotalResults) {
- if (aTotalResults == 0) {
- this._allResultsLink.hidden = true;
- return;
- }
-
- var linkStr = gStrings.ext.GetStringFromName("showAllSearchResults");
- linkStr = PluralForm.get(aTotalResults, linkStr);
- linkStr = linkStr.replace("#1", aTotalResults);
- this._allResultsLink.setAttribute("value", linkStr);
-
- this._allResultsLink.setAttribute("href",
- AddonRepository.getSearchURL(this._lastQuery));
- this._allResultsLink.hidden = false;
- },
-
- updateListAttributes() {
- var item = this._listBox.querySelector("richlistitem[remote='true'][first]");
- if (item)
- item.removeAttribute("first");
- item = this._listBox.querySelector("richlistitem[remote='true'][last]");
- if (item)
- item.removeAttribute("last");
- var items = this._listBox.querySelectorAll("richlistitem[remote='true']");
- if (items.length > 0) {
- items[0].setAttribute("first", true);
- items[items.length - 1].setAttribute("last", true);
- }
-
- item = this._listBox.querySelector("richlistitem:not([remote='true'])[first]");
- if (item)
- item.removeAttribute("first");
- item = this._listBox.querySelector("richlistitem:not([remote='true'])[last]");
- if (item)
- item.removeAttribute("last");
- items = this._listBox.querySelectorAll("richlistitem:not([remote='true'])");
- if (items.length > 0) {
- items[0].setAttribute("first", true);
- items[items.length - 1].setAttribute("last", true);
- }
-
- },
-
- onSortChanged(aSortBy, aAscending) {
- var footer = this._listBox.lastChild;
- this._listBox.removeChild(footer);
-
- sortList(this._listBox, aSortBy, aAscending);
- this.updateListAttributes();
-
- this._listBox.appendChild(footer);
- },
-
- onDownloadCancelled(aInstall) {
- this.removeInstall(aInstall);
- },
-
- onInstallCancelled(aInstall) {
- this.removeInstall(aInstall);
- },
-
- onInstallEnded(aInstall) {
- // If this is a webextension that was installed from this page,
- // display the post-install notification.
- if (!WEBEXT_PERMISSION_PROMPTS || !aInstall.addon.isWebExtension) {
- return;
- }
-
- for (let item of this._listBox.childNodes) {
- if (item.mInstall == aInstall) {
- let subject = {
- wrappedJSObject: {
- target: getBrowserElement(),
- addon: aInstall.addon,
- },
- };
- Services.obs.notifyObservers(subject, "webextension-install-notify");
- return;
- }
- }
- },
-
- removeInstall(aInstall) {
- for (let item of this._listBox.childNodes) {
- if (item.mInstall == aInstall) {
- this._listBox.removeChild(item);
- return;
- }
- }
- },
-
- getSelectedAddon() {
- var item = this._listBox.selectedItem;
- if (item)
- return item.mAddon;
- return null;
- },
-
- getListItemForID(aId) {
- var listitem = this._listBox.firstChild;
- while (listitem) {
- if (listitem.getAttribute("status") == "installed" && listitem.mAddon.id == aId)
- return listitem;
- listitem = listitem.nextSibling;
- }
- return null;
- }
-};
-
var gLegacyView = {
node: null,
_listBox: null,
_categoryItem: null,
initialize() {
this.node = document.getElementById("legacy-view");
this._listBox = document.getElementById("legacy-list");
@@ -3124,23 +2735,20 @@ var gDetailView = {
// test pilot addons until we get SIGNEDSTATE_PRIVILEGED deployed.
if (legacy && legacyWarningExceptions.includes(aAddon.id)) {
legacy = false;
}
}
this.node.setAttribute("legacy", legacy);
document.getElementById("detail-legacy-warning").href = SUPPORT_URL + "webextensions";
- // If the search category isn't selected then make sure to select the
- // correct category
- if (gCategories.selected != "addons://search/") {
- let category = (isDisabledLegacy(aAddon) || isDisabledUnsigned(aAddon)) ?
- "addons://legacy" : `addons://list/${aAddon.type}`;
- gCategories.select(category);
- }
+ // Make sure to select the correct category
+ let category = (isDisabledLegacy(aAddon) || isDisabledUnsigned(aAddon)) ?
+ "addons://legacy" : `addons://list/${aAddon.type}`;
+ gCategories.select(category);
document.getElementById("detail-name").textContent = aAddon.name;
var icon = AddonManager.getPreferredIconURL(aAddon, 64, window);
document.getElementById("detail-icon").src = icon ? icon : "";
document.getElementById("detail-creator").setCreator(aAddon.creator, aAddon.homepageURL);
var version = document.getElementById("detail-version");
if (shouldShowVersionNumber(aAddon)) {
@@ -3199,24 +2807,16 @@ var gDetailView = {
amount.hidden = false;
} else {
amount.hidden = true;
}
} else {
contributions.hidden = true;
}
- if ("purchaseURL" in aAddon && aAddon.purchaseURL) {
- var purchase = document.getElementById("detail-purchase-btn");
- purchase.label = gStrings.ext.formatStringFromName("cmd.purchaseAddon.label",
- [aAddon.purchaseDisplayAmount],
- 1);
- purchase.accesskey = gStrings.ext.GetStringFromName("cmd.purchaseAddon.accesskey");
- }
-
var updateDateRow = document.getElementById("detail-dateUpdated");
if (aAddon.updateDate) {
var date = formatDate(aAddon.updateDate);
updateDateRow.value = date;
} else {
updateDateRow.value = null;
}
@@ -3366,21 +2966,16 @@ var gDetailView = {
for (let install of aInstalls) {
if (install.state == AddonManager.STATE_INSTALLED &&
install.addon.id == aAddonId) {
this._updateView(install.addon, false);
return;
}
}
- if (aAddonId in gCachedAddons) {
- this._updateView(gCachedAddons[aAddonId], true);
- return;
- }
-
// This might happen due to session restore restoring us back to an
// add-on that doesn't exist but otherwise shouldn't normally happen.
// Either way just revert to the default view.
gViewController.replaceView(gViewDefault);
});
});
},
--- a/toolkit/mozapps/extensions/content/extensions.xml
+++ b/toolkit/mozapps/extensions/content/extensions.xml
@@ -213,53 +213,33 @@
<content orient="horizontal">
<xul:button anonid="name-btn" class="sorter"
label="&sort.name.label;" tooltiptext="&sort.name.tooltip;"
oncommand="this.parentNode._handleChange('name');"/>
<xul:button anonid="date-btn" class="sorter"
label="&sort.dateUpdated.label;"
tooltiptext="&sort.dateUpdated.tooltip;"
oncommand="this.parentNode._handleChange('updateDate');"/>
- <xul:button anonid="price-btn" class="sorter" hidden="true"
- label="&sort.price.label;"
- tooltiptext="&sort.price.tooltip;"
- oncommand="this.parentNode._handleChange('purchaseAmount');"/>
- <xul:button anonid="relevance-btn" class="sorter" hidden="true"
- label="&sort.relevance.label;"
- tooltiptext="&sort.relevance.tooltip;"
- oncommand="this.parentNode._handleChange('relevancescore');"/>
</content>
<implementation>
<constructor><![CDATA[
if (!this.hasAttribute("sortby"))
this.setAttribute("sortby", "name");
- if (this.getAttribute("showrelevance") == "true")
- this._btnRelevance.hidden = false;
-
- if (this.getAttribute("showprice") == "true")
- this._btnPrice.hidden = false;
-
this._refreshState();
]]></constructor>
<field name="handler">null</field>
<field name="_btnName">
document.getAnonymousElementByAttribute(this, "anonid", "name-btn");
</field>
<field name="_btnDate">
document.getAnonymousElementByAttribute(this, "anonid", "date-btn");
</field>
- <field name="_btnPrice">
- document.getAnonymousElementByAttribute(this, "anonid", "price-btn");
- </field>
- <field name="_btnRelevance">
- document.getAnonymousElementByAttribute(this, "anonid", "relevance-btn");
- </field>
<property name="sortBy">
<getter><![CDATA[
return this.getAttribute("sortby");
]]></getter>
<setter><![CDATA[
if (val != this.sortBy) {
this.setAttribute("sortBy", val);
@@ -276,38 +256,16 @@
val = !!val;
if (val != this.ascending) {
this.setAttribute("ascending", val);
this._refreshState();
}
]]></setter>
</property>
- <property name="showrelevance">
- <getter><![CDATA[
- return (this.getAttribute("showrelevance") == "true");
- ]]></getter>
- <setter><![CDATA[
- val = !!val;
- this.setAttribute("showrelevance", val);
- this._btnRelevance.hidden = !val;
- ]]></setter>
- </property>
-
- <property name="showprice">
- <getter><![CDATA[
- return (this.getAttribute("showprice") == "true");
- ]]></getter>
- <setter><![CDATA[
- val = !!val;
- this.setAttribute("showprice", val);
- this._btnPrice.hidden = !val;
- ]]></setter>
- </property>
-
<method name="setSort">
<parameter name="aSort"/>
<parameter name="aAscending"/>
<body><![CDATA[
var sortChanged = false;
if (aSort != this.sortBy) {
this.setAttribute("sortby", aSort);
sortChanged = true;
@@ -322,17 +280,17 @@
if (sortChanged)
this._refreshState();
]]></body>
</method>
<method name="_handleChange">
<parameter name="aSort"/>
<body><![CDATA[
- const ASCENDING_SORT_FIELDS = ["name", "purchaseAmount"];
+ const ASCENDING_SORT_FIELDS = ["name"];
// Toggle ascending if sort by is not changing, otherwise
// name sorting defaults to ascending, others to descending
if (aSort == this.sortBy)
this.ascending = !this.ascending;
else
this.setSort(aSort, ASCENDING_SORT_FIELDS.indexOf(aSort) >= 0);
]]></body>
@@ -354,32 +312,16 @@
if (sortBy == "updateDate") {
this._btnDate.checkState = checkState;
this._btnDate.checked = true;
} else {
this._btnDate.checkState = 0;
this._btnDate.checked = false;
}
- if (sortBy == "purchaseAmount") {
- this._btnPrice.checkState = checkState;
- this._btnPrice.checked = true;
- } else {
- this._btnPrice.checkState = 0;
- this._btnPrice.checked = false;
- }
-
- if (sortBy == "relevancescore") {
- this._btnRelevance.checkState = checkState;
- this._btnRelevance.checked = true;
- } else {
- this._btnRelevance.checkState = 0;
- this._btnRelevance.checked = false;
- }
-
if (this.handler && "onSortChanged" in this.handler)
this.handler.onSortChanged(sortBy, this.ascending);
]]></body>
</method>
</implementation>
</binding>
@@ -489,19 +431,17 @@
</binding>
<!-- Install status - Displays the status of an install/upgrade. -->
<binding id="install-status">
<content>
<xul:label anonid="message"/>
<xul:progressmeter anonid="progress" class="download-progress"/>
- <xul:button anonid="purchase-remote-btn" hidden="true"
- class="addon-control"
- oncommand="document.getBindingParent(this).purchaseRemote();"/>
+>
<xul:button anonid="install-remote-btn" hidden="true"
class="addon-control install" label="&addon.install.label;"
tooltiptext="&addon.install.tooltip;"
oncommand="document.getBindingParent(this).installRemote();"/>
</content>
<implementation>
<constructor><![CDATA[
@@ -519,20 +459,16 @@
]]></destructor>
<field name="_message">
document.getAnonymousElementByAttribute(this, "anonid", "message");
</field>
<field name="_progress">
document.getAnonymousElementByAttribute(this, "anonid", "progress");
</field>
- <field name="_purchaseRemote">
- document.getAnonymousElementByAttribute(this, "anonid",
- "purchase-remote-btn");
- </field>
<field name="_installRemote">
document.getAnonymousElementByAttribute(this, "anonid",
"install-remote-btn");
</field>
<field name="_restartNeeded">
document.getAnonymousElementByAttribute(this, "anonid",
"restart-needed");
</field>
@@ -553,17 +489,16 @@
this.refreshState();
this.mInstall.addListener(this);
]]></body>
</method>
<method name="refreshState">
<body><![CDATA[
var showInstallRemote = false;
- var showPurchase = false;
if (this.mInstall) {
switch (this.mInstall.state) {
case AddonManager.STATE_AVAILABLE:
if (this.mControl.getAttribute("remote") != "true")
break;
@@ -590,27 +525,18 @@
// XXXunf expose what error occured (bug 553487)
this.showMessage("installFailed", true);
break;
case AddonManager.STATE_CANCELLED:
this.showMessage("installCancelled", true);
break;
}
- } else if (this.mControl.mAddon.purchaseURL) {
- this._progress.hidden = true;
- showPurchase = true;
- this._purchaseRemote.label =
- gStrings.ext.formatStringFromName("addon.purchase.label",
- [this.mControl.mAddon.purchaseDisplayAmount], 1);
- this._purchaseRemote.tooltiptext =
- gStrings.ext.GetStringFromName("addon.purchase.tooltip");
}
- this._purchaseRemote.hidden = !showPurchase;
this._installRemote.hidden = !showInstallRemote;
if ("refreshInfo" in this.mControl)
this.mControl.refreshInfo();
]]></body>
</method>
<method name="showMessage">
@@ -623,22 +549,16 @@
var msg = gStrings.ext.GetStringFromName(aMsgId);
if (aHideProgress)
this._message.value = msg;
else
this._progress.status = msg;
]]></body>
</method>
- <method name="purchaseRemote">
- <body><![CDATA[
- openURL(this.mControl.mAddon.purchaseURL);
- ]]></body>
- </method>
-
<method name="installRemote">
<body><![CDATA[
if (this.mControl.getAttribute("remote") != "true")
return;
if (this.mControl.mAddon.eula) {
var data = {
addon: this.mControl.mAddon,
--- a/toolkit/mozapps/extensions/content/extensions.xul
+++ b/toolkit/mozapps/extensions/content/extensions.xul
@@ -129,20 +129,16 @@
<keyset>
<key id="focusSearch" key="&search.commandkey;" modifiers="accel"
command="cmd_focusSearch"/>
</keyset>
<hbox flex="1">
<vbox id="category-box">
<!-- category list -->
<richlistbox id="categories" flex="1">
- <richlistitem id="category-search" value="addons://search/"
- class="category"
- name="&view.search.label;" priority="0"
- tooltiptext="&view.search.label;" disabled="true"/>
<richlistitem id="category-discover" value="addons://discover/"
class="category"
name="&view.discover.label;" priority="1000"
tooltiptext="&view.discover.label;"/>
<richlistitem id="category-legacy" value="addons://legacy/"
class="category" priority="20000"
disabled="true"/>
<richlistitem id="category-availableUpdates" value="addons://updates/available"
@@ -255,93 +251,16 @@
</menupopup>
</toolbarbutton>
<textbox id="header-search" type="search" searchbutton="true"
searchbuttonlabel="&search.buttonlabel;"
placeholder="&search.placeholder2;"/>
</hbox>
<deck id="headered-views-content" flex="1" selectedIndex="0">
- <!-- search view -->
- <vbox id="search-view" flex="1" class="view-pane" tabindex="0">
- <hbox class="view-header global-warning-container" align="center">
- <!-- 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;"/>
- </hbox>
- <hbox class="global-warning-checkcompatibility" flex="1" align="center"
- tooltiptext="&warning.checkcompatibility.label;">
- <image class="warning-icon"/>
- <label class="global-warning-text" flex="1" crop="end"
- value="&warning.checkcompatibility.label;"/>
- </hbox>
- <button class="button-link global-warning-checkcompatibility"
- label="&warning.checkcompatibility.enable.label;"
- tooltiptext="&warning.checkcompatibility.enable.tooltip;"
- command="cmd_enableCheckCompatibility"/>
- <hbox class="global-warning-updatesecurity" flex="1" align="center"
- tooltiptext="&warning.updatesecurity.label;">
- <image class="warning-icon"/>
- <label class="global-warning-text" flex="1" crop="end"
- value="&warning.updatesecurity.label;"/>
- </hbox>
- <button class="button-link global-warning-updatesecurity"
- label="&warning.updatesecurity.enable.label;"
- tooltiptext="&warning.updatesecurity.enable.tooltip;"
- command="cmd_enableUpdateSecurity"/>
- <spacer flex="5000"/> <!-- Necessary to allow the message to wrap -->
- </hbox>
- <spacer flex="1"/>
- <hbox id="search-sorters" class="sort-controls"
- showrelevance="true" sortby="relevancescore" ascending="false"/>
- </hbox>
- <hbox id="search-filter" align="center">
- <label id="search-filter-label" value="&search.filter2.label;"/>
- <radiogroup id="search-filter-radiogroup" orient="horizontal"
- align="center" persist="value" value="remote">
- <radio id="search-filter-local" class="search-filter-radio"
- label="&search.filter2.installed.label;" value="local"
- tooltiptext="&search.filter2.installed.tooltip;"/>
- <radio id="search-filter-remote" class="search-filter-radio"
- label="&search.filter2.available.label;" value="remote"
- tooltiptext="&search.filter2.available.tooltip;"/>
- </radiogroup>
- </hbox>
- <vbox id="search-loading" class="alert-container"
- flex="1" hidden="true">
- <spacer class="alert-spacer-before"/>
- <hbox class="alert loading" align="center">
- <image/>
- <label value="&loading.label;"/>
- </hbox>
- <spacer class="alert-spacer-after"/>
- </vbox>
- <vbox id="search-list-empty" class="alert-container"
- flex="1" hidden="true">
- <spacer class="alert-spacer-before"/>
- <vbox class="alert">
- <label value="&listEmpty.search.label;"/>
- <button class="discover-button"
- id="discover-button-search"
- label="&listEmpty.button.label;"
- command="cmd_goToDiscoverPane"/>
- </vbox>
- <spacer class="alert-spacer-after"/>
- </vbox>
- <richlistbox id="search-list" class="list" flex="1">
- <hbox pack="center">
- <label id="search-allresults-link" class="text-link"/>
- </hbox>
- </richlistbox>
- </vbox>
-
<!-- list view -->
<vbox id="list-view" flex="1" class="view-pane" align="stretch" tabindex="0">
<!-- info UI for add-ons that have been disabled for being unsigned -->
<vbox id="disabled-unsigned-addons-info" hidden="true">
<label id="disabled-unsigned-addons-heading" value="&disabledUnsigned.heading;"/>
<description>
&disabledUnsigned.description.start;<label class="text-link plain" id="find-alternative-addons">&disabledUnsigned.description.findAddonsLink;</label>&disabledUnsigned.description.end;
</description>
--- a/toolkit/mozapps/extensions/internal/AddonRepository.jsm
+++ b/toolkit/mozapps/extensions/internal/AddonRepository.jsm
@@ -26,20 +26,17 @@ XPCOMUtils.defineLazyModuleGetters(this,
this.EXPORTED_SYMBOLS = [ "AddonRepository" ];
const PREF_GETADDONS_CACHE_ENABLED = "extensions.getAddons.cache.enabled";
const PREF_GETADDONS_CACHE_TYPES = "extensions.getAddons.cache.types";
const PREF_GETADDONS_CACHE_ID_ENABLED = "extensions.%ID%.getAddons.cache.enabled";
const PREF_GETADDONS_BROWSEADDONS = "extensions.getAddons.browseAddons";
const PREF_GETADDONS_BYIDS = "extensions.getAddons.get.url";
const PREF_GETADDONS_BYIDS_PERFORMANCE = "extensions.getAddons.getWithPerformance.url";
-const PREF_GETADDONS_BROWSERECOMMENDED = "extensions.getAddons.recommended.browseURL";
-const PREF_GETADDONS_GETRECOMMENDED = "extensions.getAddons.recommended.url";
const PREF_GETADDONS_BROWSESEARCHRESULTS = "extensions.getAddons.search.browseURL";
-const PREF_GETADDONS_GETSEARCHRESULTS = "extensions.getAddons.search.url";
const PREF_GETADDONS_DB_SCHEMA = "extensions.getAddons.databaseSchema";
const PREF_METADATA_LASTUPDATE = "extensions.getAddons.cache.lastUpdate";
const PREF_METADATA_UPDATETHRESHOLD_SEC = "extensions.getAddons.cache.updateThreshold";
const DEFAULT_METADATA_UPDATETHRESHOLD_SEC = 172800; // two days
const XMLURI_PARSE_ERROR = "http://www.mozilla.org/newlayout/xml/parsererror.xml";
@@ -689,25 +686,16 @@ this.AddonRepository = {
* Returns whether this instance is currently performing a search. New
* searches will not be performed while this is the case.
*/
get isSearching() {
return this._searching;
},
/**
- * The url that can be visited to see recommended add-ons in this repository.
- * If the corresponding preference is not defined, defaults to about:blank.
- */
- getRecommendedURL() {
- let url = this._formatURLPref(PREF_GETADDONS_BROWSERECOMMENDED, {});
- return (url != null) ? url : "about:blank";
- },
-
- /**
* Retrieves the url that can be visited to see search results for the given
* terms. If the corresponding preference is not defined, defaults to
* about:blank.
*
* @param aSearchTerms
* Search terms used to search the repository
*/
getSearchURL(aSearchTerms) {
@@ -853,80 +841,16 @@ this.AddonRepository = {
* not be used for any other purpose. Use repopulateCache instead.
*
* @return Promise{null} Resolves when the metadata update is complete.
*/
backgroundUpdateCheck() {
return this._repopulateCacheInternal(true);
},
- /**
- * Begins a search for recommended add-ons in this repository. Results will
- * be passed to the given callback.
- *
- * @param aMaxResults
- * The maximum number of results to return
- * @param aCallback
- * The callback to pass results to
- */
- retrieveRecommendedAddons(aMaxResults, aCallback) {
- let url = this._formatURLPref(PREF_GETADDONS_GETRECOMMENDED, {
- API_VERSION,
-
- // Get twice as many results to account for potential filtering
- MAX_RESULTS: 2 * aMaxResults
- });
-
- let handleResults = (aElements, aTotalResults) => {
- this._getLocalAddonIds(aLocalAddonIds => {
- // aTotalResults irrelevant
- this._parseAddons(aElements, -1, aLocalAddonIds);
- });
- };
-
- this._beginSearch(url, aMaxResults, aCallback, handleResults);
- },
-
- /**
- * Begins a search for add-ons in this repository. Results will be passed to
- * the given callback.
- *
- * @param aSearchTerms
- * The terms to search for
- * @param aMaxResults
- * The maximum number of results to return
- * @param aCallback
- * The callback to pass results to
- */
- searchAddons(aSearchTerms, aMaxResults, aCallback) {
- let compatMode = "normal";
- if (!AddonManager.checkCompatibility)
- compatMode = "ignore";
- else if (AddonManager.strictCompatibility)
- compatMode = "strict";
-
- let substitutions = {
- API_VERSION,
- TERMS: encodeURIComponent(aSearchTerms),
- // Get twice as many results to account for potential filtering
- MAX_RESULTS: 2 * aMaxResults,
- COMPATIBILITY_MODE: compatMode,
- };
-
- let url = this._formatURLPref(PREF_GETADDONS_GETSEARCHRESULTS, substitutions);
-
- let handleResults = (aElements, aTotalResults) => {
- this._getLocalAddonIds(aLocalAddonIds => {
- this._parseAddons(aElements, aTotalResults, aLocalAddonIds);
- });
- };
-
- this._beginSearch(url, aMaxResults, aCallback, handleResults);
- },
-
// Posts results to the callback
_reportSuccess(aResults, aTotalResults) {
this._searching = false;
this._request = null;
// The callback may want to trigger a new search so clear references early
let addons = aResults.map(result => result.addon);
let callback = this._callback;
this._callback = null;
@@ -1448,39 +1372,16 @@ this.AddonRepository = {
let compatElements = documentElement.getElementsByTagName("addon_compatibility");
let compatData = this._parseAddonCompatData(compatElements);
aHandleResults(elements, totalResults, compatData);
});
this._request.send(null);
},
- // Gets the id's of local add-ons, and the sourceURI's of local installs,
- // passing the results to aCallback
- _getLocalAddonIds(aCallback) {
- let localAddonIds = {ids: null, sourceURIs: null};
-
- AddonManager.getAllAddons(function(aAddons) {
- localAddonIds.ids = aAddons.map(a => a.id);
- if (localAddonIds.sourceURIs)
- aCallback(localAddonIds);
- });
-
- AddonManager.getAllInstalls(function(aInstalls) {
- localAddonIds.sourceURIs = [];
- for (let install of aInstalls) {
- if (install.state != AddonManager.STATE_AVAILABLE)
- localAddonIds.sourceURIs.push(install.sourceURI.spec);
- }
-
- if (localAddonIds.ids)
- aCallback(localAddonIds);
- });
- },
-
// Create url from preference, returning null if preference does not exist
_formatURLPref(aPreference, aSubstitutions) {
let url = Services.prefs.getCharPref(aPreference, "");
if (!url) {
logger.warn("_formatURLPref: Couldn't get pref: " + aPreference);
return null;
}
deleted file mode 100644
--- a/toolkit/mozapps/extensions/test/xpcshell/data/test_AddonRepository_compatmode_ignore.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<searchresults total_results="123">
- <addon>
- <name>Test Repo Add-on - ignore</name>
- <type id="1">Extension</type>
- <guid>compatmode-ignore@tests.mozilla.org</guid>
- <version>1.1</version>
- <authors>
- <author>
- <name>Test Creator 1</name>
- <link>http://localhost:%PORT%/creator1.html</link>
- </author>
- </authors>
- <compatible_applications>
- <application>
- <appID>xpcshell@tests.mozilla.org</appID>
- <min_version>1</min_version>
- <max_version>1</max_version>
- </application>
- </compatible_applications>
- <install>http://localhost:%PORT%/test1.xpi</install>
- </addon>
-</searchresults>
deleted file mode 100644
--- a/toolkit/mozapps/extensions/test/xpcshell/data/test_AddonRepository_compatmode_normal.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<searchresults total_results="123">
- <addon>
- <name>Test Repo Add-on - normal</name>
- <type id="1">Extension</type>
- <guid>compatmode-normal@tests.mozilla.org</guid>
- <version>1.1</version>
- <authors>
- <author>
- <name>Test Creator 1</name>
- <link>http://localhost:%PORT%/creator1.html</link>
- </author>
- </authors>
- <compatible_applications>
- <application>
- <appID>xpcshell@tests.mozilla.org</appID>
- <min_version>1</min_version>
- <max_version>1</max_version>
- </application>
- </compatible_applications>
- <install>http://localhost:%PORT%/test1.xpi</install>
- </addon>
-</searchresults>
deleted file mode 100644
--- a/toolkit/mozapps/extensions/test/xpcshell/data/test_AddonRepository_compatmode_strict.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<searchresults total_results="123">
- <addon>
- <name>Test Repo Add-on - strict</name>
- <type id="1">Extension</type>
- <guid>compatmode-strict@tests.mozilla.org</guid>
- <version>1.1</version>
- <authors>
- <author>
- <name>Test Creator 1</name>
- <link>http://localhost:%PORT%/creator1.html</link>
- </author>
- </authors>
- <compatible_applications>
- <application>
- <appID>xpcshell@tests.mozilla.org</appID>
- <min_version>1</min_version>
- <max_version>1</max_version>
- </application>
- </compatible_applications>
- <install>http://localhost:%PORT%/test1.xpi</install>
- </addon>
-</searchresults>
deleted file mode 100644
--- a/toolkit/mozapps/extensions/test/xpcshell/data/test_bug424262.xml
+++ /dev/null
@@ -1,185 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<searchresults total_results="100">
- <addon>
- <name>TEST</name>
- <type id='1'>Extension</type>
- <guid>test1@tests.mozilla.org</guid>
- <version>1.0</version>
- <authors>
- <author>
- <name>Test Creator</name>
- <link>http://localhost:%PORT%/creator.html</link>
- </author>
- </authors>
- <status id='4'>Public</status>
- <compatible_applications>
- <application>
- <appID>xpcshell@tests.mozilla.org</appID>
- <min_version>1</min_version>
- <max_version>1</max_version>
- </application>
- </compatible_applications>
- <install>http://localhost:%PORT%/test.xpi</install>
- </addon>
-
- <addon>
- <name>TEST</name>
- <rating>-5</rating>
- <type id='1'>Extension</type>
- <guid>test2@tests.mozilla.org</guid>
- <version>1.0</version>
- <authors>
- <author>
- <name>Test Creator</name>
- <link>http://localhost:%PORT%/creator.html</link>
- </author>
- </authors>
- <status id='4'>Public</status>
- <compatible_applications>
- <application>
- <appID>xpcshell@tests.mozilla.org</appID>
- <min_version>1</min_version>
- <max_version>1</max_version>
- </application>
- </compatible_applications>
- <install>http://localhost:%PORT%/test.xpi</install>
- </addon>
-
- <addon>
- <name>TEST</name>
- <rating>0</rating>
- <type id='1'>Extension</type>
- <guid>test3@tests.mozilla.org</guid>
- <version>1.0</version>
- <authors>
- <author>
- <name>Test Creator</name>
- <link>http://localhost:%PORT%/creator.html</link>
- </author>
- </authors>
- <status id='4'>Public</status>
- <compatible_applications>
- <application>
- <appID>xpcshell@tests.mozilla.org</appID>
- <min_version>1</min_version>
- <max_version>1</max_version>
- </application>
- </compatible_applications>
- <install>http://localhost:%PORT%/test.xpi</install>
- </addon>
-
- <addon>
- <name>TEST</name>
- <rating>2</rating>
- <type id='1'>Extension</type>
- <guid>test4@tests.mozilla.org</guid>
- <version>1.0</version>
- <authors>
- <author>
- <name>Test Creator</name>
- <link>http://localhost:%PORT%/creator.html</link>
- </author>
- </authors>
- <status id='4'>Public</status>
- <compatible_applications>
- <application>
- <appID>xpcshell@tests.mozilla.org</appID>
- <min_version>1</min_version>
- <max_version>1</max_version>
- </application>
- </compatible_applications>
- <install>http://localhost:%PORT%/test.xpi</install>
- </addon>
-
- <addon>
- <name>TEST</name>
- <rating>4</rating>
- <type id='1'>Extension</type>
- <guid>test5@tests.mozilla.org</guid>
- <version>1.0</version>
- <authors>
- <author>
- <name>Test Creator</name>
- <link>http://localhost:%PORT%/creator.html</link>
- </author>
- </authors>
- <status id='4'>Public</status>
- <compatible_applications>
- <application>
- <appID>xpcshell@tests.mozilla.org</appID>
- <min_version>1</min_version>
- <max_version>1</max_version>
- </application>
- </compatible_applications>
- <install>http://localhost:%PORT%/test.xpi</install>
- </addon>
-
- <addon>
- <name>TEST</name>
- <rating>5</rating>
- <type id='1'>Extension</type>
- <guid>test6@tests.mozilla.org</guid>
- <version>1.0</version>
- <authors>
- <author>
- <name>Test Creator</name>
- <link>http://localhost:%PORT%/creator.html</link>
- </author>
- </authors>
- <status id='4'>Public</status>
- <compatible_applications>
- <application>
- <appID>xpcshell@tests.mozilla.org</appID>
- <min_version>1</min_version>
- <max_version>1</max_version>
- </application>
- </compatible_applications>
- <install>http://localhost:%PORT%/test.xpi</install>
- </addon>
-
- <addon>
- <name>TEST</name>
- <rating>10</rating>
- <type id='1'>Extension</type>
- <guid>test7@tests.mozilla.org</guid>
- <version>1.0</version>
- <authors>
- <author>
- <name>Test Creator</name>
- <link>http://localhost:%PORT%/creator.html</link>
- </author>
- </authors>
- <status id='4'>Public</status>
- <compatible_applications>
- <application>
- <appID>xpcshell@tests.mozilla.org</appID>
- <min_version>1</min_version>
- <max_version>1</max_version>
- </application>
- </compatible_applications>
- <install>http://localhost:%PORT%/test.xpi</install>
- </addon>
-
- <addon>
- <name>TEST</name>
- <rating>100</rating>
- <type id='1'>Extension</type>
- <guid>test8@tests.mozilla.org</guid>
- <version>1.0</version>
- <authors>
- <author>
- <name>Test Creator</name>
- <link>http://localhost:%PORT%/creator.html</link>
- </author>
- </authors>
- <status id='4'>Public</status>
- <compatible_applications>
- <application>
- <appID>xpcshell@tests.mozilla.org</appID>
- <min_version>1</min_version>
- <max_version>1</max_version>
- </application>
- </compatible_applications>
- <install>http://localhost:%PORT%/test.xpi</install>
- </addon>
-</searchresults>
deleted file mode 100644
--- a/toolkit/mozapps/extensions/test/xpcshell/data/test_bug554133.xml
+++ /dev/null
@@ -1,292 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<searchresults total_results="100">
- <addon>
- <name>PASS</name>
- <type id='1'>Extension</type>
- <guid>test1@tests.mozilla.org</guid>
- <version>1.0</version>
- <authors>
- <author>
- <name>Test Creator</name>
- <link>http://localhost:%PORT%/creator.html</link>
- </author>
- </authors>
- <status id='4'>Public</status>
- <compatible_applications>
- <application>
- <appID>xpcshell@tests.mozilla.org</appID>
- <min_version>1</min_version>
- <max_version>1</max_version>
- </application>
- </compatible_applications>
- <install>http://localhost:%PORT%/test.xpi</install>
- </addon>
-
- <addon>
- <name>FAIL</name>
- <type id='1'>Extension</type>
- <guid>test2@tests.mozilla.org</guid>
- <version>1.0</version>
- <authors>
- <author>
- <name>Test Creator</name>
- <link>http://localhost:%PORT%/creator.html</link>
- </author>
- </authors>
- <status id='4'>Public</status>
- <summary>Should not return an incompatible add-on</summary>
- <compatible_applications>
- <application>
- <appID>xpcshell@tests.mozilla.org</appID>
- <min_version>2</min_version>
- <max_version>2</max_version>
- </application>
- </compatible_applications>
- <install>http://localhost:%PORT%/test.xpi</install>
- </addon>
-
- <addon>
- <name>PASS</name>
- <type id='1'>Extension</type>
- <guid>test3@tests.mozilla.org</guid>
- <version>1.0</version>
- <authors>
- <author>
- <name>Test Creator</name>
- <link>http://localhost:%PORT%/creator.html</link>
- </author>
- </authors>
- <status id='4'>Public</status>
- <compatible_applications>
- <application>
- <appID>xpcshell@tests.mozilla.org</appID>
- <min_version>1</min_version>
- <max_version>1</max_version>
- </application>
- </compatible_applications>
- <install>http://localhost:%PORT%/test.xpi</install>
- </addon>
-
- <addon>
- <name>FAIL</name>
- <type id='1'>Extension</type>
- <guid>test4@tests.mozilla.org</guid>
- <version>1.0</version>
- <authors>
- <author>
- <name>Test Creator</name>
- <link>http://localhost:%PORT%/creator.html</link>
- </author>
- </authors>
- <status id='4'>Public</status>
- <summary>Should not return an add-on for a different OS</summary>
- <compatible_applications>
- <application>
- <appID>xpcshell@tests.mozilla.org</appID>
- <min_version>1</min_version>
- <max_version>1</max_version>
- </application>
- </compatible_applications>
- <install os="UNKNOWN">http://localhost:%PORT%/test.xpi</install>
- </addon>
-
- <addon>
- <name>PASS</name>
- <type id='1'>Extension</type>
- <guid>test5@tests.mozilla.org</guid>
- <version>1.0</version>
- <authors>
- <author>
- <name>Test Creator</name>
- <link>http://localhost:%PORT%/creator.html</link>
- </author>
- </authors>
- <status id='4'>Public</status>
- <compatible_applications>
- <application>
- <appID>xpcshell@tests.mozilla.org</appID>
- <min_version>1</min_version>
- <max_version>1</max_version>
- </application>
- </compatible_applications>
- <install>http://localhost:%PORT%/test.xpi</install>
- </addon>
-
- <addon>
- <name>FAIL</name>
- <type id='1'>Extension</type>
- <guid>test5@tests.mozilla.org</guid>
- <version>1.0</version>
- <authors>
- <author>
- <name>Test Creator</name>
- <link>http://localhost:%PORT%/creator.html</link>
- </author>
- </authors>
- <status id='4'>Public</status>
- <summary>Should not include the same result twice</summary>
- <compatible_applications>
- <application>
- <appID>xpcshell@tests.mozilla.org</appID>
- <min_version>1</min_version>
- <max_version>1</max_version>
- </application>
- </compatible_applications>
- <install>http://localhost:%PORT%/test.xpi</install>
- </addon>
-
- <addon>
- <name>PASS</name>
- <type id='1'>Extension</type>
- <guid>test6@tests.mozilla.org</guid>
- <version>1.0</version>
- <authors>
- <author>
- <name>Test Creator</name>
- <link>http://localhost:%PORT%/creator.html</link>
- </author>
- </authors>
- <status id='4'>Public</status>
- <compatible_applications>
- <application>
- <appID>xpcshell@tests.mozilla.org</appID>
- <min_version>1</min_version>
- <max_version>1</max_version>
- </application>
- </compatible_applications>
- <install>http://localhost:%PORT%/test.xpi</install>
- </addon>
-
- <addon>
- <name>PASS</name>
- <type id='1'>Extension</type>
- <guid>test7@tests.mozilla.org</guid>
- <version>1.0</version>
- <authors>
- <author>
- <name>Test Creator</name>
- <link>http://localhost:%PORT%/creator.html</link>
- </author>
- </authors>
- <status id='4'>Public</status>
- <compatible_applications>
- <application>
- <appID>xpcshell@tests.mozilla.org</appID>
- <min_version>1</min_version>
- <max_version>1</max_version>
- </application>
- </compatible_applications>
- <install>http://localhost:%PORT%/test.xpi</install>
- </addon>
-
- <addon>
- <name>PASS</name>
- <type id='1'>Extension</type>
- <guid>test8@tests.mozilla.org</guid>
- <version>1.0</version>
- <authors>
- <author>
- <name>Test Creator</name>
- <link>http://localhost:%PORT%/creator.html</link>
- </author>
- </authors>
- <status id='4'>Public</status>
- <compatible_applications>
- <application>
- <appID>xpcshell@tests.mozilla.org</appID>
- <min_version>1</min_version>
- <max_version>1</max_version>
- </application>
- </compatible_applications>
- <install>http://localhost:%PORT%/test.xpi</install>
- </addon>
-
- <addon>
- <name>PASS</name>
- <type id='1'>Extension</type>
- <guid>test9@tests.mozilla.org</guid>
- <version>1.0</version>
- <authors>
- <author>
- <name>Test Creator</name>
- <link>http://localhost:%PORT%/creator.html</link>
- </author>
- </authors>
- <status id='4'>Public</status>
- <compatible_applications>
- <application>
- <appID>xpcshell@tests.mozilla.org</appID>
- <min_version>1</min_version>
- <max_version>1</max_version>
- </application>
- </compatible_applications>
- <install>http://localhost:%PORT%/test.xpi</install>
- </addon>
-
- <addon>
- <name>PASS</name>
- <type id='1'>Extension</type>
- <guid>test10@tests.mozilla.org</guid>
- <version>1.0</version>
- <authors>
- <author>
- <name>Test Creator</name>
- <link>http://localhost:%PORT%/creator.html</link>
- </author>
- </authors>
- <status id='4'>Public</status>
- <compatible_applications>
- <application>
- <appID>xpcshell@tests.mozilla.org</appID>
- <min_version>1</min_version>
- <max_version>1</max_version>
- </application>
- </compatible_applications>
- <install>http://localhost:%PORT%/test.xpi</install>
- </addon>
-
- <addon>
- <name>PASS</name>
- <type id='1'>Extension</type>
- <guid>test11@tests.mozilla.org</guid>
- <version>1.0</version>
- <authors>
- <author>
- <name>Test Creator</name>
- <link>http://localhost:%PORT%/creator.html</link>
- </author>
- </authors>
- <status id='4'>Public</status>
- <compatible_applications>
- <application>
- <appID>xpcshell@tests.mozilla.org</appID>
- <min_version>1</min_version>
- <max_version>1</max_version>
- </application>
- </compatible_applications>
- <install>http://localhost:%PORT%/test.xpi</install>
- </addon>
-
- <addon>
- <name>PASS</name>
- <type id='1'>Extension</type>
- <guid>test12@tests.mozilla.org</guid>
- <version>1.0</version>
- <authors>
- <author>
- <name>Test Creator</name>
- <link>http://localhost:%PORT%/creator.html</link>
- </author>
- </authors>
- <status id='4'>Public</status>
- <compatible_applications>
- <application>
- <appID>xpcshell@tests.mozilla.org</appID>
- <min_version>1</min_version>
- <max_version>1</max_version>
- </application>
- </compatible_applications>
- <install>http://localhost:%PORT%/test.xpi</install>
- </addon>
-</searchresults>
-
--- a/toolkit/mozapps/extensions/test/xpcshell/test_AddonRepository.js
+++ b/toolkit/mozapps/extensions/test/xpcshell/test_AddonRepository.js
@@ -6,20 +6,17 @@
Components.utils.import("resource://gre/modules/addons/AddonRepository.jsm");
Components.utils.import("resource://testing-common/httpd.js");
var gServer = new HttpServer();
gServer.start(-1);
const PREF_GETADDONS_BROWSEADDONS = "extensions.getAddons.browseAddons";
-const PREF_GETADDONS_BROWSERECOMMENDED = "extensions.getAddons.recommended.browseURL";
-const PREF_GETADDONS_GETRECOMMENDED = "extensions.getAddons.recommended.url";
const PREF_GETADDONS_BROWSESEARCHRESULTS = "extensions.getAddons.search.browseURL";
-const PREF_GETADDONS_GETSEARCHRESULTS = "extensions.getAddons.search.url";
const PORT = gServer.identity.primaryPort;
const BASE_URL = "http://localhost:" + PORT;
const DEFAULT_URL = "about:blank";
gPort = PORT;
// Path to source URI of installing add-on
@@ -104,199 +101,31 @@ var GET_RESULTS = [{
}, {
id: "test_AddonRepository_1@tests.mozilla.org",
type: "theme",
version: "1.4",
repositoryStatus: 9999,
icons: {}
}];
-// Results of retrieveRecommendedAddons and searchAddons
-var SEARCH_RESULTS = [{
- id: "test1@tests.mozilla.org",
- type: "extension",
- version: "1.1",
- creator: {
- name: "Test Creator 1",
- url: BASE_URL + "/creator1.html"
- },
- repositoryStatus: 8,
- sourceURI: BASE_URL + "/test1.xpi",
- icons: {}
-}, {
- id: "test2@tests.mozilla.org",
- type: "extension",
- version: "1.2",
- creator: {
- name: "Test Creator 2",
- url: BASE_URL + "/creator2.html"
- },
- developers: [{
- name: "Test Developer 2",
- url: BASE_URL + "/developer2.html"
- }],
- description: "Test Summary 2\n\nparagraph",
- fullDescription: "Test Description 2\nnewline",
- developerComments: "Test Developer\nComments 2",
- eula: "Test EULA 2",
- iconURL: BASE_URL + "/icon2-32.png",
- icons: {
- "32": BASE_URL + "/icon2-32.png",
- "48": BASE_URL + "/icon2-48.png",
- "64": BASE_URL + "/icon2-64.png"
- },
- screenshots: [{
- url: BASE_URL + "/full1-2.png",
- thumbnailURL: BASE_URL + "/thumbnail1-2.png"
- }, {
- url: BASE_URL + "/full2-2.png",
- thumbnailURL: BASE_URL + "/thumbnail2-2.png",
- caption: "Caption 2"
- }],
- homepageURL: BASE_URL + "/learnmore2.html",
- supportURL: BASE_URL + "/support2.html",
- learnmoreURL: BASE_URL + "/learnmore2.html",
- contributionURL: BASE_URL + "/meetDevelopers2.html",
- contributionAmount: null,
- repositoryStatus: 4,
- sourceURI: BASE_URL + "/test2.xpi"
-}, {
- id: "test3@tests.mozilla.org",
- type: "theme",
- version: "1.3",
- creator: {
- name: "Test Creator 3",
- url: BASE_URL + "/creator3.html"
- },
- developers: [{
- name: "First Test Developer 3",
- url: BASE_URL + "/developer1-3.html"
- }, {
- name: "Second Test Developer 3",
- url: BASE_URL + "/developer2-3.html"
- }],
- description: "Test Summary 3",
- fullDescription: "Test Description 3\n\n List item 1\n List item 2",
- developerComments: "Test Developer Comments 3",
- eula: "Test EULA 3",
- iconURL: BASE_URL + "/icon3.png",
- icons: { "32": BASE_URL + "/icon3.png" },
- screenshots: [{
- url: BASE_URL + "/full1-3.png",
- thumbnailURL: BASE_URL + "/thumbnail1-3.png",
- caption: "Caption 1 - 3"
- }, {
- url: BASE_URL + "/full2-3.png",
- caption: "Caption 2 - 3"
- }, {
- url: BASE_URL + "/full3-3.png",
- thumbnailURL: BASE_URL + "/thumbnail3-3.png",
- caption: "Caption 3 - 3"
- }],
- homepageURL: BASE_URL + "/homepage3.html",
- supportURL: BASE_URL + "/support3.html",
- learnmoreURL: BASE_URL + "/learnmore3.html",
- contributionURL: BASE_URL + "/meetDevelopers3.html",
- contributionAmount: "$11.11",
- averageRating: 2,
- reviewCount: 1111,
- reviewURL: BASE_URL + "/review3.html",
- totalDownloads: 2222,
- weeklyDownloads: 3333,
- dailyUsers: 4444,
- sourceURI: BASE_URL + "/test3.xpi",
- repositoryStatus: 8,
- size: 5555,
- updateDate: new Date(1265033045000),
-
-}, {
- id: "purchase1@tests.mozilla.org",
- type: "extension",
- version: "2.0",
- creator: {
- name: "Test Creator - Last Passing",
- url: BASE_URL + "/creatorLastPassing.html"
- },
- averageRating: 5,
- repositoryStatus: 4,
- purchaseURL: "http://localhost:" + PORT + "/purchaseURL1",
- purchaseAmount: 5,
- purchaseDisplayAmount: "$5",
- icons: {}
-}, {
- id: "purchase2@tests.mozilla.org",
- type: "extension",
- version: "2.0",
- creator: {
- name: "Test Creator - Last Passing",
- url: BASE_URL + "/creatorLastPassing.html"
- },
- averageRating: 5,
- repositoryStatus: 4,
- purchaseURL: "http://localhost:" + PORT + "/purchaseURL2",
- purchaseAmount: 10,
- purchaseDisplayAmount: "$10",
- icons: {}
-}, {
- id: "test-lastPassing@tests.mozilla.org",
- type: "extension",
- version: "2.0",
- creator: {
- name: "Test Creator - Last Passing",
- url: BASE_URL + "/creatorLastPassing.html"
- },
- averageRating: 5,
- repositoryStatus: 4,
- sourceURI: BASE_URL + "/addons/test_AddonRepository_3.xpi",
- icons: {}
-}];
-
-const TOTAL_RESULTS = 1111;
-const MAX_RESULTS = SEARCH_RESULTS.length;
-
-// Used to differentiate between testing that a search success
-// or a search failure for retrieveRecommendedAddons and searchAddons
-const FAILED_MAX_RESULTS = 9999;
-
// Values for testing AddonRepository.getAddonsByIDs()
var GET_TEST = {
preference: PREF_GETADDONS_BYIDS,
preferenceValue: BASE_URL + "/%OS%/%VERSION%/%API_VERSION%/" +
"%API_VERSION%/%IDS%",
failedIDs: ["test1@tests.mozilla.org"],
failedURL: "/XPCShell/1/1.5/1.5/test1%40tests.mozilla.org",
successfulIDs: ["test1@tests.mozilla.org",
"{00000000-1111-2222-3333-444444444444}",
"test_AddonRepository_1@tests.mozilla.org"],
successfulURL: "/XPCShell/1/1.5/1.5/test1%40tests.mozilla.org," +
"%7B00000000-1111-2222-3333-444444444444%7D," +
"test_AddonRepository_1%40tests.mozilla.org"
};
-// Values for testing AddonRepository.retrieveRecommendedAddons()
-var RECOMMENDED_TEST = {
- preference: PREF_GETADDONS_GETRECOMMENDED,
- preferenceValue: BASE_URL + "/%OS%/%VERSION%/%API_VERSION%/" +
- "%API_VERSION%/%MAX_RESULTS%",
- failedURL: "/XPCShell/1/1.5/1.5/" + (2 * FAILED_MAX_RESULTS),
- successfulURL: "/XPCShell/1/1.5/1.5/" + (2 * MAX_RESULTS)
-};
-
-// Values for testing AddonRepository.searchAddons()
-var SEARCH_TEST = {
- searchTerms: "odd=search:with&weird\"characters",
- preference: PREF_GETADDONS_GETSEARCHRESULTS,
- preferenceValue: BASE_URL + "/%OS%/%VERSION%/%API_VERSION%/" +
- "%API_VERSION%/%MAX_RESULTS%/%TERMS%",
- failedURL: "/XPCShell/1/1.5/1.5/" + (2 * FAILED_MAX_RESULTS) +
- "/odd%3Dsearch%3Awith%26weird%22characters",
- successfulURL: "/XPCShell/1/1.5/1.5/" + (2 * MAX_RESULTS) +
- "/odd%3Dsearch%3Awith%26weird%22characters"
-};
-
// Test that actual results and expected results are equal
function check_results(aActualAddons, aExpectedAddons, aAddonCount, aInstallNull) {
do_check_false(AddonRepository.isSearching);
do_check_eq(aActualAddons.length, aAddonCount);
do_check_addons(aActualAddons, aExpectedAddons, ADDON_PROPERTIES);
// Additional tests
@@ -373,33 +202,21 @@ function run_test() {
do_get_addon("test_AddonRepository_2"));
gServer.registerFile(INSTALL_URL3,
do_get_addon("test_AddonRepository_3"));
// Register files used to test search failure
mapUrlToFile(GET_TEST.failedURL,
do_get_file("data/test_AddonRepository_failed.xml"),
gServer);
- mapUrlToFile(RECOMMENDED_TEST.failedURL,
- do_get_file("data/test_AddonRepository_failed.xml"),
- gServer);
- mapUrlToFile(SEARCH_TEST.failedURL,
- do_get_file("data/test_AddonRepository_failed.xml"),
- gServer);
// Register files used to test search success
mapUrlToFile(GET_TEST.successfulURL,
do_get_file("data/test_AddonRepository_getAddonsByIDs.xml"),
gServer);
- mapUrlToFile(RECOMMENDED_TEST.successfulURL,
- do_get_file("data/test_AddonRepository.xml"),
- gServer);
- mapUrlToFile(SEARCH_TEST.successfulURL,
- do_get_file("data/test_AddonRepository.xml"),
- gServer);
// Create an active AddonInstall so can check that it isn't returned in the results
AddonManager.getInstallForURL(BASE_URL + INSTALL_URL2, function addon_2_get(aInstall) {
try {
aInstall.install();
} catch (e) {
do_print("Failed to install add-on " + aInstall.sourceURI.spec);
do_report_unexpected_exception(e);
@@ -424,17 +241,17 @@ function end_test() {
}
do_print("Waiting 1 second until cleanup is complete");
do_timeout(1000, loop);
}
loop();
});
}
-// Tests homepageURL, getRecommendedURL() and getSearchURL()
+// Tests homepageURL and getSearchURL()
function run_test_1() {
function check_urls(aPreference, aGetURL, aTests) {
aTests.forEach(function(aTest) {
Services.prefs.setCharPref(aPreference, aTest.preferenceValue);
do_check_eq(aGetURL(aTest), aTest.expectedURL);
});
}
@@ -456,28 +273,23 @@ function run_test_1() {
preferenceValue: BASE_URL + "/%TERMS%",
expectedURL: BASE_URL + "/test%20search"
}, {
searchTerms: "odd=search:with&weird\"characters",
preferenceValue: BASE_URL + "/%TERMS%",
expectedURL: BASE_URL + "/odd%3Dsearch%3Awith%26weird%22characters"
}];
- // Setup tests for homepageURL, getRecommendedURL() and getSearchURL()
+ // Setup tests for homepageURL and getSearchURL()
var tests = [{
initiallyUndefined: true,
preference: PREF_GETADDONS_BROWSEADDONS,
urlTests,
getURL: () => AddonRepository.homepageURL
}, {
- initiallyUndefined: true,
- preference: PREF_GETADDONS_BROWSERECOMMENDED,
- urlTests,
- getURL: () => AddonRepository.getRecommendedURL()
- }, {
initiallyUndefined: false,
preference: PREF_GETADDONS_BROWSESEARCHRESULTS,
urlTests: urlTests.concat(searchURLTests),
getURL: function getSearchURL(aTest) {
var searchTerms = aTest && aTest.searchTerms ? aTest.searchTerms
: "unused terms";
return AddonRepository.getSearchURL(searchTerms);
}
@@ -518,105 +330,21 @@ function run_test_getAddonsByID_fails()
}
// Tests success of AddonRepository.getAddonsByIDs()
function run_test_getAddonsByID_succeeds() {
var callback = {
searchSucceeded(aAddonsList, aAddonCount, aTotalResults) {
do_check_eq(aTotalResults, -1);
check_results(aAddonsList, GET_RESULTS, aAddonCount, true);
- run_test_retrieveRecommended_fails();
+ end_test();
},
searchFailed() {
do_throw("searchAddons should not have failed");
end_test();
}
};
complete_search(function complete_search_succeed_callback(aCallback) {
AddonRepository.getAddonsByIDs(GET_TEST.successfulIDs, aCallback);
}, callback);
}
-
-// Tests failure of AddonRepository.retrieveRecommendedAddons()
-function run_test_retrieveRecommended_fails() {
- Services.prefs.setCharPref(RECOMMENDED_TEST.preference,
- RECOMMENDED_TEST.preferenceValue);
- var callback = {
- searchSucceeded(aAddonsList, aAddonCount, aTotalResults) {
- do_throw("retrieveRecommendedAddons should not have succeeded");
- end_test();
- },
-
- searchFailed() {
- do_check_false(AddonRepository.isSearching);
- run_test_retrieveRecommended_succeed();
- }
- };
-
- complete_search(function retrieveRecommended_failing_callback(aCallback) {
- AddonRepository.retrieveRecommendedAddons(FAILED_MAX_RESULTS, aCallback);
- }, callback);
-}
-
-// Tests success of AddonRepository.retrieveRecommendedAddons()
-function run_test_retrieveRecommended_succeed() {
- var callback = {
- searchSucceeded(aAddonsList, aAddonCount, aTotalResults) {
- do_check_eq(aTotalResults, -1);
- check_results(aAddonsList, SEARCH_RESULTS, aAddonCount);
- run_test_searchAddons_fails();
- },
-
- searchFailed() {
- do_throw("retrieveRecommendedAddons should not have failed");
- end_test();
- }
- };
-
- complete_search(function retrieveRecommended_succeed_callback(aCallback) {
- AddonRepository.retrieveRecommendedAddons(MAX_RESULTS, aCallback);
- }, callback);
-}
-
-// Tests failure of AddonRepository.searchAddons()
-function run_test_searchAddons_fails() {
- Services.prefs.setCharPref(SEARCH_TEST.preference, SEARCH_TEST.preferenceValue);
- var callback = {
- searchSucceeded(aAddonsList, aAddonCount, aTotalResults) {
- do_throw("searchAddons should not have succeeded");
- end_test();
- },
-
- searchFailed() {
- do_check_false(AddonRepository.isSearching);
- run_test_searchAddons_succeeds();
- }
- };
-
- complete_search(function(aCallback) {
- var searchTerms = SEARCH_TEST.searchTerms;
- AddonRepository.searchAddons(searchTerms, FAILED_MAX_RESULTS, aCallback);
- }, callback);
-}
-
-// Tests success of AddonRepository.searchAddons()
-function run_test_searchAddons_succeeds() {
- var callback = {
- searchSucceeded(aAddonsList, aAddonCount, aTotalResults) {
- do_check_eq(aTotalResults, TOTAL_RESULTS);
- check_results(aAddonsList, SEARCH_RESULTS, aAddonCount);
- end_test();
- },
-
- searchFailed() {
- do_throw("searchAddons should not have failed");
- end_test();
- }
- };
-
- complete_search(function(aCallback) {
- var searchTerms = SEARCH_TEST.searchTerms;
- AddonRepository.searchAddons(searchTerms, MAX_RESULTS, aCallback);
- }, callback);
-}
-
deleted file mode 100644
--- a/toolkit/mozapps/extensions/test/xpcshell/test_AddonRepository_compatmode.js
+++ /dev/null
@@ -1,89 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/
- */
-
-// This verifies that AddonRepository correctly fills in the
-// %COMPATIBILITY_MODE% token in the Search API URL.
-
-const PREF_GETADDONS_GETSEARCHRESULTS = "extensions.getAddons.search.url";
-
-Components.utils.import("resource://testing-common/httpd.js");
-var gServer = new HttpServer();
-gServer.start(-1);
-gPort = gServer.identity.primaryPort;
-
-// register static files with server and interpolate port numbers in them
-mapFile("/data/test_AddonRepository_compatmode_ignore.xml", gServer);
-mapFile("/data/test_AddonRepository_compatmode_normal.xml", gServer);
-mapFile("/data/test_AddonRepository_compatmode_strict.xml", gServer);
-
-function run_test() {
- do_test_pending();
- createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2");
-
- Services.prefs.setCharPref(PREF_GETADDONS_GETSEARCHRESULTS,
- "http://localhost:" + gPort + "/data/test_AddonRepository_compatmode_%COMPATIBILITY_MODE%.xml");
- startupManager();
- run_test_1();
-}
-
-function end_test() {
- gServer.stop(do_test_finished);
-}
-
-// Strict compatibility checking disabled.
-function run_test_1() {
- do_print("Testing with strict compatibility checking disabled");
- Services.prefs.setBoolPref(PREF_EM_STRICT_COMPATIBILITY, false);
-
- AddonRepository.searchAddons("test", 6, {
- searchSucceeded(aAddons) {
- do_check_neq(aAddons, null);
- do_check_eq(aAddons.length, 1);
- do_check_eq(aAddons[0].id, "compatmode-normal@tests.mozilla.org");
-
- run_test_2();
- },
- searchFailed() {
- do_throw("Search should not have failed");
- }
- });
-}
-
-// Strict compatibility checking enabled.
-function run_test_2() {
- do_print("Testing with strict compatibility checking enabled");
- Services.prefs.setBoolPref(PREF_EM_STRICT_COMPATIBILITY, true);
-
- AddonRepository.searchAddons("test", 6, {
- searchSucceeded(aAddons) {
- do_check_neq(aAddons, null);
- do_check_eq(aAddons.length, 1);
- do_check_eq(aAddons[0].id, "compatmode-strict@tests.mozilla.org");
-
- run_test_3();
- },
- searchFailed() {
- do_throw("Search should not have failed");
- }
- });
-}
-
-// Compatibility checking disabled.
-function run_test_3() {
- do_print("Testing with all compatibility checking disabled");
- AddonManager.checkCompatibility = false;
-
- AddonRepository.searchAddons("test", 6, {
- searchSucceeded(aAddons) {
- do_check_neq(aAddons, null);
- do_check_eq(aAddons.length, 1);
- do_check_eq(aAddons[0].id, "compatmode-ignore@tests.mozilla.org");
-
- end_test();
- },
- searchFailed() {
- do_throw("Search should not have failed");
- }
- });
-}
deleted file mode 100644
--- a/toolkit/mozapps/extensions/test/xpcshell/test_bug424262.js
+++ /dev/null
@@ -1,61 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- */
-Components.utils.import("resource://gre/modules/addons/AddonRepository.jsm");
-
-const PREF_GETADDONS_GETRECOMMENDED = "extensions.getAddons.recommended.url";
-
-Components.utils.import("resource://testing-common/httpd.js");
-var server;
-var RESULTS = [
- null,
- null,
- 0,
- 2,
- 4,
- 5,
- 5,
- 5
-];
-
-var RecommendedCallback = {
- searchSucceeded(addons, length, total) {
- dump("loaded");
- // Search is complete
- do_check_eq(length, RESULTS.length);
-
- for (var i = 0; i < length; i++) {
- if (addons[i].averageRating != RESULTS[i])
- do_throw("Rating for " + addons[i].id + " was " + addons[i].averageRating + ", should have been " + RESULTS[i]);
- }
- server.stop(do_test_finished);
- },
-
- searchFailed() {
- server.stop(do_test_finished);
- do_throw("Recommended results failed");
- }
-};
-
-function run_test() {
- // EM needs to be running.
- createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9");
- startupManager();
-
- server = new HttpServer();
- server.start(-1);
- gPort = server.identity.primaryPort;
- mapFile("/data/test_bug424262.xml", server);
-
- // Point the addons repository to the test server
- Services.prefs.setCharPref(PREF_GETADDONS_GETRECOMMENDED, "http://localhost:" +
- gPort + "/data/test_bug424262.xml");
-
- do_check_neq(AddonRepository, null);
-
- do_test_pending();
- // Pull some results.
- AddonRepository.retrieveRecommendedAddons(RESULTS.length, RecommendedCallback);
-}
-
deleted file mode 100644
--- a/toolkit/mozapps/extensions/test/xpcshell/test_bug554133.js
+++ /dev/null
@@ -1,84 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/
- */
-
-// This verifies that if the AMO response provides total_results,
-// searchSucceeded is called with the correct number of total results
-
-Components.utils.import("resource://gre/modules/addons/AddonRepository.jsm");
-
-const PREF_GETADDONS_GETSEARCHRESULTS = "extensions.getAddons.search.url";
-
-Components.utils.import("resource://testing-common/httpd.js");
-var server;
-
-var TESTS = [
-{
- query: "bug554133",
- maxResults: 2,
- length: 2,
- total: 100
-},
-{
- query: "bug554133",
- maxResults: 10,
- length: 10,
- total: 100
-},
-{
- query: "bug554133",
- maxResults: 100,
- length: 10,
- total: 100
-}
-];
-
-var gCurrentTest = 0;
-var SearchCallback = {
- searchSucceeded(addons, length, total) {
- do_check_false(AddonRepository.isSearching);
- do_check_eq(addons.length, length);
- do_check_eq(length, TESTS[gCurrentTest].length);
- do_check_eq(total, TESTS[gCurrentTest].total);
-
- gCurrentTest++;
- run_current_test();
- },
-
- searchFailed() {
- server.stop(do_test_finished);
- do_throw("Search results failed");
- }
-};
-
-function run_current_test() {
- if (gCurrentTest < TESTS.length) {
- var query = TESTS[gCurrentTest].query;
- var maxResults = TESTS[gCurrentTest].maxResults;
- AddonRepository.searchAddons(query, maxResults, SearchCallback);
- } else
- server.stop(do_test_finished);
-}
-
-function run_test() {
- // Setup for test
- do_test_pending();
- createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9");
-
- startupManager();
-
- server = new HttpServer();
- server.registerDirectory("/", do_get_file("data"));
- mapFile("/data/test_bug554133.xml", server);
- server.start(-1);
- gPort = server.identity.primaryPort;
-
- // Point search to the test server
- Services.prefs.setCharPref(PREF_GETADDONS_GETSEARCHRESULTS,
- "http://localhost:" + gPort + "/data/test_%TERMS%.xml");
-
- do_check_neq(AddonRepository, null);
- gCurrentTest = 0;
- run_current_test();
-}
-
--- a/toolkit/mozapps/extensions/test/xpcshell/xpcshell-shared.ini
+++ b/toolkit/mozapps/extensions/test/xpcshell/xpcshell-shared.ini
@@ -9,19 +9,16 @@ tags = addons
# There's a problem removing a temp file without manually clearing the cache on Windows
skip-if = os == "android" || os == "win"
tags = webextensions
[test_AddonRepository_cache.js]
# Bug 676992: test consistently hangs on Android
# Bug 1026805: frequent hangs on OSX 10.8
skip-if = os == "android" || os == "mac"
run-sequentially = Uses hardcoded ports in xpi files.
-[test_AddonRepository_compatmode.js]
-# Bug 676992: test consistently hangs on Android
-skip-if = os == "android"
[test_LightweightThemeManager.js]
[test_backgroundupdate.js]
[test_bad_json.js]
[test_badschema.js]
[test_blocklistchange.js]
# Times out during parallel runs on desktop
requesttimeoutfactor = 2
tags = blocklist
@@ -74,19 +71,16 @@ skip-if = os == "android" || os == "mac"
run-sequentially = Uses hardcoded ports in xpi files.
[test_bug397778.js]
# Bug 676992: test consistently hangs on Android
skip-if = os == "android"
[test_bug406118.js]
# Bug 676992: test consistently hangs on Android
skip-if = os == "android"
tags = blocklist
-[test_bug424262.js]
-# Bug 676992: test consistently hangs on Android
-skip-if = os == "android"
[test_bug425657.js]
# Bug 676992: test consistently hangs on Android
skip-if = os == "android"
[test_bug430120.js]
# Bug 676992: test consistently hangs on Android
skip-if = os == "android"
tags = blocklist
[test_bug449027.js]
@@ -132,17 +126,16 @@ skip-if = os == "android"
tags = blocklist
[test_bug514327_3.js]
# Bug 676992: test consistently hangs on Android
skip-if = os == "android"
tags = blocklist
[test_bug521905.js]
[test_bug526598.js]
[test_bug541420.js]
-[test_bug554133.js]
[test_bug559800.js]
[test_bug564030.js]
[test_bug566626.js]
[test_bug567184.js]
[test_bug569138.js]
[test_bug570173.js]
[test_bug576735.js]
[test_bug587088.js]
deleted file mode 100644
--- a/toolkit/themes/shared/extensions/category-search.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-<!-- This Source Code Form is subject to the terms of the Mozilla Public
- - License, v. 2.0. If a copy of the MPL was not distributed with this
- - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="context-fill" fill-opacity="context-fill-opacity" width="32" height="32">
- <path d="M15.71 14.29l-4.82-4.82a6 6 0 1 0-1.41 1.41l4.82 4.82a1 1 0 0 0 1.41-1.41zM6 10a4 4 0 1 1 4-4 4 4 0 0 1-4 4z"/>
-</svg>
--- a/toolkit/themes/shared/extensions/extensions.inc.css
+++ b/toolkit/themes/shared/extensions/extensions.inc.css
@@ -190,19 +190,16 @@ button.warning {
font-weight: bold;
text-align: center;
}
.category-badge[value="0"] {
display: none;
}
-#category-search > .category-icon {
- list-style-image: url("chrome://mozapps/skin/extensions/category-search.svg");
-}
#category-discover > .category-icon {
list-style-image: url("chrome://mozapps/skin/extensions/category-discover.svg");
}
#category-locale > .category-icon {
list-style-image: url("chrome://mozapps/skin/extensions/category-languages.svg");
}
#category-extension > .category-icon {
list-style-image: url("chrome://mozapps/skin/extensions/category-extensions.svg");
@@ -630,39 +627,16 @@ button.warning {
font-size: 120%;
}
.addon[status="uninstalled"][selected] {
background-color: transparent;
}
-/*** search view ***/
-
-#search-filter {
- padding: 5px 20px;
- margin-right: 48px;
- margin-left: 48px;
- font-size: 120%;
- border-bottom: 1px solid #c1c1c1;
- overflow-x: hidden;
-}
-
-#search-filter-label {
- font-weight: bold;
- color: grey;
- margin-inline-end: 10px;
-}
-
-#search-allresults-link {
- margin-top: 1em;
- margin-bottom: 2em;
-}
-
-
/*** detail view ***/
#detail-view .scrollbox-innerbox {
margin-right: 48px;
margin-left: 48px;
}
#detail-view .loading {
--- a/toolkit/themes/shared/mozapps.inc.mn
+++ b/toolkit/themes/shared/mozapps.inc.mn
@@ -6,17 +6,16 @@
# actual theme-specific manifests, so that shared resources need only
# be specified once. As a result, the source file paths are relative
# to the location of the actual manifest.
skin/classic/mozapps/extensions/experimentGeneric.svg (../../shared/extensions/category-experiments.svg)
skin/classic/mozapps/extensions/dictionaryGeneric.svg (../../shared/extensions/category-dictionaries.svg)
skin/classic/mozapps/extensions/extensionGeneric.svg (../../shared/extensions/category-extensions.svg)
skin/classic/mozapps/extensions/themeGeneric.svg (../../shared/extensions/category-themes.svg)
- skin/classic/mozapps/extensions/category-search.svg (../../shared/extensions/category-search.svg)
skin/classic/mozapps/extensions/category-discover.svg (../../shared/extensions/category-discover.svg)
skin/classic/mozapps/extensions/category-service.svg (../../shared/extensions/category-service.svg)
skin/classic/mozapps/extensions/category-recent.svg (../../shared/extensions/category-recent.svg)
skin/classic/mozapps/extensions/category-available.svg (../../shared/extensions/category-available.svg)
skin/classic/mozapps/extensions/extensionGeneric-16.svg (../../shared/extensions/extensionGeneric-16.svg)
skin/classic/mozapps/extensions/utilities.svg (../../shared/extensions/utilities.svg)
skin/classic/mozapps/extensions/alerticon-warning.svg (../../shared/extensions/alerticon-warning.svg)