Bug 1373386 Make xpcshell signing shims mark extensions as privileged by default draft
authorAndrew Swan <aswan@mozilla.com>
Thu, 08 Jun 2017 12:52:50 -0700
changeset 595309 cfe0cae87004f6b9383773d1ea6e5b0e0d950c8c
parent 594852 ac2d0008d149be9bd183dd1fb3a127997bf3f14e
child 633658 7c3d7077a6c1e40a579d31d4881b7afbaa357933
push id64284
push useraswan@mozilla.com
push dateFri, 16 Jun 2017 06:28:42 +0000
bugs1373386
milestone56.0a1
Bug 1373386 Make xpcshell signing shims mark extensions as privileged by default MozReview-Commit-ID: B6zFBwbjhax
toolkit/components/telemetry/tests/unit/test_TelemetryEnvironment.js
toolkit/mozapps/extensions/internal/AddonTestUtils.jsm
toolkit/mozapps/extensions/test/xpcshell/test_blocklistchange.js
toolkit/mozapps/extensions/test/xpcshell/test_install_from_sources.js
toolkit/mozapps/extensions/test/xpcshell/test_proxy.js
toolkit/mozapps/extensions/test/xpcshell/test_reload.js
toolkit/mozapps/extensions/test/xpcshell/test_signed_verify.js
toolkit/mozapps/extensions/test/xpcshell/test_temporary.js
toolkit/mozapps/extensions/test/xpcshell/test_webextension.js
--- a/toolkit/components/telemetry/tests/unit/test_TelemetryEnvironment.js
+++ b/toolkit/components/telemetry/tests/unit/test_TelemetryEnvironment.js
@@ -1127,17 +1127,17 @@ add_task(async function test_addonsAndPl
     appDisabled: false,
     version: "1.0",
     scope: 1,
     type: "extension",
     foreignInstall: false,
     hasBinaryComponents: false,
     installDay: ADDON_INSTALL_DATE,
     updateDay: ADDON_INSTALL_DATE,
-    signedState: mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_SIGNED : AddonManager.SIGNEDSTATE_NOT_REQUIRED,
+    signedState: mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_PRIVILEGED : AddonManager.SIGNEDSTATE_NOT_REQUIRED,
     isSystem: false,
     isWebExtension: false,
     multiprocessCompatible: false,
   };
   const SYSTEM_ADDON_ID = "tel-system-xpi@tests.mozilla.org";
   const EXPECTED_SYSTEM_ADDON_DATA = {
     blocklisted: false,
     description: "A system addon which is shipped with Firefox.",
@@ -1167,17 +1167,17 @@ add_task(async function test_addonsAndPl
     appDisabled: false,
     version: "1.0",
     scope: 1,
     type: "extension",
     foreignInstall: false,
     hasBinaryComponents: false,
     installDay: WEBEXTENSION_ADDON_INSTALL_DATE,
     updateDay: WEBEXTENSION_ADDON_INSTALL_DATE,
-    signedState: mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_SIGNED : AddonManager.SIGNEDSTATE_NOT_REQUIRED,
+    signedState: mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_PRIVILEGED : AddonManager.SIGNEDSTATE_NOT_REQUIRED,
     isSystem: false,
     isWebExtension: true,
     multiprocessCompatible: true,
   };
 
   const EXPECTED_PLUGIN_DATA = {
     name: FLASH_PLUGIN_NAME,
     version: FLASH_PLUGIN_VERSION,
--- a/toolkit/mozapps/extensions/internal/AddonTestUtils.jsm
+++ b/toolkit/mozapps/extensions/internal/AddonTestUtils.jsm
@@ -210,16 +210,17 @@ class AddonsList {
 
 var AddonTestUtils = {
   addonIntegrationService: null,
   addonsList: null,
   appInfo: null,
   addonStartup: null,
   testUnpacked: false,
   useRealCertChecks: false,
+  usePrivilegedSignatures: true,
 
   init(testScope) {
     this.testScope = testScope;
 
     // Get the profile directory for tests to use.
     this.profileDir = testScope.do_get_profile();
 
     this.profileExtensions = this.profileDir.clone();
@@ -494,16 +495,19 @@ var AddonTestUtils = {
         callback = callback.wrappedJSObject;
 
         try {
           let manifestURI = this.getManifestURI(file);
 
           let id = await this.getIDFromManifest(manifestURI);
 
           let fakeCert = {commonName: id};
+          if (this.usePrivilegedSignatures) {
+            fakeCert.organizationalUnit = "Mozilla Extensions";
+          }
 
           return [callback, Cr.NS_OK, fakeCert];
         } catch (e) {
           // If there is any error then just pass along the original results
         } finally {
           // Make sure to close the open zip file or it will be locked.
           if (file.isFile())
             Services.obs.notifyObservers(file, "flush-cache-entry", "cert-override");
--- a/toolkit/mozapps/extensions/test/xpcshell/test_blocklistchange.js
+++ b/toolkit/mozapps/extensions/test/xpcshell/test_blocklistchange.js
@@ -33,17 +33,17 @@ var Cu = Components.utils;
 var Cr = Components.results;
 
 const URI_EXTENSION_BLOCKLIST_DIALOG = "chrome://mozapps/content/extensions/blocklist.xul";
 
 Cu.import("resource://gre/modules/NetUtil.jsm");
 Cu.import("resource://testing-common/MockRegistrar.jsm");
 
 // Allow insecure updates
-Services.prefs.setBoolPref("extensions.checkUpdateSecurity", false)
+Services.prefs.setBoolPref("extensions.checkUpdateSecurity", false);
 
 var testserver = createHttpServer();
 gPort = testserver.identity.primaryPort;
 
 // register static files with server and interpolate port numbers in them
 mapFile("/data/blocklistchange/addon_update1.rdf", testserver);
 mapFile("/data/blocklistchange/addon_update2.rdf", testserver);
 mapFile("/data/blocklistchange/addon_update3.rdf", testserver);
--- a/toolkit/mozapps/extensions/test/xpcshell/test_install_from_sources.js
+++ b/toolkit/mozapps/extensions/test/xpcshell/test_install_from_sources.js
@@ -59,17 +59,17 @@ add_task(async function() {
 
   do_check_neq(addon, null);
   do_check_eq(addon.version, "1.0");
   do_check_eq(addon.name, "Test Bootstrap 1");
   do_check_true(addon.isCompatible);
   do_check_false(addon.appDisabled);
   do_check_true(addon.isActive);
   do_check_eq(addon.type, "extension");
-  do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_SIGNED : AddonManager.SIGNEDSTATE_NOT_REQUIRED);
+  do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_PRIVILEGED : AddonManager.SIGNEDSTATE_NOT_REQUIRED);
 
   await promiseRestartManager();
 
   install = BootstrapMonitor.checkAddonInstalled(ID, "1.0");
   equal(install.reason, BOOTSTRAP_REASONS.ADDON_INSTALL);
   BootstrapMonitor.checkAddonStarted(ID, "1.0");
 
   addon = await promiseAddonByID(ID);
--- a/toolkit/mozapps/extensions/test/xpcshell/test_proxy.js
+++ b/toolkit/mozapps/extensions/test/xpcshell/test_proxy.js
@@ -44,17 +44,17 @@ add_task(async function() {
 
   do_check_neq(addon, null);
   do_check_eq(addon.version, "1.0");
   do_check_eq(addon.name, "Test Bootstrap 1 (proxy)");
   do_check_true(addon.isCompatible);
   do_check_false(addon.appDisabled);
   do_check_true(addon.isActive);
   do_check_eq(addon.type, "extension");
-  do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_SIGNED : AddonManager.SIGNEDSTATE_NOT_REQUIRED);
+  do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_PRIVILEGED : AddonManager.SIGNEDSTATE_NOT_REQUIRED);
 
   do_check_true(proxyFile.exists());
 
   addon.uninstall();
   unpackedAddon.remove(true);
 
   await promiseRestartManager();
 });
--- a/toolkit/mozapps/extensions/test/xpcshell/test_reload.js
+++ b/toolkit/mozapps/extensions/test/xpcshell/test_reload.js
@@ -182,16 +182,19 @@ add_task(async function test_reload_to_i
   equal(reloadedAddon.appDisabled, false);
   equal(reloadedAddon.userDisabled, false);
 
   await tearDownAddon(reloadedAddon);
   addonDir.remove(true);
 });
 
 add_task(async function test_manifest_changes_are_refreshed() {
+  if (!AppConstants.MOZ_ALLOW_LEGACY_EXTENSIONS) {
+    return;
+  }
   await promiseRestartManager();
   let tempdir = gTmpD.clone();
 
   const unpackedAddon = writeInstallRDFToDir(
     Object.assign({}, manifestSample, {
       name: "Test Bootstrap 1",
     }), tempdir, manifestSample.id, "bootstrap.js");
 
@@ -210,16 +213,19 @@ add_task(async function test_manifest_ch
   notEqual(reloadedAddon, null);
   equal(reloadedAddon.name, "Test Bootstrap 1 (reloaded)");
 
   await tearDownAddon(reloadedAddon);
   unpackedAddon.remove(true);
 });
 
 add_task(async function test_reload_fails_on_installation_errors() {
+  if (!AppConstants.MOZ_ALLOW_LEGACY_EXTENSIONS) {
+    return;
+  }
   await promiseRestartManager();
   let tempdir = gTmpD.clone();
 
   const unpackedAddon = writeInstallRDFToDir(
     Object.assign({}, manifestSample, {
       name: "Test Bootstrap 1",
     }), tempdir, manifestSample.id, "bootstrap.js");
 
--- a/toolkit/mozapps/extensions/test/xpcshell/test_signed_verify.js
+++ b/toolkit/mozapps/extensions/test/xpcshell/test_signed_verify.js
@@ -1,18 +1,27 @@
+
+Components.utils.import("resource://gre/modules/AppConstants.jsm");
+
 // Enable signature checks for these tests
 gUseRealCertChecks = true;
 // Disable update security
 Services.prefs.setBoolPref(PREF_EM_CHECK_UPDATE_SECURITY, false);
 
 const DATA = "data/signing_checks/";
-const GOOD = [
-  ["signed_bootstrap_2.xpi", AddonManager.SIGNEDSTATE_SIGNED],
-  ["signed_nonbootstrap_2.xpi", AddonManager.SIGNEDSTATE_SIGNED]
+let GOOD = [
+  ["privileged_bootstrap_2.xpi", AddonManager.SIGNEDSTATE_PRIVILEGED],
 ];
+if (AppConstants.MOZ_ALLOW_LEGACY_EXTENSIONS) {
+  GOOD.push(
+    ["signed_bootstrap_2.xpi", AddonManager.SIGNEDSTATE_SIGNED],
+    ["signed_nonbootstrap_2.xpi", AddonManager.SIGNEDSTATE_SIGNED],
+  );
+}
+
 const BAD = [
   ["unsigned_bootstrap_2.xpi", AddonManager.SIGNEDSTATE_MISSING],
   ["signed_bootstrap_badid_2.xpi", AddonManager.SIGNEDSTATE_BROKEN],
   ["unsigned_nonbootstrap_2.xpi", AddonManager.SIGNEDSTATE_MISSING],
   ["signed_nonbootstrap_badid_2.xpi", AddonManager.SIGNEDSTATE_BROKEN],
 ];
 const ID = "test@tests.mozilla.org";
 
--- a/toolkit/mozapps/extensions/test/xpcshell/test_temporary.js
+++ b/toolkit/mozapps/extensions/test/xpcshell/test_temporary.js
@@ -106,17 +106,17 @@ add_task(async function() {
 
   do_check_neq(addon, null);
   do_check_eq(addon.version, "1.0");
   do_check_eq(addon.name, "Test Bootstrap 1");
   do_check_true(addon.isCompatible);
   do_check_false(addon.appDisabled);
   do_check_true(addon.isActive);
   do_check_eq(addon.type, "extension");
-  do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_SIGNED : AddonManager.SIGNEDSTATE_NOT_REQUIRED);
+  do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_PRIVILEGED : AddonManager.SIGNEDSTATE_NOT_REQUIRED);
 
   await promiseRestartManager();
 
   BootstrapMonitor.checkAddonNotInstalled(ID);
   BootstrapMonitor.checkAddonNotStarted(ID);
 
   addon = await promiseAddonByID(ID);
   do_check_eq(addon, null);
@@ -136,17 +136,17 @@ add_task(async function() {
 
   do_check_neq(addon, null);
   do_check_eq(addon.version, "1.0");
   do_check_eq(addon.name, "Test Bootstrap 1");
   do_check_true(addon.isCompatible);
   do_check_false(addon.appDisabled);
   do_check_true(addon.isActive);
   do_check_eq(addon.type, "extension");
-  do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_SIGNED : AddonManager.SIGNEDSTATE_NOT_REQUIRED);
+  do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_PRIVILEGED : AddonManager.SIGNEDSTATE_NOT_REQUIRED);
 
   let tempdir = gTmpD.clone();
 
   // test that an unpacked add-on works too
   writeInstallRDFToDir({
     id: ID,
     version: "3.0",
     bootstrap: true,
@@ -173,34 +173,34 @@ add_task(async function() {
   // temporary add-on is installed and started
   do_check_neq(addon, null);
   do_check_eq(addon.version, "3.0");
   do_check_eq(addon.name, "Test Bootstrap 1 (temporary)");
   do_check_true(addon.isCompatible);
   do_check_false(addon.appDisabled);
   do_check_true(addon.isActive);
   do_check_eq(addon.type, "extension");
-  do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_SIGNED : AddonManager.SIGNEDSTATE_NOT_REQUIRED);
+  do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_PRIVILEGED : AddonManager.SIGNEDSTATE_NOT_REQUIRED);
 
   restartManager();
 
   BootstrapMonitor.checkAddonInstalled(ID, "1.0");
   BootstrapMonitor.checkAddonStarted(ID, "1.0");
 
   addon = await promiseAddonByID(ID);
 
   // existing add-on is back
   do_check_neq(addon, null);
   do_check_eq(addon.version, "1.0");
   do_check_eq(addon.name, "Test Bootstrap 1");
   do_check_true(addon.isCompatible);
   do_check_false(addon.appDisabled);
   do_check_true(addon.isActive);
   do_check_eq(addon.type, "extension");
-  do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_SIGNED : AddonManager.SIGNEDSTATE_NOT_REQUIRED);
+  do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_PRIVILEGED : AddonManager.SIGNEDSTATE_NOT_REQUIRED);
 
   unpacked_addon.remove(true);
 
   // on Windows XPI files will be locked by the JAR cache, skip this test there.
   if (!("nsIWindowsRegKey" in Components.interfaces)) {
     // test that a packed (XPI) add-on works
     writeInstallRDFToXPI({
       id: ID,
@@ -224,34 +224,34 @@ add_task(async function() {
     // temporary add-on is installed and started
     do_check_neq(addon, null);
     do_check_eq(addon.version, "2.0");
     do_check_eq(addon.name, "Test Bootstrap 1 (temporary)");
     do_check_true(addon.isCompatible);
     do_check_false(addon.appDisabled);
     do_check_true(addon.isActive);
     do_check_eq(addon.type, "extension");
-    do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_SIGNED : AddonManager.SIGNEDSTATE_NOT_REQUIRED);
+    do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_PRIVILEGED : AddonManager.SIGNEDSTATE_NOT_REQUIRED);
 
     restartManager();
 
     BootstrapMonitor.checkAddonInstalled(ID, "1.0");
     BootstrapMonitor.checkAddonStarted(ID, "1.0");
 
     addon = await promiseAddonByID(ID);
 
     // existing add-on is back
     do_check_neq(addon, null);
     do_check_eq(addon.version, "1.0");
     do_check_eq(addon.name, "Test Bootstrap 1");
     do_check_true(addon.isCompatible);
     do_check_false(addon.appDisabled);
     do_check_true(addon.isActive);
     do_check_eq(addon.type, "extension");
-    do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_SIGNED : AddonManager.SIGNEDSTATE_NOT_REQUIRED);
+    do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_PRIVILEGED : AddonManager.SIGNEDSTATE_NOT_REQUIRED);
 
     packed_addon.remove(false);
 
     // test that a webextension works
     let webext = createTempWebExtensionFile({
       manifest: {
         version: "4.0",
         name: "Test WebExtension 1 (temporary)",
@@ -272,17 +272,17 @@ add_task(async function() {
     // temporary add-on is installed and started
     do_check_neq(addon, null);
     do_check_eq(addon.version, "4.0");
     do_check_eq(addon.name, "Test WebExtension 1 (temporary)");
     do_check_true(addon.isCompatible);
     do_check_false(addon.appDisabled);
     do_check_true(addon.isActive);
     do_check_eq(addon.type, "extension");
-    do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_SIGNED : AddonManager.SIGNEDSTATE_NOT_REQUIRED);
+    do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_PRIVILEGED : AddonManager.SIGNEDSTATE_NOT_REQUIRED);
 
     // test that re-loading a webextension works, using the same filename
     webext.remove(false);
     webext = createTempWebExtensionFile({
       manifest: {
         version: "5.0",
         name: "Test WebExtension 1 (temporary)",
         applications: {
@@ -303,17 +303,17 @@ add_task(async function() {
     do_check_neq(addon, null);
     do_check_eq(addon.version, "5.0");
     do_check_eq(addon.name, "Test WebExtension 1 (temporary)");
     do_check_true(addon.isCompatible);
     do_check_false(addon.appDisabled);
     do_check_true(addon.isActive);
     do_check_eq(addon.type, "extension");
     do_check_true(addon.isWebExtension);
-    do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_SIGNED : AddonManager.SIGNEDSTATE_NOT_REQUIRED);
+    do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_PRIVILEGED : AddonManager.SIGNEDSTATE_NOT_REQUIRED);
 
     // test reloading a webextension with the same name, but a different type.
     webext.remove(false);
     webext = createTempWebExtensionFile({
       manifest: {
         version: "6.0",
         name: "Test WebExtension 1 (temporary)",
         applications: {
@@ -351,17 +351,17 @@ add_task(async function() {
     // existing add-on is back
     do_check_neq(addon, null);
     do_check_eq(addon.version, "1.0");
     do_check_eq(addon.name, "Test Bootstrap 1");
     do_check_true(addon.isCompatible);
     do_check_false(addon.appDisabled);
     do_check_true(addon.isActive);
     do_check_eq(addon.type, "extension");
-    do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_SIGNED : AddonManager.SIGNEDSTATE_NOT_REQUIRED);
+    do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_PRIVILEGED : AddonManager.SIGNEDSTATE_NOT_REQUIRED);
   }
 
   // remove original add-on
   addon.uninstall();
 
   BootstrapMonitor.checkAddonNotInstalled(ID);
   BootstrapMonitor.checkAddonNotStarted(ID);
 
@@ -436,34 +436,34 @@ add_task(async function() {
   // temporary add-on is installed and started
   do_check_neq(addon, null);
   do_check_eq(addon.version, "2.0");
   do_check_eq(addon.name, "Test Bootstrap 1 (temporary)");
   do_check_true(addon.isCompatible);
   do_check_false(addon.appDisabled);
   do_check_true(addon.isActive);
   do_check_eq(addon.type, "extension");
-  do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_SIGNED : AddonManager.SIGNEDSTATE_NOT_REQUIRED);
+  do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_PRIVILEGED : AddonManager.SIGNEDSTATE_NOT_REQUIRED);
 
   addon.uninstall();
 
   addon = await promiseAddonByID(ID);
 
   BootstrapMonitor.checkAddonInstalled(ID);
   BootstrapMonitor.checkAddonStarted(ID);
 
   // existing add-on is back
   do_check_neq(addon, null);
   do_check_eq(addon.version, "1.0");
   do_check_eq(addon.name, "Test Bootstrap 1");
   do_check_true(addon.isCompatible);
   do_check_false(addon.appDisabled);
   do_check_true(addon.isActive);
   do_check_eq(addon.type, "extension");
-  do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_SIGNED : AddonManager.SIGNEDSTATE_NOT_REQUIRED);
+  do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_PRIVILEGED : AddonManager.SIGNEDSTATE_NOT_REQUIRED);
 
   unpacked_addon.remove(true);
   addon.uninstall();
 
   BootstrapMonitor.checkAddonNotInstalled(ID);
   BootstrapMonitor.checkAddonNotStarted(ID);
 
   await promiseRestartManager();
@@ -684,17 +684,17 @@ add_task(async function() {
   // temporary add-on is installed and started
   do_check_neq(tempAddon, null);
   do_check_eq(tempAddon.version, "2.0");
   do_check_eq(tempAddon.name, "Test Bootstrap 1 (temporary)");
   do_check_true(tempAddon.isCompatible);
   do_check_false(tempAddon.appDisabled);
   do_check_true(tempAddon.isActive);
   do_check_eq(tempAddon.type, "extension");
-  do_check_eq(tempAddon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_SIGNED : AddonManager.SIGNEDSTATE_NOT_REQUIRED);
+  do_check_eq(tempAddon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_PRIVILEGED : AddonManager.SIGNEDSTATE_NOT_REQUIRED);
 
   tempAddon.uninstall();
   unpacked_addon.remove(true);
 
   addon.userDisabled = false;
   addon = await promiseAddonByID(ID);
 
   BootstrapMonitor.checkAddonInstalled(ID, "1.0");
@@ -703,17 +703,17 @@ add_task(async function() {
   // existing add-on is back
   do_check_neq(addon, null);
   do_check_eq(addon.version, "1.0");
   do_check_eq(addon.name, "Test Bootstrap 1");
   do_check_true(addon.isCompatible);
   do_check_false(addon.appDisabled);
   do_check_true(addon.isActive);
   do_check_eq(addon.type, "extension");
-  do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_SIGNED : AddonManager.SIGNEDSTATE_NOT_REQUIRED);
+  do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_PRIVILEGED : AddonManager.SIGNEDSTATE_NOT_REQUIRED);
 
   addon.uninstall();
 
   BootstrapMonitor.checkAddonNotInstalled(ID);
   BootstrapMonitor.checkAddonNotStarted(ID);
 
   await promiseRestartManager();
 });
@@ -738,17 +738,17 @@ add_task(async function() {
   do_check_neq(addon, null);
   do_check_eq(addon.id, non_restartless_ID);
   do_check_eq(addon.version, "1.0");
   do_check_eq(addon.name, "Test 1");
   do_check_true(addon.isCompatible);
   do_check_false(addon.appDisabled);
   do_check_true(addon.isActive);
   do_check_eq(addon.type, "extension");
-  do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_SIGNED : AddonManager.SIGNEDSTATE_NOT_REQUIRED);
+  do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_PRIVILEGED : AddonManager.SIGNEDSTATE_NOT_REQUIRED);
 
   let tempdir = gTmpD.clone();
   writeInstallRDFToDir({
     id: non_restartless_ID,
     version: "2.0",
     bootstrap: true,
     unpack: true,
     targetApplications: [{
@@ -794,17 +794,17 @@ add_task(async function() {
   do_check_neq(addon, null);
   do_check_eq(addon.version, "1.0");
   do_check_eq(addon.name, "Test Bootstrap 1");
   do_check_true(addon.isCompatible);
   do_check_false(addon.appDisabled);
   do_check_true(addon.isActive);
   do_check_eq(addon.type, "extension");
   do_check_false(addon.isWebExtension);
-  do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_SIGNED : AddonManager.SIGNEDSTATE_NOT_REQUIRED);
+  do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_PRIVILEGED : AddonManager.SIGNEDSTATE_NOT_REQUIRED);
 
   await AddonManager.installTemporaryAddon(do_get_addon("test_bootstrap1_1"));
 
   BootstrapMonitor.checkAddonInstalled(ID, "1.0");
   BootstrapMonitor.checkAddonStarted(ID, "1.0");
 
   await promiseRestartManager();
 
--- a/toolkit/mozapps/extensions/test/xpcshell/test_webextension.js
+++ b/toolkit/mozapps/extensions/test/xpcshell/test_webextension.js
@@ -41,17 +41,17 @@ add_task(async function() {
   do_check_eq(addon.version, "1.0");
   do_check_eq(addon.name, "Web Extension Name");
   do_check_true(addon.isCompatible);
   do_check_false(addon.appDisabled);
   do_check_true(addon.isActive);
   do_check_false(addon.isSystem);
   do_check_eq(addon.type, "extension");
   do_check_true(addon.isWebExtension);
-  do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_SIGNED : AddonManager.SIGNEDSTATE_NOT_REQUIRED);
+  do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_PRIVILEGED : AddonManager.SIGNEDSTATE_NOT_REQUIRED);
 
   let uri = do_get_addon_root_uri(profileDir, ID);
 
   do_check_eq(addon.iconURL, uri + "icon48.png");
   do_check_eq(addon.icon64URL, uri + "icon64.png");
 
   // Should persist through a restart
   await promiseShutdownManager();
@@ -68,17 +68,17 @@ add_task(async function() {
   do_check_neq(addon, null);
   do_check_eq(addon.version, "1.0");
   do_check_eq(addon.name, "Web Extension Name");
   do_check_true(addon.isCompatible);
   do_check_false(addon.appDisabled);
   do_check_true(addon.isActive);
   do_check_false(addon.isSystem);
   do_check_eq(addon.type, "extension");
-  do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_SIGNED : AddonManager.SIGNEDSTATE_NOT_REQUIRED);
+  do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_PRIVILEGED : AddonManager.SIGNEDSTATE_NOT_REQUIRED);
 
   let file = getFileForAddon(profileDir, ID);
   do_check_true(file.exists());
 
   uri = do_get_addon_root_uri(profileDir, ID);
 
   do_check_eq(addon.iconURL, uri + "icon48.png");
   do_check_eq(addon.icon64URL, uri + "icon64.png");
@@ -121,17 +121,17 @@ add_task(async function() {
   do_check_neq(addon, null);
   do_check_eq(addon.version, "1.0");
   do_check_eq(addon.name, "Web Extension Name");
   do_check_true(addon.isCompatible);
   do_check_false(addon.appDisabled);
   do_check_true(addon.isActive);
   do_check_false(addon.isSystem);
   do_check_eq(addon.type, "extension");
-  do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_SIGNED : AddonManager.SIGNEDSTATE_NOT_REQUIRED);
+  do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_PRIVILEGED : AddonManager.SIGNEDSTATE_NOT_REQUIRED);
 
   let file = getFileForAddon(profileDir, ID);
   do_check_true(file.exists());
 
   addon.uninstall();
 
   await promiseRestartManager();
 });
@@ -409,17 +409,17 @@ add_task(async function testThemeExtensi
   do_check_eq(addon.name, "Web Extension Name");
   do_check_true(addon.isCompatible);
   do_check_false(addon.appDisabled);
   do_check_false(addon.isActive);
   do_check_true(addon.userDisabled);
   do_check_false(addon.isSystem);
   do_check_eq(addon.type, "theme");
   do_check_true(addon.isWebExtension);
-  do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_SIGNED : AddonManager.SIGNEDSTATE_NOT_REQUIRED);
+  do_check_eq(addon.signedState, mozinfo.addon_signing ? AddonManager.SIGNEDSTATE_PRIVILEGED : AddonManager.SIGNEDSTATE_NOT_REQUIRED);
 
   addon.uninstall();
 
   // Also test one without a proper 'theme' section.
   addon = await promiseInstallWebExtension({
     manifest: {
       "author": "Some author",
       manifest_version: 2,