/* -*- 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 nsFrameLoader; interface nsIDocShell; interface nsIURI; interface nsIFrame; interface nsSubDocumentFrame; interface nsIMessageSender; interface nsIVariant; interface nsIDOMElement; interface nsITabParent; interface nsILoadContext; [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); /** * Loads the specified URI in this frame but using a different process. * Behaves identically to loadURI, except that this method only works * with remote frame. For a signed package, we need to specifiy the * package identifier. * Throws an exception with non-remote frames. */ void switchProcessAndLoadURI(in nsIURI aURI, in ACString aPackageId); /** * Puts the frameloader in prerendering mode. */ void setIsPrerendered(); /** * 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(); /** * Request an event when the layer tree from the remote tab becomes * available or unavailable. When this happens, a mozLayerTreeReady * or mozLayerTreeCleared event is fired. */ void requestNotifyLayerTreeReady(); void requestNotifyLayerTreeCleared(); /** * 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