diff options
Diffstat (limited to '')
-rw-r--r-- | dom/chrome-webidl/FrameLoader.webidl | 233 |
1 files changed, 233 insertions, 0 deletions
diff --git a/dom/chrome-webidl/FrameLoader.webidl b/dom/chrome-webidl/FrameLoader.webidl new file mode 100644 index 0000000000..5669d2af41 --- /dev/null +++ b/dom/chrome-webidl/FrameLoader.webidl @@ -0,0 +1,233 @@ +/* -*- Mode: IDL; tab-width: 2; 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/. + */ + +interface LoadContext; +interface RemoteTab; +interface URI; +interface nsIDocShell; +interface nsIPrintSettings; +interface nsIWebBrowserPersistDocumentReceiver; +interface nsIWebProgressListener; + +[ChromeOnly, + Exposed=Window] +interface FrameLoader { + /** + * Get the docshell from the frame loader. + */ + [GetterThrows] + readonly attribute nsIDocShell? docShell; + + /** + * Get this frame loader's RemoteTab, if it has a remote frame. Otherwise, + * returns null. + */ + readonly attribute RemoteTab? remoteTab; + + /** + * Get an nsILoadContext for the top-level docshell. For remote + * frames, a shim is returned that contains private browsing and app + * information. + */ + readonly attribute LoadContext loadContext; + + /** + * Get the root BrowsingContext within the frame. + * This may be null immediately after creating a remote frame. + */ + readonly attribute BrowsingContext? browsingContext; + + /** + * Find out whether the loader's frame is at too great a depth in + * the frame tree. This can be used to decide what operations may + * or may not be allowed on the loader's docshell. + */ + [Pure] + readonly attribute boolean depthTooGreat; + + /** + * Find out whether the loader's frame is a remote frame. + */ + readonly attribute boolean isRemoteFrame; + + // Note, when frameloaders are swapped, also messageManagers are swapped. + readonly attribute MessageSender? messageManager; + + /** + * Force a remote browser to recompute its dimension and screen position. + */ + [Throws] + undefined requestUpdatePosition(); + + /** + * Force a TabStateFlush from native sessionStoreListeners. + * Returns a promise that resolves when all session store data has been + * flushed. + */ + [NewObject] + Promise<undefined> requestTabStateFlush(); + + /** + * Force Epoch update in native sessionStoreListeners. + */ + undefined requestEpochUpdate(unsigned long aEpoch); + + /** + * Request a session history update in native sessionStoreListeners. + */ + undefined requestSHistoryUpdate(); + + /** + * Creates a print preview document in this frame, or updates the existing + * print preview document with new print settings. + * + * @param aPrintSettings The print settings to use to layout the print + * preview document. + * @param aSourceBrowsingContext Optionally, the browsing context that + * contains the document from which the print preview is to be generated, + * which must be in the same process as the browsing context of the frame + * loader itself. + * + * This should only be passed on the first call. It should not be passed + * for any subsequent calls that are made to update the existing print + * preview document with a new print settings object. + * @return A Promise that resolves with a PrintPreviewSuccessInfo on success. + */ + [NewObject] + Promise<unsigned long> printPreview(nsIPrintSettings aPrintSettings, + BrowsingContext? aSourceBrowsingContext); + + /** + * Inform the print preview document that we're done with it. + */ + undefined exitPrintPreview(); + + /** + * The element which owns this frame loader. + * + * For example, if this is a frame loader for an <iframe>, this attribute + * returns the iframe element. + */ + [Pure] + readonly attribute Element? ownerElement; + + + /** + * Cached childID of the ContentParent owning the RemoteTab in this frame + * loader. This can be used to obtain the childID after the RemoteTab died. + */ + [Pure] + readonly attribute unsigned long long childID; + + /** + * Find out whether the owner content really is a mozbrowser. <xul:browser> + * is not considered to be a mozbrowser frame. + */ + [Pure] + readonly attribute boolean ownerIsMozBrowserFrame; + + /** + * The last known width of the frame. Reading this property will not trigger + * a reflow, and therefore may not reflect the current state of things. It + * should only be used in asynchronous APIs where values are not guaranteed + * to be up-to-date when received. + */ + [Pure] + readonly attribute unsigned long lazyWidth; + + /** + * The last known height of the frame. Reading this property will not trigger + * a reflow, and therefore may not reflect the current state of things. It + * should only be used in asynchronous APIs where values are not guaranteed + * to be up-to-date when received. + */ + [Pure] + readonly attribute unsigned long lazyHeight; + + /** + * Is `true` if the frameloader is dead (destroy has been called on it) + */ + [Pure] + readonly attribute boolean isDead; +}; + +/** + * Interface for objects which represent a document that can be + * serialized with nsIWebBrowserPersist. This interface is + * asynchronous because the actual document can be in another process + * (e.g., if this object is a FrameLoader for an out-of-process + * frame). + * + * @see nsIWebBrowserPersistDocumentReceiver + * @see nsIWebBrowserPersistDocument + * @see nsIWebBrowserPersist + * + * @param aContext + * The browsing context of the subframe we'd like to persist. + * If set to nullptr, WebBrowserPersistable will attempt to persist + * the top-level document. If the browsing context is for a subframe + * that is not held beneath the WebBrowserPersistable, aRecv's onError + * method will be called with NS_ERROR_NO_CONTENT. + * @param aRecv + * The nsIWebBrowserPersistDocumentReceiver is a callback that + * will be fired once the document is ready for persisting. + */ +interface mixin WebBrowserPersistable +{ + [Throws] + undefined startPersistence(BrowsingContext? aContext, + nsIWebBrowserPersistDocumentReceiver aRecv); +}; + +enum PrintPreviewOrientation { + "landscape", + "portrait", + "unspecified" +}; + +/** + * Interface for the object that's used to resolve the Promise returned from + * FrameLoader.printPreview() if that method successfully creates the print + * preview document/successfully updates it with new settings. + */ +[GenerateConversionToJS] +dictionary PrintPreviewSuccessInfo { + /** + * The total number of sheets of paper required to print, taking into account + * the provided nsIPrintSettings. This takes into account page range + * selection, the pages-per-sheet, whether duplex printing is enabled, etc. + */ + unsigned long sheetCount = 0; + + /** + * The total number of virtual pages, not taking into account page range + * selection, the pages-per-sheet, whether duplex printing is enabled, etc. + */ + unsigned long totalPageCount = 0; + + /** + * Whether the preview is empty because of page range selection. + */ + boolean isEmpty = false; + + /** + * Whether the document or any subdocument has a selection that can be + * printed. + */ + boolean hasSelection = false; + + /** + * Whether the previewed document has a selection itself. + */ + boolean hasSelfSelection = false; + + /** + * Specified orientation of the document, or "unspecified". + */ + PrintPreviewOrientation orientation = "unspecified"; +}; + +FrameLoader includes WebBrowserPersistable; |