no bug - Bumping Firefox l10n changesets r=release a=l10n-bump DONTBUILD CLOSED TREE
[gecko.git] / dom / webbrowserpersist / PWebBrowserPersistDocument.ipdl
blob1044377d708b2c841f86d626b4c4e89a52b425bd
1 /* -*- Mode: IDL; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* This Source Code Form is subject to the terms of the Mozilla Public
3  * License, v. 2.0. If a copy of the MPL was not distributed with this
4  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6 include protocol PContent;
7 include protocol PWebBrowserPersistResources;
8 include protocol PWebBrowserPersistSerialize;
10 include PBackgroundSharedTypes;
11 include IPCStream;
12 include NeckoChannelParams;
14 include "mozilla/dom/ReferrerInfoUtils.h";
16 [RefCounted] using class nsIReferrerInfo from "nsIReferrerInfo.h";
18 namespace mozilla {
20 // nsIWebBrowserPersistDocument has attributes which can be read
21 // synchronously.  To avoid using sync IPC for them, the actor sends
22 // this structure from the child to the parent before the parent actor
23 // is exposed to XPCOM.
24 struct WebBrowserPersistDocumentAttrs {
25   bool isPrivate;
26   nsCString documentURI;
27   nsCString baseURI;
28   nsCString contentType;
29   nsCString characterSet;
30   nsString title;
31   nullable nsIReferrerInfo referrerInfo;
32   CookieJarSettingsArgs cookieJarSettings;
33   nsString contentDisposition;
34   uint32_t sessionHistoryCacheKey;
35   uint32_t persistFlags;
36   PrincipalInfo principal;
39 // IPDL doesn't have tuples, so this gives the pair of strings from
40 // nsIWebBrowserPersistURIMap::getURIMapping a name.
41 struct WebBrowserPersistURIMapEntry {
42   nsCString mapFrom;
43   nsCString mapTo;
46 // nsIWebBrowserPersistURIMap is just copied over IPC as one of these,
47 // not proxied, to simplify the protocol.
48 struct WebBrowserPersistURIMap {
49   WebBrowserPersistURIMapEntry[] mapURIs;
50   nsCString targetBaseURI;
53 // This remotes nsIWebBrowserPersistDocument and its visitors.  The
54 // lifecycle is a little complicated: the initial document is
55 // constructed parent->child, but subdocuments are constructed
56 // child->parent and then passed back.  Subdocuments aren't subactors,
57 // because that would impose a lifetime relationship that doesn't
58 // exist in the XPIDL; instead they're all managed by the enclosing
59 // PContent.
60 protocol PWebBrowserPersistDocument {
61   manager PContent;
62   manages PWebBrowserPersistResources;
63   manages PWebBrowserPersistSerialize;
65 parent:
66   // The actor isn't exposed to XPCOM until after it gets one of these
67   // two messages; see also the state transition rules.  The message
68   // is either a response to the constructor (if it was parent->child)
69   // or sent after it (if it was child->parent).
70   async Attributes(WebBrowserPersistDocumentAttrs aAttrs,
71                    IPCStream? stream);
72   async InitFailure(nsresult aStatus);
74 child:
75   async SetPersistFlags(uint32_t aNewFlags);
76   async PWebBrowserPersistResources();
77   async PWebBrowserPersistSerialize(WebBrowserPersistURIMap aMap,
78                                     nsCString aRequestedContentType,
79                                     uint32_t aEncoderFlags,
80                                     uint32_t aWrapColumn);
81   async __delete__();
84 state START:
85   recv Attributes goto MAIN;
86   recv InitFailure goto FAILED;
88 state MAIN:
89   send SetPersistFlags goto MAIN;
90   send PWebBrowserPersistResources goto MAIN;
91   send PWebBrowserPersistSerialize goto MAIN;
92   send __delete__;
94 state FAILED:
95   send __delete__;
99 } // namespace mozilla