mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-25 13:51:41 +00:00
a2f2e35e51
In this patch, we add cookieJarSettings in WebBrowserPersistDocument. This is needed if we want to use the correct cookieJarSettings when download the page or URI. Differential Revision: https://phabricator.services.mozilla.com/D95612
228 lines
7.9 KiB
Plaintext
228 lines
7.9 KiB
Plaintext
/* -*- Mode: IDL; 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 "nsISupports.idl"
|
|
#include "nsIContentPolicy.idl"
|
|
|
|
interface nsIInputStream;
|
|
interface nsIOutputStream;
|
|
interface nsIPrincipal;
|
|
interface nsIRemoteTab;
|
|
interface nsIWebBrowserPersistResourceVisitor;
|
|
interface nsIWebBrowserPersistWriteCompletion;
|
|
interface nsIReferrerInfo;
|
|
interface nsISHEntry;
|
|
interface nsICookieJarSettings;
|
|
|
|
webidl BrowsingContext;
|
|
|
|
native SHEntryRef(already_AddRefed<nsISHEntry>);
|
|
|
|
/**
|
|
* Interface for the URI-mapping information that can be supplied when
|
|
* serializing the DOM of an nsIWebBrowserPersistDocument.
|
|
*
|
|
* @see nsIWebBrowserPersistDocument
|
|
*/
|
|
[scriptable, uuid(d52e8b93-2771-45e8-a5b0-6e12b667046b)]
|
|
interface nsIWebBrowserPersistURIMap : nsISupports
|
|
{
|
|
/**
|
|
* The number of URI mappings.
|
|
*/
|
|
readonly attribute unsigned long numMappedURIs;
|
|
|
|
/**
|
|
* Obtain the URI mapping at the given index, which must be less than
|
|
* numMappedURIs, as a pair of URI spec strings.
|
|
*/
|
|
void getURIMapping(in unsigned long aIndex,
|
|
out AUTF8String aMapFrom,
|
|
out AUTF8String aMapTo);
|
|
|
|
/**
|
|
* The spec of the base URI that the document will have after it is
|
|
* serialized.
|
|
*/
|
|
readonly attribute AUTF8String targetBaseURI;
|
|
};
|
|
|
|
/**
|
|
* Interface representing a document that can be serialized with
|
|
* nsIWebBrowserPersist; it may or may not be in this process. Some
|
|
* information is exposed as attributes, which may or may not reflect
|
|
* changes made to the underlying document; most of these are
|
|
* self-explanatory from their names and types.
|
|
*/
|
|
[scriptable, builtinclass, uuid(74aa4918-5d15-46b6-9ccf-74f9696d721d)]
|
|
interface nsIWebBrowserPersistDocument : nsISupports
|
|
{
|
|
readonly attribute boolean isClosed;
|
|
readonly attribute boolean isPrivate;
|
|
readonly attribute AUTF8String documentURI;
|
|
readonly attribute AUTF8String baseURI;
|
|
readonly attribute ACString contentType;
|
|
readonly attribute ACString characterSet;
|
|
readonly attribute AString title;
|
|
readonly attribute nsIReferrerInfo referrerInfo;
|
|
readonly attribute nsICookieJarSettings cookieJarSettings;
|
|
readonly attribute AString contentDisposition;
|
|
readonly attribute nsIInputStream postData;
|
|
readonly attribute nsIPrincipal principal;
|
|
|
|
/**
|
|
* The cache key. Unlike in nsISHEntry, where it's wrapped in an
|
|
* nsISupportsPRUint32, this is just the integer.
|
|
*/
|
|
[infallible]
|
|
readonly attribute unsigned long cacheKey;
|
|
|
|
/**
|
|
* This attribute is set by nsIWebBrowserPersist implementations to
|
|
* propagate persist flags that apply to the DOM traversal and
|
|
* serialization (rather than to managing file I/O).
|
|
*/
|
|
attribute unsigned long persistFlags;
|
|
|
|
/**
|
|
* Walk the DOM searching for external resources needed to render it.
|
|
* The visitor callbacks may be called either before or after
|
|
* readResources returns.
|
|
*
|
|
* @see nsIWebBrowserPersistResourceVisitor
|
|
*/
|
|
void readResources(in nsIWebBrowserPersistResourceVisitor aVisitor);
|
|
|
|
/**
|
|
* Serialize the document's DOM.
|
|
*
|
|
* @param aStream The output stream to write the document to.
|
|
*
|
|
* @param aURIMap Optional; specifies URI rewriting to perform on
|
|
* external references (as read by readResources).
|
|
* If given, also causes relative hyperlinks to be
|
|
* converted to absolute in the written text.
|
|
*
|
|
* @param aRequestedContentType
|
|
* The desired MIME type to save the document as;
|
|
* optional and defaults to the document's type.
|
|
* (If no encoder exists for that type, "text/html"
|
|
* is used instead.)
|
|
*
|
|
* @param aEncoderFlags Flags to pass to the encoder.
|
|
*
|
|
* @param aWrapColumn Desired text width, ignored if wrapping is not
|
|
* specified by the encoding flags, or if 0.
|
|
*
|
|
* @param aCompletion Callback invoked when writing is complete.
|
|
* It may be called either before or after writeContent
|
|
* returns.
|
|
*
|
|
* @see nsIDocumentEncoder
|
|
*/
|
|
void writeContent(in nsIOutputStream aStream,
|
|
in nsIWebBrowserPersistURIMap aURIMap,
|
|
in ACString aRequestedContentType,
|
|
in unsigned long aEncoderFlags,
|
|
in unsigned long aWrapColumn,
|
|
in nsIWebBrowserPersistWriteCompletion aCompletion);
|
|
|
|
[notxpcom, nostdcall] SHEntryRef GetHistory();
|
|
};
|
|
|
|
/**
|
|
* Asynchronous visitor that receives external resources linked by an
|
|
* nsIWebBrowserPersistDocument and which are needed to render the
|
|
* document.
|
|
*/
|
|
[scriptable, uuid(8ce37706-b7d3-481a-be68-54f174fc0d0a)]
|
|
interface nsIWebBrowserPersistResourceVisitor : nsISupports
|
|
{
|
|
/**
|
|
* Indicates a resource that is not a document; e.g., an image, script,
|
|
* or stylesheet.
|
|
*
|
|
* @param aDocument The document containing the reference.
|
|
* @param aURI The absolute URI spec for the referenced resource.
|
|
* @param aContentPolicyType The type of resource.
|
|
*/
|
|
void visitResource(in nsIWebBrowserPersistDocument aDocument,
|
|
in AUTF8String aURI,
|
|
in nsContentPolicyType aContentPolicyType);
|
|
|
|
/**
|
|
* Indicates a subdocument resource; e.g., a frame or iframe.
|
|
*
|
|
* @param aDocument The document containing the reference.
|
|
* @param aSubDocument The referenced document.
|
|
*/
|
|
void visitDocument(in nsIWebBrowserPersistDocument aDocument,
|
|
in nsIWebBrowserPersistDocument aSubDocument);
|
|
|
|
/**
|
|
* Indicates a cross origin subdocument resource; e.g., a frame
|
|
* or iframe loaded in another process.
|
|
*
|
|
* @param aDocument The document containing the reference.
|
|
* @param aContext The referenced document's browsing context.
|
|
*/
|
|
void visitBrowsingContext(in nsIWebBrowserPersistDocument aDocument,
|
|
in BrowsingContext aContext);
|
|
|
|
/**
|
|
* Indicates that the document traversal is complete.
|
|
*
|
|
* @param aDocument The document that was being traversed.
|
|
* @param aStatus Indicates whether the traversal encountered an error.
|
|
*/
|
|
void endVisit(in nsIWebBrowserPersistDocument aDocument,
|
|
in nsresult aStatus);
|
|
};
|
|
|
|
/**
|
|
* Asynchronous callback for when nsIWebBrowserPersistDocument is finished
|
|
* serializing the document's DOM.
|
|
*/
|
|
[scriptable, function, uuid(a07e6892-38ae-4207-8340-7fa6ec446ed6)]
|
|
interface nsIWebBrowserPersistWriteCompletion : nsISupports
|
|
{
|
|
/**
|
|
* Indicates that serialization is finished.
|
|
*
|
|
* @param aDocument The document that was being serialized.
|
|
*
|
|
* @param aStream The stream that was being written to. If it
|
|
* needs to be closed, the callback must do that;
|
|
* the serialization process leaves it open.
|
|
*
|
|
* @param aContentType The content type with which the document was
|
|
* actually serialized; this may be useful to set
|
|
* metadata on the result, or if uploading it.
|
|
*
|
|
* @param aStatus Indicates whether serialization encountered an error.
|
|
*/
|
|
void onFinish(in nsIWebBrowserPersistDocument aDocument,
|
|
in nsIOutputStream aStream,
|
|
in ACString aContentType,
|
|
in nsresult aStatus);
|
|
};
|
|
|
|
/**
|
|
* Asynchronous callback for creating a persistable document from some
|
|
* other object.
|
|
*
|
|
* XXXbz This should really be changed to just return a promise that
|
|
* then gets resolved or rejected...
|
|
*
|
|
* @see WebBrowserPersistable in FrameLoader.webidl.
|
|
*/
|
|
[scriptable, uuid(321e3174-594f-4036-b7be-791b821bd376)]
|
|
interface nsIWebBrowserPersistDocumentReceiver : nsISupports
|
|
{
|
|
void onDocumentReady(in nsIWebBrowserPersistDocument aDocument);
|
|
void onError(in nsresult aFailure);
|
|
};
|