Bug 1449255: Part 25 - Fold test_bug596607 into test_registry.js. r?aswan draft
authorKris Maglione <maglione.k@gmail.com>
Tue, 27 Mar 2018 16:54:01 -0700
changeset 773494 a2359766d823d741bbe90d1c2b1a658962e6b679
parent 773493 7b3a4b5447e3d0b14ef553a9351eb8a78cc12ad3
child 773495 04b3e71e48d7b134d5fca4d8f53b43c0a70cdb51
push id104243
push usermaglione.k@gmail.com
push dateWed, 28 Mar 2018 00:15:32 +0000
reviewersaswan
bugs1449255, 596607
milestone61.0a1
Bug 1449255: Part 25 - Fold test_bug596607 into test_registry.js. r?aswan MozReview-Commit-ID: KK6zpHmKlWS
toolkit/mozapps/extensions/test/xpcshell/test_bug596607.js
toolkit/mozapps/extensions/test/xpcshell/test_registry.js
toolkit/mozapps/extensions/test/xpcshell/xpcshell.ini
deleted file mode 100644
--- a/toolkit/mozapps/extensions/test/xpcshell/test_bug596607.js
+++ /dev/null
@@ -1,147 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/
- */
-
-// Tests that a reference to a non-existent extension in the registry doesn't
-// break things
-createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2");
-
-// Enable loading extensions from the user and system scopes
-Services.prefs.setIntPref("extensions.enabledScopes",
-                          AddonManager.SCOPE_PROFILE + AddonManager.SCOPE_USER +
-                          AddonManager.SCOPE_SYSTEM);
-
-var addon1 = {
-  id: "addon1@tests.mozilla.org",
-  version: "1.0",
-  name: "Test 1",
-  targetApplications: [{
-    id: "xpcshell@tests.mozilla.org",
-    minVersion: "1",
-    maxVersion: "1"
-  }]
-};
-
-var addon2 = {
-  id: "addon2@tests.mozilla.org",
-  version: "2.0",
-  name: "Test 2",
-  targetApplications: [{
-    id: "xpcshell@tests.mozilla.org",
-    minVersion: "1",
-    maxVersion: "2"
-  }]
-};
-
-const addon1Dir = writeInstallRDFForExtension(addon1, gProfD, "addon1");
-const addon2Dir = writeInstallRDFForExtension(addon2, gProfD, "addon2");
-const addon3Dir = gProfD.clone();
-addon3Dir.append("addon3@tests.mozilla.org");
-
-let registry;
-
-function run_test() {
-  // This test only works where there is a registry.
-  if (!("nsIWindowsRegKey" in Ci))
-    return;
-
-  registry = new MockRegistry();
-  registerCleanupFunction(() => {
-    registry.shutdown();
-  });
-
-  do_test_pending();
-
-  run_test_1();
-}
-
-// Tests whether starting a fresh profile with a bad entry works
-function run_test_1() {
-  registry.setValue(Ci.nsIWindowsRegKey.ROOT_KEY_LOCAL_MACHINE,
-                    "SOFTWARE\\Mozilla\\XPCShell\\Extensions",
-                    "addon1@tests.mozilla.org", addon1Dir.path);
-  registry.setValue(Ci.nsIWindowsRegKey.ROOT_KEY_CURRENT_USER,
-                    "SOFTWARE\\Mozilla\\XPCShell\\Extensions",
-                    "addon2@tests.mozilla.org", addon2Dir.path);
-  registry.setValue(Ci.nsIWindowsRegKey.ROOT_KEY_CURRENT_USER,
-                    "SOFTWARE\\Mozilla\\XPCShell\\Extensions",
-                    "addon3@tests.mozilla.org", addon3Dir.path);
-
-  startupManager();
-
-  AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
-                               "addon2@tests.mozilla.org",
-                               "addon3@tests.mozilla.org"], function([a1, a2, a3]) {
-    Assert.notEqual(a1, null);
-    Assert.ok(a1.isActive);
-    Assert.ok(!hasFlag(a1.permissions, AddonManager.PERM_CAN_UNINSTALL));
-    Assert.equal(a1.scope, AddonManager.SCOPE_SYSTEM);
-
-    Assert.notEqual(a2, null);
-    Assert.ok(a2.isActive);
-    Assert.ok(!hasFlag(a2.permissions, AddonManager.PERM_CAN_UNINSTALL));
-    Assert.equal(a2.scope, AddonManager.SCOPE_USER);
-
-    Assert.equal(a3, null);
-
-    executeSoon(run_test_2);
-  });
-}
-
-// Tests whether removing the bad entry has any effect
-function run_test_2() {
-  shutdownManager();
-
-  registry.setValue(Ci.nsIWindowsRegKey.ROOT_KEY_CURRENT_USER,
-                    "SOFTWARE\\Mozilla\\XPCShell\\Extensions",
-                    "addon3@tests.mozilla.org", addon3Dir.path);
-
-  startupManager(false);
-
-  AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
-                               "addon2@tests.mozilla.org",
-                               "addon3@tests.mozilla.org"], function([a1, a2, a3]) {
-    Assert.notEqual(a1, null);
-    Assert.ok(a1.isActive);
-    Assert.ok(!hasFlag(a1.permissions, AddonManager.PERM_CAN_UNINSTALL));
-    Assert.equal(a1.scope, AddonManager.SCOPE_SYSTEM);
-
-    Assert.notEqual(a2, null);
-    Assert.ok(a2.isActive);
-    Assert.ok(!hasFlag(a2.permissions, AddonManager.PERM_CAN_UNINSTALL));
-    Assert.equal(a2.scope, AddonManager.SCOPE_USER);
-
-    Assert.equal(a3, null);
-
-    executeSoon(run_test_3);
-  });
-}
-
-// Tests adding the bad entry to an existing profile has any effect
-function run_test_3() {
-  shutdownManager();
-
-  registry.setValue(Ci.nsIWindowsRegKey.ROOT_KEY_CURRENT_USER,
-                    "SOFTWARE\\Mozilla\\XPCShell\\Extensions",
-                    "addon3@tests.mozilla.org", null);
-
-  startupManager(false);
-
-  AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
-                               "addon2@tests.mozilla.org",
-                               "addon3@tests.mozilla.org"], function([a1, a2, a3]) {
-    Assert.notEqual(a1, null);
-    Assert.ok(a1.isActive);
-    Assert.ok(!hasFlag(a1.permissions, AddonManager.PERM_CAN_UNINSTALL));
-    Assert.equal(a1.scope, AddonManager.SCOPE_SYSTEM);
-
-    Assert.notEqual(a2, null);
-    Assert.ok(a2.isActive);
-    Assert.ok(!hasFlag(a2.permissions, AddonManager.PERM_CAN_UNINSTALL));
-    Assert.equal(a2.scope, AddonManager.SCOPE_USER);
-
-    Assert.equal(a3, null);
-
-    executeSoon(do_test_finished);
-  });
-}
--- a/toolkit/mozapps/extensions/test/xpcshell/test_registry.js
+++ b/toolkit/mozapps/extensions/test/xpcshell/test_registry.js
@@ -27,132 +27,132 @@ var addon2 = {
   name: "Test 2",
   targetApplications: [{
     id: "xpcshell@tests.mozilla.org",
     minVersion: "1",
     maxVersion: "2"
   }]
 };
 
+const IDS = ["addon1@tests.mozilla.org",
+             "addon2@tests.mozilla.org",
+             "addon3@tests.mozilla.org"];
+
+
 const addon1Dir = writeInstallRDFForExtension(addon1, gProfD, "addon1");
 const addon2Dir = writeInstallRDFForExtension(addon2, gProfD, "addon2");
+const addon3Dir = gProfD.clone();
+addon3Dir.append("addon3@tests.mozilla.org");
 
 let registry;
 
-function run_test() {
-  // This test only works where there is a registry.
-  if (!("nsIWindowsRegKey" in Ci))
-    return;
-
+add_task(async function setup() {
   registry = new MockRegistry();
   registerCleanupFunction(() => {
     registry.shutdown();
   });
-
-  do_test_pending();
-
-  run_test_1();
-}
+});
 
 // Tests whether basic registry install works
-function run_test_1() {
+add_task(async function test_1() {
   registry.setValue(Ci.nsIWindowsRegKey.ROOT_KEY_LOCAL_MACHINE,
                    "SOFTWARE\\Mozilla\\XPCShell\\Extensions",
                     "addon1@tests.mozilla.org", addon1Dir.path);
   registry.setValue(Ci.nsIWindowsRegKey.ROOT_KEY_CURRENT_USER,
                     "SOFTWARE\\Mozilla\\XPCShell\\Extensions",
                     "addon2@tests.mozilla.org", addon2Dir.path);
+  registry.setValue(Ci.nsIWindowsRegKey.ROOT_KEY_CURRENT_USER,
+                    "SOFTWARE\\Mozilla\\XPCShell\\Extensions",
+                    "addon3@tests.mozilla.org", addon3Dir.path);
 
-  startupManager();
+  await promiseStartupManager();
 
-  AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
-                               "addon2@tests.mozilla.org"], function([a1, a2]) {
-    Assert.notEqual(a1, null);
-    Assert.ok(a1.isActive);
-    Assert.ok(!hasFlag(a1.permissions, AddonManager.PERM_CAN_UNINSTALL));
-    Assert.equal(a1.scope, AddonManager.SCOPE_SYSTEM);
+  let [a1, a2, a3] = await AddonManager.getAddonsByIDs(IDS);
+  notEqual(a1, null);
+  ok(a1.isActive);
+  ok(!hasFlag(a1.permissions, AddonManager.PERM_CAN_UNINSTALL));
+  equal(a1.scope, AddonManager.SCOPE_SYSTEM);
 
-    Assert.notEqual(a2, null);
-    Assert.ok(a2.isActive);
-    Assert.ok(!hasFlag(a2.permissions, AddonManager.PERM_CAN_UNINSTALL));
-    Assert.equal(a2.scope, AddonManager.SCOPE_USER);
+  notEqual(a2, null);
+  ok(a2.isActive);
+  ok(!hasFlag(a2.permissions, AddonManager.PERM_CAN_UNINSTALL));
+  equal(a2.scope, AddonManager.SCOPE_USER);
 
-    executeSoon(run_test_2);
-  });
-}
+  equal(a3, null);
+});
 
 // Tests whether uninstalling from the registry works
-function run_test_2() {
+add_task(async function test_2() {
   registry.setValue(Ci.nsIWindowsRegKey.ROOT_KEY_LOCAL_MACHINE,
                     "SOFTWARE\\Mozilla\\XPCShell\\Extensions",
                     "addon1@tests.mozilla.org", null);
   registry.setValue(Ci.nsIWindowsRegKey.ROOT_KEY_CURRENT_USER,
                     "SOFTWARE\\Mozilla\\XPCShell\\Extensions",
                     "addon2@tests.mozilla.org", null);
+  registry.setValue(Ci.nsIWindowsRegKey.ROOT_KEY_CURRENT_USER,
+                    "SOFTWARE\\Mozilla\\XPCShell\\Extensions",
+                    "addon3@tests.mozilla.org", null);
 
-  restartManager();
+  await promiseRestartManager();
 
-  AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
-                               "addon2@tests.mozilla.org"], function([a1, a2]) {
-    Assert.equal(a1, null);
-    Assert.equal(a2, null);
-
-    executeSoon(run_test_3);
-  });
-}
+  let [a1, a2, a3] = await AddonManager.getAddonsByIDs(IDS);
+  equal(a1, null);
+  equal(a2, null);
+  equal(a3, null);
+});
 
 // Checks that the ID in the registry must match that in the install manifest
-function run_test_3() {
+add_task(async function test_3() {
   registry.setValue(Ci.nsIWindowsRegKey.ROOT_KEY_LOCAL_MACHINE,
                     "SOFTWARE\\Mozilla\\XPCShell\\Extensions",
                     "addon1@tests.mozilla.org", addon2Dir.path);
   registry.setValue(Ci.nsIWindowsRegKey.ROOT_KEY_CURRENT_USER,
                     "SOFTWARE\\Mozilla\\XPCShell\\Extensions",
                     "addon2@tests.mozilla.org", addon1Dir.path);
+  registry.setValue(Ci.nsIWindowsRegKey.ROOT_KEY_CURRENT_USER,
+                    "SOFTWARE\\Mozilla\\XPCShell\\Extensions",
+                    "addon3@tests.mozilla.org", addon3Dir.path);
 
-  restartManager();
+  await promiseRestartManager();
 
-  AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
-                               "addon2@tests.mozilla.org"], function([a1, a2]) {
-    Assert.equal(a1, null);
-    Assert.equal(a2, null);
-
-    executeSoon(run_test_4);
-  });
-}
+  let [a1, a2, a3] = await AddonManager.getAddonsByIDs(IDS);
+  equal(a1, null);
+  equal(a2, null);
+  equal(a3, null);
+});
 
 // Tests whether an extension's ID can change without its directory changing
-function run_test_4() {
+add_task(async function test_4() {
   // Restarting with bad items in the registry should not force an EM restart
-  restartManager();
+  await promiseRestartManager();
 
   registry.setValue(Ci.nsIWindowsRegKey.ROOT_KEY_LOCAL_MACHINE,
                     "SOFTWARE\\Mozilla\\XPCShell\\Extensions",
                     "addon1@tests.mozilla.org", null);
   registry.setValue(Ci.nsIWindowsRegKey.ROOT_KEY_CURRENT_USER,
                     "SOFTWARE\\Mozilla\\XPCShell\\Extensions",
                     "addon2@tests.mozilla.org", null);
+  registry.setValue(Ci.nsIWindowsRegKey.ROOT_KEY_CURRENT_USER,
+                    "SOFTWARE\\Mozilla\\XPCShell\\Extensions",
+                    "addon3@tests.mozilla.org", null);
 
-  restartManager();
+  await promiseRestartManager();
 
   registry.setValue(Ci.nsIWindowsRegKey.ROOT_KEY_LOCAL_MACHINE,
                     "SOFTWARE\\Mozilla\\XPCShell\\Extensions",
                     "addon1@tests.mozilla.org", addon1Dir.path);
-  restartManager();
+  await promiseRestartManager();
 
   registry.setValue(Ci.nsIWindowsRegKey.ROOT_KEY_LOCAL_MACHINE,
                     "SOFTWARE\\Mozilla\\XPCShell\\Extensions",
                     "addon1@tests.mozilla.org", null);
   registry.setValue(Ci.nsIWindowsRegKey.ROOT_KEY_CURRENT_USER,
                     "SOFTWARE\\Mozilla\\XPCShell\\Extensions",
                     "addon2@tests.mozilla.org", addon1Dir.path);
   writeInstallRDFForExtension(addon2, gProfD, "addon1");
 
-  restartManager();
+  await promiseRestartManager();
 
-  AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
-                               "addon2@tests.mozilla.org"], function([a1, a2]) {
-    Assert.equal(a1, null);
-    Assert.notEqual(a2, null);
-
-    executeSoon(do_test_finished);
-  });
-}
+  let [a1, a2, a3] = await AddonManager.getAddonsByIDs(IDS);
+  equal(a1, null);
+  notEqual(a2, null);
+  equal(a3, null);
+});
--- a/toolkit/mozapps/extensions/test/xpcshell/xpcshell.ini
+++ b/toolkit/mozapps/extensions/test/xpcshell/xpcshell.ini
@@ -75,17 +75,16 @@ skip-if = true # Bug 1358846 Bug 1365021
 [test_bug1180901_2.js]
 skip-if = os != "win"
 [test_bug514327_2.js]
 # Bug 676992: test consistently hangs on Android
 skip-if = os == "android"
 tags = blocklist
 [test_bug521905.js]
 [test_bug566626.js]
-[test_bug596607.js]
 [test_cache_certdb.js]
 run-if = addon_signing
 [test_cacheflush.js]
 [test_childprocess.js]
 [test_compatoverrides.js]
 [test_corrupt.js]
 [test_corruptfile.js]
 [test_crash_annotation_quoting.js]
@@ -188,16 +187,17 @@ skip-if = os == "android"
 [test_provider_markSafe.js]
 [test_provider_shutdown.js]
 [test_provider_unsafe_access_shutdown.js]
 [test_provider_unsafe_access_startup.js]
 [test_proxies.js]
 [test_proxy.js]
 [test_registerchrome.js]
 [test_registry.js]
+skip-if = os != 'win'
 [test_reload.js]
 # Bug 676992: test consistently hangs on Android
 # There's a problem removing a temp file without manually clearing the cache on Windows
 skip-if = os == "android" || os == "win"
 tags = webextensions
 [test_safemode.js]
 [test_schema_change.js]
 [test_seen.js]