summaryrefslogtreecommitdiffstats
path: root/toolkit/mozapps/extensions/test/xpcshell/test_bug542391.js
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/mozapps/extensions/test/xpcshell/test_bug542391.js')
-rw-r--r--toolkit/mozapps/extensions/test/xpcshell/test_bug542391.js486
1 files changed, 0 insertions, 486 deletions
diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_bug542391.js b/toolkit/mozapps/extensions/test/xpcshell/test_bug542391.js
deleted file mode 100644
index ceb472f98..000000000
--- a/toolkit/mozapps/extensions/test/xpcshell/test_bug542391.js
+++ /dev/null
@@ -1,486 +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/.
- */
-
-const URI_EXTENSION_UPDATE_DIALOG = "chrome://mozapps/content/extensions/update.xul";
-const PREF_EM_SHOW_MISMATCH_UI = "extensions.showMismatchUI";
-
-// The test extension uses an insecure update url.
-Services.prefs.setBoolPref("extensions.checkUpdateSecurity", false);
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-const Cu = Components.utils;
-const Cr = Components.results;
-
-Cu.import("resource://testing-common/httpd.js");
-var testserver;
-
-const profileDir = gProfD.clone();
-profileDir.append("extensions");
-
-var gInstallUpdate = false;
-var gCheckUpdates = false;
-
-// This will be called to show the compatibility update dialog.
-var WindowWatcher = {
- expected: false,
- arguments: null,
-
- openWindow: function(parent, url, name, features, args) {
- do_check_true(Services.startup.interrupted);
- do_check_eq(url, URI_EXTENSION_UPDATE_DIALOG);
- do_check_true(this.expected);
- this.expected = false;
- this.arguments = args.QueryInterface(AM_Ci.nsIVariant);
-
- var updated = !gCheckUpdates;
- if (gCheckUpdates) {
- AddonManager.getAddonByID("override1x2-1x3@tests.mozilla.org", function(a6) {
- a6.findUpdates({
- onUpdateFinished: function() {
- AddonManagerPrivate.removeStartupChange("disabled", "override1x2-1x3@tests.mozilla.org");
- updated = true;
- }
- }, AddonManager.UPDATE_WHEN_NEW_APP_INSTALLED);
- });
- }
-
- var installed = !gInstallUpdate;
- if (gInstallUpdate) {
- // Simulate installing an update while in the dialog
- installAllFiles([do_get_addon("upgradeable1x2-3_2")], function() {
- AddonManagerPrivate.removeStartupChange("disabled", "upgradeable1x2-3@tests.mozilla.org");
- AddonManagerPrivate.addStartupChange("updated", "upgradeable1x2-3@tests.mozilla.org");
- installed = true;
- });
- }
-
- // The dialog is meant to be opened modally and the install operation can be
- // asynchronous, so we must spin an event loop (like the modal window does)
- // until the install is complete
- let thr = AM_Cc["@mozilla.org/thread-manager;1"].
- getService(AM_Ci.nsIThreadManager).
- mainThread;
-
- while (!installed || !updated)
- thr.processNextEvent(false);
- },
-
- QueryInterface: function(iid) {
- if (iid.equals(Ci.nsIWindowWatcher)
- || iid.equals(Ci.nsISupports))
- return this;
-
- throw Cr.NS_ERROR_NO_INTERFACE;
- }
-}
-
-var WindowWatcherFactory = {
- createInstance: function createInstance(outer, iid) {
- if (outer != null)
- throw Components.results.NS_ERROR_NO_AGGREGATION;
- return WindowWatcher.QueryInterface(iid);
- }
-};
-
-var registrar = Components.manager.QueryInterface(Components.interfaces.nsIComponentRegistrar);
-registrar.registerFactory(Components.ID("{1dfeb90a-2193-45d5-9cb8-864928b2af55}"),
- "Fake Window Watcher",
- "@mozilla.org/embedcomp/window-watcher;1", WindowWatcherFactory);
-
-function check_state_v1([a1, a2, a3, a4, a5, a6]) {
- do_check_neq(a1, null);
- do_check_false(a1.appDisabled);
- do_check_false(a1.userDisabled);
- do_check_true(a1.isActive);
- do_check_true(isExtensionInAddonsList(profileDir, a1.id));
-
- do_check_neq(a2, null);
- do_check_false(a2.appDisabled);
- do_check_true(a2.userDisabled);
- do_check_false(a2.isActive);
- do_check_false(isExtensionInAddonsList(profileDir, a2.id));
-
- do_check_neq(a3, null);
- do_check_false(a3.appDisabled);
- do_check_false(a3.userDisabled);
- do_check_true(a3.isActive);
- do_check_true(isExtensionInAddonsList(profileDir, a3.id));
- do_check_eq(a3.version, "1.0");
-
- do_check_neq(a4, null);
- do_check_false(a4.appDisabled);
- do_check_true(a4.userDisabled);
- do_check_false(a4.isActive);
- do_check_false(isExtensionInAddonsList(profileDir, a4.id));
-
- do_check_neq(a5, null);
- do_check_false(a5.appDisabled);
- do_check_false(a5.userDisabled);
- do_check_true(a5.isActive);
- do_check_true(isExtensionInAddonsList(profileDir, a5.id));
-
- do_check_neq(a6, null);
- do_check_false(a6.appDisabled);
- do_check_false(a6.userDisabled);
- do_check_true(a6.isActive);
- do_check_true(isExtensionInAddonsList(profileDir, a6.id));
-}
-
-function check_state_v1_2([a1, a2, a3, a4, a5, a6]) {
- do_check_neq(a1, null);
- do_check_false(a1.appDisabled);
- do_check_false(a1.userDisabled);
- do_check_true(a1.isActive);
- do_check_true(isExtensionInAddonsList(profileDir, a1.id));
-
- do_check_neq(a2, null);
- do_check_false(a2.appDisabled);
- do_check_true(a2.userDisabled);
- do_check_false(a2.isActive);
- do_check_false(isExtensionInAddonsList(profileDir, a2.id));
-
- do_check_neq(a3, null);
- do_check_true(a3.appDisabled);
- do_check_false(a3.userDisabled);
- do_check_false(a3.isActive);
- do_check_false(isExtensionInAddonsList(profileDir, a3.id));
- do_check_eq(a3.version, "2.0");
-
- do_check_neq(a4, null);
- do_check_false(a4.appDisabled);
- do_check_true(a4.userDisabled);
- do_check_false(a4.isActive);
- do_check_false(isExtensionInAddonsList(profileDir, a4.id));
-
- do_check_neq(a5, null);
- do_check_false(a5.appDisabled);
- do_check_false(a5.userDisabled);
- do_check_true(a5.isActive);
- do_check_true(isExtensionInAddonsList(profileDir, a5.id));
-
- do_check_neq(a6, null);
- do_check_false(a6.appDisabled);
- do_check_false(a6.userDisabled);
- do_check_true(a6.isActive);
- do_check_true(isExtensionInAddonsList(profileDir, a6.id));
-}
-
-function check_state_v2([a1, a2, a3, a4, a5, a6]) {
- do_check_neq(a1, null);
- do_check_true(a1.appDisabled);
- do_check_false(a1.userDisabled);
- do_check_false(a1.isActive);
- do_check_false(isExtensionInAddonsList(profileDir, a1.id));
-
- do_check_neq(a2, null);
- do_check_false(a2.appDisabled);
- do_check_true(a2.userDisabled);
- do_check_false(a2.isActive);
- do_check_false(isExtensionInAddonsList(profileDir, a2.id));
-
- do_check_neq(a3, null);
- do_check_false(a3.appDisabled);
- do_check_false(a3.userDisabled);
- do_check_true(a3.isActive);
- do_check_true(isExtensionInAddonsList(profileDir, a3.id));
- do_check_eq(a3.version, "1.0");
-
- do_check_neq(a4, null);
- do_check_false(a4.appDisabled);
- do_check_true(a4.userDisabled);
- do_check_false(a4.isActive);
- do_check_false(isExtensionInAddonsList(profileDir, a4.id));
-
- do_check_neq(a5, null);
- do_check_false(a5.appDisabled);
- do_check_false(a5.userDisabled);
- do_check_true(a5.isActive);
- do_check_true(isExtensionInAddonsList(profileDir, a5.id));
-
- do_check_neq(a6, null);
- do_check_false(a6.appDisabled);
- do_check_false(a6.userDisabled);
- do_check_true(a6.isActive);
- do_check_true(isExtensionInAddonsList(profileDir, a6.id));
-}
-
-function check_state_v3([a1, a2, a3, a4, a5, a6]) {
- do_check_neq(a1, null);
- do_check_true(a1.appDisabled);
- do_check_false(a1.userDisabled);
- do_check_false(a1.isActive);
- do_check_false(isExtensionInAddonsList(profileDir, a1.id));
-
- do_check_neq(a2, null);
- do_check_true(a2.appDisabled);
- do_check_true(a2.userDisabled);
- do_check_false(a2.isActive);
- do_check_false(isExtensionInAddonsList(profileDir, a2.id));
-
- do_check_neq(a3, null);
- do_check_true(a3.appDisabled);
- do_check_false(a3.userDisabled);
- do_check_false(a3.isActive);
- do_check_false(isExtensionInAddonsList(profileDir, a3.id));
- do_check_eq(a3.version, "1.0");
-
- do_check_neq(a4, null);
- do_check_false(a4.appDisabled);
- do_check_true(a4.userDisabled);
- do_check_false(a4.isActive);
- do_check_false(isExtensionInAddonsList(profileDir, a4.id));
-
- do_check_neq(a5, null);
- do_check_false(a5.appDisabled);
- do_check_false(a5.userDisabled);
- do_check_true(a5.isActive);
- do_check_true(isExtensionInAddonsList(profileDir, a5.id));
-
- do_check_neq(a6, null);
- do_check_false(a6.appDisabled);
- do_check_false(a6.userDisabled);
- do_check_true(a6.isActive);
- do_check_true(isExtensionInAddonsList(profileDir, a6.id));
-}
-
-function check_state_v3_2([a1, a2, a3, a4, a5, a6]) {
- do_check_neq(a1, null);
- do_check_true(a1.appDisabled);
- do_check_false(a1.userDisabled);
- do_check_false(a1.isActive);
- do_check_false(isExtensionInAddonsList(profileDir, a1.id));
-
- do_check_neq(a2, null);
- do_check_true(a2.appDisabled);
- do_check_true(a2.userDisabled);
- do_check_false(a2.isActive);
- do_check_false(isExtensionInAddonsList(profileDir, a2.id));
-
- do_check_neq(a3, null);
- do_check_false(a3.appDisabled);
- do_check_false(a3.userDisabled);
- do_check_true(a3.isActive);
- do_check_true(isExtensionInAddonsList(profileDir, a3.id));
- do_check_eq(a3.version, "2.0");
-
- do_check_neq(a4, null);
- do_check_false(a4.appDisabled);
- do_check_true(a4.userDisabled);
- do_check_false(a4.isActive);
- do_check_false(isExtensionInAddonsList(profileDir, a4.id));
-
- do_check_neq(a5, null);
- do_check_false(a5.appDisabled);
- do_check_false(a5.userDisabled);
- do_check_true(a5.isActive);
- do_check_true(isExtensionInAddonsList(profileDir, a5.id));
-
- do_check_neq(a6, null);
- do_check_false(a6.appDisabled);
- do_check_false(a6.userDisabled);
- do_check_true(a6.isActive);
- do_check_true(isExtensionInAddonsList(profileDir, a6.id));
-}
-
-// Install all the test add-ons, disable two of them and "upgrade" the app to
-// version 2 which will appDisable one.
-add_task(function* init() {
- createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1");
-
- Services.prefs.setBoolPref(PREF_EM_SHOW_MISMATCH_UI, true);
-
- // Add an extension to the profile to make sure the dialog doesn't show up
- // on new profiles
- var dest = writeInstallRDFForExtension({
- id: "addon1@tests.mozilla.org",
- version: "1.0",
- targetApplications: [{
- id: "xpcshell@tests.mozilla.org",
- minVersion: "1",
- maxVersion: "1"
- }],
- name: "Test Addon 1",
- }, profileDir);
-
- // Create and configure the HTTP server.
- testserver = new HttpServer();
- testserver.registerDirectory("/data/", do_get_file("data"));
- testserver.registerDirectory("/addons/", do_get_file("addons"));
- testserver.start(4444);
-
- startupManager();
-
- // Remove the add-on we installed directly in the profile directory;
- // this should show as uninstalled on next restart
- dest.remove(true);
-
- // Load up an initial set of add-ons
- yield promiseInstallAllFiles([do_get_addon("min1max1"),
- do_get_addon("min1max2"),
- do_get_addon("upgradeable1x2-3_1"),
- do_get_addon("min1max3"),
- do_get_addon("min1max3b"),
- do_get_addon("override1x2-1x3")]);
- yield promiseRestartManager();
-
- check_startup_changes("installed", []);
- check_startup_changes("updated", []);
- check_startup_changes("uninstalled", ["addon1@tests.mozilla.org"]);
- check_startup_changes("disabled", []);
- check_startup_changes("enabled", []);
-
- // user-disable two add-ons
- let [a2, a4] = yield promiseAddonsByIDs(["min1max2@tests.mozilla.org",
- "min1max3@tests.mozilla.org"]);
- do_check_true(a2 != null && a4 != null);
- a2.userDisabled = true;
- a4.userDisabled = true;
- yield promiseRestartManager();
- check_startup_changes("installed", []);
- check_startup_changes("updated", []);
- check_startup_changes("uninstalled", []);
- check_startup_changes("disabled", []);
- check_startup_changes("enabled", []);
-
- let addons = yield promiseAddonsByIDs(["min1max1@tests.mozilla.org",
- "min1max2@tests.mozilla.org",
- "upgradeable1x2-3@tests.mozilla.org",
- "min1max3@tests.mozilla.org",
- "min1max3b@tests.mozilla.org",
- "override1x2-1x3@tests.mozilla.org"]);
- check_state_v1(addons);
-
- // Restart as version 2, add-on _1 should become app-disabled
- WindowWatcher.expected = true;
- yield promiseRestartManager("2");
- check_startup_changes("installed", []);
- check_startup_changes("updated", []);
- check_startup_changes("uninstalled", []);
- check_startup_changes("disabled", ["min1max1@tests.mozilla.org"]);
- check_startup_changes("enabled", []);
- do_check_false(WindowWatcher.expected);
-
- addons = yield promiseAddonsByIDs(["min1max1@tests.mozilla.org",
- "min1max2@tests.mozilla.org",
- "upgradeable1x2-3@tests.mozilla.org",
- "min1max3@tests.mozilla.org",
- "min1max3b@tests.mozilla.org",
- "override1x2-1x3@tests.mozilla.org"]);
- check_state_v2(addons);
-});
-
-// Upgrade to version 3 which will appDisable addons
-// upgradeable1x2-3 and override1x2-1x3
-// Only the newly disabled add-ons should be passed to the
-// upgrade window
-add_task(function* run_test_1() {
- gCheckUpdates = true;
- WindowWatcher.expected = true;
-
- yield promiseRestartManager("3");
- check_startup_changes("installed", []);
- check_startup_changes("updated", []);
- check_startup_changes("uninstalled", []);
- check_startup_changes("disabled", ["upgradeable1x2-3@tests.mozilla.org"]);
- check_startup_changes("enabled", []);
- do_check_false(WindowWatcher.expected);
- gCheckUpdates = false;
-
- let addons = yield promiseAddonsByIDs(["min1max1@tests.mozilla.org",
- "min1max2@tests.mozilla.org",
- "upgradeable1x2-3@tests.mozilla.org",
- "min1max3@tests.mozilla.org",
- "min1max3b@tests.mozilla.org",
- "override1x2-1x3@tests.mozilla.org"]);
- check_state_v3(addons);
-
- do_check_eq(WindowWatcher.arguments.length, 2);
- do_check_true(WindowWatcher.arguments.indexOf("upgradeable1x2-3@tests.mozilla.org") >= 0);
- do_check_true(WindowWatcher.arguments.indexOf("override1x2-1x3@tests.mozilla.org") >= 0);
-});
-
-// Downgrade to version 2 which will remove appDisable from two add-ons
-// Still displays the compat window, because metadata is not recently updated
-add_task(function* run_test_2() {
- WindowWatcher.expected = true;
- yield promiseRestartManager("2");
- check_startup_changes("installed", []);
- check_startup_changes("updated", []);
- check_startup_changes("uninstalled", []);
- check_startup_changes("disabled", []);
- check_startup_changes("enabled", ["upgradeable1x2-3@tests.mozilla.org"]);
- do_check_false(WindowWatcher.expected);
-
- let addons = yield promiseAddonsByIDs(["min1max1@tests.mozilla.org",
- "min1max2@tests.mozilla.org",
- "upgradeable1x2-3@tests.mozilla.org",
- "min1max3@tests.mozilla.org",
- "min1max3b@tests.mozilla.org",
- "override1x2-1x3@tests.mozilla.org"]);
- check_state_v2(addons);
-});
-
-// Upgrade back to version 3 which should only appDisable
-// upgradeable1x2-3, because we already have the override
-// stored in our DB for override1x2-1x3. Ensure that when
-// the upgrade dialog updates an add-on no restart is necessary
-add_task(function* run_test_5() {
- Services.prefs.setBoolPref(PREF_EM_SHOW_MISMATCH_UI, true);
- // tell the mock compatibility window to install the available upgrade
- gInstallUpdate = true;
-
- WindowWatcher.expected = true;
- yield promiseRestartManager("3");
- check_startup_changes("installed", []);
- check_startup_changes("updated", ["upgradeable1x2-3@tests.mozilla.org"]);
- check_startup_changes("uninstalled", []);
- check_startup_changes("disabled", []);
- check_startup_changes("enabled", []);
- do_check_false(WindowWatcher.expected);
- gInstallUpdate = false;
-
- let addons = yield promiseAddonsByIDs(["min1max1@tests.mozilla.org",
- "min1max2@tests.mozilla.org",
- "upgradeable1x2-3@tests.mozilla.org",
- "min1max3@tests.mozilla.org",
- "min1max3b@tests.mozilla.org",
- "override1x2-1x3@tests.mozilla.org"]);
- check_state_v3_2(addons);
-
- do_check_eq(WindowWatcher.arguments.length, 1);
- do_check_true(WindowWatcher.arguments.indexOf("upgradeable1x2-3@tests.mozilla.org") >= 0);
-});
-
-// Downgrade to version 1 which will appEnable all the add-ons
-// except upgradeable1x2-3; the update we installed isn't compatible with 1
-add_task(function* run_test_6() {
- WindowWatcher.expected = true;
- yield promiseRestartManager("1");
- check_startup_changes("installed", []);
- check_startup_changes("updated", []);
- check_startup_changes("uninstalled", []);
- check_startup_changes("disabled", ["upgradeable1x2-3@tests.mozilla.org"]);
- check_startup_changes("enabled", ["min1max1@tests.mozilla.org"]);
- do_check_false(WindowWatcher.expected);
-
- let addons = yield promiseAddonsByIDs(["min1max1@tests.mozilla.org",
- "min1max2@tests.mozilla.org",
- "upgradeable1x2-3@tests.mozilla.org",
- "min1max3@tests.mozilla.org",
- "min1max3b@tests.mozilla.org",
- "override1x2-1x3@tests.mozilla.org"]);
- check_state_v1_2(addons);
-});
-
-add_task(function* cleanup() {
- return new Promise((resolve, reject) => {
- testserver.stop(resolve);
- });
-});
-
-function run_test() {
- run_next_test();
-}