summaryrefslogtreecommitdiffstats
path: root/testing/specialpowers/api.js
diff options
context:
space:
mode:
Diffstat (limited to 'testing/specialpowers/api.js')
-rw-r--r--testing/specialpowers/api.js66
1 files changed, 66 insertions, 0 deletions
diff --git a/testing/specialpowers/api.js b/testing/specialpowers/api.js
new file mode 100644
index 0000000000..08b42cefaf
--- /dev/null
+++ b/testing/specialpowers/api.js
@@ -0,0 +1,66 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/* globals ExtensionAPI, Services, XPCOMUtils */
+
+XPCOMUtils.defineLazyServiceGetter(
+ this,
+ "resProto",
+ "@mozilla.org/network/protocol;1?name=resource",
+ "nsISubstitutingProtocolHandler"
+);
+
+this.specialpowers = class extends ExtensionAPI {
+ onStartup() {
+ let uri = Services.io.newURI("content/", null, this.extension.rootURI);
+ resProto.setSubstitutionWithFlags(
+ "specialpowers",
+ uri,
+ resProto.ALLOW_CONTENT_ACCESS
+ );
+
+ // Register special testing modules.
+ let manifest = Services.dirsvc.get("ProfD", Ci.nsIFile);
+ manifest.append("tests.manifest");
+ Components.manager
+ .QueryInterface(Ci.nsIComponentRegistrar)
+ .autoRegister(manifest);
+
+ ChromeUtils.registerWindowActor("SpecialPowers", {
+ allFrames: true,
+ includeChrome: true,
+ child: {
+ esModuleURI: "resource://specialpowers/SpecialPowersChild.sys.mjs",
+ observers: [
+ "chrome-document-global-created",
+ "content-document-global-created",
+ ],
+ },
+ parent: {
+ esModuleURI: "resource://specialpowers/SpecialPowersParent.sys.mjs",
+ },
+ });
+
+ ChromeUtils.registerWindowActor("AppTestDelegate", {
+ parent: {
+ esModuleURI: "resource://specialpowers/AppTestDelegateParent.sys.mjs",
+ },
+ child: {
+ esModuleURI: "resource://specialpowers/AppTestDelegateChild.sys.mjs",
+ events: {
+ DOMContentLoaded: { capture: true },
+ load: { capture: true },
+ },
+ },
+ allFrames: true,
+ includeChrome: true,
+ });
+ }
+
+ onShutdown() {
+ ChromeUtils.unregisterWindowActor("SpecialPowers");
+ ChromeUtils.unregisterWindowActor("AppTestDelegate");
+ resProto.setSubstitution("specialpowers", null);
+ }
+};