зеркало из https://github.com/mozilla/pjs.git
Bug 562518: Update nsAddonRepository to use the new API. r=robstrong
--HG-- rename : toolkit/mozapps/extensions/test/unit/data/test_bug404024.xml => toolkit/mozapps/extensions/test/xpcshell/data/test_bug404024.xml rename : toolkit/mozapps/extensions/test/unit/data/test_bug417606.xml => toolkit/mozapps/extensions/test/xpcshell/data/test_bug417606.xml rename : toolkit/mozapps/extensions/test/unit/data/test_bug424262.xml => toolkit/mozapps/extensions/test/xpcshell/data/test_bug424262.xml rename : toolkit/mozapps/extensions/test/unit/test_bug404024.js => toolkit/mozapps/extensions/test/xpcshell/test_bug404024.js rename : toolkit/mozapps/extensions/test/unit/test_bug417606.js => toolkit/mozapps/extensions/test/xpcshell/test_bug417606.js rename : toolkit/mozapps/extensions/test/unit/test_bug424262.js => toolkit/mozapps/extensions/test/xpcshell/test_bug424262.js
This commit is contained in:
Родитель
8fef83b023
Коммит
ea1981e4a0
|
@ -42,6 +42,7 @@ const Ci = Components.interfaces;
|
|||
const Cr = Components.results;
|
||||
|
||||
Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
|
||||
Components.utils.import("resource://gre/modules/AddonManager.jsm");
|
||||
|
||||
const PREF_GETADDONS_BROWSEADDONS = "extensions.getAddons.browseAddons";
|
||||
const PREF_GETADDONS_BROWSERECOMMENDED = "extensions.getAddons.recommended.browseURL";
|
||||
|
@ -202,9 +203,7 @@ AddonRepository.prototype = {
|
|||
},
|
||||
|
||||
// Parses an add-on entry from an <addon> element
|
||||
_parseAddon: function(element) {
|
||||
var em = Cc["@mozilla.org/extensions/manager;1"].
|
||||
getService(Ci.nsIExtensionManager);
|
||||
_parseAddon: function(element, known_ids) {
|
||||
var app = Cc["@mozilla.org/xre/app-info;1"].
|
||||
getService(Ci.nsIXULAppInfo).
|
||||
QueryInterface(Ci.nsIXULRuntime);
|
||||
|
@ -219,7 +218,7 @@ AddonRepository.prototype = {
|
|||
return;
|
||||
|
||||
// Ignore installed add-ons
|
||||
if (em.getItemForID(guid[0].textContent) != null)
|
||||
if (known_ids.indexOf(guid[0].textContent) != -1)
|
||||
return;
|
||||
|
||||
// Ignore sandboxed add-ons
|
||||
|
@ -304,9 +303,9 @@ AddonRepository.prototype = {
|
|||
// The type element has an id attribute that is the id from AMO's
|
||||
// database. This doesn't match our type values to perform a mapping
|
||||
if (node.getAttribute("id") == 2)
|
||||
addon.type = Ci.nsIUpdateItem.TYPE_THEME;
|
||||
addon.type = Ci.nsIAddonSearchResult.TYPE_THEME;
|
||||
else
|
||||
addon.type = Ci.nsIUpdateItem.TYPE_EXTENSION;
|
||||
addon.type = Ci.nsIAddonSearchResult.TYPE_EXTENSION;
|
||||
break;
|
||||
case "install":
|
||||
// No os attribute means the xpi is compatible with any os
|
||||
|
@ -341,22 +340,28 @@ AddonRepository.prototype = {
|
|||
this._reportFailure();
|
||||
return;
|
||||
}
|
||||
var elements = responseXML.documentElement.getElementsByTagName("addon");
|
||||
for (var i = 0; i < elements.length; i++) {
|
||||
this._parseAddon(elements[i]);
|
||||
|
||||
var prefs = Components.classes["@mozilla.org/preferences-service;1"]
|
||||
.getService(Components.interfaces.nsIPrefBranch);
|
||||
if (this._addons.length == this._maxResults) {
|
||||
this._reportSuccess(elements.length);
|
||||
return;
|
||||
var self = this;
|
||||
AddonManager.getAllAddons(function(addons) {
|
||||
var known_ids = [a.id for each(a in addons)];
|
||||
|
||||
var elements = responseXML.documentElement.getElementsByTagName("addon");
|
||||
for (var i = 0; i < elements.length; i++) {
|
||||
self._parseAddon(elements[i], known_ids);
|
||||
|
||||
var prefs = Components.classes["@mozilla.org/preferences-service;1"]
|
||||
.getService(Components.interfaces.nsIPrefBranch);
|
||||
if (self._addons.length == self._maxResults) {
|
||||
self._reportSuccess(elements.length);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (responseXML.documentElement.hasAttribute("total_results"))
|
||||
this._reportSuccess(responseXML.documentElement.getAttribute("total_results"));
|
||||
else
|
||||
this._reportSuccess(elements.length);
|
||||
if (responseXML.documentElement.hasAttribute("total_results"))
|
||||
self._reportSuccess(responseXML.documentElement.getAttribute("total_results"));
|
||||
else
|
||||
self._reportSuccess(elements.length);
|
||||
});
|
||||
},
|
||||
|
||||
// Performs a new request for results
|
||||
|
|
|
@ -38,9 +38,15 @@
|
|||
|
||||
#include "nsISupports.idl"
|
||||
|
||||
[scriptable, uuid(a549a714-2ada-4bb9-8a47-be26e73d49a5)]
|
||||
[scriptable, uuid(f81ed0bc-ee98-4edd-bf2d-751b47bf665d)]
|
||||
interface nsIAddonSearchResult : nsISupports
|
||||
{
|
||||
/**
|
||||
* Values for the type attribute
|
||||
*/
|
||||
const unsigned long TYPE_EXTENSION = 0x02;
|
||||
const unsigned long TYPE_THEME = 0x04;
|
||||
|
||||
/**
|
||||
* The ID of the add-on
|
||||
*/
|
||||
|
|
|
@ -69,7 +69,7 @@ var RESULTS = [
|
|||
thumbnailURL: null,
|
||||
homepageURL: "https://addons.mozilla.org/addon/5992",
|
||||
eula: null,
|
||||
type: Ci.nsIUpdateItem.TYPE_EXTENSION,
|
||||
type: Ci.nsIAddonSearchResult.TYPE_EXTENSION,
|
||||
xpiURL: "http://localhost:4444/test.xpi",
|
||||
xpiHash: "sha1:c26f0b0d62e5dcddcda95074d3f3fedb9bbc26e3"
|
||||
},
|
||||
|
@ -84,7 +84,7 @@ var RESULTS = [
|
|||
thumbnailURL: "http://localhost:4444/test_bug404024/thumbnail.png",
|
||||
homepageURL: null,
|
||||
eula: "EULA should be confirmed",
|
||||
type: Ci.nsIUpdateItem.TYPE_THEME,
|
||||
type: Ci.nsIAddonSearchResult.TYPE_THEME,
|
||||
xpiURL: "http://localhost:4444/test.xpi",
|
||||
xpiHash: null
|
||||
}
|
||||
|
@ -158,47 +158,48 @@ var FailCallback = {
|
|||
function run_test()
|
||||
{
|
||||
// Setup for test
|
||||
do_test_pending();
|
||||
createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9");
|
||||
|
||||
// Install an add-on so we can check the same add-on isn't returns in the results
|
||||
startupEM();
|
||||
gEM.installItemFromFile(do_get_addon("test_bug397778"), NS_INSTALL_LOCATION_APPPROFILE);
|
||||
restartEM();
|
||||
startupManager();
|
||||
installAllFiles([do_get_addon("test_bug397778")], function() {
|
||||
restartManager();
|
||||
|
||||
server = new nsHttpServer();
|
||||
server.registerDirectory("/", do_get_file("data"));
|
||||
server.start(4444);
|
||||
server = new nsHttpServer();
|
||||
server.registerDirectory("/", do_get_file("data"));
|
||||
server.start(4444);
|
||||
|
||||
// Point the addons repository to the test server
|
||||
gPrefs.setCharPref(PREF_GETADDONS_BROWSEADDONS, BROWSE);
|
||||
gPrefs.setCharPref(PREF_GETADDONS_BROWSERECOMMENDED, RECOMMENDED);
|
||||
gPrefs.setCharPref(PREF_GETADDONS_GETRECOMMENDED, "http://localhost:4444/test_bug404024.xml");
|
||||
gPrefs.setCharPref(PREF_GETADDONS_BROWSESEARCHRESULTS, SEARCH + "%TERMS%");
|
||||
gPrefs.setCharPref(PREF_GETADDONS_GETSEARCHRESULTS, "http://localhost:4444/test_%TERMS%.xml");
|
||||
|
||||
addonRepo = Components.classes["@mozilla.org/extensions/addon-repository;1"]
|
||||
.getService(Components.interfaces.nsIAddonRepository);
|
||||
// Point the addons repository to the test server
|
||||
Services.prefs.setCharPref(PREF_GETADDONS_BROWSEADDONS, BROWSE);
|
||||
Services.prefs.setCharPref(PREF_GETADDONS_BROWSERECOMMENDED, RECOMMENDED);
|
||||
Services.prefs.setCharPref(PREF_GETADDONS_GETRECOMMENDED, "http://localhost:4444/test_bug404024.xml");
|
||||
Services.prefs.setCharPref(PREF_GETADDONS_BROWSESEARCHRESULTS, SEARCH + "%TERMS%");
|
||||
Services.prefs.setCharPref(PREF_GETADDONS_GETSEARCHRESULTS, "http://localhost:4444/test_%TERMS%.xml");
|
||||
|
||||
do_check_neq(addonRepo, null);
|
||||
// Check the homepage and recommended urls
|
||||
do_check_eq(addonRepo.homepageURL, BROWSE);
|
||||
do_check_eq(addonRepo.getRecommendedURL(), RECOMMENDED);
|
||||
addonRepo = Components.classes["@mozilla.org/extensions/addon-repository;1"]
|
||||
.getService(Components.interfaces.nsIAddonRepository);
|
||||
|
||||
// Check that search urls are correct
|
||||
for (var i = 0; i < BROWSE_SEARCH_URLS.length; i++) {
|
||||
var url = addonRepo.getSearchURL(BROWSE_SEARCH_URLS[i][0]);
|
||||
if (url != BROWSE_SEARCH_URLS[i][1])
|
||||
do_throw("BROWSE_SEARCH_URL[" + i + "] returned " + url);
|
||||
}
|
||||
do_check_neq(addonRepo, null);
|
||||
// Check the homepage and recommended urls
|
||||
do_check_eq(addonRepo.homepageURL, BROWSE);
|
||||
do_check_eq(addonRepo.getRecommendedURL(), RECOMMENDED);
|
||||
|
||||
do_test_pending();
|
||||
// This should fail because we cancel it immediately.
|
||||
addonRepo.retrieveRecommendedAddons(10, FailCallback);
|
||||
addonRepo.cancelSearch();
|
||||
// Pull some results.
|
||||
addonRepo.retrieveRecommendedAddons(10, RecommendedCallback);
|
||||
// Should be searching now and any attempt to retrieve again should be ignored
|
||||
do_check_true(addonRepo.isSearching);
|
||||
addonRepo.retrieveRecommendedAddons(10, FailCallback);
|
||||
// Check that search urls are correct
|
||||
for (var i = 0; i < BROWSE_SEARCH_URLS.length; i++) {
|
||||
var url = addonRepo.getSearchURL(BROWSE_SEARCH_URLS[i][0]);
|
||||
if (url != BROWSE_SEARCH_URLS[i][1])
|
||||
do_throw("BROWSE_SEARCH_URL[" + i + "] returned " + url);
|
||||
}
|
||||
|
||||
// This should fail because we cancel it immediately.
|
||||
addonRepo.retrieveRecommendedAddons(10, FailCallback);
|
||||
addonRepo.cancelSearch();
|
||||
// Pull some results.
|
||||
addonRepo.retrieveRecommendedAddons(10, RecommendedCallback);
|
||||
// Should be searching now and any attempt to retrieve again should be ignored
|
||||
do_check_true(addonRepo.isSearching);
|
||||
addonRepo.retrieveRecommendedAddons(10, FailCallback);
|
||||
});
|
||||
}
|
||||
|
|
@ -69,7 +69,7 @@ var RESULTS = [
|
|||
thumbnailURL: null,
|
||||
homepageURL: "https://addons.mozilla.org/addon/5992",
|
||||
eula: null,
|
||||
type: Ci.nsIUpdateItem.TYPE_EXTENSION,
|
||||
type: Ci.nsIAddonSearchResult.TYPE_EXTENSION,
|
||||
xpiURL: "http://localhost:4444/test.xpi",
|
||||
xpiHash: "sha1:c26f0b0d62e5dcddcda95074d3f3fedb9bbc26e3"
|
||||
},
|
||||
|
@ -84,7 +84,7 @@ var RESULTS = [
|
|||
thumbnailURL: "http://localhost:4444/test_bug404024/thumbnail.png",
|
||||
homepageURL: null,
|
||||
eula: "EULA should be confirmed",
|
||||
type: Ci.nsIUpdateItem.TYPE_THEME,
|
||||
type: Ci.nsIAddonSearchResult.TYPE_THEME,
|
||||
xpiURL: "http://localhost:4444/XPCShell.xpi",
|
||||
xpiHash: null
|
||||
}
|
||||
|
@ -158,47 +158,48 @@ var FailCallback = {
|
|||
function run_test()
|
||||
{
|
||||
// Setup for test
|
||||
do_test_pending();
|
||||
createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9");
|
||||
|
||||
// Install an add-on so we can check the same add-on isn't returns in the results
|
||||
startupEM();
|
||||
gEM.installItemFromFile(do_get_addon("test_bug397778"), NS_INSTALL_LOCATION_APPPROFILE);
|
||||
restartEM();
|
||||
|
||||
server = new nsHttpServer();
|
||||
server.registerDirectory("/", do_get_file("data"));
|
||||
server.start(4444);
|
||||
|
||||
// Point the addons repository to the test server
|
||||
gPrefs.setCharPref(PREF_GETADDONS_BROWSEADDONS, BROWSE);
|
||||
gPrefs.setCharPref(PREF_GETADDONS_BROWSERECOMMENDED, RECOMMENDED);
|
||||
gPrefs.setCharPref(PREF_GETADDONS_GETRECOMMENDED, "http://localhost:4444/test_bug417606.xml");
|
||||
gPrefs.setCharPref(PREF_GETADDONS_BROWSESEARCHRESULTS, SEARCH + "%TERMS%");
|
||||
gPrefs.setCharPref(PREF_GETADDONS_GETSEARCHRESULTS, "http://localhost:4444/test_%TERMS%.xml");
|
||||
startupManager();
|
||||
installAllFiles([do_get_addon("test_bug397778")], function() {
|
||||
restartManager();
|
||||
|
||||
addonRepo = Components.classes["@mozilla.org/extensions/addon-repository;1"]
|
||||
.getService(Components.interfaces.nsIAddonRepository);
|
||||
server = new nsHttpServer();
|
||||
server.registerDirectory("/", do_get_file("data"));
|
||||
server.start(4444);
|
||||
|
||||
do_check_neq(addonRepo, null);
|
||||
// Check the homepage and recommended urls
|
||||
do_check_eq(addonRepo.homepageURL, BROWSE);
|
||||
do_check_eq(addonRepo.getRecommendedURL(), RECOMMENDED);
|
||||
// Point the addons repository to the test server
|
||||
Services.prefs.setCharPref(PREF_GETADDONS_BROWSEADDONS, BROWSE);
|
||||
Services.prefs.setCharPref(PREF_GETADDONS_BROWSERECOMMENDED, RECOMMENDED);
|
||||
Services.prefs.setCharPref(PREF_GETADDONS_GETRECOMMENDED, "http://localhost:4444/test_bug417606.xml");
|
||||
Services.prefs.setCharPref(PREF_GETADDONS_BROWSESEARCHRESULTS, SEARCH + "%TERMS%");
|
||||
Services.prefs.setCharPref(PREF_GETADDONS_GETSEARCHRESULTS, "http://localhost:4444/test_%TERMS%.xml");
|
||||
|
||||
// Check that search urls are correct
|
||||
for (var i = 0; i < BROWSE_SEARCH_URLS.length; i++) {
|
||||
var url = addonRepo.getSearchURL(BROWSE_SEARCH_URLS[i][0]);
|
||||
if (url != BROWSE_SEARCH_URLS[i][1])
|
||||
do_throw("BROWSE_SEARCH_URL[" + i + "] returned " + url);
|
||||
}
|
||||
addonRepo = Components.classes["@mozilla.org/extensions/addon-repository;1"]
|
||||
.getService(Components.interfaces.nsIAddonRepository);
|
||||
|
||||
do_test_pending();
|
||||
// This should fail because we cancel it immediately.
|
||||
addonRepo.retrieveRecommendedAddons(10, FailCallback);
|
||||
addonRepo.cancelSearch();
|
||||
// Pull some results.
|
||||
addonRepo.retrieveRecommendedAddons(10, RecommendedCallback);
|
||||
// Should be searching now and any attempt to retrieve again should be ignored
|
||||
do_check_true(addonRepo.isSearching);
|
||||
addonRepo.retrieveRecommendedAddons(10, FailCallback);
|
||||
do_check_neq(addonRepo, null);
|
||||
// Check the homepage and recommended urls
|
||||
do_check_eq(addonRepo.homepageURL, BROWSE);
|
||||
do_check_eq(addonRepo.getRecommendedURL(), RECOMMENDED);
|
||||
|
||||
// Check that search urls are correct
|
||||
for (var i = 0; i < BROWSE_SEARCH_URLS.length; i++) {
|
||||
var url = addonRepo.getSearchURL(BROWSE_SEARCH_URLS[i][0]);
|
||||
if (url != BROWSE_SEARCH_URLS[i][1])
|
||||
do_throw("BROWSE_SEARCH_URL[" + i + "] returned " + url);
|
||||
}
|
||||
|
||||
// This should fail because we cancel it immediately.
|
||||
addonRepo.retrieveRecommendedAddons(10, FailCallback);
|
||||
addonRepo.cancelSearch();
|
||||
// Pull some results.
|
||||
addonRepo.retrieveRecommendedAddons(10, RecommendedCallback);
|
||||
// Should be searching now and any attempt to retrieve again should be ignored
|
||||
do_check_true(addonRepo.isSearching);
|
||||
addonRepo.retrieveRecommendedAddons(10, FailCallback);
|
||||
});
|
||||
}
|
||||
|
|
@ -76,14 +76,14 @@ function run_test()
|
|||
{
|
||||
// EM needs to be running.
|
||||
createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9");
|
||||
startupEM();
|
||||
startupManager();
|
||||
|
||||
server = new nsHttpServer();
|
||||
server.registerDirectory("/", do_get_file("data"));
|
||||
server.start(4444);
|
||||
|
||||
// Point the addons repository to the test server
|
||||
gPrefs.setCharPref(PREF_GETADDONS_GETRECOMMENDED, "http://localhost:4444/test_bug424262.xml");
|
||||
Services.prefs.setCharPref(PREF_GETADDONS_GETRECOMMENDED, "http://localhost:4444/test_bug424262.xml");
|
||||
|
||||
addonRepo = Components.classes["@mozilla.org/extensions/addon-repository;1"]
|
||||
.getService(Components.interfaces.nsIAddonRepository);
|
Загрузка…
Ссылка в новой задаче