Bug 1358620 Add telemetry for non-MPC extensions draft
authorAndrew Swan <aswan@mozilla.com>
Mon, 24 Apr 2017 11:30:51 -0700
changeset 568215 87a5f8ad2a347168a2d835f9eaaf0c562942ca1f
parent 567252 62a2d3693579fc77b1c510984ae471a860d03302
child 625856 9a238e3f9d7716b88450cf5ca14deebe6d90168e
push id55796
push useraswan@mozilla.com
push dateTue, 25 Apr 2017 21:39:09 +0000
bugs1358620
milestone55.0a1
Bug 1358620 Add telemetry for non-MPC extensions MozReview-Commit-ID: 5LwLr4wXmHq
toolkit/components/telemetry/TelemetryEnvironment.jsm
toolkit/components/telemetry/docs/data/environment.rst
toolkit/components/telemetry/tests/addons/system/install.rdf
toolkit/components/telemetry/tests/unit/test_TelemetryEnvironment.js
--- a/toolkit/components/telemetry/TelemetryEnvironment.jsm
+++ b/toolkit/components/telemetry/TelemetryEnvironment.jsm
@@ -184,16 +184,17 @@ const DEFAULT_ENVIRONMENT_PREFS = new Ma
   ["devtools.chrome.enabled", {what: RECORD_PREF_VALUE}],
   ["devtools.debugger.enabled", {what: RECORD_PREF_VALUE}],
   ["devtools.debugger.remote-enabled", {what: RECORD_PREF_VALUE}],
   ["dom.ipc.plugins.asyncInit.enabled", {what: RECORD_PREF_VALUE}],
   ["dom.ipc.plugins.enabled", {what: RECORD_PREF_VALUE}],
   ["dom.ipc.processCount", {what: RECORD_PREF_VALUE}],
   ["dom.max_script_run_time", {what: RECORD_PREF_VALUE}],
   ["experiments.manifest.uri", {what: RECORD_PREF_VALUE}],
+  ["extensions.allow-non-mpc-extensions", {what: RECORD_PREF_VALUE}],
   ["extensions.autoDisableScopes", {what: RECORD_PREF_VALUE}],
   ["extensions.enabledScopes", {what: RECORD_PREF_VALUE}],
   ["extensions.blocklist.enabled", {what: RECORD_PREF_VALUE}],
   ["extensions.blocklist.url", {what: RECORD_PREF_VALUE}],
   ["extensions.strictCompatibility", {what: RECORD_PREF_VALUE}],
   ["extensions.update.enabled", {what: RECORD_PREF_VALUE}],
   ["extensions.update.url", {what: RECORD_PREF_VALUE}],
   ["extensions.update.background.url", {what: RECORD_PREF_VALUE}],
@@ -620,16 +621,17 @@ EnvironmentAddonBuilder.prototype = {
           type: addon.type,
           foreignInstall: enforceBoolean(addon.foreignInstall),
           hasBinaryComponents: addon.hasBinaryComponents,
           installDay: Utils.millisecondsToDays(installDate.getTime()),
           updateDay: Utils.millisecondsToDays(updateDate.getTime()),
           signedState: addon.signedState,
           isSystem: addon.isSystem,
           isWebExtension: addon.isWebExtension,
+          multiprocessCompatible: Boolean(addon.multiprocessCompatible),
         };
 
         if (addon.signedState !== undefined)
           activeAddons[addon.id].signedState = addon.signedState;
 
       } catch (ex) {
         this._environment._log.error("_getActiveAddons - An addon was discarded due to an error", ex);
         continue;
--- a/toolkit/components/telemetry/docs/data/environment.rst
+++ b/toolkit/components/telemetry/docs/data/environment.rst
@@ -209,16 +209,17 @@ Structure:
             type: <string>, // "extension", "service", ...
             foreignInstall: <bool>,
             hasBinaryComponents: <bool>
             installDay: <number>, // days since UNIX epoch, 0 on failure
             updateDay: <number>, // days since UNIX epoch, 0 on failure
             signedState: <integer>, // whether the add-on is signed by AMO, only present for extensions
             isSystem: <bool>, // true if this is a System Add-on
             isWebExtension: <bool>, // true if this is a WebExtension
+            multiprocessCompatible: <bool>, // true if this add-on does *not* require e10s shims
           },
           ...
         },
         theme: { // the active theme
           id: <string>,
           blocklisted: <bool>,
           description: <string>,
           name: <string>,
--- a/toolkit/components/telemetry/tests/addons/system/install.rdf
+++ b/toolkit/components/telemetry/tests/addons/system/install.rdf
@@ -14,11 +14,12 @@
         <em:maxVersion>*</em:maxVersion>
       </Description>
     </em:targetApplication>
 
     <!-- Front End MetaData -->
     <em:name>XPI Telemetry System Add-on Test</em:name>
     <em:description>A system addon which is shipped with Firefox.</em:description>
     <em:bootstrap>true</em:bootstrap>
+    <em:multiprocessCompatible>true</em:multiprocessCompatible>
 
   </Description>
 </RDF>
--- a/toolkit/components/telemetry/tests/unit/test_TelemetryEnvironment.js
+++ b/toolkit/components/telemetry/tests/unit/test_TelemetryEnvironment.js
@@ -671,16 +671,17 @@ function checkActiveAddon(data) {
     type: "string",
     foreignInstall: "boolean",
     hasBinaryComponents: "boolean",
     installDay: "number",
     updateDay: "number",
     signedState,
     isSystem: "boolean",
     isWebExtension: "boolean",
+    multiprocessCompatible: "boolean",
   };
 
   for (let f in EXPECTED_ADDON_FIELDS_TYPES) {
     Assert.ok(f in data, f + " must be available.");
     Assert.equal(typeof data[f], EXPECTED_ADDON_FIELDS_TYPES[f],
                  f + " must have the correct type.");
   }
 
@@ -1126,16 +1127,17 @@ add_task(function* test_addonsAndPlugins
     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,
     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.",
     name: "XPI Telemetry System Add-on Test",
     userDisabled: false,
     appDisabled: false,
@@ -1144,16 +1146,17 @@ add_task(function* test_addonsAndPlugins
     type: "extension",
     foreignInstall: false,
     hasBinaryComponents: false,
     installDay: truncateToDays(SYSTEM_ADDON_INSTALL_DATE),
     updateDay: truncateToDays(SYSTEM_ADDON_INSTALL_DATE),
     signedState: undefined,
     isSystem: true,
     isWebExtension: false,
+    multiprocessCompatible: true,
   };
 
   const WEBEXTENSION_ADDON_ID = "tel-webextension-xpi@tests.mozilla.org";
   const WEBEXTENSION_ADDON_INSTALL_DATE = truncateToDays(Date.now());
   const EXPECTED_WEBEXTENSION_ADDON_DATA = {
     blocklisted: false,
     description: "A webextension addon.",
     name: "XPI Telemetry WebExtension Add-on Test",
@@ -1164,16 +1167,17 @@ add_task(function* test_addonsAndPlugins
     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,
     isSystem: false,
     isWebExtension: true,
+    multiprocessCompatible: true,
   };
 
   const EXPECTED_PLUGIN_DATA = {
     name: FLASH_PLUGIN_NAME,
     version: FLASH_PLUGIN_VERSION,
     description: FLASH_PLUGIN_DESC,
     blocklisted: false,
     disabled: false,