summaryrefslogtreecommitdiffstats
path: root/dom/chrome-webidl/JSProcessActor.webidl
diff options
context:
space:
mode:
Diffstat (limited to 'dom/chrome-webidl/JSProcessActor.webidl')
-rw-r--r--dom/chrome-webidl/JSProcessActor.webidl94
1 files changed, 94 insertions, 0 deletions
diff --git a/dom/chrome-webidl/JSProcessActor.webidl b/dom/chrome-webidl/JSProcessActor.webidl
new file mode 100644
index 0000000000..13a7062427
--- /dev/null
+++ b/dom/chrome-webidl/JSProcessActor.webidl
@@ -0,0 +1,94 @@
+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set ts=8 sts=2 et sw=2 tw=80: */
+/* 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/. */
+
+/**
+ * An actor architecture designed to allow compositional parent/content
+ * communications. The lifetime of a JSProcessActor{Child, Parent} is the `ContentParent`
+ * (for the parent-side) / `ContentChild` (for the child-side).
+ */
+
+interface nsISupports;
+
+/**
+ * Base class for parent-side actor.
+ */
+[ChromeOnly, Exposed=Window]
+interface JSProcessActorParent {
+ [ChromeOnly]
+ constructor();
+
+ readonly attribute nsIDOMProcessParent manager;
+};
+JSProcessActorParent includes JSActor;
+
+[ChromeOnly, Exposed=Window]
+interface JSProcessActorChild {
+ [ChromeOnly]
+ constructor();
+
+ readonly attribute nsIDOMProcessChild manager;
+};
+JSProcessActorChild includes JSActor;
+
+
+/**
+ * Used by `ChromeUtils.registerProcessActor()` to register actors.
+ */
+dictionary ProcessActorOptions {
+ /**
+ * An array of remote type which restricts the actor is allowed to instantiate
+ * in specific process type. If this is defined, the prefix of process type
+ * matches the remote type by prefix match is allowed to instantiate, ex: if
+ * Fission is enabled, the prefix of process type will be `webIsolated`, it
+ * can prefix match remote type either `web` or `webIsolated`. If not passed,
+ * all content processes are allowed to instantiate the actor.
+ */
+ sequence<UTF8String> remoteTypes;
+
+ /**
+ * If this is set to `true`, allow this actor to be created for the parent
+ * process.
+ */
+ boolean includeParent = false;
+
+ /** This fields are used for configuring individual sides of the actor. */
+ ProcessActorSidedOptions parent;
+ ProcessActorChildOptions child;
+};
+
+dictionary ProcessActorSidedOptions {
+ /**
+ * The JSM path which should be loaded for the actor on this side.
+ *
+ * Mutually exclusive with `esModuleURI`.
+ *
+ * If neither this nor `esModuleURI` is passed, the specified side cannot receive
+ * messages, but may send them using `sendAsyncMessage` or `sendQuery`.
+ */
+ ByteString moduleURI;
+
+ /**
+ * The ESM path which should be loaded for the actor on this side.
+ *
+ * Mutually exclusive with `moduleURI`.
+ *
+ * If neither this nor `moduleURI` is passed, the specified side cannot
+ * receive messages, but may send them using `sendAsyncMessage` or
+ * `sendQuery`.
+ */
+ ByteString esModuleURI;
+};
+
+dictionary ProcessActorChildOptions : ProcessActorSidedOptions {
+ /**
+ * An array of observer topics to listen to. An observer will be added for each
+ * topic in the list.
+ *
+ * Unlike for JSWindowActor, observers are always invoked, and do not need to
+ * pass an inner or outer window as subject.
+ */
+ sequence<ByteString> observers;
+};