Bug 1357490: Part 1: Run toolkit xpcshell tests in both in-process and OOP modes. r?aswan
MozReview-Commit-ID: 7YYO8ldupn3
--- a/toolkit/components/extensions/Extension.jsm
+++ b/toolkit/components/extensions/Extension.jsm
@@ -1090,16 +1090,21 @@ this.Extension = class extends Extension
ParentAPIManager.shutdownExtension(this.id);
Management.emit("shutdown", this);
this.emit("shutdown");
Services.ppmm.broadcastAsyncMessage("Extension:Shutdown", {id: this.id});
+ if (this.rootURI.QueryInterface(Ci.nsIJARURI)) {
+ let file = this.rootURI.JARFile.QueryInterface(Ci.nsIFileURL).file;
+ Services.ppmm.broadcastAsyncMessage("Extension:FlushJarCache", {path: file.path});
+ }
+
MessageChannel.abortResponses({extensionId: this.id});
ExtensionManagement.shutdownExtension(this.uuid);
return this.cleanupGeneratedFile();
}
observe(subject, topic, data) {
--- a/toolkit/components/extensions/moz.build
+++ b/toolkit/components/extensions/moz.build
@@ -52,11 +52,12 @@ BROWSER_CHROME_MANIFESTS += [
MOCHITEST_MANIFESTS += [
'test/mochitest/mochitest-remote.ini',
'test/mochitest/mochitest.ini'
]
MOCHITEST_CHROME_MANIFESTS += ['test/mochitest/chrome.ini']
XPCSHELL_TESTS_MANIFESTS += [
'test/xpcshell/native_messaging.ini',
+ 'test/xpcshell/xpcshell-e10s.ini',
'test/xpcshell/xpcshell-remote.ini',
'test/xpcshell/xpcshell.ini',
]
--- a/toolkit/components/extensions/test/xpcshell/head.js
+++ b/toolkit/components/extensions/test/xpcshell/head.js
@@ -1,15 +1,16 @@
"use strict";
const {classes: Cc, interfaces: Ci, utils: Cu, results: Cr} = Components;
/* exported createHttpServer, promiseConsoleOutput, cleanupDir */
Components.utils.import("resource://gre/modules/AppConstants.jsm");
+Components.utils.import("resource://gre/modules/Services.jsm");
Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
Components.utils.import("resource://gre/modules/Timer.jsm");
Components.utils.import("resource://testing-common/AddonTestUtils.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "ContentTask",
"resource://testing-common/ContentTask.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "Extension",
"resource://gre/modules/Extension.jsm");
@@ -22,18 +23,18 @@ XPCOMUtils.defineLazyModuleGetter(this,
XPCOMUtils.defineLazyModuleGetter(this, "FileUtils",
"resource://gre/modules/FileUtils.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "HttpServer",
"resource://testing-common/httpd.js");
XPCOMUtils.defineLazyModuleGetter(this, "NetUtil",
"resource://gre/modules/NetUtil.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "Schemas",
"resource://gre/modules/Schemas.jsm");
-XPCOMUtils.defineLazyModuleGetter(this, "Services",
- "resource://gre/modules/Services.jsm");
+
+Services.prefs.setBoolPref("extensions.webextensions.remote", false);
ExtensionTestUtils.init(this);
/**
* Creates a new HttpServer for testing, and begins listening on the
* specified port. Automatically shuts down the server when the test
* unit ends.
*
copy from toolkit/components/extensions/test/xpcshell/head_remote.js
copy to toolkit/components/extensions/test/xpcshell/head_e10s.js
--- a/toolkit/components/extensions/test/xpcshell/head_remote.js
+++ b/toolkit/components/extensions/test/xpcshell/head_remote.js
@@ -1,5 +1,4 @@
"use strict";
-/* globals ExtensionTestUtils */
-
-ExtensionTestUtils.remoteContentScripts = true;
+Services.prefs.setBoolPref("extensions.webextensions.remote", true);
+Services.prefs.setIntPref("dom.ipc.keepProcessesAlive.extension", 1);
copy from toolkit/components/extensions/test/xpcshell/xpcshell.ini
copy to toolkit/components/extensions/test/xpcshell/xpcshell-common.ini
--- a/toolkit/components/extensions/test/xpcshell/xpcshell.ini
+++ b/toolkit/components/extensions/test/xpcshell/xpcshell-common.ini
@@ -1,92 +1,60 @@
-[DEFAULT]
-head = head.js
-firefox-appdir = browser
-skip-if = appname == "thunderbird"
-dupe-manifest =
-support-files =
- data/**
- head_sync.js
- xpcshell-content.ini
-tags = webextensions
-
-[test_csp_custom_policies.js]
-[test_csp_validator.js]
[test_ext_alarms.js]
[test_ext_alarms_does_not_fire.js]
[test_ext_alarms_periodic.js]
[test_ext_alarms_replaces.js]
[test_ext_api_permissions.js]
[test_ext_background_generated_load_events.js]
[test_ext_background_generated_reload.js]
[test_ext_background_global_history.js]
skip-if = os == "android" # Android does not use Places for history.
[test_ext_background_private_browsing.js]
[test_ext_background_runtime_connect_params.js]
[test_ext_background_sub_windows.js]
[test_ext_background_window_properties.js]
skip-if = os == "android"
-[test_ext_contexts.js]
[test_ext_contextual_identities.js]
skip-if = os == "android" # Containers are not exposed to android.
[test_ext_debugging_utils.js]
[test_ext_downloads.js]
[test_ext_downloads_download.js]
skip-if = os == "android"
[test_ext_downloads_misc.js]
skip-if = os == "android" || (os=='linux' && bits==32) # linux32: bug 1324870
[test_ext_downloads_search.js]
skip-if = os == "android"
[test_ext_experiments.js]
skip-if = release_or_beta
[test_ext_extension.js]
[test_ext_extensionPreferencesManager.js]
[test_ext_extensionSettingsStore.js]
[test_ext_idle.js]
-[test_ext_json_parser.js]
[test_ext_localStorage.js]
[test_ext_management.js]
[test_ext_management_uninstall_self.js]
-[test_ext_manifest_content_security_policy.js]
-[test_ext_manifest_incognito.js]
-[test_ext_manifest_minimum_chrome_version.js]
-[test_ext_manifest_themes.js]
[test_ext_onmessage_removelistener.js]
skip-if = true # This test no longer tests what it is meant to test.
-[test_ext_permissions.js]
-skip-if = os == "android" # Bug 1350559
[test_ext_privacy.js]
[test_ext_privacy_disable.js]
[test_ext_privacy_update.js]
[test_ext_runtime_connect_no_receiver.js]
[test_ext_runtime_getBrowserInfo.js]
[test_ext_runtime_getPlatformInfo.js]
[test_ext_runtime_onInstalled_and_onStartup.js]
[test_ext_runtime_sendMessage.js]
[test_ext_runtime_sendMessage_args.js]
[test_ext_runtime_sendMessage_errors.js]
[test_ext_runtime_sendMessage_no_receiver.js]
[test_ext_runtime_sendMessage_self.js]
-[test_ext_schemas.js]
-[test_ext_schemas_async.js]
-[test_ext_schemas_allowed_contexts.js]
-[test_ext_schemas_revoke.js]
[test_ext_shutdown_cleanup.js]
[test_ext_simple.js]
[test_ext_startup_cache.js]
[test_ext_storage.js]
[test_ext_storage_sync.js]
head = head.js head_sync.js
skip-if = os == "android"
[test_ext_storage_sync_crypto.js]
skip-if = os == "android"
-[test_ext_themes_supported_properties.js]
[test_ext_topSites.js]
skip-if = os == "android"
-[test_ext_legacy_extension_context.js]
-[test_ext_legacy_extension_embedding.js]
-[test_locale_converter.js]
-[test_locale_data.js]
[test_native_messaging.js]
skip-if = os == "android"
-[test_proxy_scripts.js]
-[include:xpcshell-content.ini]
copy from toolkit/components/extensions/test/xpcshell/xpcshell-remote.ini
copy to toolkit/components/extensions/test/xpcshell/xpcshell-e10s.ini
--- a/toolkit/components/extensions/test/xpcshell/xpcshell-remote.ini
+++ b/toolkit/components/extensions/test/xpcshell/xpcshell-e10s.ini
@@ -1,10 +1,10 @@
[DEFAULT]
-head = head.js head_remote.js
+head = head.js head_e10s.js
tail =
firefox-appdir = browser
skip-if = appname == "thunderbird" || os == "android"
dupe-manifest =
support-files =
data/**
xpcshell-content.ini
tags = webextensions webextensions-e10s
--- a/toolkit/components/extensions/test/xpcshell/xpcshell-remote.ini
+++ b/toolkit/components/extensions/test/xpcshell/xpcshell-remote.ini
@@ -1,12 +1,13 @@
[DEFAULT]
-head = head.js head_remote.js
+head = head.js head_remote.js head_e10s.js
tail =
firefox-appdir = browser
skip-if = appname == "thunderbird" || os == "android"
dupe-manifest =
support-files =
data/**
xpcshell-content.ini
-tags = webextensions webextensions-e10s
+tags = webextensions remote-webextensions
+[include:xpcshell-common.ini]
[include:xpcshell-content.ini]
--- a/toolkit/components/extensions/test/xpcshell/xpcshell.ini
+++ b/toolkit/components/extensions/test/xpcshell/xpcshell.ini
@@ -2,91 +2,35 @@
head = head.js
firefox-appdir = browser
skip-if = appname == "thunderbird"
dupe-manifest =
support-files =
data/**
head_sync.js
xpcshell-content.ini
-tags = webextensions
+tags = webextensions in-process-webextensions
[test_csp_custom_policies.js]
[test_csp_validator.js]
-[test_ext_alarms.js]
-[test_ext_alarms_does_not_fire.js]
-[test_ext_alarms_periodic.js]
-[test_ext_alarms_replaces.js]
-[test_ext_api_permissions.js]
-[test_ext_background_generated_load_events.js]
-[test_ext_background_generated_reload.js]
-[test_ext_background_global_history.js]
-skip-if = os == "android" # Android does not use Places for history.
-[test_ext_background_private_browsing.js]
-[test_ext_background_runtime_connect_params.js]
-[test_ext_background_sub_windows.js]
-[test_ext_background_window_properties.js]
-skip-if = os == "android"
[test_ext_contexts.js]
-[test_ext_contextual_identities.js]
-skip-if = os == "android" # Containers are not exposed to android.
-[test_ext_debugging_utils.js]
-[test_ext_downloads.js]
-[test_ext_downloads_download.js]
-skip-if = os == "android"
-[test_ext_downloads_misc.js]
-skip-if = os == "android" || (os=='linux' && bits==32) # linux32: bug 1324870
-[test_ext_downloads_search.js]
-skip-if = os == "android"
-[test_ext_experiments.js]
-skip-if = release_or_beta
-[test_ext_extension.js]
-[test_ext_extensionPreferencesManager.js]
-[test_ext_extensionSettingsStore.js]
-[test_ext_idle.js]
[test_ext_json_parser.js]
-[test_ext_localStorage.js]
-[test_ext_management.js]
-[test_ext_management_uninstall_self.js]
[test_ext_manifest_content_security_policy.js]
[test_ext_manifest_incognito.js]
[test_ext_manifest_minimum_chrome_version.js]
[test_ext_manifest_themes.js]
-[test_ext_onmessage_removelistener.js]
-skip-if = true # This test no longer tests what it is meant to test.
-[test_ext_permissions.js]
-skip-if = os == "android" # Bug 1350559
-[test_ext_privacy.js]
-[test_ext_privacy_disable.js]
-[test_ext_privacy_update.js]
-[test_ext_runtime_connect_no_receiver.js]
-[test_ext_runtime_getBrowserInfo.js]
-[test_ext_runtime_getPlatformInfo.js]
-[test_ext_runtime_onInstalled_and_onStartup.js]
-[test_ext_runtime_sendMessage.js]
-[test_ext_runtime_sendMessage_args.js]
-[test_ext_runtime_sendMessage_errors.js]
-[test_ext_runtime_sendMessage_no_receiver.js]
-[test_ext_runtime_sendMessage_self.js]
[test_ext_schemas.js]
[test_ext_schemas_async.js]
[test_ext_schemas_allowed_contexts.js]
[test_ext_schemas_revoke.js]
-[test_ext_shutdown_cleanup.js]
-[test_ext_simple.js]
-[test_ext_startup_cache.js]
-[test_ext_storage.js]
-[test_ext_storage_sync.js]
-head = head.js head_sync.js
-skip-if = os == "android"
-[test_ext_storage_sync_crypto.js]
-skip-if = os == "android"
[test_ext_themes_supported_properties.js]
-[test_ext_topSites.js]
-skip-if = os == "android"
+[test_locale_converter.js]
+[test_locale_data.js]
+
+[test_ext_permissions.js]
+skip-if = os == "android" # Bug 1350559
+
[test_ext_legacy_extension_context.js]
[test_ext_legacy_extension_embedding.js]
-[test_locale_converter.js]
-[test_locale_data.js]
-[test_native_messaging.js]
-skip-if = os == "android"
[test_proxy_scripts.js]
+
+[include:xpcshell-common.ini]
[include:xpcshell-content.ini]