Bug 1447903: Part 5 - Update test_startup to use bootstrapped extensions (but still be insane). r?aswan draft
authorKris Maglione <maglione.k@gmail.com>
Wed, 21 Mar 2018 18:11:24 -0700
changeset 772368 428fa58b10fa72bf33463acaa5cff86899ada3ec
parent 772367 fbcb27c1307ec88d9a2e0bda3cd63f51e2f73f3c
child 772369 0301581ad1fc134ff6ad0cd67de96cd871d33960
push id103897
push usermaglione.k@gmail.com
push dateMon, 26 Mar 2018 01:31:53 +0000
reviewersaswan
bugs1447903
milestone61.0a1
Bug 1447903: Part 5 - Update test_startup to use bootstrapped extensions (but still be insane). r?aswan MozReview-Commit-ID: 9YOy5LGvjJL
toolkit/mozapps/extensions/internal/AddonTestUtils.jsm
toolkit/mozapps/extensions/internal/XPIProvider.jsm
toolkit/mozapps/extensions/test/xpcshell/head_addons.js
toolkit/mozapps/extensions/test/xpcshell/test_startup.js
--- a/toolkit/mozapps/extensions/internal/AddonTestUtils.jsm
+++ b/toolkit/mozapps/extensions/internal/AddonTestUtils.jsm
@@ -138,45 +138,48 @@ function escaped(strings, ...values) {
 
   return result.join("");
 }
 
 
 class AddonsList {
   constructor(file) {
     this.extensions = [];
+    this.bootstrapped = [];
     this.themes = [];
 
     if (!file.exists()) {
       return;
     }
 
     let data = aomStartup.readStartupData();
 
     for (let loc of Object.values(data)) {
       let dir = loc.path && new nsFile(loc.path);
 
       for (let addon of Object.values(loc.addons)) {
-        if (addon.enabled && !addon.bootstrapped) {
+        if (addon.enabled) {
           let file;
           if (dir) {
             file = dir.clone();
             try {
               file.appendRelativePath(addon.path);
             } catch (e) {
               file = new nsFile(addon.path);
             }
           } else {
             file = new nsFile(addon.path);
           }
 
           addon.type = addon.type || "extension";
 
           if (addon.type == "theme") {
             this.themes.push(file);
+          } else if (addon.bootstrapped) {
+            this.bootstrapped.push(file);
           } else {
             this.extensions.push(file);
           }
         }
       }
     }
   }
 
@@ -198,16 +201,20 @@ class AddonsList {
       return false;
     });
   }
 
   hasTheme(dir, id) {
     return this.hasItem("themes", dir, id);
   }
 
+  hasBootstrapped(dir, id) {
+    return this.hasItem("bootstrapped", dir, id);
+  }
+
   hasExtension(dir, id) {
     return this.hasItem("extensions", dir, id);
   }
 }
 
 var AddonTestUtils = {
   addonIntegrationService: null,
   addonsList: null,
--- a/toolkit/mozapps/extensions/internal/XPIProvider.jsm
+++ b/toolkit/mozapps/extensions/internal/XPIProvider.jsm
@@ -753,20 +753,25 @@ SafeInstallOperation.prototype = {
  */
 function canRunInSafeMode(aAddon) {
   // Even though the updated system add-ons aren't generally run in safe mode we
   // include them here so their uninstall functions get called when switching
   // back to the default set.
 
   // TODO product should make the call about temporary add-ons running
   // in safe mode. assuming for now that they are.
-  if (aAddon._installLocation.name == KEY_APP_TEMPORARY)
+  let location = aAddon._installLocation || null;
+  if (!location) {
+    return false;
+  }
+
+  if (location.name == KEY_APP_TEMPORARY)
     return true;
 
-  return aAddon._installLocation.isSystem;
+  return location.isSystem;
 }
 
 /**
  * Determine if this addon should be disabled due to being legacy
  *
  * @param {Addon} addon The addon to check
  *
  * @returns {boolean} Whether the addon should be disabled for being legacy
--- a/toolkit/mozapps/extensions/test/xpcshell/head_addons.js
+++ b/toolkit/mozapps/extensions/test/xpcshell/head_addons.js
@@ -106,17 +106,16 @@ const LEGACY_NON_RESTARTLESS_TESTS = new
   "test_manifest.js",
   "test_onPropertyChanged_appDisabled.js",
   "test_proxies.js",
   "test_safemode.js",
   "test_sideloads.js",
   "test_signed_verify.js",
   "test_softblocked.js",
   "test_sourceURI.js",
-  "test_startup.js",
   "test_strictcompatibility.js",
   "test_syncGUID.js",
   "test_targetPlatforms.js",
   "test_updateCancel.js",
   "test_update_compatmode.js",
   "test_upgrade.js",
 ]);
 
@@ -746,16 +745,20 @@ function shutdownManager() {
 function isThemeInAddonsList(aDir, aId) {
   return AddonTestUtils.addonsList.hasTheme(aDir, aId);
 }
 
 function isExtensionInAddonsList(aDir, aId) {
   return AddonTestUtils.addonsList.hasExtension(aDir, aId);
 }
 
+function isExtensionInBootstrappedList(aDir, aId) {
+  return AddonTestUtils.addonsList.hasBootstrapped(aDir, aId);
+}
+
 function check_startup_changes(aType, aIds) {
   var ids = aIds.slice(0);
   ids.sort();
   var changes = AddonManager.getStartupChanges(aType);
   changes = changes.filter(aEl => /@tests.mozilla.org$/.test(aEl));
   changes.sort();
 
   Assert.equal(JSON.stringify(ids), JSON.stringify(changes));
--- a/toolkit/mozapps/extensions/test/xpcshell/test_startup.js
+++ b/toolkit/mozapps/extensions/test/xpcshell/test_startup.js
@@ -9,110 +9,119 @@
 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",
+  bootstrap: true,
   targetApplications: [{
     id: "xpcshell@tests.mozilla.org",
     minVersion: "1",
     maxVersion: "1"
   }, {                 // Repeated target application entries should be ignored
     id: "xpcshell@tests.mozilla.org",
     minVersion: "2",
     maxVersion: "2"
   }]
 };
 
 var addon2 = {
   id: "addon2@tests.mozilla.org",
   version: "2.0",
   name: "Test 2",
+  bootstrap: true,
   targetApplications: [{  // Bad target application entries should be ignored
     minVersion: "3",
     maxVersion: "4"
   }, {
     id: "xpcshell@tests.mozilla.org",
     minVersion: "1",
     maxVersion: "2"
   }]
 };
 
 var addon3 = {
   id: "addon3@tests.mozilla.org",
   version: "3.0",
   name: "Test 3",
+  bootstrap: true,
   targetApplications: [{
     id: "toolkit@mozilla.org",
     minVersion: "1.9.2",
     maxVersion: "1.9.2.*"
   }]
 };
 
 // Should be ignored because it has no ID
 var addon4 = {
   version: "4.0",
   name: "Test 4",
+  bootstrap: true,
   targetApplications: [{
     id: "xpcshell@tests.mozilla.org",
     minVersion: "1",
     maxVersion: "1"
   }]
 };
 
 // Should be ignored because it has no version
 var addon5 = {
   id: "addon5@tests.mozilla.org",
   name: "Test 5",
+  bootstrap: true,
   targetApplications: [{
     id: "xpcshell@tests.mozilla.org",
     minVersion: "1",
     maxVersion: "1"
   }]
 };
 
 // Should be ignored because it has an invalid type
 var addon6 = {
   id: "addon6@tests.mozilla.org",
   version: "3.0",
   name: "Test 6",
+  bootstrap: true,
   type: 5,
   targetApplications: [{
     id: "toolkit@mozilla.org",
     minVersion: "1.9.2",
     maxVersion: "1.9.2.*"
   }]
 };
 
 // Should be ignored because it has an invalid type
 var addon7 = {
   id: "addon7@tests.mozilla.org",
   version: "3.0",
   name: "Test 3",
+  bootstrap: true,
   type: "extension",
   targetApplications: [{
     id: "toolkit@mozilla.org",
     minVersion: "1.9.2",
     maxVersion: "1.9.2.*"
   }]
 };
 
 createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2");
 
 const globalDir = gProfD.clone();
 globalDir.append("extensions2");
 globalDir.append(gAppInfo.ID);
 registerDirectory("XRESysSExtPD", globalDir.parent);
+
 const userDir = gProfD.clone();
 userDir.append("extensions3");
 userDir.append(gAppInfo.ID);
 registerDirectory("XREUSysExt", userDir.parent);
+
 const profileDir = gProfD.clone();
 profileDir.append("extensions");
 
 var gCachePurged = false;
 
 // Set up the profile
 function run_test() {
   do_test_pending("test_startup main");
@@ -198,78 +207,78 @@ async function run_test_1() {
                                function([a1, a2, a3, a4, a5, a6, a7]) {
 
     Assert.notEqual(a1, null);
     Assert.equal(a1.id, "addon1@tests.mozilla.org");
     Assert.notEqual(a1.syncGUID, null);
     Assert.ok(a1.syncGUID.length >= 9);
     Assert.equal(a1.version, "1.0");
     Assert.equal(a1.name, "Test 1");
-    Assert.ok(isExtensionInAddonsList(profileDir, a1.id));
+    Assert.ok(isExtensionInBootstrappedList(profileDir, a1.id));
     Assert.ok(hasFlag(a1.permissions, AddonManager.PERM_CAN_UNINSTALL));
     Assert.ok(hasFlag(a1.permissions, AddonManager.PERM_CAN_UPGRADE));
     do_check_in_crash_annotation(addon1.id, addon1.version);
     Assert.equal(a1.scope, AddonManager.SCOPE_PROFILE);
     Assert.equal(a1.sourceURI, null);
     Assert.ok(a1.foreignInstall);
     Assert.ok(!a1.userDisabled);
     Assert.ok(a1.seen);
 
     Assert.notEqual(a2, null);
     Assert.equal(a2.id, "addon2@tests.mozilla.org");
     Assert.notEqual(a2.syncGUID, null);
     Assert.ok(a2.syncGUID.length >= 9);
     Assert.equal(a2.version, "2.0");
     Assert.equal(a2.name, "Test 2");
-    Assert.ok(isExtensionInAddonsList(profileDir, a2.id));
+    Assert.ok(isExtensionInBootstrappedList(profileDir, a2.id));
     Assert.ok(hasFlag(a2.permissions, AddonManager.PERM_CAN_UNINSTALL));
     Assert.ok(hasFlag(a2.permissions, AddonManager.PERM_CAN_UPGRADE));
     do_check_in_crash_annotation(addon2.id, addon2.version);
     Assert.equal(a2.scope, AddonManager.SCOPE_PROFILE);
     Assert.equal(a2.sourceURI, null);
     Assert.ok(a2.foreignInstall);
     Assert.ok(!a1.userDisabled);
     Assert.ok(a1.seen);
 
     Assert.notEqual(a3, null);
     Assert.equal(a3.id, "addon3@tests.mozilla.org");
     Assert.notEqual(a3.syncGUID, null);
     Assert.ok(a3.syncGUID.length >= 9);
     Assert.equal(a3.version, "3.0");
     Assert.equal(a3.name, "Test 3");
-    Assert.ok(isExtensionInAddonsList(profileDir, a3.id));
+    Assert.ok(isExtensionInBootstrappedList(profileDir, a3.id));
     Assert.ok(hasFlag(a3.permissions, AddonManager.PERM_CAN_UNINSTALL));
     Assert.ok(hasFlag(a3.permissions, AddonManager.PERM_CAN_UPGRADE));
     do_check_in_crash_annotation(addon3.id, addon3.version);
     Assert.equal(a3.scope, AddonManager.SCOPE_PROFILE);
     Assert.equal(a3.sourceURI, null);
     Assert.ok(a3.foreignInstall);
     Assert.ok(!a1.userDisabled);
     Assert.ok(a1.seen);
 
     Assert.equal(a4, null);
-    Assert.ok(!isExtensionInAddonsList(profileDir, "addon4@tests.mozilla.org"));
+    Assert.ok(!isExtensionInBootstrappedList(profileDir, "addon4@tests.mozilla.org"));
     dest = profileDir.clone();
     dest.append(do_get_expected_addon_name("addon4@tests.mozilla.org"));
     Assert.ok(!dest.exists());
 
     Assert.equal(a5, null);
-    Assert.ok(!isExtensionInAddonsList(profileDir, "addon5@tests.mozilla.org"));
+    Assert.ok(!isExtensionInBootstrappedList(profileDir, "addon5@tests.mozilla.org"));
     dest = profileDir.clone();
     dest.append(do_get_expected_addon_name("addon5@tests.mozilla.org"));
     Assert.ok(!dest.exists());
 
     Assert.equal(a6, null);
-    Assert.ok(!isExtensionInAddonsList(profileDir, "addon6@tests.mozilla.org"));
+    Assert.ok(!isExtensionInBootstrappedList(profileDir, "addon6@tests.mozilla.org"));
     dest = profileDir.clone();
     dest.append(do_get_expected_addon_name("addon6@tests.mozilla.org"));
     Assert.ok(!dest.exists());
 
     Assert.equal(a7, null);
-    Assert.ok(!isExtensionInAddonsList(profileDir, "addon7@tests.mozilla.org"));
+    Assert.ok(!isExtensionInBootstrappedList(profileDir, "addon7@tests.mozilla.org"));
     dest = profileDir.clone();
     dest.append(do_get_expected_addon_name("addon7@tests.mozilla.org"));
     Assert.ok(!dest.exists());
 
     AddonManager.getAddonsByTypes(["extension"], function(extensionAddons) {
       Assert.equal(extensionAddons.length, 3);
 
       executeSoon(run_test_2);
@@ -309,45 +318,45 @@ async function run_test_2() {
                                "addon3@tests.mozilla.org",
                                "addon4@tests.mozilla.org",
                                "addon5@tests.mozilla.org"],
                                function([a1, a2, a3, a4, a5]) {
 
     Assert.notEqual(a1, null);
     Assert.equal(a1.id, "addon1@tests.mozilla.org");
     Assert.equal(a1.version, "1.0");
-    Assert.ok(isExtensionInAddonsList(profileDir, a1.id));
-    Assert.ok(!isExtensionInAddonsList(userDir, a1.id));
+    Assert.ok(isExtensionInBootstrappedList(profileDir, a1.id));
+    Assert.ok(!isExtensionInBootstrappedList(userDir, a1.id));
     Assert.ok(hasFlag(a1.permissions, AddonManager.PERM_CAN_UNINSTALL));
     Assert.ok(hasFlag(a1.permissions, AddonManager.PERM_CAN_UPGRADE));
     do_check_in_crash_annotation(addon1.id, a1.version);
     Assert.equal(a1.scope, AddonManager.SCOPE_PROFILE);
     Assert.ok(a1.foreignInstall);
 
     Assert.notEqual(a2, null);
     Assert.equal(a2.id, "addon2@tests.mozilla.org");
     Assert.equal(a2.version, "2.1");
-    Assert.ok(isExtensionInAddonsList(profileDir, a2.id));
-    Assert.ok(!isExtensionInAddonsList(userDir, a2.id));
-    Assert.ok(!isExtensionInAddonsList(globalDir, a2.id));
+    Assert.ok(isExtensionInBootstrappedList(profileDir, a2.id));
+    Assert.ok(!isExtensionInBootstrappedList(userDir, a2.id));
+    Assert.ok(!isExtensionInBootstrappedList(globalDir, a2.id));
     Assert.ok(hasFlag(a2.permissions, AddonManager.PERM_CAN_UNINSTALL));
     Assert.ok(hasFlag(a2.permissions, AddonManager.PERM_CAN_UPGRADE));
     do_check_in_crash_annotation(addon2.id, a2.version);
     Assert.equal(a2.scope, AddonManager.SCOPE_PROFILE);
     Assert.ok(a2.foreignInstall);
 
     Assert.equal(a3, null);
-    Assert.ok(!isExtensionInAddonsList(profileDir, "addon3@tests.mozilla.org"));
+    Assert.ok(!isExtensionInBootstrappedList(profileDir, "addon3@tests.mozilla.org"));
     do_check_not_in_crash_annotation(addon3.id, addon3.version);
 
     Assert.equal(a4, null);
-    Assert.ok(!isExtensionInAddonsList(profileDir, "addon4@tests.mozilla.org"));
+    Assert.ok(!isExtensionInBootstrappedList(profileDir, "addon4@tests.mozilla.org"));
 
     Assert.equal(a5, null);
-    Assert.ok(!isExtensionInAddonsList(profileDir, "addon5@tests.mozilla.org"));
+    Assert.ok(!isExtensionInBootstrappedList(profileDir, "addon5@tests.mozilla.org"));
 
     executeSoon(run_test_3);
   });
 }
 
 // Check that removing items from the profile reveals their hidden versions.
 async function run_test_3() {
   var dest = profileDir.clone();
@@ -374,42 +383,42 @@ async function run_test_3() {
                                "addon3@tests.mozilla.org",
                                "addon4@tests.mozilla.org",
                                "addon5@tests.mozilla.org"],
                                function([a1, a2, a3, a4, a5]) {
 
     Assert.notEqual(a1, null);
     Assert.equal(a1.id, "addon1@tests.mozilla.org");
     Assert.equal(a1.version, "1.1");
-    Assert.ok(!isExtensionInAddonsList(profileDir, a1.id));
-    Assert.ok(isExtensionInAddonsList(userDir, a1.id));
+    Assert.ok(!isExtensionInBootstrappedList(profileDir, a1.id));
+    Assert.ok(isExtensionInBootstrappedList(userDir, a1.id));
     Assert.ok(!hasFlag(a1.permissions, AddonManager.PERM_CAN_UNINSTALL));
     Assert.ok(!hasFlag(a1.permissions, AddonManager.PERM_CAN_UPGRADE));
     do_check_in_crash_annotation(addon1.id, a1.version);
     Assert.equal(a1.scope, AddonManager.SCOPE_USER);
 
     Assert.notEqual(a2, null);
     Assert.equal(a2.id, "addon2@tests.mozilla.org");
     Assert.equal(a2.version, "2.3");
-    Assert.ok(!isExtensionInAddonsList(profileDir, a2.id));
-    Assert.ok(isExtensionInAddonsList(userDir, a2.id));
-    Assert.ok(!isExtensionInAddonsList(globalDir, a2.id));
+    Assert.ok(!isExtensionInBootstrappedList(profileDir, a2.id));
+    Assert.ok(isExtensionInBootstrappedList(userDir, a2.id));
+    Assert.ok(!isExtensionInBootstrappedList(globalDir, a2.id));
     Assert.ok(!hasFlag(a2.permissions, AddonManager.PERM_CAN_UNINSTALL));
     Assert.ok(!hasFlag(a2.permissions, AddonManager.PERM_CAN_UPGRADE));
     do_check_in_crash_annotation(addon2.id, a2.version);
     Assert.equal(a2.scope, AddonManager.SCOPE_USER);
 
     Assert.equal(a3, null);
-    Assert.ok(!isExtensionInAddonsList(profileDir, "addon3@tests.mozilla.org"));
+    Assert.ok(!isExtensionInBootstrappedList(profileDir, "addon3@tests.mozilla.org"));
 
     Assert.equal(a4, null);
-    Assert.ok(!isExtensionInAddonsList(profileDir, "addon4@tests.mozilla.org"));
+    Assert.ok(!isExtensionInBootstrappedList(profileDir, "addon4@tests.mozilla.org"));
 
     Assert.equal(a5, null);
-    Assert.ok(!isExtensionInAddonsList(profileDir, "addon5@tests.mozilla.org"));
+    Assert.ok(!isExtensionInBootstrappedList(profileDir, "addon5@tests.mozilla.org"));
 
     dest = profileDir.clone();
     dest.append(do_get_expected_addon_name("addon4@tests.mozilla.org"));
     Assert.ok(!dest.exists());
 
     executeSoon(run_test_4);
   });
 }
@@ -431,25 +440,25 @@ async function run_test_4() {
   AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
                                "addon2@tests.mozilla.org",
                                "addon3@tests.mozilla.org",
                                "addon4@tests.mozilla.org",
                                "addon5@tests.mozilla.org"],
                                function([a1, a2, a3, a4, a5]) {
 
     Assert.equal(a1, null);
-    Assert.ok(!isExtensionInAddonsList(profileDir, "addon1@tests.mozilla.org"));
-    Assert.ok(!isExtensionInAddonsList(userDir, "addon1@tests.mozilla.org"));
+    Assert.ok(!isExtensionInBootstrappedList(profileDir, "addon1@tests.mozilla.org"));
+    Assert.ok(!isExtensionInBootstrappedList(userDir, "addon1@tests.mozilla.org"));
 
     Assert.notEqual(a2, null);
     Assert.equal(a2.id, "addon2@tests.mozilla.org");
     Assert.equal(a2.version, "2.2");
-    Assert.ok(!isExtensionInAddonsList(profileDir, a2.id));
-    Assert.ok(!isExtensionInAddonsList(userDir, a2.id));
-    Assert.ok(isExtensionInAddonsList(globalDir, a2.id));
+    Assert.ok(!isExtensionInBootstrappedList(profileDir, a2.id));
+    Assert.ok(!isExtensionInBootstrappedList(userDir, a2.id));
+    Assert.ok(isExtensionInBootstrappedList(globalDir, a2.id));
     Assert.ok(!hasFlag(a2.permissions, AddonManager.PERM_CAN_UNINSTALL));
     Assert.ok(!hasFlag(a2.permissions, AddonManager.PERM_CAN_UPGRADE));
     do_check_in_crash_annotation(addon2.id, a2.version);
     Assert.equal(a2.scope, AddonManager.SCOPE_SYSTEM);
 
     executeSoon(run_test_5);
   });
 }
@@ -473,29 +482,29 @@ async function run_test_5() {
                                "addon3@tests.mozilla.org",
                                "addon4@tests.mozilla.org",
                                "addon5@tests.mozilla.org"],
                                function([a1, a2, a3, a4, a5]) {
 
     Assert.notEqual(a1, null);
     Assert.equal(a1.id, "addon1@tests.mozilla.org");
     Assert.equal(a1.version, "1.1");
-    Assert.ok(!isExtensionInAddonsList(profileDir, a1.id));
-    Assert.ok(isExtensionInAddonsList(userDir, a1.id));
+    Assert.ok(!isExtensionInBootstrappedList(profileDir, a1.id));
+    Assert.ok(isExtensionInBootstrappedList(userDir, a1.id));
     Assert.ok(!hasFlag(a1.permissions, AddonManager.PERM_CAN_UNINSTALL));
     Assert.ok(!hasFlag(a1.permissions, AddonManager.PERM_CAN_UPGRADE));
     do_check_in_crash_annotation(addon1.id, a1.version);
     Assert.equal(a1.scope, AddonManager.SCOPE_USER);
 
     Assert.notEqual(a2, null);
     Assert.equal(a2.id, "addon2@tests.mozilla.org");
     Assert.equal(a2.version, "2.3");
-    Assert.ok(!isExtensionInAddonsList(profileDir, a2.id));
-    Assert.ok(isExtensionInAddonsList(userDir, a2.id));
-    Assert.ok(!isExtensionInAddonsList(globalDir, a2.id));
+    Assert.ok(!isExtensionInBootstrappedList(profileDir, a2.id));
+    Assert.ok(isExtensionInBootstrappedList(userDir, a2.id));
+    Assert.ok(!isExtensionInBootstrappedList(globalDir, a2.id));
     Assert.ok(!hasFlag(a2.permissions, AddonManager.PERM_CAN_UNINSTALL));
     Assert.ok(!hasFlag(a2.permissions, AddonManager.PERM_CAN_UPGRADE));
     do_check_in_crash_annotation(addon2.id, a2.version);
     Assert.equal(a2.scope, AddonManager.SCOPE_USER);
 
     executeSoon(run_test_6);
   });
 }
@@ -519,29 +528,29 @@ async function run_test_6() {
                                "addon3@tests.mozilla.org",
                                "addon4@tests.mozilla.org",
                                "addon5@tests.mozilla.org"],
                                function([a1, a2, a3, a4, a5]) {
 
     Assert.notEqual(a1, null);
     Assert.equal(a1.id, "addon1@tests.mozilla.org");
     Assert.equal(a1.version, "1.1");
-    Assert.ok(!isExtensionInAddonsList(profileDir, a1.id));
-    Assert.ok(isExtensionInAddonsList(userDir, a1.id));
+    Assert.ok(!isExtensionInBootstrappedList(profileDir, a1.id));
+    Assert.ok(isExtensionInBootstrappedList(userDir, a1.id));
     Assert.ok(!hasFlag(a1.permissions, AddonManager.PERM_CAN_UNINSTALL));
     Assert.ok(!hasFlag(a1.permissions, AddonManager.PERM_CAN_UPGRADE));
     do_check_in_crash_annotation(addon1.id, a1.version);
     Assert.equal(a1.scope, AddonManager.SCOPE_USER);
 
     Assert.notEqual(a2, null);
     Assert.equal(a2.id, "addon2@tests.mozilla.org");
     Assert.equal(a2.version, "2.3");
-    Assert.ok(!isExtensionInAddonsList(profileDir, a2.id));
-    Assert.ok(isExtensionInAddonsList(userDir, a2.id));
-    Assert.ok(!isExtensionInAddonsList(globalDir, a2.id));
+    Assert.ok(!isExtensionInBootstrappedList(profileDir, a2.id));
+    Assert.ok(isExtensionInBootstrappedList(userDir, a2.id));
+    Assert.ok(!isExtensionInBootstrappedList(globalDir, a2.id));
     Assert.ok(!hasFlag(a2.permissions, AddonManager.PERM_CAN_UNINSTALL));
     Assert.ok(!hasFlag(a2.permissions, AddonManager.PERM_CAN_UPGRADE));
     do_check_in_crash_annotation(addon2.id, a2.version);
     Assert.equal(a2.scope, AddonManager.SCOPE_USER);
 
     executeSoon(run_test_7);
   });
 }
@@ -570,42 +579,42 @@ async function run_test_7() {
                                "addon3@tests.mozilla.org",
                                "addon4@tests.mozilla.org",
                                "addon5@tests.mozilla.org"],
                                function([a1, a2, a3, a4, a5]) {
 
     Assert.notEqual(a1, null);
     Assert.equal(a1.id, "addon1@tests.mozilla.org");
     Assert.equal(a1.version, "1.2");
-    Assert.ok(isExtensionInAddonsList(profileDir, a1.id));
-    Assert.ok(!isExtensionInAddonsList(userDir, a1.id));
+    Assert.ok(isExtensionInBootstrappedList(profileDir, a1.id));
+    Assert.ok(!isExtensionInBootstrappedList(userDir, a1.id));
     Assert.ok(hasFlag(a1.permissions, AddonManager.PERM_CAN_UNINSTALL));
     Assert.ok(hasFlag(a1.permissions, AddonManager.PERM_CAN_UPGRADE));
     do_check_in_crash_annotation(addon1.id, a1.version);
     Assert.equal(a1.scope, AddonManager.SCOPE_PROFILE);
 
     Assert.notEqual(a2, null);
     Assert.equal(a2.id, "addon2@tests.mozilla.org");
     Assert.equal(a2.version, "2.2");
-    Assert.ok(!isExtensionInAddonsList(profileDir, a2.id));
-    Assert.ok(!isExtensionInAddonsList(userDir, a2.id));
-    Assert.ok(isExtensionInAddonsList(globalDir, a2.id));
+    Assert.ok(!isExtensionInBootstrappedList(profileDir, a2.id));
+    Assert.ok(!isExtensionInBootstrappedList(userDir, a2.id));
+    Assert.ok(isExtensionInBootstrappedList(globalDir, a2.id));
     Assert.ok(!hasFlag(a2.permissions, AddonManager.PERM_CAN_UNINSTALL));
     Assert.ok(!hasFlag(a2.permissions, AddonManager.PERM_CAN_UPGRADE));
     do_check_in_crash_annotation(addon2.id, a2.version);
     Assert.equal(a2.scope, AddonManager.SCOPE_SYSTEM);
 
     Assert.equal(a3, null);
-    Assert.ok(!isExtensionInAddonsList(profileDir, "addon3@tests.mozilla.org"));
+    Assert.ok(!isExtensionInBootstrappedList(profileDir, "addon3@tests.mozilla.org"));
 
     Assert.equal(a4, null);
-    Assert.ok(!isExtensionInAddonsList(profileDir, "addon4@tests.mozilla.org"));
+    Assert.ok(!isExtensionInBootstrappedList(profileDir, "addon4@tests.mozilla.org"));
 
     Assert.equal(a5, null);
-    Assert.ok(!isExtensionInAddonsList(profileDir, "addon5@tests.mozilla.org"));
+    Assert.ok(!isExtensionInBootstrappedList(profileDir, "addon5@tests.mozilla.org"));
 
     executeSoon(run_test_8);
   });
 }
 
 // Disabling all locations still leaves the profile working
 async function run_test_8() {
   Services.prefs.setIntPref("extensions.enabledScopes", 0);
@@ -625,27 +634,27 @@ async function run_test_8() {
                                "addon3@tests.mozilla.org",
                                "addon4@tests.mozilla.org",
                                "addon5@tests.mozilla.org"],
                                function([a1, a2, a3, a4, a5]) {
 
     Assert.notEqual(a1, null);
     Assert.equal(a1.id, "addon1@tests.mozilla.org");
     Assert.equal(a1.version, "1.2");
-    Assert.ok(isExtensionInAddonsList(profileDir, a1.id));
-    Assert.ok(!isExtensionInAddonsList(userDir, a1.id));
+    Assert.ok(isExtensionInBootstrappedList(profileDir, a1.id));
+    Assert.ok(!isExtensionInBootstrappedList(userDir, a1.id));
     Assert.ok(hasFlag(a1.permissions, AddonManager.PERM_CAN_UNINSTALL));
     Assert.ok(hasFlag(a1.permissions, AddonManager.PERM_CAN_UPGRADE));
     do_check_in_crash_annotation(addon1.id, a1.version);
     Assert.equal(a1.scope, AddonManager.SCOPE_PROFILE);
 
     Assert.equal(a2, null);
-    Assert.ok(!isExtensionInAddonsList(profileDir, "addon2@tests.mozilla.org"));
-    Assert.ok(!isExtensionInAddonsList(userDir, "addon2@tests.mozilla.org"));
-    Assert.ok(!isExtensionInAddonsList(globalDir, "addon2@tests.mozilla.org"));
+    Assert.ok(!isExtensionInBootstrappedList(profileDir, "addon2@tests.mozilla.org"));
+    Assert.ok(!isExtensionInBootstrappedList(userDir, "addon2@tests.mozilla.org"));
+    Assert.ok(!isExtensionInBootstrappedList(globalDir, "addon2@tests.mozilla.org"));
 
     executeSoon(run_test_9);
   });
 }
 
 // More hiding and revealing
 async function run_test_9() {
   Services.prefs.clearUserPref("extensions.enabledScopes");
@@ -674,40 +683,40 @@ async function run_test_9() {
                                "addon3@tests.mozilla.org",
                                "addon4@tests.mozilla.org",
                                "addon5@tests.mozilla.org"],
                                function([a1, a2, a3, a4, a5]) {
 
     Assert.notEqual(a1, null);
     Assert.equal(a1.id, "addon1@tests.mozilla.org");
     Assert.equal(a1.version, "1.2");
-    Assert.ok(isExtensionInAddonsList(profileDir, a1.id));
-    Assert.ok(!isExtensionInAddonsList(userDir, a1.id));
+    Assert.ok(isExtensionInBootstrappedList(profileDir, a1.id));
+    Assert.ok(!isExtensionInBootstrappedList(userDir, a1.id));
     Assert.ok(hasFlag(a1.permissions, AddonManager.PERM_CAN_UNINSTALL));
     Assert.ok(hasFlag(a1.permissions, AddonManager.PERM_CAN_UPGRADE));
     Assert.equal(a1.scope, AddonManager.SCOPE_PROFILE);
 
     Assert.notEqual(a2, null);
     Assert.equal(a2.id, "addon2@tests.mozilla.org");
     Assert.equal(a2.version, "2.4");
-    Assert.ok(isExtensionInAddonsList(profileDir, a2.id));
-    Assert.ok(!isExtensionInAddonsList(userDir, a2.id));
-    Assert.ok(!isExtensionInAddonsList(globalDir, a2.id));
+    Assert.ok(isExtensionInBootstrappedList(profileDir, a2.id));
+    Assert.ok(!isExtensionInBootstrappedList(userDir, a2.id));
+    Assert.ok(!isExtensionInBootstrappedList(globalDir, a2.id));
     Assert.ok(hasFlag(a2.permissions, AddonManager.PERM_CAN_UNINSTALL));
     Assert.ok(hasFlag(a2.permissions, AddonManager.PERM_CAN_UPGRADE));
     Assert.equal(a2.scope, AddonManager.SCOPE_PROFILE);
 
     Assert.equal(a3, null);
-    Assert.ok(!isExtensionInAddonsList(profileDir, "addon3@tests.mozilla.org"));
+    Assert.ok(!isExtensionInBootstrappedList(profileDir, "addon3@tests.mozilla.org"));
 
     Assert.equal(a4, null);
-    Assert.ok(!isExtensionInAddonsList(profileDir, "addon4@tests.mozilla.org"));
+    Assert.ok(!isExtensionInBootstrappedList(profileDir, "addon4@tests.mozilla.org"));
 
     Assert.equal(a5, null);
-    Assert.ok(!isExtensionInAddonsList(profileDir, "addon5@tests.mozilla.org"));
+    Assert.ok(!isExtensionInBootstrappedList(profileDir, "addon5@tests.mozilla.org"));
 
     executeSoon(run_test_10);
   });
 }
 
 // Checks that a removal from one location and an addition in another location
 // for the same item is handled
 async function run_test_10() {
@@ -732,40 +741,40 @@ async function run_test_10() {
                                "addon3@tests.mozilla.org",
                                "addon4@tests.mozilla.org",
                                "addon5@tests.mozilla.org"],
                                function([a1, a2, a3, a4, a5]) {
 
     Assert.notEqual(a1, null);
     Assert.equal(a1.id, "addon1@tests.mozilla.org");
     Assert.equal(a1.version, "1.3");
-    Assert.ok(!isExtensionInAddonsList(profileDir, a1.id));
-    Assert.ok(isExtensionInAddonsList(userDir, a1.id));
+    Assert.ok(!isExtensionInBootstrappedList(profileDir, a1.id));
+    Assert.ok(isExtensionInBootstrappedList(userDir, a1.id));
     Assert.ok(!hasFlag(a1.permissions, AddonManager.PERM_CAN_UNINSTALL));
     Assert.ok(!hasFlag(a1.permissions, AddonManager.PERM_CAN_UPGRADE));
     Assert.equal(a1.scope, AddonManager.SCOPE_USER);
 
     Assert.notEqual(a2, null);
     Assert.equal(a2.id, "addon2@tests.mozilla.org");
     Assert.equal(a2.version, "2.4");
-    Assert.ok(isExtensionInAddonsList(profileDir, a2.id));
-    Assert.ok(!isExtensionInAddonsList(userDir, a2.id));
-    Assert.ok(!isExtensionInAddonsList(globalDir, a2.id));
+    Assert.ok(isExtensionInBootstrappedList(profileDir, a2.id));
+    Assert.ok(!isExtensionInBootstrappedList(userDir, a2.id));
+    Assert.ok(!isExtensionInBootstrappedList(globalDir, a2.id));
     Assert.ok(hasFlag(a2.permissions, AddonManager.PERM_CAN_UNINSTALL));
     Assert.ok(hasFlag(a2.permissions, AddonManager.PERM_CAN_UPGRADE));
     Assert.equal(a2.scope, AddonManager.SCOPE_PROFILE);
 
     Assert.equal(a3, null);
-    Assert.ok(!isExtensionInAddonsList(profileDir, "addon3@tests.mozilla.org"));
+    Assert.ok(!isExtensionInBootstrappedList(profileDir, "addon3@tests.mozilla.org"));
 
     Assert.equal(a4, null);
-    Assert.ok(!isExtensionInAddonsList(profileDir, "addon4@tests.mozilla.org"));
+    Assert.ok(!isExtensionInBootstrappedList(profileDir, "addon4@tests.mozilla.org"));
 
     Assert.equal(a5, null);
-    Assert.ok(!isExtensionInAddonsList(profileDir, "addon5@tests.mozilla.org"));
+    Assert.ok(!isExtensionInBootstrappedList(profileDir, "addon5@tests.mozilla.org"));
 
     executeSoon(run_test_11);
   });
 }
 
 // This should remove any remaining items
 async function run_test_11() {
   var dest = userDir.clone();
@@ -793,31 +802,31 @@ async function run_test_11() {
                                "addon5@tests.mozilla.org"],
                                function([a1, a2, a3, a4, a5]) {
 
     Assert.equal(a1, null);
     Assert.equal(a2, null);
     Assert.equal(a3, null);
     Assert.equal(a4, null);
     Assert.equal(a5, null);
-    Assert.ok(!isExtensionInAddonsList(profileDir, "addon1@tests.mozilla.org"));
-    Assert.ok(!isExtensionInAddonsList(profileDir, "addon2@tests.mozilla.org"));
-    Assert.ok(!isExtensionInAddonsList(profileDir, "addon3@tests.mozilla.org"));
-    Assert.ok(!isExtensionInAddonsList(profileDir, "addon4@tests.mozilla.org"));
-    Assert.ok(!isExtensionInAddonsList(profileDir, "addon5@tests.mozilla.org"));
-    Assert.ok(!isExtensionInAddonsList(userDir, "addon1@tests.mozilla.org"));
-    Assert.ok(!isExtensionInAddonsList(userDir, "addon2@tests.mozilla.org"));
-    Assert.ok(!isExtensionInAddonsList(userDir, "addon3@tests.mozilla.org"));
-    Assert.ok(!isExtensionInAddonsList(userDir, "addon4@tests.mozilla.org"));
-    Assert.ok(!isExtensionInAddonsList(userDir, "addon5@tests.mozilla.org"));
-    Assert.ok(!isExtensionInAddonsList(globalDir, "addon1@tests.mozilla.org"));
-    Assert.ok(!isExtensionInAddonsList(globalDir, "addon2@tests.mozilla.org"));
-    Assert.ok(!isExtensionInAddonsList(globalDir, "addon3@tests.mozilla.org"));
-    Assert.ok(!isExtensionInAddonsList(globalDir, "addon4@tests.mozilla.org"));
-    Assert.ok(!isExtensionInAddonsList(globalDir, "addon5@tests.mozilla.org"));
+    Assert.ok(!isExtensionInBootstrappedList(profileDir, "addon1@tests.mozilla.org"));
+    Assert.ok(!isExtensionInBootstrappedList(profileDir, "addon2@tests.mozilla.org"));
+    Assert.ok(!isExtensionInBootstrappedList(profileDir, "addon3@tests.mozilla.org"));
+    Assert.ok(!isExtensionInBootstrappedList(profileDir, "addon4@tests.mozilla.org"));
+    Assert.ok(!isExtensionInBootstrappedList(profileDir, "addon5@tests.mozilla.org"));
+    Assert.ok(!isExtensionInBootstrappedList(userDir, "addon1@tests.mozilla.org"));
+    Assert.ok(!isExtensionInBootstrappedList(userDir, "addon2@tests.mozilla.org"));
+    Assert.ok(!isExtensionInBootstrappedList(userDir, "addon3@tests.mozilla.org"));
+    Assert.ok(!isExtensionInBootstrappedList(userDir, "addon4@tests.mozilla.org"));
+    Assert.ok(!isExtensionInBootstrappedList(userDir, "addon5@tests.mozilla.org"));
+    Assert.ok(!isExtensionInBootstrappedList(globalDir, "addon1@tests.mozilla.org"));
+    Assert.ok(!isExtensionInBootstrappedList(globalDir, "addon2@tests.mozilla.org"));
+    Assert.ok(!isExtensionInBootstrappedList(globalDir, "addon3@tests.mozilla.org"));
+    Assert.ok(!isExtensionInBootstrappedList(globalDir, "addon4@tests.mozilla.org"));
+    Assert.ok(!isExtensionInBootstrappedList(globalDir, "addon5@tests.mozilla.org"));
     do_check_not_in_crash_annotation(addon1.id, addon1.version);
     do_check_not_in_crash_annotation(addon2.id, addon2.version);
 
     executeSoon(run_test_12);
   });
 }
 
 // Test that auto-disabling for specific scopes works