summaryrefslogtreecommitdiffstats
path: root/dom/base/nsIFrameLoader.idl
diff options
context:
space:
mode:
Diffstat (limited to 'dom/base/nsIFrameLoader.idl')
-rw-r--r--dom/base/nsIFrameLoader.idl288
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);
+};