Bug 1360354 - Do not qualify users of legacy addons (non-bootstrapped) for e10s-multi. r=krizsa
MozReview-Commit-ID: 28fFHdttVxl
--- a/toolkit/mozapps/extensions/internal/XPIProvider.jsm
+++ b/toolkit/mozapps/extensions/internal/XPIProvider.jsm
@@ -4567,32 +4567,34 @@ this.XPIProvider = {
/**
* Determine if an add-on should be blocking multiple content processes.
*
* @param aAddon
* The add-on to test
* @return true if enabling the add-on should block multiple content processes.
*/
isBlockingE10sMulti(aAddon) {
+ // WebExtensions have type = "webextension" or type="webextension-theme",
+ // so they won't block multi.
if (aAddon.type != "extension")
return false;
// The hotfix is exempt
let hotfixID = Preferences.get(PREF_EM_HOTFIX_ID, undefined);
if (hotfixID && hotfixID == aAddon.id)
return false;
// System add-ons are exempt
let locName = aAddon._installLocation ? aAddon._installLocation.name
: undefined;
if (locName == KEY_APP_SYSTEM_DEFAULTS ||
locName == KEY_APP_SYSTEM_ADDONS)
return false;
- return aAddon.bootstrap;
+ return true;
},
/**
* In some cases having add-ons active blocks e10s but turning off e10s
* requires a restart so some add-ons that are normally restartless will
* require a restart to install or enable.
*
* @param aAddon
--- a/toolkit/mozapps/extensions/test/xpcshell/test_e10s_restartless.js
+++ b/toolkit/mozapps/extensions/test/xpcshell/test_e10s_restartless.js
@@ -470,31 +470,31 @@ add_task(function*() {
gAppInfo.browserTabsRemoteAutostart = true;
Services.prefs.setBoolPref("extensions.e10sBlocksEnabling", true);
Services.prefs.setCharPref("extensions.hotfix.id", ID);
Services.prefs.setBoolPref("extensions.hotfix.cert.checkAttributes", false);
yield check_normal(true);
});
-// Test non-restarless add-on's should not block multi
+// Test non-restarless add-on should block multi
add_task(function*() {
yield promiseInstallAllFiles([do_get_addon("test_install1")], true);
let non_restartless_ID = "addon1@tests.mozilla.org";
-
- restartManager();
-
let addon = yield promiseAddonByID(non_restartless_ID);
// non-restartless add-on is installed and started
- do_check_neq(addon, null);
+ do_check_eq(addon, null);
+
+ yield promiseRestartManager();
- do_check_false(check_multi_disabled());
+ do_check_true(check_multi_disabled());
+ addon = yield promiseAddonByID(non_restartless_ID);
addon.uninstall();
BootstrapMonitor.checkAddonNotInstalled(non_restartless_ID);
BootstrapMonitor.checkAddonNotStarted(non_restartless_ID);
yield promiseRestartManager();
});