mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-12-04 02:57:38 +00:00
f3fc260d00
Differential Revision: https://phabricator.services.mozilla.com/D199108
228 lines
9.0 KiB
C++
228 lines
9.0 KiB
C++
/* -*- Mode: C++; c-basic-offset: 2; indent-tabs-mode: nil; tab-width: 8 -*- */
|
|
/* vim: set sw=2 ts=8 et tw=80 ft=cpp : */
|
|
/* 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/. */
|
|
|
|
include "mozilla/dom/DocShellMessageUtils.h";
|
|
include "mozilla/dom/FeaturePolicyUtils.h";
|
|
include "mozilla/dom/IdentityCredentialSerializationHelpers.h";
|
|
include "mozilla/dom/PermissionMessageUtils.h";
|
|
include "mozilla/dom/SessionStoreMessageUtils.h";
|
|
include "mozilla/ipc/TransportSecurityInfoUtils.h";
|
|
include "mozilla/ipc/URIUtils.h";
|
|
|
|
include protocol PBrowser;
|
|
include protocol PInProcess;
|
|
include protocol PBrowserBridge;
|
|
|
|
include DOMTypes;
|
|
include ClientIPCTypes;
|
|
include IPCIdentityCredential;
|
|
include NeckoChannelParams;
|
|
include SessionStoreTypes;
|
|
|
|
include "mozilla/layers/LayersMessageUtils.h";
|
|
|
|
using mozilla::dom::JSActorMessageKind from "mozilla/dom/JSActor.h";
|
|
using mozilla::gfx::IntRect from "mozilla/gfx/Rect.h";
|
|
[MoveOnly] using mozilla::gfx::PaintFragment from "mozilla/gfx/CrossProcessPaint.h";
|
|
using nscolor from "nsColor.h";
|
|
using mozilla::dom::XPCOMPermitUnloadAction from "nsIDocumentViewer.h";
|
|
using mozilla::dom::TabId from "mozilla/dom/ipc/IdType.h";
|
|
using mozilla::layers::LayersId from "mozilla/layers/LayersTypes.h";
|
|
[RefCounted] using class nsITransportSecurityInfo from "nsITransportSecurityInfo.h";
|
|
using mozilla::UseCounters from "mozilla/UseCounter.h";
|
|
using mozilla::dom::MaybeDiscardedWindowContext from "mozilla/dom/WindowContext.h";
|
|
[RefCounted] using mozilla::dom::FeaturePolicy from "mozilla/dom/FeaturePolicy.h";
|
|
[RefCounted] using mozilla::dom::SessionStoreRestoreData from "mozilla/dom/SessionStoreRestoreData.h";
|
|
using mozilla::dom::IdentityCredentialRequestOptions from "mozilla/dom/IdentityCredentialBinding.h";
|
|
|
|
namespace mozilla {
|
|
namespace dom {
|
|
|
|
struct JSActorMessageMeta {
|
|
nsCString actorName;
|
|
nsString messageName;
|
|
uint64_t queryId;
|
|
JSActorMessageKind kind;
|
|
};
|
|
|
|
struct IPCWebShareData
|
|
{
|
|
nsCString title;
|
|
nsCString text;
|
|
nullable nsIURI url;
|
|
};
|
|
|
|
/**
|
|
* A PWindowGlobal actor has a lifetime matching that of a single Window Global,
|
|
* specifically a |nsGlobalWindowInner|. These actors will form a parent/child
|
|
* link either between the chrome/content process, or will be in-process, for
|
|
* documents which are loaded in the chrome process.
|
|
*/
|
|
async protocol PWindowGlobal
|
|
{
|
|
manager PBrowser or PInProcess;
|
|
|
|
child:
|
|
async __delete__();
|
|
|
|
async MakeFrameLocal(MaybeDiscardedBrowsingContext aFrameContext,
|
|
uint64_t aSwitchId);
|
|
async MakeFrameRemote(MaybeDiscardedBrowsingContext aFrameContext,
|
|
ManagedEndpoint<PBrowserBridgeChild> aEndpoint,
|
|
TabId aTabId, LayersId aLayersId) returns (bool success);
|
|
|
|
async DrawSnapshot(IntRect? aRect, float aScale, nscolor aBackgroundColor,
|
|
uint32_t aFlags) returns (PaintFragment retval);
|
|
|
|
async DispatchSecurityPolicyViolation(nsString aViolationEventJSON);
|
|
|
|
async SaveStorageAccessPermissionGranted();
|
|
|
|
async AddBlockedFrameNodeByClassifier(MaybeDiscardedBrowsingContext aNode);
|
|
|
|
/**
|
|
* Request from UI to reset the scaling zoom that is controlled by APZ.
|
|
*/
|
|
async ResetScalingZoom();
|
|
|
|
async SetContainerFeaturePolicy(nullable FeaturePolicy aContainerFeaturePolicy);
|
|
|
|
async RestoreDocShellState(DocShellRestoreState aState)
|
|
returns (bool success);
|
|
|
|
async RestoreTabContent(nullable SessionStoreRestoreData aData) returns (bool success);
|
|
|
|
both:
|
|
async RawMessage(JSActorMessageMeta aMetadata, ClonedMessageData? aData,
|
|
ClonedMessageData? aStack);
|
|
|
|
parent:
|
|
// Load the given URI load state into the current owner process of the given
|
|
// BrowsingContext. aTargetBC must be in the same BrowsingContextGroup as this
|
|
// window global.
|
|
async LoadURI(MaybeDiscardedBrowsingContext aTargetBC,
|
|
nsDocShellLoadState aLoadState, bool aSetNavigating);
|
|
|
|
async InternalLoad(nsDocShellLoadState aLoadState);
|
|
|
|
/// Update the URI of the document in this WindowGlobal.
|
|
[LazySend] async UpdateDocumentURI(nsIURI aUri);
|
|
|
|
// We expose frameAncestors to web-extensions and they extract URIs from the
|
|
// principals collected. In order to be compatible with that API, we need to
|
|
// update the document's principal. This is only allowed if the principals are
|
|
// `equals` to each other.
|
|
[LazySend] async UpdateDocumentPrincipal(nullable nsIPrincipal aPrincipal,
|
|
nullable nsIPrincipal aStoragePrincipal);
|
|
|
|
// Update document's `documentHasLoaded` bit in this WindowGlobal.
|
|
[LazySend] async UpdateDocumentHasLoaded(bool aDocumentHasLoaded);
|
|
|
|
// Update document's 'documentHasUserInteracted' bit in this WindowGlobal.
|
|
[LazySend] async UpdateDocumentHasUserInteracted(bool aDocumentHasUserInteracted);
|
|
|
|
// Update document's sandbox flags in this WindowGlobal.
|
|
[LazySend] async UpdateSandboxFlags(uint32_t aSandboxFlags);
|
|
|
|
// Update document csp's fields in this WindowGlobal.
|
|
[LazySend] async UpdateDocumentCspSettings(bool aBlockAllMixedContent, bool aUpgradeInsecureRequests);
|
|
|
|
// Update document's cookie settings in this WindowGlobal.
|
|
[LazySend] async UpdateCookieJarSettings(CookieJarSettingsArgs cookieJarSettings);
|
|
|
|
// Update the title of the document in this WindowGlobal.
|
|
[LazySend] async UpdateDocumentTitle(nsString aTitle);
|
|
|
|
[LazySend] async UpdateDocumentSecurityInfo(nullable nsITransportSecurityInfo aSecurityInfo);
|
|
|
|
// Update the document's HTTPS-Only Mode flags in this WindowGlobal.
|
|
[LazySend] async UpdateHttpsOnlyStatus(uint32_t aHttpsOnlyStatus);
|
|
|
|
/// Send down initial document bit to the parent.
|
|
[LazySend] async SetIsInitialDocument(bool aIsInitialDocument);
|
|
|
|
// Attempts to perform a "Web Share".
|
|
async Share(IPCWebShareData aData) returns (nsresult rv);
|
|
|
|
// Get content blocking events from the parent process.
|
|
async GetContentBlockingEvents() returns (uint32_t events);
|
|
|
|
// Send the ClientInfo associated with a top-level document load.
|
|
[LazySend] async SetClientInfo(IPCClientInfo aClientInfo);
|
|
|
|
// Checks whether any "beforeunload" event listener in the document subtree
|
|
// wants to block unload, and prompts the user to allow if any does (depending
|
|
// on the action specified, using nsIDocumentViewer::PermitUnloadAction
|
|
// values). The sender is responsible for checking documents in its own
|
|
// process, and passing true for `aHasInProcessBlocker` if any exist. Windows
|
|
// hosted outside of the caller process will be checked automatically.
|
|
async CheckPermitUnload(bool aHasInProcessBlocker, XPCOMPermitUnloadAction aAction)
|
|
returns (bool permitUnload);
|
|
|
|
/**
|
|
* Informs the parent process that the document in aTop should expect to
|
|
* receive page use counter contributions from the document in this
|
|
* WindowGlobal.
|
|
*/
|
|
async ExpectPageUseCounters(MaybeDiscardedWindowContext aTop);
|
|
|
|
/**
|
|
* Accumulates use counter data from the document in this WindowGlobal into
|
|
* the document previously passed into the ExpectPageUseCounters call.
|
|
*/
|
|
async AccumulatePageUseCounters(UseCounters aUseCounters);
|
|
|
|
async RequestRestoreTabContent();
|
|
|
|
// Add the flags in aOnFlags to the current BFCache status and remove the
|
|
// flags in aOffFlags from the current BFCache status. See the BFCacheStatus
|
|
// enum for the valid flags.
|
|
async UpdateBFCacheStatus(uint32_t aOnFlags, uint32_t aOffFlags);
|
|
|
|
// Signal whether the first connection is added (aIsAdded = true) or
|
|
// the last connection is removed (aIsAdded = false).
|
|
async UpdateActivePeerConnectionStatus(bool aIsAdded);
|
|
|
|
/**
|
|
* Used to notify the parent when there's a change in the number of requests
|
|
* in the loadgroup. If there are no requests this will be set to Nothing().
|
|
* If there is one request this will be set to the ID of that request, if it
|
|
* implements nsIIdentChannel. If there are more than one requests this will
|
|
* be set to 0.
|
|
* Note that some requests are ignored (eg. favicon loads).
|
|
*/
|
|
async SetSingleChannelId(uint64_t? singleChannelId);
|
|
|
|
async SetDocumentDomain(nsIURI aDomain);
|
|
|
|
async Destroy();
|
|
|
|
async ReloadWithHttpsOnlyException();
|
|
|
|
// Used by the Credential Manager API and FedCM to keep the discovery of
|
|
// a credential abstracted from the content process. This is required because
|
|
// credentialed requests that are specifically not partitioned are made and
|
|
// the results must not enter the child process until the user consents via
|
|
// purpose built UI.
|
|
async DiscoverIdentityCredentialFromExternalSource(IdentityCredentialRequestOptions aOptions)
|
|
returns (IPCIdentityCredential? identityCredential);
|
|
|
|
async GetStorageAccessPermission() returns(uint32_t permission_action);
|
|
|
|
|
|
async SetCookies(nsCString baseDomain,
|
|
OriginAttributes attrs,
|
|
nullable nsIURI host,
|
|
bool fromHttp,
|
|
CookieStruct[] cookies);
|
|
|
|
child:
|
|
async NotifyPermissionChange(nsCString type, uint32_t permission);
|
|
};
|
|
|
|
} // namespace dom
|
|
} // namespace mozilla
|