Bug 1358620 Add telemetry for non-MPC extensions
MozReview-Commit-ID: 5LwLr4wXmHq
--- 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,