diff options
Diffstat (limited to 'dom/base/nsIFrameLoader.idl')
-rw-r--r-- | dom/base/nsIFrameLoader.idl | 288 |
1 files changed, 288 insertions, 0 deletions
diff --git a/dom/base/nsIFrameLoader.idl b/dom/base/nsIFrameLoader.idl new file mode 100644 index 000000000..d840cdce6 --- /dev/null +++ b/dom/base/nsIFrameLoader.idl @@ -0,0 +1,288 @@ +/* -*- 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/. */ + +#include "nsISupports.idl" + +interface mozIApplication; +interface nsFrameLoader; +interface nsIDocShell; +interface nsIURI; +interface nsIFrame; +interface nsSubDocumentFrame; +interface nsIMessageSender; +interface nsIVariant; +interface nsIDOMElement; +interface nsITabParent; +interface nsILoadContext; +interface nsIPrintSettings; +interface nsIWebProgressListener; +interface nsIGroupedSHistory; +interface nsIPartialSHistory; + +[scriptable, builtinclass, uuid(1645af04-1bc7-4363-8f2c-eb9679220ab1)] +interface nsIFrameLoader : nsISupports +{ + /** + * Get the docshell from the frame loader. + */ + readonly attribute nsIDocShell docShell; + + /** + * Get this frame loader's TabParent, if it has a remote frame. Otherwise, + * returns null. + */ + readonly attribute nsITabParent tabParent; + + /** + * Get an nsILoadContext for the top-level docshell. For remote + * frames, a shim is returned that contains private browsing and app + * information. + */ + readonly attribute nsILoadContext loadContext; + + /** + * Start loading the frame. This method figures out what to load + * from the owner content in the frame loader. + */ + void loadFrame(); + + /** + * Loads the specified URI in this frame. Behaves identically to loadFrame, + * except that this method allows specifying the URI to load. + */ + void loadURI(in nsIURI aURI); + + /** + * Puts the frameloader in prerendering mode. + */ + void setIsPrerendered(); + + /** + * Make the prerendered frameloader being active (and clear isPrerendered flag). + */ + void makePrerenderedLoaderActive(); + + /** + * Append partial session history from another frame loader. + */ + void appendPartialSessionHistoryAndSwap(in nsIFrameLoader aOther); + + /** + * If grouped session history is applied, use this function to navigate to + * an entry of session history object of another frameloader. + */ + void requestGroupedHistoryNavigation(in unsigned long aGlobalIndex); + + /** + * Destroy the frame loader and everything inside it. This will + * clear the weak owner content reference. + */ + void destroy(); + + /** + * 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. + */ + readonly attribute boolean depthTooGreat; + + /** + * Updates the position and size of the subdocument loaded by this frameloader. + * + * @param aIFrame The nsIFrame for the content node that owns this frameloader + */ + [noscript] void updatePositionAndSize(in nsSubDocumentFrame aIFrame); + + /** + * Activate remote frame. + * Throws an exception with non-remote frames. + */ + void activateRemoteFrame(); + + /** + * Deactivate remote frame. + * Throws an exception with non-remote frames. + */ + void deactivateRemoteFrame(); + + /** + * @see nsIDOMWindowUtils sendMouseEvent. + */ + void sendCrossProcessMouseEvent(in AString aType, + in float aX, + in float aY, + in long aButton, + in long aClickCount, + in long aModifiers, + [optional] in boolean aIgnoreRootScrollFrame); + + /** + * Activate event forwarding from client (remote frame) to parent. + */ + void activateFrameEvent(in AString aType, in boolean capture); + + // Note, when frameloaders are swapped, also messageManagers are swapped. + readonly attribute nsIMessageSender messageManager; + + /** + * @see nsIDOMWindowUtils sendKeyEvent. + */ + void sendCrossProcessKeyEvent(in AString aType, + in long aKeyCode, + in long aCharCode, + in long aModifiers, + [optional] in boolean aPreventDefault); + + /** + * Request that the next time a remote layer transaction has been + * received by the Compositor, a MozAfterRemoteFrame event be sent + * to the window. + */ + void requestNotifyAfterRemotePaint(); + + /** + * Close the window through the ownerElement. + */ + void requestFrameLoaderClose(); + + /** + * Print the current document. + * + * @param aOuterWindowID the ID of the outer window to print + * @param aPrintSettings optional print settings to use; printSilent can be + * set to prevent prompting. + * @param aProgressListener optional print progress listener. + */ + void print(in unsigned long long aOuterWindowID, + in nsIPrintSettings aPrintSettings, + in nsIWebProgressListener aProgressListener); + + /** + * The default event mode automatically forwards the events + * handled in EventStateManager::HandleCrossProcessEvent to + * the child content process when these events are targeted to + * the remote browser element. + * + * Used primarly for input events (mouse, keyboard) + */ + const unsigned long EVENT_MODE_NORMAL_DISPATCH = 0x00000000; + + /** + * With this event mode, it's the application's responsability to + * convert and forward events to the content process + */ + const unsigned long EVENT_MODE_DONT_FORWARD_TO_CHILD = 0x00000001; + + attribute unsigned long eventMode; + + /** + * If false, then the subdocument is not clipped to its CSS viewport, and the + * subdocument's viewport scrollbar(s) are not rendered. + * Defaults to true. + */ + attribute boolean clipSubdocument; + + /** + * If false, then the subdocument's scroll coordinates will not be clamped + * to their scroll boundaries. + * Defaults to true. + */ + attribute boolean clampScrollPosition; + + /** + * The element which owns this frame loader. + * + * For example, if this is a frame loader for an <iframe>, this attribute + * returns the iframe element. + */ + readonly attribute nsIDOMElement ownerElement; + + + /** + * Cached childID of the ContentParent owning the TabParent in this frame + * loader. This can be used to obtain the childID after the TabParent died. + */ + readonly attribute unsigned long long childID; + + /** + * Get or set this frame loader's visibility. + * + * The notion of "visibility" here is separate from the notion of a + * window/docshell's visibility. This field is mostly here so that we can + * have a notion of visibility in the parent process when frames are OOP. + */ + [infallible] attribute boolean visible; + + /** + * Find out whether the owner content really is a mozbrowser or app frame + * Especially, a widget frame is regarded as an app frame. <xul:browser> is + * not considered to be a mozbrowser frame. + */ + readonly attribute boolean ownerIsMozBrowserOrAppFrame; + + /** + * 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. + */ + 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. + */ + readonly attribute unsigned long lazyHeight; + + /** + * The partial session history. + */ + readonly attribute nsIPartialSHistory partialSessionHistory; + + /** + * The grouped session history composed of multiple session history objects + * across root docshells. + */ + readonly attribute nsIGroupedSHistory groupedSessionHistory; +}; + +%{C++ +class nsFrameLoader; +%} + +native alreadyAddRefed_nsFrameLoader(already_AddRefed<nsFrameLoader>); + +[scriptable, uuid(adc1b3ba-8deb-4943-8045-e6de0044f2ce)] +interface nsIFrameLoaderOwner : nsISupports +{ + /** + * The frame loader owned by this nsIFrameLoaderOwner + */ + [binaryname(FrameLoaderXPCOM)] readonly attribute nsIFrameLoader frameLoader; + [noscript, notxpcom] alreadyAddRefed_nsFrameLoader GetFrameLoader(); + + /** + * The principal of parent mozIApplication in case of nested mozbrowser + * iframes. + */ + readonly attribute mozIApplication parentApplication; + + /** + * Puts the FrameLoaderOwner in prerendering mode. + */ + void setIsPrerendered(); + + /** + * This method is used internally by SwapFrameLoaders to set the frame loader + * on the target nsFrameLoader. + * + * Avoid using this method outside of that context, and instead prefer using + * SwapFrameLoaders. + */ + [noscript, notxpcom] void + internalSetFrameLoader(in nsIFrameLoader aNewFrameLoader); +}; |