Bug 1479235: Stop whitelisting SpecialPowers helper modules for content process startup. r?felipe
MozReview-Commit-ID: 3y3qTVsB3ly
--- a/browser/base/content/test/performance/browser_startup_content.js
+++ b/browser/base/content/test/performance/browser_startup_content.js
@@ -18,28 +18,22 @@
const kDumpAllStacks = false;
const whitelist = {
components: new Set([
"ContentProcessSingleton.js",
"extension-process-script.js",
]),
modules: new Set([
- // From the test harness
"chrome://mochikit/content/ShutdownLeaksCollector.jsm",
- "resource://specialpowers/MockColorPicker.jsm",
- "resource://specialpowers/MockFilePicker.jsm",
- "resource://specialpowers/MockPermissionPrompt.jsm",
// General utilities
"resource://gre/modules/AppConstants.jsm",
"resource://gre/modules/AsyncShutdown.jsm",
"resource://gre/modules/DeferredTask.jsm",
- "resource://gre/modules/FileUtils.jsm",
- "resource://gre/modules/NetUtil.jsm",
"resource://gre/modules/PromiseUtils.jsm",
"resource://gre/modules/Services.jsm", // bug 1464542
"resource://gre/modules/Timer.jsm",
"resource://gre/modules/XPCOMUtils.jsm",
// Logging related
"resource://gre/modules/Log.jsm",
@@ -71,19 +65,16 @@ const whitelist = {
// PDF.js
"resource://pdf.js/PdfJsRegistration.jsm",
"resource://pdf.js/PdfjsContentUtils.jsm",
// Extensions
"resource://gre/modules/ExtensionUtils.jsm",
"resource://gre/modules/MessageChannel.jsm",
- // Service workers
- "resource://gre/modules/ServiceWorkerCleanUp.jsm",
-
// Shield
"resource://normandy-content/AboutPages.jsm",
]),
};
// Items on this list are allowed to be loaded but not
// required, as opposed to items in the main whitelist,
// which are all required.
--- a/testing/specialpowers/content/MockFilePicker.jsm
+++ b/testing/specialpowers/content/MockFilePicker.jsm
@@ -3,17 +3,18 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
var EXPORTED_SYMBOLS = ["MockFilePicker"];
const Cm = Components.manager;
const CONTRACT_ID = "@mozilla.org/filepicker;1";
-ChromeUtils.import("resource://gre/modules/FileUtils.jsm");
+ChromeUtils.defineModuleGetter(this, "FileUtils",
+ "resource://gre/modules/FileUtils.jsm");
ChromeUtils.import("resource://gre/modules/Services.jsm");
ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
// Allow stuff from this scope to be accessed from non-privileged scopes. This
// would crash if used outside of automation.
Cu.forcePermissiveCOWs();
var registrar = Cm.QueryInterface(Ci.nsIComponentRegistrar);
--- a/testing/specialpowers/content/MockPermissionPrompt.jsm
+++ b/testing/specialpowers/content/MockPermissionPrompt.jsm
@@ -3,20 +3,22 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
var EXPORTED_SYMBOLS = ["MockPermissionPrompt"];
const Cm = Components.manager;
const CONTRACT_ID = "@mozilla.org/content-permission/prompt;1";
-ChromeUtils.import("resource://gre/modules/FileUtils.jsm");
ChromeUtils.import("resource://gre/modules/Services.jsm");
ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
+ChromeUtils.defineModuleGetter(this, "FileUtils",
+ "resource://gre/modules/FileUtils.jsm");
+
var registrar = Cm.QueryInterface(Ci.nsIComponentRegistrar);
var oldClassID, oldFactory;
var newClassID = Cc["@mozilla.org/uuid-generator;1"].getService(Ci.nsIUUIDGenerator).generateUUID();
var newFactory = {
createInstance(aOuter, aIID) {
if (aOuter)
throw Cr.NS_ERROR_NO_AGGREGATION;
return new MockPermissionPromptInstance().QueryInterface(aIID);
--- a/testing/specialpowers/content/specialpowersAPI.js
+++ b/testing/specialpowers/content/specialpowersAPI.js
@@ -7,25 +7,33 @@
"use strict";
/* import-globals-from MozillaLogger.js */
/* globals XPCNativeWrapper, content */
var global = this;
-ChromeUtils.import("resource://specialpowers/MockFilePicker.jsm");
-ChromeUtils.import("resource://specialpowers/MockColorPicker.jsm");
-ChromeUtils.import("resource://specialpowers/MockPermissionPrompt.jsm");
ChromeUtils.import("resource://gre/modules/Services.jsm");
-ChromeUtils.import("resource://gre/modules/PrivateBrowsingUtils.jsm");
ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
-ChromeUtils.import("resource://gre/modules/NetUtil.jsm");
-ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
-ChromeUtils.import("resource://gre/modules/ServiceWorkerCleanUp.jsm");
+
+ChromeUtils.defineModuleGetter(this, "MockFilePicker",
+ "resource://specialpowers/MockFilePicker.jsm");
+ChromeUtils.defineModuleGetter(this, "MockColorPicker",
+ "resource://specialpowers/MockColorPicker.jsm");
+ChromeUtils.defineModuleGetter(this, "MockPermissionPrompt",
+ "resource://specialpowers/MockPermissionPrompt.jsm");
+ChromeUtils.defineModuleGetter(this, "PrivateBrowsingUtils",
+ "resource://gre/modules/PrivateBrowsingUtils.jsm");
+ChromeUtils.defineModuleGetter(this, "NetUtil",
+ "resource://gre/modules/NetUtil.jsm");
+ChromeUtils.defineModuleGetter(this, "AppConstants",
+ "resource://gre/modules/AppConstants.jsm");
+ChromeUtils.defineModuleGetter(this, "ServiceWorkerCleanUp",
+ "resource://gre/modules/ServiceWorkerCleanUp.jsm");
ChromeUtils.defineModuleGetter(this, "PerTestCoverageUtils",
"resource://testing-common/PerTestCoverageUtils.jsm");
// We're loaded with "this" not set to the global in some cases, so we
// have to play some games to get at the global object here. Normally
// we'd try "this" from a function called with undefined this value,
// but this whole file is in strict mode. So instead fall back on