summaryrefslogtreecommitdiffstats
path: root/dom/chrome-webidl/JSWindowActor.webidl
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 09:22:09 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 09:22:09 +0000
commit43a97878ce14b72f0981164f87f2e35e14151312 (patch)
tree620249daf56c0258faa40cbdcf9cfba06de2a846 /dom/chrome-webidl/JSWindowActor.webidl
parentInitial commit. (diff)
downloadfirefox-43a97878ce14b72f0981164f87f2e35e14151312.tar.xz
firefox-43a97878ce14b72f0981164f87f2e35e14151312.zip
Adding upstream version 110.0.1.upstream/110.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'dom/chrome-webidl/JSWindowActor.webidl')
-rw-r--r--dom/chrome-webidl/JSWindowActor.webidl186
1 files changed, 186 insertions, 0 deletions
diff --git a/dom/chrome-webidl/JSWindowActor.webidl b/dom/chrome-webidl/JSWindowActor.webidl
new file mode 100644
index 0000000000..767b4854c5
--- /dev/null
+++ b/dom/chrome-webidl/JSWindowActor.webidl
@@ -0,0 +1,186 @@
+/* -*- 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 JSWindowActor{Child, Parent} is the `WindowGlobalParent`
+ * (for the parent-side) / `WindowGlobalChild` (for the child-side).
+ *
+ * See https://firefox-source-docs.mozilla.org/dom/ipc/jsactors.html for
+ * more details on how to use this architecture.
+ */
+
+interface nsISupports;
+
+[ChromeOnly, Exposed=Window]
+interface JSWindowActorParent {
+ [ChromeOnly]
+ constructor();
+
+ /**
+ * Actor initialization occurs after the constructor is called but before the
+ * first message is delivered. Until the actor is initialized, accesses to
+ * manager will fail.
+ */
+ readonly attribute WindowGlobalParent? manager;
+
+ /**
+ * The WindowContext associated with this JSWindowActorParent. For
+ * JSWindowActorParent this is identical to `manager`, but is also exposed as
+ * `windowContext` for consistency with `JSWindowActorChild`. Until the actor
+ * is initialized, accesses to windowContext will fail.
+ */
+ readonly attribute WindowContext? windowContext;
+
+ [Throws]
+ readonly attribute CanonicalBrowsingContext? browsingContext;
+};
+JSWindowActorParent includes JSActor;
+
+[ChromeOnly, Exposed=Window]
+interface JSWindowActorChild {
+ [ChromeOnly]
+ constructor();
+
+ /**
+ * Actor initialization occurs after the constructor is called but before the
+ * first message is delivered. Until the actor is initialized, accesses to
+ * manager will fail.
+ */
+ readonly attribute WindowGlobalChild? manager;
+
+ /**
+ * The WindowContext associated with this JSWindowActorChild. Until the actor
+ * is initialized, accesses to windowContext will fail.
+ */
+ readonly attribute WindowContext? windowContext;
+
+ [Throws]
+ readonly attribute Document? document;
+
+ [Throws]
+ readonly attribute BrowsingContext? browsingContext;
+
+ [Throws]
+ readonly attribute nsIDocShell? docShell;
+
+ /**
+ * NOTE: As this returns a window proxy, it may not be currently referencing
+ * the document associated with this JSWindowActor. Generally prefer using
+ * `document`.
+ */
+ [Throws]
+ readonly attribute WindowProxy? contentWindow;
+};
+JSWindowActorChild includes JSActor;
+
+/**
+ * Used by ChromeUtils.registerWindowActor() to register JS window actor.
+ */
+dictionary WindowActorOptions {
+ /**
+ * If this is set to `true`, allow this actor to be created for subframes,
+ * and not just toplevel window globals.
+ */
+ boolean allFrames = false;
+
+ /**
+ * If this is set to `true`, allow this actor to be created for window
+ * globals loaded in chrome browsing contexts, such as those used to load the
+ * tabbrowser.
+ */
+ boolean includeChrome = false;
+
+ /**
+ * An array of URL match patterns (as accepted by the MatchPattern
+ * class in MatchPattern.webidl) which restrict which pages the actor
+ * may be instantiated for. If this is defined, only documents URL which match
+ * are allowed to have the given actor created for them. Other
+ * documents will fail to have their actor constructed, returning nullptr.
+ */
+ sequence<DOMString> matches;
+
+ /**
+ * 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;
+
+ /**
+ * An array of MessageManagerGroup values which restrict which type
+ * of browser elements the actor is allowed to be loaded within.
+ */
+ sequence<DOMString> messageManagerGroups;
+
+ /** This fields are used for configuring individual sides of the actor. */
+ WindowActorSidedOptions parent;
+ WindowActorChildOptions child;
+};
+
+dictionary WindowActorSidedOptions {
+ /**
+ * 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 WindowActorEventListenerOptions : AddEventListenerOptions {
+ /**
+ * If this attribute is set to true (the default), this event will cause the
+ * actor to be created when it is fired. If the attribute is set false, the
+ * actor will not receive the event unless it had already been created through
+ * some other mechanism.
+ *
+ * This should be set to `false` for event listeners which are only intended
+ * to perform cleanup operations, and will have no effect if the actor doesn't
+ * already exist.
+ */
+ boolean createActor = true;
+};
+
+dictionary WindowActorChildOptions : WindowActorSidedOptions {
+ /**
+ * Events which this actor wants to be listening to. When these events fire,
+ * it will trigger actor creation, and then forward the event to the actor.
+ *
+ * NOTE: Listeners are not attached for windows loaded in chrome docshells.
+ *
+ * NOTE: `once` option is not support due to we register listeners in a shared
+ * location.
+ */
+ record<DOMString, WindowActorEventListenerOptions> events;
+
+ /**
+ * An array of observer topics to listen to. An observer will be added for each
+ * topic in the list.
+ *
+ * Observer notifications in the list use nsGlobalWindowInner or
+ * nsGlobalWindowOuter object as their subject, and the events will only be
+ * dispatched to the corresponding window actor. If additional observer
+ * notification's subjects are needed, please file a bug for that.
+ */
+ sequence<ByteString> observers;
+};