/* -*- Mode: IDL; tab-width: 4; 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 "nsIAtom.idl" %{ C++ class nsPresContext; class nsIPresShell; struct JSContext; %} /** * The nsIDocShell interface. */ [ptr] native nsPresContext(nsPresContext); [ptr] native nsIPresShell(nsIPresShell); interface nsIURI; interface nsIChannel; interface nsIContentViewer; interface nsIURIContentListener; interface nsIDOMEventTarget; interface nsIDocShellLoadInfo; interface nsIWebNavigation; interface nsISimpleEnumerator; interface nsIInputStream; interface nsIRequest; interface nsISHEntry; interface nsILayoutHistoryState; interface nsISecureBrowserUI; interface nsIDOMStorage; interface nsIPrincipal; interface nsIWebBrowserPrint; interface nsIVariant; interface nsIPrivacyTransitionObserver; [scriptable, builtinclass, uuid(318CE516-3F7A-41F6-8F3D-3661650F7A46)] interface nsIDocShell : nsISupports { /** * Loads a given URI. This will give priority to loading the requested URI * in the object implementing this interface. If it can't be loaded here * however, the URL dispatcher will go through its normal process of content * loading. * * @param uri - The URI to load. * @param loadInfo - This is the extended load info for this load. This * most often will be null, but if you need to do * additional setup for this load you can get a loadInfo * object by calling createLoadInfo. Once you have this * object you can set the needed properties on it and * then pass it to loadURI. * @param aLoadFlags - Flags to modify load behaviour. Flags are defined in * nsIWebNavigation. Note that using flags outside * LOAD_FLAGS_MASK is only allowed if passing in a * non-null loadInfo. And even some of those might not * be allowed. Use at your own risk. */ [noscript]void loadURI(in nsIURI uri, in nsIDocShellLoadInfo loadInfo, in unsigned long aLoadFlags, in boolean firstParty); /** * Loads a given stream. This will give priority to loading the requested * stream in the object implementing this interface. If it can't be loaded * here however, the URL dispatched will go through its normal process of * content loading. * * @param aStream - The input stream that provides access to the data * to be loaded. This must be a blocking, threadsafe * stream implementation. * @param aURI - The URI representing the stream, or null. * @param aContentType - The type (MIME) of data being loaded (empty if unknown). * @param aContentCharset - The charset of the data being loaded (empty if unknown). * @param aLoadInfo - This is the extended load info for this load. This * most often will be null, but if you need to do * additional setup for this load you can get a * loadInfo object by calling createLoadInfo. Once * you have this object you can set the needed * properties on it and then pass it to loadStream. */ [noscript]void loadStream(in nsIInputStream aStream, in nsIURI aURI, in ACString aContentType, in ACString aContentCharset, in nsIDocShellLoadInfo aLoadInfo); const long INTERNAL_LOAD_FLAGS_NONE = 0x0; const long INTERNAL_LOAD_FLAGS_INHERIT_OWNER = 0x1; const long INTERNAL_LOAD_FLAGS_DONT_SEND_REFERRER = 0x2; const long INTERNAL_LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP = 0x4; // This flag marks the first load in this object // @see nsIWebNavigation::LOAD_FLAGS_FIRST_LOAD const long INTERNAL_LOAD_FLAGS_FIRST_LOAD = 0x8; const long INTERNAL_LOAD_FLAGS_BYPASS_CLASSIFIER = 0x10; const long INTERNAL_LOAD_FLAGS_FORCE_ALLOW_COOKIES = 0x20; /** * Loads the given URI. This method is identical to loadURI(...) except * that its parameter list is broken out instead of being packaged inside * of an nsIDocShellLoadInfo object... * * @param aURI - The URI to load. * @param aReferrer - Referring URI * @param aOwner - Owner (security principal) * @param aInheritOwner - Flag indicating whether the owner of the current * document should be inherited if aOwner is null. * @param aStopActiveDoc - Flag indicating whether loading the current * document should be stopped. * @param aWindowTarget - Window target for the load. * @param aTypeHint - A hint as to the content-type of the resulting * data. May be null or empty if no hint. * @param aPostDataStream - Post data stream (if POSTing) * @param aHeadersStream - Stream containing "extra" request headers... * @param aLoadFlags - Flags to modify load behaviour. Flags are defined * in nsIWebNavigation. * @param aSHEntry - Active Session History entry (if loading from SH) */ [noscript]void internalLoad(in nsIURI aURI, in nsIURI aReferrer, in nsISupports aOwner, in uint32_t aFlags, in wstring aWindowTarget, in string aTypeHint, in nsIInputStream aPostDataStream, in nsIInputStream aHeadersStream, in unsigned long aLoadFlags, in nsISHEntry aSHEntry, in boolean firstParty, out nsIDocShell aDocShell, out nsIRequest aRequest); /** * Do either a history.pushState() or history.replaceState() operation, * depending on the value of aReplace. */ [implicit_jscontext] void addState(in nsIVariant aData, in DOMString aTitle, in DOMString aURL, in boolean aReplace); /** * Creates a DocShellLoadInfo object that you can manipulate and then pass * to loadURI. */ void createLoadInfo(out nsIDocShellLoadInfo loadInfo); /** * Reset state to a new content model within the current document and the document * viewer. Called by the document before initiating an out of band document.write(). */ void prepareForNewContentModel(); /** * For editors and suchlike who wish to change the URI associated with the * document. Note if you want to get the current URI, use the read-only * property on nsIWebNavigation. */ void setCurrentURI(in nsIURI aURI); /** * Notify the associated content viewer and all child docshells that they are * about to be hidden. If |isUnload| is true, then the document is being * unloaded as well. * * @param isUnload if true, fire the unload event in addition to the pagehide * event. */ [noscript] void firePageHideNotification(in boolean isUnload); /** * Presentation context for the currently loaded document. This may be null. */ [noscript] readonly attribute nsPresContext presContext; /** * Presentation shell for the currently loaded document. This may be null. */ [noscript] readonly attribute nsIPresShell presShell; /** * Presentation shell for the oldest document, if this docshell is * currently transitioning between documents. */ [noscript] readonly attribute nsIPresShell eldestPresShell; /** * Content Viewer that is currently loaded for this DocShell. This may * change as the underlying content changes. */ readonly attribute nsIContentViewer contentViewer; /** * This attribute allows chrome to tie in to handle DOM events that may * be of interest to chrome. */ attribute nsIDOMEventTarget chromeEventHandler; /** * Whether to allow plugin execution */ attribute boolean allowPlugins; /** * Whether to allow Javascript execution */ attribute boolean allowJavascript; /** * Attribute stating if refresh based redirects can be allowed */ attribute boolean allowMetaRedirects; /** * Attribute stating if it should allow subframes (framesets/iframes) or not */ attribute boolean allowSubframes; /** * Attribute stating whether or not images should be loaded. */ attribute boolean allowImages; /** * Attribute that determines whether DNS prefetch is allowed for this subtree * of the docshell tree. Defaults to true. Setting this will make it take * effect starting with the next document loaded in the docshell. */ attribute boolean allowDNSPrefetch; /** * Attribute that determines whether window control (move/resize) is allowed. */ attribute boolean allowWindowControl; /** * Get an enumerator over this docShell and its children. * * @param aItemType - Only include docShells of this type, or if typeAll, * include all child shells. * Uses types from nsIDocShellTreeItem. * @param aDirection - Whether to enumerate forwards or backwards. */ const long ENUMERATE_FORWARDS = 0; const long ENUMERATE_BACKWARDS = 1; nsISimpleEnumerator getDocShellEnumerator(in long aItemType, in long aDirection); /** * The type of application that created this window */ const unsigned long APP_TYPE_UNKNOWN = 0; const unsigned long APP_TYPE_MAIL = 1; const unsigned long APP_TYPE_EDITOR = 2; attribute unsigned long appType; /** * certain dochshells (like the message pane) * should not throw up auth dialogs * because it can act as a password trojan */ attribute boolean allowAuth; /** * Set/Get the document scale factor. When setting this attribute, a * NS_ERROR_NOT_IMPLEMENTED error may be returned by implementations * not supporting zoom. Implementations not supporting zoom should return * 1.0 all the time for the Get operation. 1.0 by the way is the default * of zoom. This means 100% of normal scaling or in other words normal size * no zoom. */ attribute float zoom; /* * The size, in CSS pixels, of the horizontal margins for the of an * HTML document in this docshel; used to implement the marginwidth attribute * on HTML /