diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 09:22:09 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 09:22:09 +0000 |
commit | 43a97878ce14b72f0981164f87f2e35e14151312 (patch) | |
tree | 620249daf56c0258faa40cbdcf9cfba06de2a846 /dom/chrome-webidl/JSWindowActor.webidl | |
parent | Initial commit. (diff) | |
download | firefox-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.webidl | 186 |
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; +}; |