diff -r 000000000000 -r 6474c204b198 docshell/base/nsIContentViewer.idl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docshell/base/nsIContentViewer.idl Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,198 @@ +/* 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 nsIDocShell; +interface nsIDocument; +interface nsIDOMDocument; +interface nsISHEntry; +interface nsIPrintSettings; + + +%{ C++ +class nsIWidget; +struct nsIntRect; +class nsIPresShell; +class nsPresContext; +class nsView; +class nsDOMNavigationTiming; +%} + +[ptr] native nsIWidgetPtr(nsIWidget); +[ref] native nsIntRectRef(nsIntRect); +[ptr] native nsIPresShellPtr(nsIPresShell); +[ptr] native nsPresContextPtr(nsPresContext); +[ptr] native nsViewPtr(nsView); +[ptr] native nsDOMNavigationTimingPtr(nsDOMNavigationTiming); + +[scriptable, builtinclass, uuid(0cb321bd-5b38-4586-8fcd-d43b366886fb)] +interface nsIContentViewer : nsISupports +{ + + [noscript] void init(in nsIWidgetPtr aParentWidget, + [const] in nsIntRectRef aBounds); + + attribute nsIDocShell container; + + [noscript,notxpcom,nostdcall] void loadStart(in nsIDocument aDoc); + void loadComplete(in nsresult aStatus); + + /** + * Checks if the document wants to prevent unloading by firing beforeunload on + * the document, and if it does, prompts the user. The result is returned. + * + * @param aCallerClosesWindow indicates that the current caller will close the + * window. If the method returns true, all subsequent calls will be + * ignored. + */ + boolean permitUnload([optional] in boolean aCallerClosesWindow); + + /** + * Exposes whether we're blocked in a call to permitUnload. + */ + readonly attribute boolean inPermitUnload; + + /** + * As above, but this passes around the aShouldPrompt argument to keep + * track of whether the user has responded to a prompt. + * Used internally by the scriptable version to ensure we only prompt once. + */ + [noscript,nostdcall] boolean permitUnloadInternal(in boolean aCallerClosesWindow, + inout boolean aShouldPrompt); + + /** + * Exposes whether we're in the process of firing the beforeunload event. + * In this case, the corresponding docshell will not allow navigation. + */ + readonly attribute boolean beforeUnloadFiring; + + /** + * Works in tandem with permitUnload, if the caller decides not to close the + * window it indicated it will, it is the caller's responsibility to reset + * that with this method. + * + * @Note this method is only meant to be called on documents for which the + * caller has indicated that it will close the window. If that is not the case + * the behavior of this method is undefined. + */ + void resetCloseWindow(); + void pageHide(in boolean isUnload); + + /** + * All users of a content viewer are responsible for calling both + * close() and destroy(), in that order. + * + * close() should be called when the load of a new page for the next + * content viewer begins, and destroy() should be called when the next + * content viewer replaces this one. + * + * |historyEntry| sets the session history entry for the content viewer. If + * this is null, then Destroy() will be called on the document by close(). + * If it is non-null, the document will not be destroyed, and the following + * actions will happen when destroy() is called (*): + * - Sanitize() will be called on the viewer's document + * - The content viewer will set the contentViewer property on the + * history entry, and release its reference (ownership reversal). + * - hide() will be called, and no further destruction will happen. + * + * (*) unless the document is currently being printed, in which case + * it will never be saved in session history. + * + */ + void close(in nsISHEntry historyEntry); + void destroy(); + + void stop(); + + attribute nsIDOMDocument DOMDocument; + + /** + * Returns DOMDocument as nsIDocument and without addrefing. + */ + [noscript,notxpcom] nsIDocument getDocument(); + + [noscript] void getBounds(in nsIntRectRef aBounds); + [noscript] void setBounds([const] in nsIntRectRef aBounds); + + /** + * The previous content viewer, which has been |close|d but not + * |destroy|ed. + */ + [noscript] attribute nsIContentViewer previousViewer; + + void move(in long aX, in long aY); + + void show(); + void hide(); + + attribute boolean sticky; + + /* + * This is called when the DOM window wants to be closed. Returns true + * if the window can close immediately. Otherwise, returns false and will + * close the DOM window as soon as practical. + */ + + boolean requestWindowClose(); + + /** + * Attach the content viewer to its DOM window and docshell. + * @param aState A state object that might be useful in attaching the DOM + * window. + * @param aSHEntry The history entry that the content viewer was stored in. + * The entry must have the docshells for all of the child + * documents stored in its child shell list. + */ + void open(in nsISupports aState, in nsISHEntry aSHEntry); + + /** + * Clears the current history entry. This is used if we need to clear out + * the saved presentation state. + */ + void clearHistoryEntry(); + + /** + * Change the layout to view the document with page layout (like print preview), but + * dynamic and editable (like Galley layout). + */ + void setPageMode(in boolean aPageMode, in nsIPrintSettings aPrintSettings); + + /** + * Get the history entry that this viewer will save itself into when + * destroyed. Can return null + */ + readonly attribute nsISHEntry historyEntry; + + /** + * Indicates when we're in a state where content shouldn't be allowed to + * trigger a tab-modal prompt (as opposed to a window-modal prompt) because + * we're part way through some operation (eg beforeunload) that shouldn't be + * rentrant if the user closes the tab while the prompt is showing. + * See bug 613800. + */ + readonly attribute boolean isTabModalPromptAllowed; + + /** + * Returns whether this content viewer is in a hidden state. + */ + readonly attribute boolean isHidden; + + [noscript] readonly attribute nsIPresShellPtr presShell; + [noscript] readonly attribute nsPresContextPtr presContext; + // aDocument must not be null. + [noscript] void setDocumentInternal(in nsIDocument aDocument, + in boolean aForceReuseInnerWindow); + /** + * Find the view to use as the container view for MakeWindow. Returns + * null if this will be the root of a view manager hierarchy. In that + * case, if mParentWidget is null then this document should not even + * be displayed. + */ + [noscript,notxpcom,nostdcall] nsViewPtr findContainerView(); + /** + * Set collector for navigation timing data (load, unload events). + */ + [noscript,notxpcom,nostdcall] void setNavigationTiming(in nsDOMNavigationTimingPtr aTiming); +};