mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-23 21:01:08 +00:00
a9b47cb20b
This is part of removing [ManualDealloc] from all protocols which manage other protocols. Differential Revision: https://phabricator.services.mozilla.com/D198621
100 lines
3.2 KiB
Plaintext
100 lines
3.2 KiB
Plaintext
/* -*- Mode: IDL; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* 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 protocol PContent;
|
|
include protocol PWebBrowserPersistResources;
|
|
include protocol PWebBrowserPersistSerialize;
|
|
|
|
include PBackgroundSharedTypes;
|
|
include IPCStream;
|
|
include NeckoChannelParams;
|
|
|
|
include "mozilla/dom/ReferrerInfoUtils.h";
|
|
|
|
[RefCounted] using class nsIReferrerInfo from "nsIReferrerInfo.h";
|
|
|
|
namespace mozilla {
|
|
|
|
// nsIWebBrowserPersistDocument has attributes which can be read
|
|
// synchronously. To avoid using sync IPC for them, the actor sends
|
|
// this structure from the child to the parent before the parent actor
|
|
// is exposed to XPCOM.
|
|
struct WebBrowserPersistDocumentAttrs {
|
|
bool isPrivate;
|
|
nsCString documentURI;
|
|
nsCString baseURI;
|
|
nsCString contentType;
|
|
nsCString characterSet;
|
|
nsString title;
|
|
nullable nsIReferrerInfo referrerInfo;
|
|
CookieJarSettingsArgs cookieJarSettings;
|
|
nsString contentDisposition;
|
|
uint32_t sessionHistoryCacheKey;
|
|
uint32_t persistFlags;
|
|
PrincipalInfo principal;
|
|
};
|
|
|
|
// IPDL doesn't have tuples, so this gives the pair of strings from
|
|
// nsIWebBrowserPersistURIMap::getURIMapping a name.
|
|
struct WebBrowserPersistURIMapEntry {
|
|
nsCString mapFrom;
|
|
nsCString mapTo;
|
|
};
|
|
|
|
// nsIWebBrowserPersistURIMap is just copied over IPC as one of these,
|
|
// not proxied, to simplify the protocol.
|
|
struct WebBrowserPersistURIMap {
|
|
WebBrowserPersistURIMapEntry[] mapURIs;
|
|
nsCString targetBaseURI;
|
|
};
|
|
|
|
// This remotes nsIWebBrowserPersistDocument and its visitors. The
|
|
// lifecycle is a little complicated: the initial document is
|
|
// constructed parent->child, but subdocuments are constructed
|
|
// child->parent and then passed back. Subdocuments aren't subactors,
|
|
// because that would impose a lifetime relationship that doesn't
|
|
// exist in the XPIDL; instead they're all managed by the enclosing
|
|
// PContent.
|
|
protocol PWebBrowserPersistDocument {
|
|
manager PContent;
|
|
manages PWebBrowserPersistResources;
|
|
manages PWebBrowserPersistSerialize;
|
|
|
|
parent:
|
|
// The actor isn't exposed to XPCOM until after it gets one of these
|
|
// two messages; see also the state transition rules. The message
|
|
// is either a response to the constructor (if it was parent->child)
|
|
// or sent after it (if it was child->parent).
|
|
async Attributes(WebBrowserPersistDocumentAttrs aAttrs,
|
|
IPCStream? stream);
|
|
async InitFailure(nsresult aStatus);
|
|
|
|
child:
|
|
async SetPersistFlags(uint32_t aNewFlags);
|
|
async PWebBrowserPersistResources();
|
|
async PWebBrowserPersistSerialize(WebBrowserPersistURIMap aMap,
|
|
nsCString aRequestedContentType,
|
|
uint32_t aEncoderFlags,
|
|
uint32_t aWrapColumn);
|
|
async __delete__();
|
|
|
|
/*
|
|
state START:
|
|
recv Attributes goto MAIN;
|
|
recv InitFailure goto FAILED;
|
|
|
|
state MAIN:
|
|
send SetPersistFlags goto MAIN;
|
|
send PWebBrowserPersistResources goto MAIN;
|
|
send PWebBrowserPersistSerialize goto MAIN;
|
|
send __delete__;
|
|
|
|
state FAILED:
|
|
send __delete__;
|
|
*/
|
|
};
|
|
|
|
} // namespace mozilla
|