--- a/toolkit/mozapps/extensions/test/xpcshell/head_addons.js
+++ b/toolkit/mozapps/extensions/test/xpcshell/head_addons.js
@@ -86,42 +86,38 @@ const LEGACY_NON_RESTARTLESS_TESTS = new
"test_bug393285.js",
"test_bug394300.js",
"test_bug397778.js",
"test_bug406118.js",
"test_bug425657.js",
"test_bug449027.js",
"test_bug455906.js",
"test_bug470377_1.js",
- "test_bug470377_1_strictcompat.js",
"test_bug470377_2.js",
"test_bug470377_3.js",
- "test_bug470377_3_strictcompat.js",
"test_bug470377_4.js",
"test_bug559800.js",
"test_bug564030.js",
"test_bug566626.js",
"test_bug569138.js",
"test_bug576735.js",
"test_bug595573.js",
"test_bug655254.js",
"test_bug659772.js",
"test_bug753900.js",
"test_cacheflush.js",
"test_checkcompatibility.js",
"test_compatoverrides.js",
"test_corrupt.js",
- "test_corrupt_strictcompat.js",
"test_dataDirectory.js",
"test_disable.js",
"test_distribution.js",
"test_error.js",
"test_filepointer.js",
"test_install.js",
- "test_install_strictcompat.js",
"test_invalid_install_rdf.js",
"test_isDebuggable.js",
"test_locale.js",
"test_manifest.js",
"test_migrate_state_prefs.js",
"test_onPropertyChanged_appDisabled.js",
"test_proxies.js",
"test_safemode.js",
@@ -133,19 +129,17 @@ const LEGACY_NON_RESTARTLESS_TESTS = new
"test_strictcompatibility.js",
"test_syncGUID.js",
"test_targetPlatforms.js",
"test_temporary.js",
"test_undouninstall.js",
"test_uninstall.js",
"test_updateCancel.js",
"test_update_compatmode.js",
- "test_update_strictcompat.js",
"test_upgrade.js",
- "test_upgrade_strictcompat.js",
]);
if (LEGACY_NON_RESTARTLESS_TESTS.has(_TEST_FILE[0].replace(/.*\//, ""))) {
Services.prefs.setBoolPref("extensions.legacy.non-restartless.enabled", true);
}
const {
awaitPromise,
deleted file mode 100644
--- a/toolkit/mozapps/extensions/test/xpcshell/test_bug470377_1_strictcompat.js
+++ /dev/null
@@ -1,49 +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/.
- */
-
-// Disables security checking our updates which haven't been signed
-Services.prefs.setBoolPref(PREF_EM_CHECK_UPDATE_SECURITY, false);
-Services.prefs.setBoolPref(PREF_EM_STRICT_COMPATIBILITY, true);
-
-var ADDONS = [
- "test_bug470377_1",
- "test_bug470377_2",
- "test_bug470377_3",
- "test_bug470377_4",
- "test_bug470377_5",
-];
-
-ChromeUtils.import("resource://testing-common/httpd.js");
-var server;
-
-function run_test() {
- do_test_pending();
- createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "2", "2");
-
- server = new HttpServer();
- server.registerDirectory("/", do_get_file("data/test_bug470377"));
- server.start(-1);
-
- startupManager();
-
- installAllFiles(ADDONS.map(a => do_get_addon(a)), function() {
- restartManager();
-
- AddonManager.getAddonsByIDs(["bug470377_1@tests.mozilla.org",
- "bug470377_2@tests.mozilla.org",
- "bug470377_3@tests.mozilla.org",
- "bug470377_4@tests.mozilla.org",
- "bug470377_5@tests.mozilla.org"],
- function([a1, a2, a3, a4, a5]) {
- Assert.equal(a1, null);
- Assert.equal(a2, null);
- Assert.equal(a3, null);
- Assert.notEqual(a4, null);
- Assert.notEqual(a5, null);
-
- server.stop(do_test_finished);
- });
- }, true);
-}
deleted file mode 100644
--- a/toolkit/mozapps/extensions/test/xpcshell/test_bug470377_3_strictcompat.js
+++ /dev/null
@@ -1,94 +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/.
- */
-
-function run_test() {
- do_test_pending();
- createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "2.2.3", "2");
- Services.prefs.setBoolPref(PREF_EM_STRICT_COMPATIBILITY, true);
-
- // inject the add-ons into the profile
- var dest = gProfD.clone();
- dest.append("extensions");
- dest.append("bug470377_1@tests.mozilla.org");
- dest.create(Ci.nsIFile.DIRECTORY_TYPE, 0o755);
- var source = do_get_file("data/test_bug470377/install_1.rdf");
- source.copyTo(dest, "install.rdf");
- dest = gProfD.clone();
- dest.append("extensions");
- dest.append("bug470377_2@tests.mozilla.org");
- dest.create(Ci.nsIFile.DIRECTORY_TYPE, 0o755);
- source = do_get_file("data/test_bug470377/install_2.rdf");
- source.copyTo(dest, "install.rdf");
- dest = gProfD.clone();
- dest.append("extensions");
- dest.append("bug470377_3@tests.mozilla.org");
- dest.create(Ci.nsIFile.DIRECTORY_TYPE, 0o755);
- source = do_get_file("data/test_bug470377/install_3.rdf");
- source.copyTo(dest, "install.rdf");
- dest = gProfD.clone();
- dest.append("extensions");
- dest.append("bug470377_4@tests.mozilla.org");
- dest.create(Ci.nsIFile.DIRECTORY_TYPE, 0o755);
- source = do_get_file("data/test_bug470377/install_4.rdf");
- source.copyTo(dest, "install.rdf");
- dest = gProfD.clone();
- dest.append("extensions");
- dest.append("bug470377_5@tests.mozilla.org");
- dest.create(Ci.nsIFile.DIRECTORY_TYPE, 0o755);
- source = do_get_file("data/test_bug470377/install_5.rdf");
- source.copyTo(dest, "install.rdf");
-
- startupManager();
-
- run_test_1();
-}
-
-function run_test_1() {
- AddonManager.getAddonsByIDs(["bug470377_1@tests.mozilla.org",
- "bug470377_2@tests.mozilla.org",
- "bug470377_3@tests.mozilla.org",
- "bug470377_4@tests.mozilla.org",
- "bug470377_5@tests.mozilla.org"],
- function([a1, a2, a3, a4, a5]) {
- Assert.notEqual(a1, null);
- Assert.ok(!a1.isActive);
- Assert.notEqual(a2, null);
- Assert.ok(!a2.isActive);
- Assert.notEqual(a3, null);
- Assert.ok(!a3.isActive);
- Assert.notEqual(a4, null);
- Assert.ok(a4.isActive);
- Assert.notEqual(a5, null);
- Assert.ok(a5.isActive);
-
- executeSoon(run_test_2);
- });
-}
-
-function run_test_2() {
- AddonManager.checkCompatibility = false;
-
- restartManager();
-
- AddonManager.getAddonsByIDs(["bug470377_1@tests.mozilla.org",
- "bug470377_2@tests.mozilla.org",
- "bug470377_3@tests.mozilla.org",
- "bug470377_4@tests.mozilla.org",
- "bug470377_5@tests.mozilla.org"],
- function([a1, a2, a3, a4, a5]) {
- Assert.notEqual(a1, null);
- Assert.ok(!a1.isActive);
- Assert.notEqual(a2, null);
- Assert.ok(a2.isActive);
- Assert.notEqual(a3, null);
- Assert.ok(a3.isActive);
- Assert.notEqual(a4, null);
- Assert.ok(a4.isActive);
- Assert.notEqual(a5, null);
- Assert.ok(a5.isActive);
-
- executeSoon(do_test_finished);
- });
-}
deleted file mode 100644
--- a/toolkit/mozapps/extensions/test/xpcshell/test_corrupt_strictcompat.js
+++ /dev/null
@@ -1,412 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/
- */
-
-// Checks that we rebuild something sensible from a corrupt database
-
-
-ChromeUtils.import("resource://testing-common/httpd.js");
-// Create and configure the HTTP server.
-var testserver = new HttpServer();
-testserver.start(-1);
-gPort = testserver.identity.primaryPort;
-
-// register files with server
-testserver.registerDirectory("/addons/", do_get_file("addons"));
-mapFile("/data/test_corrupt.json", testserver);
-
-
-// The test extension uses an insecure update url.
-Services.prefs.setBoolPref(PREF_EM_CHECK_UPDATE_SECURITY, false);
-Services.prefs.setBoolPref(PREF_EM_STRICT_COMPATIBILITY, true);
-
-// Will be enabled
-var addon1 = {
- id: "addon1@tests.mozilla.org",
- version: "1.0",
- name: "Test 1",
- targetApplications: [{
- id: "xpcshell@tests.mozilla.org",
- minVersion: "2",
- maxVersion: "2"
- }]
-};
-
-// Will be disabled
-var addon2 = {
- id: "addon2@tests.mozilla.org",
- version: "1.0",
- name: "Test 2",
- targetApplications: [{
- id: "xpcshell@tests.mozilla.org",
- minVersion: "2",
- maxVersion: "2"
- }]
-};
-
-// Will get a compatibility update and be enabled
-var addon3 = {
- id: "addon3@tests.mozilla.org",
- version: "1.0",
- name: "Test 3",
- updateURL: "http://localhost:" + gPort + "/data/test_corrupt.json",
- targetApplications: [{
- id: "xpcshell@tests.mozilla.org",
- minVersion: "1",
- maxVersion: "1"
- }]
-};
-
-// Will get a compatibility update and be disabled
-var addon4 = {
- id: "addon4@tests.mozilla.org",
- version: "1.0",
- name: "Test 4",
- updateURL: "http://localhost:" + gPort + "/data/test_corrupt.json",
- targetApplications: [{
- id: "xpcshell@tests.mozilla.org",
- minVersion: "1",
- maxVersion: "1"
- }]
-};
-
-// Stays incompatible
-var addon5 = {
- id: "addon5@tests.mozilla.org",
- version: "1.0",
- name: "Test 5",
- targetApplications: [{
- id: "xpcshell@tests.mozilla.org",
- minVersion: "1",
- maxVersion: "1"
- }]
-};
-
-// Enabled bootstrapped
-var addon6 = {
- id: "addon6@tests.mozilla.org",
- version: "1.0",
- name: "Test 6",
- bootstrap: "true",
- targetApplications: [{
- id: "xpcshell@tests.mozilla.org",
- minVersion: "2",
- maxVersion: "2"
- }]
-};
-
-// Disabled bootstrapped
-var addon7 = {
- id: "addon7@tests.mozilla.org",
- version: "1.0",
- name: "Test 7",
- bootstrap: "true",
- targetApplications: [{
- id: "xpcshell@tests.mozilla.org",
- minVersion: "2",
- maxVersion: "2"
- }]
-};
-
-// The default theme
-var theme1 = {
- id: "theme1@tests.mozilla.org",
- version: "1.0",
- name: "Theme 1",
- internalName: "classic/1.0",
- targetApplications: [{
- id: "xpcshell@tests.mozilla.org",
- minVersion: "2",
- maxVersion: "2"
- }]
-};
-
-// The selected theme
-var theme2 = {
- manifest: {
- manifest_version: 2,
- name: "Theme 2",
- version: "1.0",
- theme: { images: { headerURL: "example.png" } },
- applications: {
- gecko: {
- id: "theme2@tests.mozilla.org",
- },
- },
- },
-};
-
-const profileDir = gProfD.clone();
-profileDir.append("extensions");
-
-function run_test() {
- do_test_pending();
- createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "2", "2");
-
- writeInstallRDFForExtension(addon1, profileDir);
- writeInstallRDFForExtension(addon2, profileDir);
- writeInstallRDFForExtension(addon3, profileDir);
- writeInstallRDFForExtension(addon4, profileDir);
- writeInstallRDFForExtension(addon5, profileDir);
- writeInstallRDFForExtension(addon6, profileDir);
- writeInstallRDFForExtension(addon7, profileDir);
- writeInstallRDFForExtension(theme1, profileDir);
- let theme2XPI = createTempWebExtensionFile(theme2);
- AddonTestUtils.manuallyInstall(theme2XPI).then(() => {
- // Startup the profile and setup the initial state
- startupManager();
-
- AddonManager.getAddonsByIDs(["addon2@tests.mozilla.org",
- "addon3@tests.mozilla.org",
- "addon4@tests.mozilla.org",
- "addon7@tests.mozilla.org",
- "theme2@tests.mozilla.org"], function([a2, a3, a4,
- a7, t2]) {
- // Set up the initial state
- a2.userDisabled = true;
- a4.userDisabled = true;
- a7.userDisabled = true;
- t2.userDisabled = false;
- a3.findUpdates({
- onUpdateFinished() {
- a4.findUpdates({
- onUpdateFinished() {
- executeSoon(run_test_1);
- }
- }, AddonManager.UPDATE_WHEN_PERIODIC_UPDATE);
- }
- }, AddonManager.UPDATE_WHEN_PERIODIC_UPDATE);
- });
- });
-}
-
-function end_test() {
- testserver.stop(do_test_finished);
-}
-
-function run_test_1() {
- restartManager();
-
- AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
- "addon2@tests.mozilla.org",
- "addon3@tests.mozilla.org",
- "addon4@tests.mozilla.org",
- "addon5@tests.mozilla.org",
- "addon6@tests.mozilla.org",
- "addon7@tests.mozilla.org",
- "theme1@tests.mozilla.org",
- "theme2@tests.mozilla.org"],
- callback_soon(function([a1, a2, a3, a4, a5, a6, a7, t1, t2]) {
- Assert.notEqual(a1, null);
- Assert.ok(a1.isActive);
- Assert.ok(!a1.userDisabled);
- Assert.ok(!a1.appDisabled);
- Assert.equal(a1.pendingOperations, AddonManager.PENDING_NONE);
-
- Assert.notEqual(a2, null);
- Assert.ok(!a2.isActive);
- Assert.ok(a2.userDisabled);
- Assert.ok(!a2.appDisabled);
- Assert.equal(a2.pendingOperations, AddonManager.PENDING_NONE);
-
- Assert.notEqual(a3, null);
- Assert.ok(a3.isActive);
- Assert.ok(!a3.userDisabled);
- Assert.ok(!a3.appDisabled);
- Assert.equal(a3.pendingOperations, AddonManager.PENDING_NONE);
-
- Assert.notEqual(a4, null);
- Assert.ok(!a4.isActive);
- Assert.ok(a4.userDisabled);
- Assert.ok(!a4.appDisabled);
- Assert.equal(a4.pendingOperations, AddonManager.PENDING_NONE);
-
- Assert.notEqual(a5, null);
- Assert.ok(!a5.isActive);
- Assert.ok(!a5.userDisabled);
- Assert.ok(a5.appDisabled);
- Assert.equal(a5.pendingOperations, AddonManager.PENDING_NONE);
-
- Assert.notEqual(a6, null);
- Assert.ok(a6.isActive);
- Assert.ok(!a6.userDisabled);
- Assert.ok(!a6.appDisabled);
- Assert.equal(a6.pendingOperations, AddonManager.PENDING_NONE);
-
- Assert.notEqual(a7, null);
- Assert.ok(!a7.isActive);
- Assert.ok(a7.userDisabled);
- Assert.ok(!a7.appDisabled);
- Assert.equal(a7.pendingOperations, AddonManager.PENDING_NONE);
-
- Assert.notEqual(t1, null);
- Assert.ok(!t1.isActive);
- Assert.ok(t1.userDisabled);
- Assert.ok(!t1.appDisabled);
- Assert.equal(t1.pendingOperations, AddonManager.PENDING_NONE);
-
- Assert.notEqual(t2, null);
- Assert.ok(t2.isActive);
- Assert.ok(!t2.userDisabled);
- Assert.ok(!t2.appDisabled);
- Assert.equal(t2.pendingOperations, AddonManager.PENDING_NONE);
-
- // Shutdown and replace the database with a corrupt file (a directory
- // serves this purpose). On startup the add-ons manager won't rebuild
- // because there is a file there still.
- shutdownManager();
- gExtensionsJSON.remove(true);
- gExtensionsJSON.create(AM_Ci.nsIFile.DIRECTORY_TYPE, FileUtils.PERMS_DIRECTORY);
- startupManager(false);
-
- // Accessing the add-ons should open and recover the database
- AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
- "addon2@tests.mozilla.org",
- "addon3@tests.mozilla.org",
- "addon4@tests.mozilla.org",
- "addon5@tests.mozilla.org",
- "addon6@tests.mozilla.org",
- "addon7@tests.mozilla.org",
- "theme1@tests.mozilla.org",
- "theme2@tests.mozilla.org"],
- callback_soon(function([a1_2, a2_2, a3_2, a4_2, a5_2, a6_2, a7_2, t1_2, t2_2]) {
- // Should be correctly recovered
- Assert.notEqual(a1_2, null);
- Assert.ok(a1_2.isActive);
- Assert.ok(!a1_2.userDisabled);
- Assert.ok(!a1_2.appDisabled);
- Assert.equal(a1_2.pendingOperations, AddonManager.PENDING_NONE);
-
- // Should be correctly recovered
- Assert.notEqual(a2_2, null);
- Assert.ok(!a2_2.isActive);
- Assert.ok(a2_2.userDisabled);
- Assert.ok(!a2_2.appDisabled);
- Assert.equal(a2_2.pendingOperations, AddonManager.PENDING_NONE);
-
- // The compatibility update won't be recovered but it should still be
- // active for this session
- Assert.notEqual(a3_2, null);
- Assert.ok(a3_2.isActive);
- Assert.ok(!a3_2.userDisabled);
- Assert.ok(a3_2.appDisabled);
- Assert.equal(a3_2.pendingOperations, AddonManager.PENDING_DISABLE);
-
- // The compatibility update won't be recovered and it will not have been
- // able to tell that it was previously userDisabled
- Assert.notEqual(a4_2, null);
- Assert.ok(!a4_2.isActive);
- Assert.ok(!a4_2.userDisabled);
- Assert.ok(a4_2.appDisabled);
- Assert.equal(a4_2.pendingOperations, AddonManager.PENDING_NONE);
-
- Assert.notEqual(a5_2, null);
- Assert.ok(!a5_2.isActive);
- Assert.ok(!a5_2.userDisabled);
- Assert.ok(a5_2.appDisabled);
- Assert.equal(a5_2.pendingOperations, AddonManager.PENDING_NONE);
-
- Assert.notEqual(a6_2, null);
- Assert.ok(a6_2.isActive);
- Assert.ok(!a6_2.userDisabled);
- Assert.ok(!a6_2.appDisabled);
- Assert.equal(a6_2.pendingOperations, AddonManager.PENDING_NONE);
-
- Assert.notEqual(a7_2, null);
- Assert.ok(!a7_2.isActive);
- Assert.ok(a7_2.userDisabled);
- Assert.ok(!a7_2.appDisabled);
- Assert.equal(a7_2.pendingOperations, AddonManager.PENDING_NONE);
-
- // Should be correctly recovered
- Assert.notEqual(t1_2, null);
- // Disabled due to bug 1394117
- // do_check_false(t1_2.isActive);
- // do_check_true(t1_2.userDisabled);
- Assert.ok(!t1_2.appDisabled);
- Assert.equal(t1_2.pendingOperations, AddonManager.PENDING_NONE);
-
- // Should be correctly recovered
- Assert.notEqual(t2_2, null);
- Assert.ok(t2_2.isActive);
- // Disabled due to bug 1394117
- // do_check_false(t2_2.userDisabled);
- Assert.ok(!t2_2.appDisabled);
- // do_check_eq(t2_2.pendingOperations, AddonManager.PENDING_NONE);
-
- Assert.throws(shutdownManager);
- startupManager(false);
-
- AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
- "addon2@tests.mozilla.org",
- "addon3@tests.mozilla.org",
- "addon4@tests.mozilla.org",
- "addon5@tests.mozilla.org",
- "addon6@tests.mozilla.org",
- "addon7@tests.mozilla.org",
- "theme1@tests.mozilla.org",
- "theme2@tests.mozilla.org"],
- callback_soon(function([a1_3, a2_3, a3_3, a4_3, a5_3, a6_3, a7_3, t1_3, t2_3]) {
- Assert.notEqual(a1_3, null);
- Assert.ok(a1_3.isActive);
- Assert.ok(!a1_3.userDisabled);
- Assert.ok(!a1_3.appDisabled);
- Assert.equal(a1_3.pendingOperations, AddonManager.PENDING_NONE);
-
- Assert.notEqual(a2_3, null);
- Assert.ok(!a2_3.isActive);
- Assert.ok(a2_3.userDisabled);
- Assert.ok(!a2_3.appDisabled);
- Assert.equal(a2_3.pendingOperations, AddonManager.PENDING_NONE);
-
- Assert.notEqual(a3_3, null);
- Assert.ok(!a3_3.isActive);
- Assert.ok(!a3_3.userDisabled);
- Assert.ok(a3_3.appDisabled);
- Assert.equal(a3_3.pendingOperations, AddonManager.PENDING_NONE);
-
- Assert.notEqual(a4_3, null);
- Assert.ok(!a4_3.isActive);
- Assert.ok(!a4_3.userDisabled);
- Assert.ok(a4_3.appDisabled);
- Assert.equal(a4_3.pendingOperations, AddonManager.PENDING_NONE);
-
- Assert.notEqual(a5_3, null);
- Assert.ok(!a5_3.isActive);
- Assert.ok(!a5_3.userDisabled);
- Assert.ok(a5_3.appDisabled);
- Assert.equal(a5_3.pendingOperations, AddonManager.PENDING_NONE);
-
- Assert.notEqual(a6_3, null);
- Assert.ok(a6_3.isActive);
- Assert.ok(!a6_3.userDisabled);
- Assert.ok(!a6_3.appDisabled);
- Assert.equal(a6_3.pendingOperations, AddonManager.PENDING_NONE);
-
- Assert.notEqual(a7_3, null);
- Assert.ok(!a7_3.isActive);
- Assert.ok(a7_3.userDisabled);
- Assert.ok(!a7_3.appDisabled);
- Assert.equal(a7_3.pendingOperations, AddonManager.PENDING_NONE);
-
- Assert.notEqual(t1_3, null);
- // Disabled due to bug 1394117
- // do_check_false(t1_3.isActive);
- // do_check_true(t1_3.userDisabled);
- Assert.ok(!t1_3.appDisabled);
- Assert.equal(t1_3.pendingOperations, AddonManager.PENDING_NONE);
-
- Assert.notEqual(t2_3, null);
- // Disabled due to bug 1394117
- // do_check_true(t2_3.isActive);
- // do_check_false(t2_3.userDisabled);
- Assert.ok(!t2_3.appDisabled);
- Assert.equal(t2_3.pendingOperations, AddonManager.PENDING_NONE);
-
- Assert.throws(shutdownManager);
-
- end_test();
- }));
- }));
- }));
-}
deleted file mode 100644
--- a/toolkit/mozapps/extensions/test/xpcshell/test_install_strictcompat.js
+++ /dev/null
@@ -1,1421 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/
- */
-
-// This verifies that add-ons can be installed from XPI files
-// install.rdf size, icon.png, icon64.png size
-const ADDON1_SIZE = 705 + 16 + 16;
-
-ChromeUtils.import("resource://gre/modules/Services.jsm");
-ChromeUtils.import("resource://gre/modules/NetUtil.jsm");
-ChromeUtils.import("resource://testing-common/httpd.js");
-
-var testserver;
-var gInstallDate;
-
-// The test extension uses an insecure update url.
-Services.prefs.setBoolPref(PREF_EM_CHECK_UPDATE_SECURITY, false);
-Services.prefs.setBoolPref(PREF_EM_STRICT_COMPATIBILITY, true);
-
-
-const profileDir = gProfD.clone();
-profileDir.append("extensions");
-
-function run_test() {
- createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2");
-
- startupManager();
- // Make sure we only register once despite multiple calls
- AddonManager.addInstallListener(InstallListener);
- AddonManager.addAddonListener(AddonListener);
- AddonManager.addInstallListener(InstallListener);
- AddonManager.addAddonListener(AddonListener);
-
- // Create and configure the HTTP server.
- testserver = AddonTestUtils.createHttpServer({hosts: ["example.com"]});
- testserver.registerDirectory("/addons/", do_get_file("addons"));
- testserver.registerDirectory("/data/", do_get_file("data"));
- testserver.registerPathHandler("/redirect", function(aRequest, aResponse) {
- aResponse.setStatusLine(null, 301, "Moved Permanently");
- let url = aRequest.host + ":" + aRequest.port + aRequest.queryString;
- aResponse.setHeader("Location", "http://" + url);
- });
-
- do_test_pending();
- run_test_1();
-}
-
-function end_test() {
- do_test_finished();
-}
-
-// Checks that an install from a local file proceeds as expected
-function run_test_1() {
- prepare_test({ }, [
- "onNewInstall"
- ]);
-
- AddonManager.getInstallForFile(do_get_addon("test_install1"), function(install) {
- ensure_test_completed();
-
- Assert.notEqual(install, null);
- Assert.equal(install.type, "extension");
- Assert.equal(install.version, "1.0");
- Assert.equal(install.name, "Test 1");
- Assert.equal(install.state, AddonManager.STATE_DOWNLOADED);
- Assert.ok(install.addon.hasResource("install.rdf"));
- Assert.equal(install.addon.install, install);
- Assert.equal(install.addon.size, ADDON1_SIZE);
- Assert.ok(hasFlag(install.addon.operationsRequiringRestart,
- AddonManager.OP_NEEDS_RESTART_INSTALL));
- let file = do_get_addon("test_install1");
- let uri = Services.io.newFileURI(file).spec;
- Assert.equal(install.addon.getResourceURI("install.rdf").spec, "jar:" + uri + "!/install.rdf");
- Assert.equal(install.addon.iconURL, "jar:" + uri + "!/icon.png");
- Assert.equal(install.addon.icon64URL, "jar:" + uri + "!/icon64.png");
- Assert.equal(install.iconURL, null);
-
- Assert.equal(install.sourceURI.spec, uri);
- Assert.equal(install.addon.sourceURI.spec, uri);
-
- AddonManager.getAllInstalls(function(activeInstalls) {
- Assert.equal(activeInstalls.length, 1);
- Assert.equal(activeInstalls[0], install);
-
- AddonManager.getInstallsByTypes(["foo"], function(fooInstalls) {
- Assert.equal(fooInstalls.length, 0);
-
- AddonManager.getInstallsByTypes(["extension"], function(extensionInstalls) {
- Assert.equal(extensionInstalls.length, 1);
- Assert.equal(extensionInstalls[0], install);
-
- prepare_test({
- "addon1@tests.mozilla.org": [
- "onInstalling"
- ]
- }, [
- "onInstallStarted",
- "onInstallEnded",
- ], check_test_1);
- install.install();
- });
- });
- });
- });
-}
-
-function check_test_1() {
- ensure_test_completed();
- AddonManager.getAddonByID("addon1@tests.mozilla.org", function(olda1) {
- Assert.equal(olda1, null);
-
- AddonManager.getAddonsWithOperationsByTypes(null, callback_soon(async function(pendingAddons) {
- Assert.equal(pendingAddons.length, 1);
- Assert.equal(pendingAddons[0].id, "addon1@tests.mozilla.org");
- let uri = NetUtil.newURI(pendingAddons[0].iconURL);
- if (uri instanceof AM_Ci.nsIJARURI) {
- let jarURI = uri.QueryInterface(AM_Ci.nsIJARURI);
- let archiveURI = jarURI.JARFile;
- let archiveFile = archiveURI.QueryInterface(AM_Ci.nsIFileURL).file;
- let zipReader = Cc["@mozilla.org/libjar/zip-reader;1"].
- createInstance(Ci.nsIZipReader);
- try {
- zipReader.open(archiveFile);
- Assert.ok(zipReader.hasEntry(jarURI.JAREntry));
- } finally {
- zipReader.close();
- }
- } else {
- let iconFile = uri.QueryInterface(AM_Ci.nsIFileURL).file;
- Assert.ok(iconFile.exists());
- }
-
- // Make the pending install have a sensible date
- let updateDate = Date.now();
- let extURI = pendingAddons[0].getResourceURI("");
- let ext = extURI.QueryInterface(AM_Ci.nsIFileURL).file;
- setExtensionModifiedTime(ext, updateDate);
-
- // The pending add-on cannot be disabled or enabled.
- Assert.ok(!hasFlag(pendingAddons[0].permissions, AddonManager.PERM_CAN_ENABLE));
- Assert.ok(!hasFlag(pendingAddons[0].permissions, AddonManager.PERM_CAN_DISABLE));
-
- await promiseRestartManager();
-
- AddonManager.getAllInstalls(function(activeInstalls) {
- Assert.equal(activeInstalls, 0);
-
- AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) {
- Assert.notEqual(a1, null);
- Assert.equal(a1.type, "extension");
- Assert.equal(a1.version, "1.0");
- Assert.equal(a1.name, "Test 1");
- Assert.ok(isExtensionInAddonsList(profileDir, a1.id));
- Assert.ok(do_get_addon("test_install1").exists());
- do_check_in_crash_annotation(a1.id, a1.version);
- Assert.equal(a1.size, ADDON1_SIZE);
-
- Assert.equal(a1.sourceURI.spec,
- Services.io.newFileURI(do_get_addon("test_install1")).spec);
- let difference = a1.installDate.getTime() - updateDate;
- if (Math.abs(difference) > MAX_TIME_DIFFERENCE)
- do_throw("Add-on install time was out by " + difference + "ms");
-
- difference = a1.updateDate.getTime() - updateDate;
- if (Math.abs(difference) > MAX_TIME_DIFFERENCE)
- do_throw("Add-on update time was out by " + difference + "ms");
-
- Assert.ok(a1.hasResource("install.rdf"));
- Assert.ok(!a1.hasResource("foo.bar"));
-
- let root_uri = do_get_addon_root_uri(profileDir, "addon1@tests.mozilla.org");
- Assert.equal(a1.getResourceURI("install.rdf").spec, root_uri + "install.rdf");
- Assert.equal(a1.iconURL, root_uri + "icon.png");
- Assert.equal(a1.icon64URL, root_uri + "icon64.png");
-
- a1.uninstall();
- executeSoon(function() { run_test_2(a1); });
- });
- });
- }));
- });
-}
-
-// Tests that an install from a url downloads.
-function run_test_2(aAddon) {
- let { id, version } = aAddon;
- restartManager();
- do_check_not_in_crash_annotation(id, version);
-
- let url = "http://example.com/addons/test_install2_1.xpi";
- AddonManager.getInstallForURL(url, function(install) {
- Assert.notEqual(install, null);
- Assert.equal(install.version, "1.0");
- Assert.equal(install.name, "Test 2");
- Assert.equal(install.state, AddonManager.STATE_AVAILABLE);
- Assert.equal(install.iconURL, null);
- Assert.equal(install.sourceURI.spec, url);
-
- AddonManager.getAllInstalls(function(activeInstalls) {
- Assert.equal(activeInstalls.length, 1);
- Assert.equal(activeInstalls[0], install);
-
- prepare_test({}, [
- "onDownloadStarted",
- "onDownloadEnded",
- ], check_test_2);
-
- install.addListener({
- onDownloadProgress() {
- executeSoon(function() {
- Cu.forceGC();
- });
- }
- });
-
- install.install();
- });
- }, "application/x-xpinstall", null, "Test 2", null, "1.0");
-}
-
-function check_test_2(install) {
- ensure_test_completed();
- Assert.equal(install.version, "2.0");
- Assert.equal(install.name, "Real Test 2");
- Assert.equal(install.state, AddonManager.STATE_DOWNLOADED);
- Assert.equal(install.addon.install, install);
- Assert.ok(hasFlag(install.addon.operationsRequiringRestart,
- AddonManager.OP_NEEDS_RESTART_INSTALL));
- Assert.equal(install.iconURL, null);
-
- // Pause the install here and start it again in run_test_3
- executeSoon(function() { run_test_3(install); });
- return false;
-}
-
-// Tests that the downloaded XPI installs ok
-function run_test_3(install) {
- prepare_test({
- "addon2@tests.mozilla.org": [
- "onInstalling"
- ]
- }, [
- "onInstallStarted",
- "onInstallEnded",
- ], check_test_3);
- install.install();
-}
-
-function check_test_3(aInstall) {
- // Make the pending install have a sensible date
- let updateDate = Date.now();
- let extURI = aInstall.addon.getResourceURI("");
- let ext = extURI.QueryInterface(AM_Ci.nsIFileURL).file;
- setExtensionModifiedTime(ext, updateDate);
-
- ensure_test_completed();
- AddonManager.getAddonByID("addon2@tests.mozilla.org", callback_soon(async function(olda2) {
- Assert.equal(olda2, null);
- await promiseRestartManager();
-
- AddonManager.getAllInstalls(function(installs) {
- Assert.equal(installs, 0);
-
- AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a2) {
- Assert.notEqual(a2, null);
- Assert.equal(a2.type, "extension");
- Assert.equal(a2.version, "2.0");
- Assert.equal(a2.name, "Real Test 2");
- Assert.ok(isExtensionInAddonsList(profileDir, a2.id));
- Assert.ok(do_get_addon("test_install2_1").exists());
- do_check_in_crash_annotation(a2.id, a2.version);
- Assert.equal(a2.sourceURI.spec,
- "http://example.com/addons/test_install2_1.xpi");
-
- let difference = a2.installDate.getTime() - updateDate;
- if (Math.abs(difference) > MAX_TIME_DIFFERENCE)
- do_throw("Add-on install time was out by " + difference + "ms");
-
- difference = a2.updateDate.getTime() - updateDate;
- if (Math.abs(difference) > MAX_TIME_DIFFERENCE)
- do_throw("Add-on update time was out by " + difference + "ms");
-
- gInstallDate = a2.installDate.getTime();
-
- run_test_4();
- });
- });
- }));
-}
-
-// Tests that installing a new version of an existing add-on works
-function run_test_4() {
- prepare_test({ }, [
- "onNewInstall"
- ]);
-
- let url = "http://example.com/addons/test_install2_2.xpi";
- AddonManager.getInstallForURL(url, function(install) {
- ensure_test_completed();
-
- Assert.notEqual(install, null);
- Assert.equal(install.version, "3.0");
- Assert.equal(install.name, "Test 3");
- Assert.equal(install.state, AddonManager.STATE_AVAILABLE);
-
- AddonManager.getAllInstalls(function(activeInstalls) {
- Assert.equal(activeInstalls.length, 1);
- Assert.equal(activeInstalls[0], install);
- Assert.equal(install.existingAddon, null);
-
- prepare_test({}, [
- "onDownloadStarted",
- "onDownloadEnded",
- ], check_test_4);
- install.install();
- });
- }, "application/x-xpinstall", null, "Test 3", null, "3.0");
-}
-
-function check_test_4(install) {
- ensure_test_completed();
-
- Assert.equal(install.version, "3.0");
- Assert.equal(install.name, "Real Test 3");
- Assert.equal(install.state, AddonManager.STATE_DOWNLOADED);
- Assert.ok(install.existingAddon);
- Assert.equal(install.existingAddon.id, "addon2@tests.mozilla.org");
- Assert.equal(install.addon.install, install);
- Assert.ok(hasFlag(install.addon.operationsRequiringRestart,
- AddonManager.OP_NEEDS_RESTART_INSTALL));
-
- run_test_5();
- // Installation will continue when there is nothing returned.
-}
-
-// Continue installing the new version
-function run_test_5() {
- prepare_test({
- "addon2@tests.mozilla.org": [
- "onInstalling"
- ]
- }, [
- "onInstallStarted",
- "onInstallEnded",
- ], check_test_5);
-}
-
-function check_test_5(install) {
- ensure_test_completed();
-
- Assert.equal(install.existingAddon.pendingUpgrade.install, install);
-
- AddonManager.getAddonByID("addon2@tests.mozilla.org", function(olda2) {
- Assert.notEqual(olda2, null);
- Assert.ok(hasFlag(olda2.pendingOperations, AddonManager.PENDING_UPGRADE));
-
- AddonManager.getInstallsByTypes(null, callback_soon(async function(installs) {
- Assert.equal(installs.length, 1);
- Assert.equal(installs[0].addon, olda2.pendingUpgrade);
- await promiseRestartManager();
-
- AddonManager.getInstallsByTypes(null, function(installs2) {
- Assert.equal(installs2.length, 0);
-
- AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a2) {
- Assert.notEqual(a2, null);
- Assert.equal(a2.type, "extension");
- Assert.equal(a2.version, "3.0");
- Assert.equal(a2.name, "Real Test 3");
- Assert.ok(a2.isActive);
- Assert.ok(isExtensionInAddonsList(profileDir, a2.id));
- Assert.ok(do_get_addon("test_install2_2").exists());
- do_check_in_crash_annotation(a2.id, a2.version);
- Assert.equal(a2.sourceURI.spec,
- "http://example.com/addons/test_install2_2.xpi");
-
- Assert.equal(a2.installDate.getTime(), gInstallDate);
- // Update date should be later (or the same if this test is too fast)
- Assert.ok(a2.installDate <= a2.updateDate);
-
- a2.uninstall();
- executeSoon(run_test_6);
- });
- });
- }));
- });
-}
-
-// Tests that an install that requires a compatibility update works
-function run_test_6() {
- restartManager();
-
- prepare_test({ }, [
- "onNewInstall"
- ]);
-
- let url = "http://example.com/addons/test_install3.xpi";
- AddonManager.getInstallForURL(url, function(install) {
- ensure_test_completed();
-
- Assert.notEqual(install, null);
- Assert.equal(install.version, "1.0");
- Assert.equal(install.name, "Real Test 4");
- Assert.equal(install.state, AddonManager.STATE_AVAILABLE);
-
- AddonManager.getInstallsByTypes(null, function(activeInstalls) {
- Assert.equal(activeInstalls.length, 1);
- Assert.equal(activeInstalls[0], install);
-
- prepare_test({}, [
- "onDownloadStarted",
- "onDownloadEnded",
- ], check_test_6);
- install.install();
- });
- }, "application/x-xpinstall", null, "Real Test 4", null, "1.0");
-}
-
-function check_test_6(install) {
- ensure_test_completed();
- Assert.equal(install.version, "1.0");
- Assert.equal(install.name, "Real Test 4");
- Assert.equal(install.state, AddonManager.STATE_DOWNLOADED);
- Assert.equal(install.existingAddon, null);
- Assert.ok(!install.addon.appDisabled);
- run_test_7();
- return true;
-}
-
-// Continue the install
-function run_test_7() {
- prepare_test({
- "addon3@tests.mozilla.org": [
- "onInstalling"
- ]
- }, [
- "onInstallStarted",
- "onInstallEnded",
- ], check_test_7);
-}
-
-function check_test_7() {
- ensure_test_completed();
- AddonManager.getAddonByID("addon3@tests.mozilla.org", callback_soon(async function(olda3) {
- Assert.equal(olda3, null);
- await promiseRestartManager();
-
- AddonManager.getAllInstalls(function(installs) {
- Assert.equal(installs, 0);
-
- AddonManager.getAddonByID("addon3@tests.mozilla.org", function(a3) {
- Assert.notEqual(a3, null);
- Assert.equal(a3.type, "extension");
- Assert.equal(a3.version, "1.0");
- Assert.equal(a3.name, "Real Test 4");
- Assert.ok(a3.isActive);
- Assert.ok(!a3.appDisabled);
- Assert.ok(isExtensionInAddonsList(profileDir, a3.id));
- Assert.ok(do_get_addon("test_install3").exists());
- a3.uninstall();
- executeSoon(run_test_8);
- });
- });
- }));
-}
-
-function run_test_8() {
- restartManager();
-
- AddonManager.addInstallListener(InstallListener);
- AddonManager.addAddonListener(AddonListener);
-
- prepare_test({ }, [
- "onNewInstall"
- ]);
-
- AddonManager.getInstallForFile(do_get_addon("test_install3"), function(install) {
- Assert.ok(install.addon.isCompatible);
-
- prepare_test({
- "addon3@tests.mozilla.org": [
- "onInstalling"
- ]
- }, [
- "onInstallStarted",
- "onInstallEnded",
- ], callback_soon(check_test_8));
- install.install();
- });
-}
-
-async function check_test_8() {
- await promiseRestartManager();
-
- AddonManager.getAddonByID("addon3@tests.mozilla.org", function(a3) {
- Assert.notEqual(a3, null);
- Assert.equal(a3.type, "extension");
- Assert.equal(a3.version, "1.0");
- Assert.equal(a3.name, "Real Test 4");
- Assert.ok(a3.isActive);
- Assert.ok(!a3.appDisabled);
- Assert.ok(isExtensionInAddonsList(profileDir, a3.id));
- Assert.ok(do_get_addon("test_install3").exists());
- a3.uninstall();
- executeSoon(run_test_9);
- });
-}
-
-// Test that after cancelling a download it is removed from the active installs
-function run_test_9() {
- restartManager();
-
- prepare_test({ }, [
- "onNewInstall"
- ]);
-
- let url = "http://example.com/addons/test_install3.xpi";
- AddonManager.getInstallForURL(url, function(install) {
- ensure_test_completed();
-
- Assert.notEqual(install, null);
- Assert.equal(install.version, "1.0");
- Assert.equal(install.name, "Real Test 4");
- Assert.equal(install.state, AddonManager.STATE_AVAILABLE);
-
- AddonManager.getInstallsByTypes(null, function(activeInstalls) {
- Assert.equal(activeInstalls.length, 1);
- Assert.equal(activeInstalls[0], install);
-
- prepare_test({}, [
- "onDownloadStarted",
- "onDownloadEnded",
- ], check_test_9);
- install.install();
- });
- }, "application/x-xpinstall", null, "Real Test 4", null, "1.0");
-}
-
-function check_test_9(install) {
- prepare_test({}, [
- "onDownloadCancelled"
- ], function() {
- let file = install.file;
-
- // Allow the file removal to complete
- executeSoon(function() {
- AddonManager.getAllInstalls(function(activeInstalls) {
- Assert.equal(activeInstalls.length, 0);
- Assert.ok(!file.exists());
-
- run_test_10();
- });
- });
- });
-
- install.cancel();
-}
-
-// Tests that after cancelling a pending install it is removed from the active
-// installs
-function run_test_10() {
- prepare_test({ }, [
- "onNewInstall"
- ]);
-
- let url = "http://example.com/addons/test_install3.xpi";
- AddonManager.getInstallForURL(url, function(install) {
- ensure_test_completed();
-
- Assert.notEqual(install, null);
- Assert.equal(install.version, "1.0");
- Assert.equal(install.name, "Real Test 4");
- Assert.equal(install.state, AddonManager.STATE_AVAILABLE);
-
- AddonManager.getInstallsByTypes(null, function(activeInstalls) {
- Assert.equal(activeInstalls.length, 1);
- Assert.equal(activeInstalls[0], install);
-
- prepare_test({
- "addon3@tests.mozilla.org": [
- "onInstalling"
- ]
- }, [
- "onDownloadStarted",
- "onDownloadEnded",
- "onInstallStarted",
- "onInstallEnded"
- ], check_test_10);
- install.install();
- });
- }, "application/x-xpinstall", null, "Real Test 4", null, "1.0");
-}
-
-function check_test_10(install) {
- prepare_test({
- "addon3@tests.mozilla.org": [
- "onOperationCancelled"
- ]
- }, [
- "onInstallCancelled"
- ]);
-
- install.cancel();
-
- ensure_test_completed();
-
- AddonManager.getAllInstalls(callback_soon(function(activeInstalls) {
- Assert.equal(activeInstalls.length, 0);
-
- restartManager();
-
- // Check that the install did not complete
- AddonManager.getAddonByID("addon3@tests.mozilla.org", function(a3) {
- Assert.equal(a3, null);
-
- run_test_11();
- });
- }));
-}
-
-function run_test_11() {
- // Tests 11 and 12 were removed, to avoid churn of renumbering,
- // just jump ahead to 13 here
- run_test_13();
-}
-
-
-// Tests that cancelling an upgrade leaves the original add-on's pendingOperations
-// correct
-function run_test_13() {
- restartManager();
-
- installAllFiles([do_get_addon("test_install2_1")], function() {
- restartManager();
-
- prepare_test({ }, [
- "onNewInstall"
- ]);
-
- let url = "http://example.com/addons/test_install2_2.xpi";
- AddonManager.getInstallForURL(url, function(install) {
- ensure_test_completed();
-
- Assert.notEqual(install, null);
- Assert.equal(install.version, "3.0");
- Assert.equal(install.name, "Test 3");
- Assert.equal(install.state, AddonManager.STATE_AVAILABLE);
-
- AddonManager.getAllInstalls(function(activeInstalls) {
- Assert.equal(activeInstalls.length, 1);
- Assert.equal(activeInstalls[0], install);
- Assert.equal(install.existingAddon, null);
-
- prepare_test({
- "addon2@tests.mozilla.org": [
- "onInstalling"
- ]
- }, [
- "onDownloadStarted",
- "onDownloadEnded",
- "onInstallStarted",
- "onInstallEnded",
- ], check_test_13);
- install.install();
- });
- }, "application/x-xpinstall", null, "Test 3", null, "3.0");
- });
-}
-
-function check_test_13(install) {
- ensure_test_completed();
-
- Assert.equal(install.version, "3.0");
- Assert.equal(install.name, "Real Test 3");
- Assert.equal(install.state, AddonManager.STATE_INSTALLED);
- Assert.notEqual(install.existingAddon, null);
- Assert.equal(install.existingAddon.id, "addon2@tests.mozilla.org");
- Assert.equal(install.addon.install, install);
-
- AddonManager.getAddonByID("addon2@tests.mozilla.org", callback_soon(function(olda2) {
- Assert.notEqual(olda2, null);
- Assert.ok(hasFlag(olda2.pendingOperations, AddonManager.PENDING_UPGRADE));
- Assert.equal(olda2.pendingUpgrade, install.addon);
-
- Assert.ok(hasFlag(install.addon.pendingOperations,
- AddonManager.PENDING_INSTALL));
-
- prepare_test({
- "addon2@tests.mozilla.org": [
- "onOperationCancelled"
- ]
- }, [
- "onInstallCancelled",
- ]);
-
- install.cancel();
-
- Assert.ok(!hasFlag(install.addon.pendingOperations, AddonManager.PENDING_INSTALL));
-
- Assert.ok(!hasFlag(olda2.pendingOperations, AddonManager.PENDING_UPGRADE));
- Assert.equal(olda2.pendingUpgrade, null);
-
- restartManager();
-
- // Check that the upgrade did not complete
- AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a2) {
- Assert.equal(a2.version, "2.0");
-
- a2.uninstall();
-
- executeSoon(run_test_14);
- });
- }));
-}
-
-// Check that cancelling the install from onDownloadStarted actually cancels it
-function run_test_14() {
- restartManager();
-
- prepare_test({ }, [
- "onNewInstall"
- ]);
-
- let url = "http://example.com/addons/test_install2_1.xpi";
- AddonManager.getInstallForURL(url, function(install) {
- ensure_test_completed();
-
- Assert.equal(install.file, null);
-
- prepare_test({ }, [
- "onDownloadStarted"
- ], check_test_14);
- install.install();
- }, "application/x-xpinstall");
-}
-
-function check_test_14(install) {
- prepare_test({ }, [
- "onDownloadCancelled"
- ], function() {
- let file = install.file;
-
- install.addListener({
- onDownloadProgress() {
- do_throw("Download should not have continued");
- },
- onDownloadEnded() {
- do_throw("Download should not have continued");
- }
- });
-
- // Allow the listener to return to see if it continues downloading. The
- // The listener only really tests if we give it time to see progress, the
- // file check isn't ideal either
- executeSoon(function() {
- Assert.ok(!file.exists());
-
- run_test_15();
- });
- });
-
- // Wait for the channel to be ready to cancel
- executeSoon(function() {
- install.cancel();
- });
-}
-
-// Checks that cancelling the install from onDownloadEnded actually cancels it
-function run_test_15() {
- prepare_test({ }, [
- "onNewInstall"
- ]);
-
- let url = "http://example.com/addons/test_install2_1.xpi";
- AddonManager.getInstallForURL(url, function(install) {
- ensure_test_completed();
-
- Assert.equal(install.file, null);
-
- prepare_test({ }, [
- "onDownloadStarted",
- "onDownloadEnded"
- ], check_test_15);
- install.install();
- }, "application/x-xpinstall");
-}
-
-function check_test_15(install) {
- prepare_test({ }, [
- "onDownloadCancelled"
- ]);
-
- install.cancel();
-
- ensure_test_completed();
-
- install.addListener({
- onInstallStarted() {
- do_throw("Install should not have continued");
- }
- });
-
- // Allow the listener to return to see if it starts installing
- executeSoon(run_test_16);
-}
-
-// Verify that the userDisabled value carries over to the upgrade by default
-function run_test_16() {
- restartManager();
-
- let url = "http://example.com/addons/test_install2_1.xpi";
- AddonManager.getInstallForURL(url, function(aInstall) {
- aInstall.addListener({
- onInstallStarted() {
- Assert.ok(!aInstall.addon.userDisabled);
- aInstall.addon.userDisabled = true;
- },
-
- onInstallEnded() {
- executeSoon(function test16_install1() {
- restartManager();
-
- AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a2) {
- Assert.ok(a2.userDisabled);
- Assert.ok(!a2.isActive);
-
- let url_2 = "http://example.com/addons/test_install2_2.xpi";
- AddonManager.getInstallForURL(url_2, function(aInstall_2) {
- aInstall_2.addListener({
- onInstallEnded() {
- executeSoon(function test16_install2() {
- Assert.ok(aInstall_2.addon.userDisabled);
-
- restartManager();
-
- AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a2_2) {
- Assert.ok(a2_2.userDisabled);
- Assert.ok(!a2_2.isActive);
-
- a2_2.uninstall();
- executeSoon(run_test_17);
- });
- });
- }
- });
- aInstall_2.install();
- }, "application/x-xpinstall");
- });
- });
- }
- });
- aInstall.install();
- }, "application/x-xpinstall");
-}
-
-// Verify that changing the userDisabled value before onInstallEnded works
-function run_test_17() {
- restartManager();
-
- let url = "http://example.com/addons/test_install2_1.xpi";
- AddonManager.getInstallForURL(url, function(aInstall) {
- aInstall.addListener({
- onInstallEnded() {
- executeSoon(function() {
- Assert.ok(!aInstall.addon.userDisabled);
-
- restartManager();
-
- AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a2) {
- Assert.ok(!a2.userDisabled);
- Assert.ok(a2.isActive);
-
- let url_2 = "http://example.com/addons/test_install2_2.xpi";
- AddonManager.getInstallForURL(url_2, function(aInstall_2) {
- aInstall_2.addListener({
- onInstallStarted() {
- Assert.ok(!aInstall_2.addon.userDisabled);
- aInstall_2.addon.userDisabled = true;
- },
-
- onInstallEnded() {
- executeSoon(function() {
- restartManager();
-
- AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a2_2) {
- Assert.ok(a2_2.userDisabled);
- Assert.ok(!a2_2.isActive);
-
- a2_2.uninstall();
- executeSoon(run_test_18);
- });
- });
- }
- });
- aInstall_2.install();
- }, "application/x-xpinstall");
- });
- });
- }
- });
- aInstall.install();
- }, "application/x-xpinstall");
-}
-
-// Verify that changing the userDisabled value before onInstallEnded works
-function run_test_18() {
- restartManager();
-
- let url = "http://example.com/addons/test_install2_1.xpi";
- AddonManager.getInstallForURL(url, function(aInstall) {
- aInstall.addListener({
- onInstallStarted() {
- Assert.ok(!aInstall.addon.userDisabled);
- aInstall.addon.userDisabled = true;
- },
-
- onInstallEnded() {
- executeSoon(function test18_install1() {
- restartManager();
-
- AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a2) {
- Assert.ok(a2.userDisabled);
- Assert.ok(!a2.isActive);
-
- let url_2 = "http://example.com/addons/test_install2_2.xpi";
- AddonManager.getInstallForURL(url_2, function(aInstall_2) {
- aInstall_2.addListener({
- onInstallStarted() {
- Assert.ok(aInstall_2.addon.userDisabled);
- aInstall_2.addon.userDisabled = false;
- },
-
- onInstallEnded() {
- executeSoon(function test18_install2() {
- restartManager();
-
- AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a2_2) {
- Assert.ok(!a2_2.userDisabled);
- Assert.ok(a2_2.isActive);
-
- a2_2.uninstall();
- executeSoon(run_test_18_1);
- });
- });
- }
- });
- aInstall_2.install();
- }, "application/x-xpinstall");
- });
- });
- }
- });
- aInstall.install();
- }, "application/x-xpinstall");
-}
-
-
-// Checks that metadata is not stored if the pref is set to false
-function run_test_18_1() {
- restartManager();
-
- Services.prefs.setBoolPref("extensions.getAddons.cache.enabled", true);
- Services.prefs.setCharPref(PREF_GETADDONS_BYIDS,
- "http://example.com/data/test_install_addons.json");
- Services.prefs.setCharPref(PREF_COMPAT_OVERRIDES,
- "http://example.com/data/test_install_compat.json");
-
- Services.prefs.setBoolPref("extensions.addon2@tests.mozilla.org.getAddons.cache.enabled", false);
-
- let url = "http://example.com/addons/test_install2_1.xpi";
- AddonManager.getInstallForURL(url, function(aInstall) {
- aInstall.addListener({
- onInstallEnded(unused, aAddon) {
- executeSoon(function test18_install() {
- Assert.notEqual(aAddon.fullDescription, "Repository description");
-
- restartManager();
-
- AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a2) {
- Assert.notEqual(a2.fullDescription, "Repository description");
-
- a2.uninstall();
- executeSoon(run_test_19);
- });
- });
- }
- });
- aInstall.install();
- }, "application/x-xpinstall");
-}
-
-// Checks that metadata is downloaded for new installs and is visible before and
-// after restart
-function run_test_19() {
- restartManager();
- Services.prefs.setBoolPref("extensions.addon2@tests.mozilla.org.getAddons.cache.enabled", true);
-
- let url = "http://example.com/addons/test_install2_1.xpi";
- AddonManager.getInstallForURL(url, function(aInstall) {
- aInstall.addListener({
- onInstallEnded(unused, aAddon) {
- executeSoon(function test19_install() {
- Assert.equal(aAddon.fullDescription, "Repository description");
-
- restartManager();
-
- AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a2) {
- Assert.equal(a2.fullDescription, "Repository description");
-
- a2.uninstall();
- executeSoon(run_test_20);
- });
- });
- }
- });
- aInstall.install();
- }, "application/x-xpinstall");
-}
-
-// Do the same again to make sure it works when the data is already in the cache
-function run_test_20() {
- restartManager();
-
- let url = "http://example.com/addons/test_install2_1.xpi";
- AddonManager.getInstallForURL(url, function(aInstall) {
- aInstall.addListener({
- onInstallEnded(unused, aAddon) {
- executeSoon(function test20_install() {
- Assert.equal(aAddon.fullDescription, "Repository description");
-
- restartManager();
-
- AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a2) {
- Assert.equal(a2.fullDescription, "Repository description");
-
- a2.uninstall();
- executeSoon(run_test_21);
- });
- });
- }
- });
- aInstall.install();
- }, "application/x-xpinstall");
-}
-
-// Verify that installing an add-on that is already pending install cancels the
-// first install
-function run_test_21() {
- restartManager();
- Services.prefs.setBoolPref("extensions.getAddons.cache.enabled", false);
-
- installAllFiles([do_get_addon("test_install2_1")], function() {
- AddonManager.getAllInstalls(function(aInstalls) {
- Assert.equal(aInstalls.length, 1);
-
- prepare_test({
- "addon2@tests.mozilla.org": [
- "onOperationCancelled",
- "onInstalling"
- ]
- }, [
- "onNewInstall",
- "onDownloadStarted",
- "onDownloadEnded",
- "onInstallStarted",
- "onInstallCancelled",
- "onInstallEnded",
- ], check_test_21);
-
- let url = "http://example.com/addons/test_install2_1.xpi";
- AddonManager.getInstallForURL(url, function(aInstall) {
- aInstall.install();
- }, "application/x-xpinstall");
- });
- });
-}
-
-function check_test_21(aInstall) {
- AddonManager.getAllInstalls(callback_soon(function(aInstalls) {
- Assert.equal(aInstalls.length, 1);
- Assert.equal(aInstalls[0], aInstall);
-
- prepare_test({
- "addon2@tests.mozilla.org": [
- "onOperationCancelled"
- ]
- }, [
- "onInstallCancelled",
- ]);
-
- aInstall.cancel();
-
- ensure_test_completed();
-
- restartManager();
-
- AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a2) {
- Assert.equal(a2, null);
-
- run_test_22();
- });
- }));
-}
-
-// Tests that an install can be restarted after being cancelled
-function run_test_22() {
- prepare_test({ }, [
- "onNewInstall"
- ]);
-
- let url = "http://example.com/addons/test_install3.xpi";
- AddonManager.getInstallForURL(url, function(aInstall) {
- ensure_test_completed();
-
- Assert.notEqual(aInstall, null);
- Assert.equal(aInstall.state, AddonManager.STATE_AVAILABLE);
-
- prepare_test({}, [
- "onDownloadStarted",
- "onDownloadEnded",
- ], check_test_22);
- aInstall.install();
- }, "application/x-xpinstall");
-}
-
-function check_test_22(aInstall) {
- prepare_test({}, [
- "onDownloadCancelled"
- ]);
-
- aInstall.cancel();
-
- ensure_test_completed();
-
- prepare_test({
- "addon3@tests.mozilla.org": [
- "onInstalling"
- ]
- }, [
- "onDownloadStarted",
- "onDownloadEnded",
- "onInstallStarted",
- "onInstallEnded"
- ], finish_test_22);
-
- aInstall.install();
-}
-
-function finish_test_22(aInstall) {
- prepare_test({
- "addon3@tests.mozilla.org": [
- "onOperationCancelled"
- ]
- }, [
- "onInstallCancelled"
- ]);
-
- aInstall.cancel();
-
- ensure_test_completed();
-
- run_test_23();
-}
-
-// Tests that an install can be restarted after being cancelled when a hash
-// was provided
-function run_test_23() {
- prepare_test({ }, [
- "onNewInstall"
- ]);
-
- let url = "http://example.com/addons/test_install3.xpi";
- AddonManager.getInstallForURL(url, function(aInstall) {
- ensure_test_completed();
-
- Assert.notEqual(aInstall, null);
- Assert.equal(aInstall.state, AddonManager.STATE_AVAILABLE);
-
- prepare_test({}, [
- "onDownloadStarted",
- "onDownloadEnded",
- ], check_test_23);
- aInstall.install();
- }, "application/x-xpinstall", do_get_addon_hash("test_install3"));
-}
-
-function check_test_23(aInstall) {
- prepare_test({}, [
- "onDownloadCancelled"
- ]);
-
- aInstall.cancel();
-
- ensure_test_completed();
-
- prepare_test({
- "addon3@tests.mozilla.org": [
- "onInstalling"
- ]
- }, [
- "onDownloadStarted",
- "onDownloadEnded",
- "onInstallStarted",
- "onInstallEnded"
- ], finish_test_23);
-
- aInstall.install();
-}
-
-function finish_test_23(aInstall) {
- prepare_test({
- "addon3@tests.mozilla.org": [
- "onOperationCancelled"
- ]
- }, [
- "onInstallCancelled"
- ]);
-
- aInstall.cancel();
-
- ensure_test_completed();
-
- run_test_24();
-}
-
-// Tests that an install with a bad hash can be restarted after it fails, though
-// it will only fail again
-function run_test_24() {
- prepare_test({ }, [
- "onNewInstall"
- ]);
-
- let url = "http://example.com/addons/test_install3.xpi";
- AddonManager.getInstallForURL(url, function(aInstall) {
- ensure_test_completed();
-
- Assert.notEqual(aInstall, null);
- Assert.equal(aInstall.state, AddonManager.STATE_AVAILABLE);
-
- prepare_test({}, [
- "onDownloadStarted",
- "onDownloadFailed",
- ], check_test_24);
- aInstall.install();
- }, "application/x-xpinstall", "sha1:foo");
-}
-
-function check_test_24(aInstall) {
- prepare_test({ }, [
- "onDownloadStarted",
- "onDownloadFailed"
- ], run_test_25);
-
- aInstall.install();
-}
-
-// Tests that installs with a hash for a local file work
-function run_test_25() {
- prepare_test({ }, [
- "onNewInstall"
- ]);
-
- let url = Services.io.newFileURI(do_get_addon("test_install3")).spec;
- AddonManager.getInstallForURL(url, function(aInstall) {
- ensure_test_completed();
-
- Assert.notEqual(aInstall, null);
- Assert.equal(aInstall.state, AddonManager.STATE_DOWNLOADED);
- Assert.equal(aInstall.error, 0);
-
- prepare_test({ }, [
- "onDownloadCancelled"
- ]);
-
- aInstall.cancel();
-
- ensure_test_completed();
-
- run_test_26();
- }, "application/x-xpinstall", do_get_addon_hash("test_install3"));
-}
-
-function run_test_26() {
- prepare_test({ }, [
- "onNewInstall",
- "onDownloadStarted",
- "onDownloadCancelled"
- ]);
-
- let observerService = AM_Cc["@mozilla.org/network/http-activity-distributor;1"].
- getService(AM_Ci.nsIHttpActivityDistributor);
- observerService.addObserver({
- observeActivity(aChannel, aType, aSubtype, aTimestamp, aSizeData,
- aStringData) {
- aChannel.QueryInterface(AM_Ci.nsIChannel);
- // Wait for the final event for the redirected URL
- if (aChannel.URI.spec != "http://example.com/addons/test_install1.xpi" ||
- aType != AM_Ci.nsIHttpActivityObserver.ACTIVITY_TYPE_HTTP_TRANSACTION ||
- aSubtype != AM_Ci.nsIHttpActivityObserver.ACTIVITY_SUBTYPE_TRANSACTION_CLOSE)
- return;
-
- // Request should have been cancelled
- Assert.equal(aChannel.status, Cr.NS_BINDING_ABORTED);
-
- observerService.removeObserver(this);
-
- run_test_27();
- }
- });
-
- let url = "http://example.com/redirect?/addons/test_install1.xpi";
- AddonManager.getInstallForURL(url, function(aInstall) {
- aInstall.addListener({
- onDownloadProgress(aDownloadProgressInstall) {
- aDownloadProgressInstall.cancel();
- }
- });
-
- aInstall.install();
- }, "application/x-xpinstall");
-}
-
-
-// Tests that an install can be restarted during onDownloadCancelled after being
-// cancelled in mid-download
-function run_test_27() {
- prepare_test({ }, [
- "onNewInstall"
- ]);
-
- let url = "http://example.com/addons/test_install3.xpi";
- AddonManager.getInstallForURL(url, function(aInstall) {
- ensure_test_completed();
-
- Assert.notEqual(aInstall, null);
- Assert.equal(aInstall.state, AddonManager.STATE_AVAILABLE);
-
- aInstall.addListener({
- onDownloadProgress() {
- aInstall.removeListener(this);
- aInstall.cancel();
- }
- });
-
- prepare_test({}, [
- "onDownloadStarted",
- "onDownloadCancelled",
- ], check_test_27);
- aInstall.install();
- }, "application/x-xpinstall");
-}
-
-function check_test_27(aInstall) {
- prepare_test({
- "addon3@tests.mozilla.org": [
- "onInstalling"
- ]
- }, [
- "onDownloadStarted",
- "onDownloadEnded",
- "onInstallStarted",
- "onInstallEnded"
- ], finish_test_27);
-
- let file = aInstall.file;
- aInstall.install();
- Assert.notEqual(file.path, aInstall.file.path);
- Assert.ok(!file.exists());
-}
-
-function finish_test_27(aInstall) {
- prepare_test({
- "addon3@tests.mozilla.org": [
- "onOperationCancelled"
- ]
- }, [
- "onInstallCancelled"
- ]);
-
- aInstall.cancel();
-
- ensure_test_completed();
-
- run_test_30();
-}
-
-// Tests that a multi-package XPI with no add-ons inside shows up as a
-// corrupt file
-function run_test_30() {
- prepare_test({ }, [
- "onNewInstall"
- ]);
-
- AddonManager.getInstallForFile(do_get_addon("test_install7"), function(install) {
- ensure_test_completed();
-
- Assert.notEqual(install, null);
- Assert.equal(install.state, AddonManager.STATE_DOWNLOAD_FAILED);
- Assert.equal(install.error, AddonManager.ERROR_CORRUPT_FILE);
-
- run_test_31();
- });
-}
-
-// Tests that a multi-package XPI with no valid add-ons inside shows up as a
-// corrupt file
-function run_test_31() {
- prepare_test({ }, [
- "onNewInstall"
- ]);
-
- AddonManager.getInstallForFile(do_get_addon("test_install8"), function(install) {
- ensure_test_completed();
-
- Assert.notEqual(install, null);
- Assert.equal(install.state, AddonManager.STATE_DOWNLOAD_FAILED);
- Assert.equal(install.error, AddonManager.ERROR_CORRUPT_FILE);
-
- end_test();
- });
-}
deleted file mode 100644
--- a/toolkit/mozapps/extensions/test/xpcshell/test_update_strictcompat.js
+++ /dev/null
@@ -1,1115 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/
- */
-
-// This verifies that add-on update checks work
-
-const PREF_GETADDONS_CACHE_ENABLED = "extensions.getAddons.cache.enabled";
-
-// The test extension uses an insecure update url.
-Services.prefs.setBoolPref(PREF_EM_CHECK_UPDATE_SECURITY, false);
-Services.prefs.setBoolPref(PREF_EM_STRICT_COMPATIBILITY, true);
-// This test requires lightweight themes update to be enabled even if the app
-// doesn't support lightweight themes.
-Services.prefs.setBoolPref("lightweightThemes.update.enabled", true);
-
-ChromeUtils.import("resource://gre/modules/LightweightThemeManager.jsm");
-
-const PARAMS = "?%REQ_VERSION%/%ITEM_ID%/%ITEM_VERSION%/%ITEM_MAXAPPVERSION%/" +
- "%ITEM_STATUS%/%APP_ID%/%APP_VERSION%/%CURRENT_APP_VERSION%/" +
- "%APP_OS%/%APP_ABI%/%APP_LOCALE%/%UPDATE_TYPE%";
-
-var gInstallDate;
-
-var testserver = createHttpServer();
-gPort = testserver.identity.primaryPort;
-mapFile("/data/test_update.json", testserver);
-mapFile("/data/test_update_addons.json", testserver);
-mapFile("/data/test_update_compat.json", testserver);
-testserver.registerDirectory("/addons/", do_get_file("addons"));
-
-const profileDir = gProfD.clone();
-profileDir.append("extensions");
-
-function run_test() {
- createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1");
-
- Services.locale.setRequestedLocales(["fr-FR"]);
-
- run_next_test();
-}
-
-const updateFile = "test_update.json";
-const appId = "toolkit@mozilla.org";
-
-add_test(function() {
- writeInstallRDFForExtension({
- id: "addon1@tests.mozilla.org",
- version: "1.0",
- updateURL: "http://localhost:" + gPort + "/data/" + updateFile,
- targetApplications: [{
- id: appId,
- minVersion: "1",
- maxVersion: "1"
- }],
- name: "Test Addon 1",
- }, profileDir);
-
- writeInstallRDFForExtension({
- id: "addon2@tests.mozilla.org",
- version: "1.0",
- updateURL: "http://localhost:" + gPort + "/data/" + updateFile,
- targetApplications: [{
- id: appId,
- minVersion: "0",
- maxVersion: "0"
- }],
- name: "Test Addon 2",
- }, profileDir);
-
- writeInstallRDFForExtension({
- id: "addon3@tests.mozilla.org",
- version: "1.0",
- updateURL: "http://localhost:" + gPort + "/data/" + updateFile,
- targetApplications: [{
- id: appId,
- minVersion: "5",
- maxVersion: "5"
- }],
- name: "Test Addon 3",
- }, profileDir);
-
- startupManager();
-
- run_next_test();
-});
-
-// Verify that an update is available and can be installed.
-let check_test_1;
-add_test(function run_test_1() {
- AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) {
- Assert.notEqual(a1, null);
- Assert.equal(a1.version, "1.0");
- Assert.equal(a1.applyBackgroundUpdates, AddonManager.AUTOUPDATE_DEFAULT);
- Assert.equal(a1.releaseNotesURI, null);
-
- a1.applyBackgroundUpdates = AddonManager.AUTOUPDATE_DEFAULT;
-
- prepare_test({
- "addon1@tests.mozilla.org": [
- ["onPropertyChanged", ["applyBackgroundUpdates"]]
- ]
- });
- a1.applyBackgroundUpdates = AddonManager.AUTOUPDATE_DISABLE;
- check_test_completed();
-
- a1.applyBackgroundUpdates = AddonManager.AUTOUPDATE_DISABLE;
-
- prepare_test({}, [
- "onNewInstall",
- ]);
-
- a1.findUpdates({
- onNoCompatibilityUpdateAvailable(addon) {
- ok(false, "Should not have seen onNoCompatibilityUpdateAvailable notification");
- },
-
- onUpdateAvailable(addon, install) {
- ensure_test_completed();
-
- AddonManager.getAllInstalls(function(aInstalls) {
- Assert.equal(aInstalls.length, 1);
- Assert.equal(aInstalls[0], install);
-
- Assert.equal(addon, a1);
- Assert.equal(install.name, addon.name);
- Assert.equal(install.version, "2.0");
- Assert.equal(install.state, AddonManager.STATE_AVAILABLE);
- Assert.equal(install.existingAddon, addon);
- Assert.equal(install.releaseNotesURI.spec, "http://example.com/updateInfo.xhtml");
-
- // Verify that another update check returns the same AddonInstall
- a1.findUpdates({
- onNoCompatibilityUpdateAvailable() {
- ok(false, "Should not have seen onNoCompatibilityUpdateAvailable notification");
- },
-
- onUpdateAvailable(newAddon, newInstall) {
- AddonManager.getAllInstalls(function(aInstalls2) {
- Assert.equal(aInstalls2.length, 1);
- Assert.equal(aInstalls2[0], install);
- Assert.equal(newAddon, addon);
- Assert.equal(newInstall, install);
-
- prepare_test({}, [
- "onDownloadStarted",
- "onDownloadEnded",
- ], check_test_1);
- install.install();
- });
- },
-
- onNoUpdateAvailable() {
- ok(false, "Should not have seen onNoUpdateAvailable notification");
- }
- }, AddonManager.UPDATE_WHEN_USER_REQUESTED);
- });
- },
-
- onNoUpdateAvailable(addon) {
- ok(false, "Should not have seen onNoUpdateAvailable notification");
- }
- }, AddonManager.UPDATE_WHEN_USER_REQUESTED);
- });
-});
-
-let run_test_2;
-check_test_1 = (install) => {
- ensure_test_completed();
- Assert.equal(install.state, AddonManager.STATE_DOWNLOADED);
- run_test_2(install);
- return false;
-};
-
-// Continue installing the update.
-let check_test_2;
-run_test_2 = (install) => {
- // Verify that another update check returns no new update
- install.existingAddon.findUpdates({
- onNoCompatibilityUpdateAvailable(addon) {
- ok(false, "Should not have seen onNoCompatibilityUpdateAvailable notification");
- },
-
- onUpdateAvailable() {
- ok(false, "Should find no available update when one is already downloading");
- },
-
- onNoUpdateAvailable(addon) {
- AddonManager.getAllInstalls(function(aInstalls) {
- Assert.equal(aInstalls.length, 1);
- Assert.equal(aInstalls[0], install);
-
- prepare_test({
- "addon1@tests.mozilla.org": [
- "onInstalling"
- ]
- }, [
- "onInstallStarted",
- "onInstallEnded",
- ], check_test_2);
- install.install();
- });
- }
- }, AddonManager.UPDATE_WHEN_USER_REQUESTED);
-};
-
-check_test_2 = () => {
- ensure_test_completed();
-
- AddonManager.getAddonByID("addon1@tests.mozilla.org", callback_soon(async function(olda1) {
- await AddonTestUtils.loadAddonsList(true);
-
- Assert.notEqual(olda1, null);
- Assert.equal(olda1.version, "1.0");
- Assert.ok(isExtensionInAddonsList(profileDir, olda1.id));
-
- shutdownManager();
-
- await promiseStartupManager();
-
- Assert.ok(isExtensionInAddonsList(profileDir, "addon1@tests.mozilla.org"));
-
- AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) {
- Assert.notEqual(a1, null);
- Assert.equal(a1.version, "2.0");
- Assert.ok(isExtensionInAddonsList(profileDir, a1.id));
- Assert.equal(a1.applyBackgroundUpdates, AddonManager.AUTOUPDATE_DISABLE);
- Assert.equal(a1.releaseNotesURI.spec, "http://example.com/updateInfo.xhtml");
-
- a1.uninstall();
- run_next_test();
- });
- }));
-};
-
-
-// Check that an update check finds compatibility updates and applies them
-let check_test_3;
-add_test(function run_test_3() {
- restartManager();
-
- AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a2) {
- Assert.notEqual(a2, null);
- Assert.ok(!a2.isActive);
- Assert.ok(!a2.isCompatible);
- Assert.ok(a2.appDisabled);
- Assert.ok(a2.isCompatibleWith("0", "0"));
-
- a2.findUpdates({
- onCompatibilityUpdateAvailable(addon) {
- Assert.ok(a2.isCompatible);
- Assert.ok(!a2.appDisabled);
- Assert.ok(!a2.isActive);
- },
-
- onUpdateAvailable(addon, install) {
- ok(false, "Should not have seen an available update");
- },
-
- onNoUpdateAvailable(addon) {
- Assert.equal(addon, a2);
- executeSoon(check_test_3);
- }
- }, AddonManager.UPDATE_WHEN_USER_REQUESTED);
- });
-});
-
-check_test_3 = () => {
- restartManager();
- AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a2) {
- Assert.notEqual(a2, null);
- Assert.ok(a2.isActive);
- Assert.ok(a2.isCompatible);
- Assert.ok(!a2.appDisabled);
- a2.uninstall();
-
- run_next_test();
- });
-};
-
-// Checks that we see no compatibility information when there is none.
-add_test(function run_test_4() {
- AddonManager.getAddonByID("addon3@tests.mozilla.org", function(a3) {
- Assert.notEqual(a3, null);
- Assert.ok(!a3.isActive);
- Assert.ok(!a3.isCompatible);
- Assert.ok(a3.appDisabled);
- Assert.ok(a3.isCompatibleWith("5", "5"));
- Assert.ok(!a3.isCompatibleWith("2", "2"));
-
- a3.findUpdates({
- sawUpdate: false,
- onCompatibilityUpdateAvailable(addon) {
- ok(false, "Should not have seen compatibility information");
- },
-
- onNoCompatibilityUpdateAvailable(addon) {
- this.sawUpdate = true;
- },
-
- onUpdateAvailable(addon, install) {
- ok(false, "Should not have seen an available update");
- },
-
- onNoUpdateAvailable(addon) {
- Assert.ok(this.sawUpdate);
- run_next_test();
- }
- }, AddonManager.UPDATE_WHEN_USER_REQUESTED);
- });
-});
-
-// Checks that compatibility info for future apps are detected but don't make
-// the item compatibile.
-let check_test_5;
-add_test(function run_test_5() {
- AddonManager.getAddonByID("addon3@tests.mozilla.org", function(a3) {
- Assert.notEqual(a3, null);
- Assert.ok(!a3.isActive);
- Assert.ok(!a3.isCompatible);
- Assert.ok(a3.appDisabled);
- Assert.ok(a3.isCompatibleWith("5", "5"));
- Assert.ok(!a3.isCompatibleWith("2", "2"));
-
- a3.findUpdates({
- sawUpdate: false,
- onCompatibilityUpdateAvailable(addon) {
- Assert.ok(!a3.isCompatible);
- Assert.ok(a3.appDisabled);
- Assert.ok(!a3.isActive);
- this.sawUpdate = true;
- },
-
- onNoCompatibilityUpdateAvailable(addon) {
- ok(false, "Should have seen some compatibility information");
- },
-
- onUpdateAvailable(addon, install) {
- ok(false, "Should not have seen an available update");
- },
-
- onNoUpdateAvailable(addon) {
- Assert.ok(this.sawUpdate);
- executeSoon(check_test_5);
- }
- }, AddonManager.UPDATE_WHEN_USER_REQUESTED, "3.0", "3.0");
- });
-});
-
-check_test_5 = () => {
- restartManager();
- AddonManager.getAddonByID("addon3@tests.mozilla.org", function(a3) {
- Assert.notEqual(a3, null);
- Assert.ok(!a3.isActive);
- Assert.ok(!a3.isCompatible);
- Assert.ok(a3.appDisabled);
-
- a3.uninstall();
- run_next_test();
- });
-};
-
-// Test that background update checks work
-let continue_test_6;
-add_test(function run_test_6() {
- restartManager();
-
- writeInstallRDFForExtension({
- id: "addon1@tests.mozilla.org",
- version: "1.0",
- updateURL: "http://localhost:" + gPort + "/data/" + updateFile,
- targetApplications: [{
- id: appId,
- minVersion: "1",
- maxVersion: "1"
- }],
- name: "Test Addon 1",
- }, profileDir);
- restartManager();
-
- prepare_test({}, [
- "onNewInstall",
- "onDownloadStarted",
- "onDownloadEnded"
- ], continue_test_6);
-
- AddonManagerInternal.backgroundUpdateCheck();
-});
-
-let check_test_6;
-continue_test_6 = (install) => {
- Assert.notEqual(install.existingAddon, null);
- Assert.equal(install.existingAddon.id, "addon1@tests.mozilla.org");
-
- prepare_test({
- "addon1@tests.mozilla.org": [
- "onInstalling"
- ]
- }, [
- "onInstallStarted",
- "onInstallEnded",
- ], callback_soon(check_test_6));
-};
-
-check_test_6 = (install) => {
- Assert.equal(install.existingAddon.pendingUpgrade.install, install);
-
- restartManager();
- AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) {
- Assert.notEqual(a1, null);
- Assert.equal(a1.version, "2.0");
- Assert.equal(a1.releaseNotesURI.spec, "http://example.com/updateInfo.xhtml");
- a1.uninstall();
- run_next_test();
- });
-};
-
-// Verify the parameter escaping in update urls.
-add_test(function run_test_8() {
- restartManager();
-
- writeInstallRDFForExtension({
- id: "addon1@tests.mozilla.org",
- version: "5.0",
- updateURL: "http://localhost:" + gPort + "/data/param_test.json" + PARAMS,
- targetApplications: [{
- id: appId,
- minVersion: "1",
- maxVersion: "2"
- }],
- name: "Test Addon 1",
- }, profileDir);
-
- writeInstallRDFForExtension({
- id: "addon2@tests.mozilla.org",
- version: "67.0.5b1",
- updateURL: "http://localhost:" + gPort + "/data/param_test.json" + PARAMS,
- targetApplications: [{
- id: "toolkit@mozilla.org",
- minVersion: "0",
- maxVersion: "3"
- }],
- name: "Test Addon 2",
- }, profileDir);
-
- writeInstallRDFForExtension({
- id: "addon3@tests.mozilla.org",
- version: "1.3+",
- updateURL: "http://localhost:" + gPort + "/data/param_test.json" + PARAMS,
- targetApplications: [{
- id: appId,
- minVersion: "0",
- maxVersion: "0"
- }, {
- id: "toolkit@mozilla.org",
- minVersion: "0",
- maxVersion: "3"
- }],
- name: "Test Addon 3",
- }, profileDir);
-
- writeInstallRDFForExtension({
- id: "addon4@tests.mozilla.org",
- version: "0.5ab6",
- updateURL: "http://localhost:" + gPort + "/data/param_test.json" + PARAMS,
- targetApplications: [{
- id: appId,
- minVersion: "1",
- maxVersion: "5"
- }],
- name: "Test Addon 4",
- }, profileDir);
-
- writeInstallRDFForExtension({
- id: "addon5@tests.mozilla.org",
- version: "1.0",
- updateURL: "http://localhost:" + gPort + "/data/param_test.json" + PARAMS,
- targetApplications: [{
- id: appId,
- minVersion: "1",
- maxVersion: "1"
- }],
- name: "Test Addon 5",
- }, profileDir);
-
- writeInstallRDFForExtension({
- id: "addon6@tests.mozilla.org",
- version: "1.0",
- updateURL: "http://localhost:" + gPort + "/data/param_test.json" + PARAMS,
- targetApplications: [{
- id: appId,
- minVersion: "1",
- maxVersion: "1"
- }],
- name: "Test Addon 6",
- }, profileDir);
-
- restartManager();
-
- AddonManager.getAddonByID("addon2@tests.mozilla.org", callback_soon(function(a2) {
- a2.userDisabled = true;
- restartManager();
-
- testserver.registerPathHandler("/data/param_test.json", function(request, response) {
- Assert.notEqual(request.queryString, "");
- let [req_version, item_id, item_version,
- item_maxappversion, item_status,
- app_id, app_version, current_app_version,
- app_os, app_abi, app_locale, update_type] =
- request.queryString.split("/").map(a => decodeURIComponent(a));
-
- Assert.equal(req_version, "2");
-
- switch (item_id) {
- case "addon1@tests.mozilla.org":
- Assert.equal(item_version, "5.0");
- Assert.equal(item_maxappversion, "2");
- Assert.equal(item_status, "userEnabled");
- Assert.equal(app_version, "1");
- Assert.equal(update_type, "97");
- break;
- case "addon2@tests.mozilla.org":
- Assert.equal(item_version, "67.0.5b1");
- Assert.equal(item_maxappversion, "3");
- Assert.equal(item_status, "userDisabled");
- Assert.equal(app_version, "1");
- Assert.equal(update_type, "49");
- break;
- case "addon3@tests.mozilla.org":
- Assert.equal(item_version, "1.3+");
- Assert.equal(item_maxappversion, "0");
- Assert.equal(item_status, "userEnabled,incompatible");
- Assert.equal(app_version, "1");
- Assert.equal(update_type, "112");
- break;
- case "addon4@tests.mozilla.org":
- Assert.equal(item_version, "0.5ab6");
- Assert.equal(item_maxappversion, "5");
- Assert.equal(item_status, "userEnabled");
- Assert.equal(app_version, "2");
- Assert.equal(update_type, "98");
- break;
- case "addon5@tests.mozilla.org":
- Assert.equal(item_version, "1.0");
- Assert.equal(item_maxappversion, "1");
- Assert.equal(item_status, "userEnabled");
- Assert.equal(app_version, "1");
- Assert.equal(update_type, "35");
- break;
- case "addon6@tests.mozilla.org":
- Assert.equal(item_version, "1.0");
- Assert.equal(item_maxappversion, "1");
- Assert.equal(item_status, "userEnabled");
- Assert.equal(app_version, "1");
- Assert.equal(update_type, "99");
- break;
- default:
- ok(false, "Update request for unexpected add-on " + item_id);
- }
-
- Assert.equal(app_id, "xpcshell@tests.mozilla.org");
- Assert.equal(current_app_version, "1");
- Assert.equal(app_os, "XPCShell");
- Assert.equal(app_abi, "noarch-spidermonkey");
- Assert.equal(app_locale, "fr-FR");
-
- request.setStatusLine(null, 500, "Server Error");
- });
-
- AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
- "addon2@tests.mozilla.org",
- "addon3@tests.mozilla.org",
- "addon4@tests.mozilla.org",
- "addon5@tests.mozilla.org",
- "addon6@tests.mozilla.org"],
- function([a1_2, a2_2, a3_2, a4_2, a5_2, a6_2]) {
- let count = 6;
-
- function next_test() {
- a1_2.uninstall();
- a2_2.uninstall();
- a3_2.uninstall();
- a4_2.uninstall();
- a5_2.uninstall();
- a6_2.uninstall();
-
- restartManager();
- run_next_test();
- }
-
- let compatListener = {
- onUpdateFinished(addon, error) {
- if (--count == 0)
- executeSoon(next_test);
- }
- };
-
- let updateListener = {
- onUpdateAvailable(addon, update) {
- // Dummy so the update checker knows we care about new versions
- },
-
- onUpdateFinished(addon, error) {
- if (--count == 0)
- executeSoon(next_test);
- }
- };
-
- a1_2.findUpdates(updateListener, AddonManager.UPDATE_WHEN_USER_REQUESTED);
- a2_2.findUpdates(compatListener, AddonManager.UPDATE_WHEN_ADDON_INSTALLED);
- a3_2.findUpdates(updateListener, AddonManager.UPDATE_WHEN_PERIODIC_UPDATE);
- a4_2.findUpdates(updateListener, AddonManager.UPDATE_WHEN_NEW_APP_DETECTED, "2");
- a5_2.findUpdates(compatListener, AddonManager.UPDATE_WHEN_NEW_APP_INSTALLED);
- a6_2.findUpdates(updateListener, AddonManager.UPDATE_WHEN_NEW_APP_INSTALLED);
- });
- }));
-});
-
-// Tests that if an install.rdf claims compatibility then the add-on will be
-// seen as compatible regardless of what the update.json says.
-add_test(function run_test_9() {
- writeInstallRDFForExtension({
- id: "addon4@tests.mozilla.org",
- version: "5.0",
- updateURL: "http://localhost:" + gPort + "/data/" + updateFile,
- targetApplications: [{
- id: appId,
- minVersion: "0",
- maxVersion: "1"
- }],
- name: "Test Addon 1",
- }, profileDir);
-
- restartManager();
-
- AddonManager.getAddonByID("addon4@tests.mozilla.org", function(a4) {
- Assert.ok(a4.isActive, "addon4 is active");
- Assert.ok(a4.isCompatible, "addon4 is compatible");
-
- run_next_test();
- });
-});
-
-// Tests that a normal update check won't decrease a targetApplication's
-// maxVersion.
-add_test(function run_test_10() {
- AddonManager.getAddonByID("addon4@tests.mozilla.org", function(a4) {
- a4.findUpdates({
- onUpdateFinished(addon) {
- Assert.ok(addon.isCompatible, "addon4 is compatible");
-
- run_next_test();
- }
- }, AddonManager.UPDATE_WHEN_PERIODIC_UPDATE);
- });
-});
-
-// Tests that an update check for a new application will decrease a
-// targetApplication's maxVersion.
-add_test(function run_test_11() {
- AddonManager.getAddonByID("addon4@tests.mozilla.org", function(a4) {
- a4.findUpdates({
- onUpdateFinished(addon) {
- Assert.ok(!addon.isCompatible, "addon4 is compatible");
-
- run_next_test();
- }
- }, AddonManager.UPDATE_WHEN_NEW_APP_INSTALLED);
- });
-});
-
-// Check that the decreased maxVersion applied and disables the add-on
-add_test(function run_test_12() {
- restartManager();
-
- AddonManager.getAddonByID("addon4@tests.mozilla.org", function(a4) {
- Assert.ok(!a4.isActive, "addon4 is active");
- Assert.ok(!a4.isCompatible, "addon4 is compatible");
-
- a4.uninstall();
- run_next_test();
- });
-});
-
-// Tests that no compatibility update is passed to the listener when there is
-// compatibility info for the current version of the app but not for the
-// version of the app that the caller requested an update check for.
-let check_test_13;
-add_test(function run_test_13() {
- restartManager();
-
- // Not initially compatible but the update check will make it compatible
- writeInstallRDFForExtension({
- id: "addon7@tests.mozilla.org",
- version: "1.0",
- updateURL: "http://localhost:" + gPort + "/data/" + updateFile,
- targetApplications: [{
- id: appId,
- minVersion: "0",
- maxVersion: "0"
- }],
- name: "Test Addon 7",
- }, profileDir);
- restartManager();
-
- AddonManager.getAddonByID("addon7@tests.mozilla.org", function(a7) {
- Assert.notEqual(a7, null);
- Assert.ok(!a7.isActive);
- Assert.ok(!a7.isCompatible);
- Assert.ok(a7.appDisabled);
- Assert.ok(a7.isCompatibleWith("0", "0"));
-
- a7.findUpdates({
- sawUpdate: false,
- onCompatibilityUpdateAvailable(addon) {
- ok(false, "Should not have seen compatibility information");
- },
-
- onUpdateAvailable(addon, install) {
- ok(false, "Should not have seen an available update");
- },
-
- onUpdateFinished(addon) {
- Assert.ok(addon.isCompatible);
- executeSoon(check_test_13);
- }
- }, AddonManager.UPDATE_WHEN_NEW_APP_DETECTED, "3.0", "3.0");
- });
-});
-
-check_test_13 = () => {
- restartManager();
- AddonManager.getAddonByID("addon7@tests.mozilla.org", function(a7) {
- Assert.notEqual(a7, null);
- Assert.ok(a7.isActive);
- Assert.ok(a7.isCompatible);
- Assert.ok(!a7.appDisabled);
-
- a7.uninstall();
- run_next_test();
- });
-};
-
-// Test that background update checks doesn't update an add-on that isn't
-// allowed to update automatically.
-let check_test_14;
-add_test(function run_test_14() {
- restartManager();
-
- // Have an add-on there that will be updated so we see some events from it
- writeInstallRDFForExtension({
- id: "addon1@tests.mozilla.org",
- version: "1.0",
- updateURL: "http://localhost:" + gPort + "/data/" + updateFile,
- targetApplications: [{
- id: appId,
- minVersion: "1",
- maxVersion: "1"
- }],
- name: "Test Addon 1",
- }, profileDir);
-
- writeInstallRDFForExtension({
- id: "addon8@tests.mozilla.org",
- version: "1.0",
- updateURL: "http://localhost:" + gPort + "/data/" + updateFile,
- targetApplications: [{
- id: appId,
- minVersion: "1",
- maxVersion: "1"
- }],
- name: "Test Addon 8",
- }, profileDir);
- restartManager();
-
- AddonManager.getAddonByID("addon8@tests.mozilla.org", function(a8) {
- a8.applyBackgroundUpdates = AddonManager.AUTOUPDATE_DISABLE;
-
- // The background update check will find updates for both add-ons but only
- // proceed to install one of them.
- AddonManager.addInstallListener({
- onNewInstall(aInstall) {
- let id = aInstall.existingAddon.id;
- ok((id == "addon1@tests.mozilla.org" || id == "addon8@tests.mozilla.org"),
- "Saw unexpected onNewInstall for " + id);
- },
-
- onDownloadStarted(aInstall) {
- Assert.equal(aInstall.existingAddon.id, "addon1@tests.mozilla.org");
- },
-
- onDownloadEnded(aInstall) {
- Assert.equal(aInstall.existingAddon.id, "addon1@tests.mozilla.org");
- },
-
- onDownloadFailed(aInstall) {
- ok(false, "Should not have seen onDownloadFailed event");
- },
-
- onDownloadCancelled(aInstall) {
- ok(false, "Should not have seen onDownloadCancelled event");
- },
-
- onInstallStarted(aInstall) {
- Assert.equal(aInstall.existingAddon.id, "addon1@tests.mozilla.org");
- },
-
- onInstallEnded(aInstall) {
- Assert.equal(aInstall.existingAddon.id, "addon1@tests.mozilla.org");
- Assert.equal(aInstall.existingAddon.pendingUpgrade.install, aInstall);
-
- executeSoon(check_test_14);
- },
-
- onInstallFailed(aInstall) {
- ok(false, "Should not have seen onInstallFailed event");
- },
-
- onInstallCancelled(aInstall) {
- ok(false, "Should not have seen onInstallCancelled event");
- },
- });
-
- AddonManagerInternal.backgroundUpdateCheck();
- });
-});
-
-check_test_14 = () => {
- restartManager();
- AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
- "addon8@tests.mozilla.org"], function([a1, a8]) {
- Assert.notEqual(a1, null);
- Assert.equal(a1.version, "2.0");
- a1.uninstall();
-
- Assert.notEqual(a8, null);
- Assert.equal(a8.version, "1.0");
- a8.uninstall();
-
- run_next_test();
- });
-};
-
-// Test that background update checks doesn't update an add-on that is
-// pending uninstall
-let check_test_15;
-add_test(function run_test_15() {
- restartManager();
-
- // Have an add-on there that will be updated so we see some events from it
- writeInstallRDFForExtension({
- id: "addon1@tests.mozilla.org",
- version: "1.0",
- updateURL: "http://localhost:" + gPort + "/data/" + updateFile,
- targetApplications: [{
- id: appId,
- minVersion: "1",
- maxVersion: "1"
- }],
- name: "Test Addon 1",
- }, profileDir);
-
- writeInstallRDFForExtension({
- id: "addon8@tests.mozilla.org",
- version: "1.0",
- updateURL: "http://localhost:" + gPort + "/data/" + updateFile,
- targetApplications: [{
- id: appId,
- minVersion: "1",
- maxVersion: "1"
- }],
- name: "Test Addon 8",
- }, profileDir);
- restartManager();
-
- AddonManager.getAddonByID("addon8@tests.mozilla.org", function(a8) {
- a8.uninstall();
- Assert.ok(!hasFlag(a8.permissions, AddonManager.PERM_CAN_UPGRADE));
-
- // The background update check will find updates for both add-ons but only
- // proceed to install one of them.
- AddonManager.addInstallListener({
- onNewInstall(aInstall) {
- let id = aInstall.existingAddon.id;
- ok((id == "addon1@tests.mozilla.org" || id == "addon8@tests.mozilla.org"),
- "Saw unexpected onNewInstall for " + id);
- },
-
- onDownloadStarted(aInstall) {
- Assert.equal(aInstall.existingAddon.id, "addon1@tests.mozilla.org");
- },
-
- onDownloadEnded(aInstall) {
- Assert.equal(aInstall.existingAddon.id, "addon1@tests.mozilla.org");
- },
-
- onDownloadFailed(aInstall) {
- ok(false, "Should not have seen onDownloadFailed event");
- },
-
- onDownloadCancelled(aInstall) {
- ok(false, "Should not have seen onDownloadCancelled event");
- },
-
- onInstallStarted(aInstall) {
- Assert.equal(aInstall.existingAddon.id, "addon1@tests.mozilla.org");
- },
-
- onInstallEnded(aInstall) {
- Assert.equal(aInstall.existingAddon.id, "addon1@tests.mozilla.org");
- executeSoon(check_test_15);
- },
-
- onInstallFailed(aInstall) {
- ok(false, "Should not have seen onInstallFailed event");
- },
-
- onInstallCancelled(aInstall) {
- ok(false, "Should not have seen onInstallCancelled event");
- },
- });
-
- AddonManagerInternal.backgroundUpdateCheck();
- });
-});
-
-check_test_15 = () => {
- restartManager();
- AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
- "addon8@tests.mozilla.org"], function([a1, a8]) {
- Assert.notEqual(a1, null);
- Assert.equal(a1.version, "2.0");
- a1.uninstall();
-
- Assert.equal(a8, null);
-
- run_next_test();
- });
-};
-
-// Test that the update check correctly observes the
-// extensions.strictCompatibility pref and compatibility overrides.
-add_test(function run_test_17() {
- restartManager();
-
- writeInstallRDFForExtension({
- id: "addon9@tests.mozilla.org",
- version: "1.0",
- updateURL: "http://localhost:" + gPort + "/data/" + updateFile,
- targetApplications: [{
- id: appId,
- minVersion: "0.1",
- maxVersion: "0.2"
- }],
- name: "Test Addon 9",
- }, profileDir);
- restartManager();
-
- AddonManager.addInstallListener({
- onNewInstall(aInstall) {
- equal(aInstall.existingAddon.id, "addon9@tests.mozilla.org",
- "Saw unexpected onNewInstall for " + aInstall.existingAddon.id);
- Assert.equal(aInstall.version, "2.0");
- },
- onDownloadFailed(aInstall) {
- AddonManager.getAddonByID("addon9@tests.mozilla.org", function(a9) {
- a9.uninstall();
- run_next_test();
- });
- }
- });
-
- Services.prefs.setCharPref(PREF_GETADDONS_BYIDS,
- `http://localhost:${gPort}/data/test_update_addons.json`);
- Services.prefs.setCharPref(PREF_COMPAT_OVERRIDES,
- `http://localhost:${gPort}/data/test_update_compat.json`);
- Services.prefs.setBoolPref(PREF_GETADDONS_CACHE_ENABLED, true);
-
- AddonManagerInternal.backgroundUpdateCheck();
-});
-
-// Test that the update check correctly observes when an addon opts-in to
-// strict compatibility checking.
-add_test(function run_test_19() {
- restartManager();
- writeInstallRDFForExtension({
- id: "addon11@tests.mozilla.org",
- version: "1.0",
- updateURL: "http://localhost:" + gPort + "/data/" + updateFile,
- targetApplications: [{
- id: appId,
- minVersion: "0.1",
- maxVersion: "0.2"
- }],
- name: "Test Addon 11",
- }, profileDir);
- restartManager();
-
- AddonManager.getAddonByID("addon11@tests.mozilla.org", function(a11) {
- Assert.notEqual(a11, null);
-
- a11.findUpdates({
- onCompatibilityUpdateAvailable() {
- ok(false, "Should have not have seen compatibility information");
- },
-
- onUpdateAvailable() {
- ok(false, "Should not have seen an available update");
- },
-
- onUpdateFinished() {
- run_next_test();
- }
- }, AddonManager.UPDATE_WHEN_USER_REQUESTED);
- });
-});
-
-add_task(async function cleanup() {
- let addons = await AddonManager.getAddonsByTypes(["extension"]);
-
- for (let addon of addons)
- addon.uninstall();
-
- await promiseRestartManager();
-
- shutdownManager();
-
- await new Promise(executeSoon);
-});
-
-// Test that background update checks work for lightweight themes
-add_test(function run_test_7() {
- startupManager();
-
- LightweightThemeManager.currentTheme = {
- id: "1",
- version: "1",
- name: "Test LW Theme",
- description: "A test theme",
- author: "Mozilla",
- homepageURL: "http://localhost:" + gPort + "/data/index.html",
- headerURL: "http://localhost:" + gPort + "/data/header.png",
- footerURL: "http://localhost:" + gPort + "/data/footer.png",
- previewURL: "http://localhost:" + gPort + "/data/preview.png",
- iconURL: "http://localhost:" + gPort + "/data/icon.png",
- updateURL: "http://localhost:" + gPort + "/data/lwtheme.js"
- };
-
- // XXX The lightweight theme manager strips non-https updateURLs so hack it
- // back in.
- let themes = JSON.parse(Services.prefs.getCharPref("lightweightThemes.usedThemes"));
- Assert.equal(themes.length, 1);
- themes[0].updateURL = "http://localhost:" + gPort + "/data/lwtheme.js";
- Services.prefs.setCharPref("lightweightThemes.usedThemes", JSON.stringify(themes));
-
- testserver.registerPathHandler("/data/lwtheme.js", function(request, response) {
- response.write(JSON.stringify({
- id: "1",
- version: "2",
- name: "Updated Theme",
- description: "A test theme",
- author: "Mozilla",
- homepageURL: "http://localhost:" + gPort + "/data/index2.html",
- headerURL: "http://localhost:" + gPort + "/data/header.png",
- footerURL: "http://localhost:" + gPort + "/data/footer.png",
- previewURL: "http://localhost:" + gPort + "/data/preview.png",
- iconURL: "http://localhost:" + gPort + "/data/icon2.png",
- updateURL: "http://localhost:" + gPort + "/data/lwtheme.js"
- }));
- });
-
- AddonManager.getAddonByID("1@personas.mozilla.org", function(p1) {
- Assert.notEqual(p1, null);
- Assert.equal(p1.version, "1");
- Assert.equal(p1.name, "Test LW Theme");
- Assert.ok(p1.isActive);
- Assert.equal(p1.installDate.getTime(), p1.updateDate.getTime());
-
- // 5 seconds leeway seems like a lot, but tests can run slow and really if
- // this is within 5 seconds it is fine. If it is going to be wrong then it
- // is likely to be hours out at least
- Assert.ok((Date.now() - p1.installDate.getTime()) < 5000);
-
- gInstallDate = p1.installDate.getTime();
-
- prepare_test({
- "1@personas.mozilla.org": [
- ["onInstalling", false],
- "onInstalled"
- ]
- }, [
- "onExternalInstall"
- ], check_test_7);
-
- AddonManagerInternal.backgroundUpdateCheck();
- });
-});
-
-function check_test_7() {
- AddonManager.getAddonByID("1@personas.mozilla.org", function(p1) {
- Assert.notEqual(p1, null);
- Assert.equal(p1.version, "2");
- Assert.equal(p1.name, "Updated Theme");
- Assert.equal(p1.installDate.getTime(), gInstallDate);
- Assert.ok(p1.installDate.getTime() < p1.updateDate.getTime());
-
- // 5 seconds leeway seems like a lot, but tests can run slow and really if
- // this is within 5 seconds it is fine. If it is going to be wrong then it
- // is likely to be hours out at least
- Assert.ok((Date.now() - p1.updateDate.getTime()) < 5000);
-
- gInstallDate = p1.installDate.getTime();
-
- run_next_test();
- });
-}
deleted file mode 100644
--- a/toolkit/mozapps/extensions/test/xpcshell/test_upgrade_strictcompat.js
+++ /dev/null
@@ -1,209 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/
- */
-
-// This verifies that app upgrades produce the expected behaviours,
-// with strict compatibility checking enabled.
-
-// Enable loading extensions from the application scope
-Services.prefs.setIntPref("extensions.enabledScopes",
- AddonManager.SCOPE_PROFILE +
- AddonManager.SCOPE_APPLICATION);
-
-const profileDir = gProfD.clone();
-profileDir.append("extensions");
-
-const globalDir = Services.dirsvc.get("XREAddonAppDir", AM_Ci.nsIFile);
-globalDir.append("extensions");
-
-var gGlobalExisted = globalDir.exists();
-var gInstallTime = Date.now();
-
-function run_test() {
- createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2");
-
- // Will be enabled in the first version and disabled in subsequent versions
- writeInstallRDFForExtension({
- id: "addon1@tests.mozilla.org",
- version: "1.0",
- targetApplications: [{
- id: "xpcshell@tests.mozilla.org",
- minVersion: "1",
- maxVersion: "1"
- }],
- name: "Test Addon 1",
- targetPlatforms: [
- "XPCShell",
- "WINNT_x86",
- ]
- }, profileDir);
-
- // Works in all tested versions
- writeInstallRDFForExtension({
- id: "addon2@tests.mozilla.org",
- version: "1.0",
- targetApplications: [{
- id: "xpcshell@tests.mozilla.org",
- minVersion: "1",
- maxVersion: "2"
- }],
- name: "Test Addon 2",
- targetPlatforms: [
- "XPCShell_noarch-spidermonkey"
- ]
- }, profileDir);
-
- // Will be disabled in the first version and enabled in the second.
- writeInstallRDFForExtension({
- id: "addon3@tests.mozilla.org",
- version: "1.0",
- targetApplications: [{
- id: "xpcshell@tests.mozilla.org",
- minVersion: "2",
- maxVersion: "2"
- }],
- name: "Test Addon 3",
- }, profileDir);
-
- // Will be enabled in both versions but will change version in between
- var dest = writeInstallRDFForExtension({
- id: "addon4@tests.mozilla.org",
- version: "1.0",
- targetApplications: [{
- id: "xpcshell@tests.mozilla.org",
- minVersion: "1",
- maxVersion: "1"
- }],
- name: "Test Addon 4",
- }, globalDir);
- setExtensionModifiedTime(dest, gInstallTime);
-
- do_test_pending();
-
- Services.prefs.setBoolPref(PREF_EM_STRICT_COMPATIBILITY, true);
-
- run_test_1();
-}
-
-function end_test() {
- if (!gGlobalExisted) {
- globalDir.remove(true);
- } else {
- globalDir.append(do_get_expected_addon_name("addon4@tests.mozilla.org"));
- globalDir.remove(true);
- }
-
- Services.prefs.clearUserPref(PREF_EM_STRICT_COMPATIBILITY);
-
- executeSoon(do_test_finished);
-}
-
-// Test that the test extensions are all installed
-async function run_test_1() {
- await promiseStartupManager();
-
- AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
- "addon2@tests.mozilla.org",
- "addon3@tests.mozilla.org",
- "addon4@tests.mozilla.org"],
- function([a1, a2, a3, a4]) {
-
- Assert.notEqual(a1, null);
- Assert.ok(isExtensionInAddonsList(profileDir, a1.id));
-
- Assert.notEqual(a2, null);
- Assert.ok(isExtensionInAddonsList(profileDir, a2.id));
-
- Assert.notEqual(a3, null);
- Assert.ok(!isExtensionInAddonsList(profileDir, a3.id));
-
- Assert.notEqual(a4, null);
- Assert.ok(isExtensionInAddonsList(globalDir, a4.id));
- Assert.equal(a4.version, "1.0");
-
- executeSoon(run_test_2);
- });
-}
-
-// Test that upgrading the application disables now incompatible add-ons
-async function run_test_2() {
- // Upgrade the extension
- var dest = writeInstallRDFForExtension({
- id: "addon4@tests.mozilla.org",
- version: "2.0",
- targetApplications: [{
- id: "xpcshell@tests.mozilla.org",
- minVersion: "2",
- maxVersion: "2"
- }],
- name: "Test Addon 4",
- }, globalDir);
- setExtensionModifiedTime(dest, gInstallTime);
-
- await promiseRestartManager("2");
-
- AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
- "addon2@tests.mozilla.org",
- "addon3@tests.mozilla.org",
- "addon4@tests.mozilla.org"],
- function([a1, a2, a3, a4]) {
-
- Assert.notEqual(a1, null);
- Assert.ok(!isExtensionInAddonsList(profileDir, a1.id));
-
- Assert.notEqual(a2, null);
- Assert.ok(isExtensionInAddonsList(profileDir, a2.id));
-
- Assert.notEqual(a3, null);
- Assert.ok(isExtensionInAddonsList(profileDir, a3.id));
-
- Assert.notEqual(a4, null);
- Assert.ok(isExtensionInAddonsList(globalDir, a4.id));
- Assert.equal(a4.version, "2.0");
-
- executeSoon(run_test_3);
- });
-}
-
-// Test that nothing changes when only the build ID changes.
-function run_test_3() {
- // Upgrade the extension
- var dest = writeInstallRDFForExtension({
- id: "addon4@tests.mozilla.org",
- version: "3.0",
- targetApplications: [{
- id: "xpcshell@tests.mozilla.org",
- minVersion: "3",
- maxVersion: "3"
- }],
- name: "Test Addon 4",
- }, globalDir);
- setExtensionModifiedTime(dest, gInstallTime);
-
- // Simulates a simple Build ID change, the platform deletes extensions.ini
- // whenever the application is changed.
- gAddonStartup.remove(true);
- restartManager();
-
- AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
- "addon2@tests.mozilla.org",
- "addon3@tests.mozilla.org",
- "addon4@tests.mozilla.org"],
- function([a1, a2, a3, a4]) {
-
- Assert.notEqual(a1, null);
- Assert.ok(!isExtensionInAddonsList(profileDir, a1.id));
-
- Assert.notEqual(a2, null);
- Assert.ok(isExtensionInAddonsList(profileDir, a2.id));
-
- Assert.notEqual(a3, null);
- Assert.ok(isExtensionInAddonsList(profileDir, a3.id));
-
- Assert.notEqual(a4, null);
- Assert.ok(isExtensionInAddonsList(globalDir, a4.id));
- Assert.equal(a4.version, "2.0");
-
- end_test();
- });
-}
--- a/toolkit/mozapps/extensions/test/xpcshell/xpcshell.ini
+++ b/toolkit/mozapps/extensions/test/xpcshell/xpcshell.ini
@@ -138,28 +138,22 @@ tags = blocklist
skip-if = os == "android"
[test_bug468528.js]
# Bug 676992: test consistently hangs on Android
skip-if = os == "android"
tags = blocklist
[test_bug470377_1.js]
# Bug 676992: test consistently hangs on Android
skip-if = os == "android"
-[test_bug470377_1_strictcompat.js]
-# Bug 676992: test consistently hangs on Android
-skip-if = os == "android"
[test_bug470377_2.js]
# Bug 676992: test consistently hangs on Android
skip-if = os == "android"
[test_bug470377_3.js]
# Bug 676992: test consistently hangs on Android
skip-if = os == "android"
-[test_bug470377_3_strictcompat.js]
-# Bug 676992: test consistently hangs on Android
-skip-if = os == "android"
[test_bug470377_4.js]
# Bug 676992: test consistently hangs on Android
skip-if = os == "android"
[test_bug514327_1.js]
# Bug 676992: test consistently hangs on Android
skip-if = os == "android"
tags = blocklist
[test_bug514327_2.js]
@@ -196,17 +190,16 @@ tags = blocklist
[test_bug740612.js]
[test_bug753900.js]
[test_bug757663.js]
[test_bug953156.js]
[test_checkcompatibility.js]
[test_childprocess.js]
[test_compatoverrides.js]
[test_corrupt.js]
-[test_corrupt_strictcompat.js]
[test_corruptfile.js]
[test_dataDirectory.js]
[test_db_path.js]
head =
[test_default_providers_pref.js]
[test_dictionary.js]
[test_disable.js]
[test_distribution.js]
@@ -252,19 +245,16 @@ tags = blocklist
[test_gfxBlacklist_prefs.js]
# Bug 1248787 - consistently fails
skip-if = true
tags = blocklist
[test_install.js]
[test_install_icons.js]
# Bug 676992: test consistently hangs on Android
skip-if = os == "android"
-[test_install_strictcompat.js]
-# Bug 676992: test consistently hangs on Android
-skip-if = os == "android"
[test_isDebuggable.js]
[test_legacy.js]
skip-if = !allow_legacy_extensions || appname == "thunderbird"
[test_locale.js]
[test_manifest.js]
[test_no_addons.js]
[test_onPropertyChanged_appDisabled.js]
[test_permissions.js]
@@ -308,39 +298,32 @@ skip-if = os == "win" # Bug 1358846
[test_uninstall.js]
[test_update.js]
# Bug 676992: test consistently hangs on Android; bug 1330227 - linux
skip-if = os == "android" || os == "linux"
[test_update_rdf.js]
[test_update_webextensions.js]
tags = webextensions
[test_updateCancel.js]
-[test_update_strictcompat.js]
-# Bug 676992: test consistently hangs on Android
-skip-if = os == "android"
[test_update_ignorecompat.js]
skip-if = true # Bug 676922 Bug 1437697
[test_updatecheck.js]
# Bug 676992: test consistently hangs on Android
skip-if = os == "android"
[test_json_updatecheck.js]
[test_migrate_state_prefs.js]
[test_seen.js]
[test_updateid.js]
# Bug 676992: test consistently hangs on Android
skip-if = os == "android"
[test_update_compatmode.js]
[test_upgrade.js]
# Bug 676992: test consistently hangs on Android
skip-if = os == "android"
run-sequentially = Uses global XCurProcD dir.
-[test_upgrade_strictcompat.js]
-# Bug 676992: test consistently hangs on Android
-skip-if = os == "android"
-run-sequentially = Uses global XCurProcD dir.
[test_overrideblocklist.js]
run-sequentially = Uses global XCurProcD dir.
tags = blocklist
[test_sideloads.js]
[test_sourceURI.js]
[test_webextension_icons.js]
skip-if = appname == "thunderbird"
tags = webextensions