/* 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/. */
[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
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 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);
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
[noscript] attribute nsIContentViewer previousViewer;
void move(in long aX, in long aY);
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.
* Attach the content viewer to its DOM window and docshell.
* @param aState A state object that might be useful in attaching the DOM
* @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.
* 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);