2012-05-21 15:12:37 +04:00
|
|
|
/* 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/. */
|
2011-10-15 11:33:26 +04:00
|
|
|
|
2000-11-09 23:30:35 +03:00
|
|
|
#include "nsISupports.idl"
|
Landing the XPCDOM_20010329_BRANCH branch, changes mostly done by jband@netscape.com and jst@netscape.com, also some changes done by shaver@mozilla.org, peterv@netscape.com and markh@activestate.com. r= and sr= by vidur@netscape.com, jband@netscape.com, jst@netscpae.com, danm@netscape.com, hyatt@netscape.com, shaver@mozilla.org, dbradley@netscape.com, rpotts@netscape.com.
2001-05-08 20:46:42 +04:00
|
|
|
|
2013-11-15 11:12:43 +04:00
|
|
|
interface nsIDocShell;
|
2005-05-05 00:22:32 +04:00
|
|
|
interface nsISHEntry;
|
2006-04-01 05:19:28 +04:00
|
|
|
interface nsIPrintSettings;
|
2018-05-11 20:46:15 +03:00
|
|
|
webidl Document;
|
2018-05-30 05:58:48 +03:00
|
|
|
webidl Node;
|
2000-11-09 23:30:35 +03:00
|
|
|
|
|
|
|
%{ C++
|
2014-07-10 01:27:49 +04:00
|
|
|
#include "nsTArray.h"
|
2015-04-21 18:04:57 +03:00
|
|
|
#include "nsRect.h"
|
2014-07-10 01:27:49 +04:00
|
|
|
|
2001-07-16 06:40:48 +04:00
|
|
|
class nsIWidget;
|
2011-10-15 11:33:26 +04:00
|
|
|
class nsPresContext;
|
2013-01-03 17:23:11 +04:00
|
|
|
class nsView;
|
2011-10-15 11:33:26 +04:00
|
|
|
class nsDOMNavigationTiming;
|
2017-06-25 16:46:08 +03:00
|
|
|
namespace mozilla {
|
|
|
|
class Encoding;
|
2019-04-16 05:47:26 +03:00
|
|
|
class PresShell;
|
2019-08-08 19:07:12 +03:00
|
|
|
namespace dom {
|
|
|
|
class WindowGlobalChild;
|
|
|
|
} // namespace dom
|
|
|
|
} // namespace mozilla
|
2000-11-09 23:30:35 +03:00
|
|
|
%}
|
|
|
|
|
|
|
|
[ptr] native nsIWidgetPtr(nsIWidget);
|
2009-01-15 06:27:09 +03:00
|
|
|
[ref] native nsIntRectRef(nsIntRect);
|
2011-10-15 11:33:26 +04:00
|
|
|
[ptr] native nsPresContextPtr(nsPresContext);
|
2013-01-03 17:23:11 +04:00
|
|
|
[ptr] native nsViewPtr(nsView);
|
2011-10-15 11:33:26 +04:00
|
|
|
[ptr] native nsDOMNavigationTimingPtr(nsDOMNavigationTiming);
|
2017-06-25 16:46:08 +03:00
|
|
|
[ptr] native Encoding(const mozilla::Encoding);
|
2019-04-16 05:47:26 +03:00
|
|
|
[ptr] native PresShellPtr(mozilla::PresShell);
|
2019-08-08 19:07:12 +03:00
|
|
|
[ptr] native WindowGlobalChildPtr(mozilla::dom::WindowGlobalChild);
|
2000-11-09 23:30:35 +03:00
|
|
|
|
2016-01-21 09:55:37 +03:00
|
|
|
[scriptable, builtinclass, uuid(2da17016-7851-4a45-a7a8-00b360e01595)]
|
2000-11-09 23:30:35 +03:00
|
|
|
interface nsIContentViewer : nsISupports
|
|
|
|
{
|
|
|
|
[noscript] void init(in nsIWidgetPtr aParentWidget,
|
2019-08-08 19:07:12 +03:00
|
|
|
[const] in nsIntRectRef aBounds,
|
|
|
|
in WindowGlobalChildPtr aWindowActor);
|
2000-11-09 23:30:35 +03:00
|
|
|
|
2013-11-15 11:12:43 +04:00
|
|
|
attribute nsIDocShell container;
|
2000-11-09 23:30:35 +03:00
|
|
|
|
2018-05-11 20:46:15 +03:00
|
|
|
[noscript,notxpcom,nostdcall] void loadStart(in Document aDoc);
|
2019-04-13 15:43:57 +03:00
|
|
|
[can_run_script] void loadComplete(in nsresult aStatus);
|
2018-11-20 04:17:53 +03:00
|
|
|
[notxpcom,nostdcall] readonly attribute boolean loadCompleted;
|
2009-10-20 18:19:43 +04:00
|
|
|
|
2018-11-20 04:17:53 +03:00
|
|
|
[notxpcom,nostdcall] readonly attribute boolean isStopped;
|
2017-02-15 00:58:34 +03:00
|
|
|
|
2020-10-09 22:28:00 +03:00
|
|
|
/**
|
|
|
|
* aAction is passed to PermitUnload to indicate what action to take
|
|
|
|
* if a beforeunload handler wants to prompt the user.
|
|
|
|
*
|
|
|
|
* ePrompt: Prompt and return the user's choice (default).
|
|
|
|
* eDontPromptAndDontUnload: Don't prompt and return false (unload not permitted)
|
|
|
|
* if the document (or its children) asks us to prompt.
|
|
|
|
* eDontPromptAndUnload: Don't prompt and return true (unload permitted) no matter what.
|
|
|
|
*
|
|
|
|
* NOTE: Keep this in sync with PermitUnloadAction in WindowGlobalActors.webidl.
|
|
|
|
*/
|
|
|
|
cenum PermitUnloadAction : 8 {
|
|
|
|
ePrompt = 0,
|
|
|
|
eDontPromptAndDontUnload = 1,
|
|
|
|
eDontPromptAndUnload = 2
|
|
|
|
};
|
|
|
|
|
2020-09-22 01:40:53 +03:00
|
|
|
/**
|
|
|
|
* The result of dispatching a "beforeunload" event. If `eAllowNavigation`,
|
|
|
|
* no "beforeunload" listener requested to prevent the navigation, or its
|
|
|
|
* request was ignored. If `eRequestBlockNavigation`, a listener did request
|
|
|
|
* to block the navigation, and the user should be prompted.
|
|
|
|
*/
|
|
|
|
cenum PermitUnloadResult : 8 {
|
|
|
|
eAllowNavigation = 0,
|
|
|
|
eRequestBlockNavigation = 1,
|
|
|
|
};
|
2017-11-24 17:14:46 +03:00
|
|
|
|
|
|
|
/**
|
2020-10-09 22:28:00 +03:00
|
|
|
* Overload PermitUnload method for C++ consumers with no aPermitUnloadFlags
|
|
|
|
* argument.
|
2017-11-24 17:14:46 +03:00
|
|
|
*/
|
|
|
|
%{C++
|
|
|
|
nsresult PermitUnload(bool* canUnload) {
|
2020-10-09 22:28:00 +03:00
|
|
|
return PermitUnload(ePrompt, canUnload);
|
2017-11-24 17:14:46 +03:00
|
|
|
}
|
|
|
|
%}
|
|
|
|
|
2009-10-20 18:19:43 +04:00
|
|
|
/**
|
|
|
|
* Checks if the document wants to prevent unloading by firing beforeunload on
|
2020-09-22 01:40:53 +03:00
|
|
|
* the document.
|
2017-11-24 17:14:46 +03:00
|
|
|
* The result is returned.
|
2009-10-20 18:19:43 +04:00
|
|
|
*/
|
2020-10-09 22:28:00 +03:00
|
|
|
boolean permitUnload([optional] in nsIContentViewer_PermitUnloadAction aAction);
|
2009-10-20 18:19:43 +04:00
|
|
|
|
2014-04-02 10:21:14 +04:00
|
|
|
/**
|
|
|
|
* Exposes whether we're blocked in a call to permitUnload.
|
|
|
|
*/
|
|
|
|
readonly attribute boolean inPermitUnload;
|
|
|
|
|
2013-12-18 22:36:12 +04:00
|
|
|
/**
|
2020-09-22 01:40:53 +03:00
|
|
|
* Dispatches the "beforeunload" event and returns the result, as documented
|
|
|
|
* in the `PermitUnloadResult` enum.
|
2013-12-18 22:36:12 +04:00
|
|
|
*/
|
2020-09-22 01:40:53 +03:00
|
|
|
[noscript,nostdcall,notxpcom] nsIContentViewer_PermitUnloadResult dispatchBeforeUnload();
|
2013-12-18 22:36:12 +04:00
|
|
|
|
2014-01-16 19:57:13 +04:00
|
|
|
/**
|
|
|
|
* 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;
|
|
|
|
|
2005-06-16 03:52:46 +04:00
|
|
|
void pageHide(in boolean isUnload);
|
2001-05-25 12:49:03 +04:00
|
|
|
|
2001-08-01 07:15:50 +04:00
|
|
|
/**
|
|
|
|
* 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.
|
2005-05-18 07:52:33 +04:00
|
|
|
*
|
|
|
|
* |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.
|
|
|
|
*
|
2001-08-01 07:15:50 +04:00
|
|
|
*/
|
2005-05-18 07:52:33 +04:00
|
|
|
void close(in nsISHEntry historyEntry);
|
2000-11-09 23:30:35 +03:00
|
|
|
void destroy();
|
2001-08-01 07:15:50 +04:00
|
|
|
|
2000-11-09 23:30:35 +03:00
|
|
|
void stop();
|
|
|
|
|
2018-01-31 23:18:09 +03:00
|
|
|
/**
|
|
|
|
* Returns the same thing as getDocument(), but for use from script
|
|
|
|
* only. C++ consumers should use getDocument().
|
|
|
|
*/
|
2018-05-11 20:46:15 +03:00
|
|
|
readonly attribute Document DOMDocument;
|
2000-11-09 23:30:35 +03:00
|
|
|
|
2010-01-23 14:41:41 +03:00
|
|
|
/**
|
2018-05-11 20:46:15 +03:00
|
|
|
* Returns DOMDocument without addrefing.
|
2010-01-23 14:41:41 +03:00
|
|
|
*/
|
2018-05-11 20:46:15 +03:00
|
|
|
[noscript,notxpcom,nostdcall] Document getDocument();
|
2018-01-31 23:18:09 +03:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Allows setting the document.
|
|
|
|
*/
|
2018-05-11 20:46:15 +03:00
|
|
|
[noscript,nostdcall] void setDocument(in Document aDocument);
|
2010-01-23 14:41:41 +03:00
|
|
|
|
2009-01-15 06:27:09 +03:00
|
|
|
[noscript] void getBounds(in nsIntRectRef aBounds);
|
|
|
|
[noscript] void setBounds([const] in nsIntRectRef aBounds);
|
2016-05-12 03:07:45 +03:00
|
|
|
/**
|
|
|
|
* The 'aFlags' argument to setBoundsWithFlags is a set of these bits.
|
|
|
|
*/
|
|
|
|
const unsigned long eDelayResize = 1;
|
|
|
|
[noscript] void setBoundsWithFlags([const] in nsIntRectRef aBounds,
|
|
|
|
in unsigned long aFlags);
|
2000-11-09 23:30:35 +03:00
|
|
|
|
2001-08-01 07:15:50 +04:00
|
|
|
/**
|
|
|
|
* The previous content viewer, which has been |close|d but not
|
|
|
|
* |destroy|ed.
|
|
|
|
*/
|
2018-11-20 04:17:53 +03:00
|
|
|
[notxpcom,nostdcall] attribute nsIContentViewer previousViewer;
|
2001-05-02 02:54:11 +04:00
|
|
|
|
2000-11-09 23:30:35 +03:00
|
|
|
void move(in long aX, in long aY);
|
|
|
|
|
|
|
|
void show();
|
|
|
|
void hide();
|
|
|
|
|
2002-04-24 04:33:56 +04:00
|
|
|
attribute boolean sticky;
|
2003-09-27 01:45:15 +04:00
|
|
|
|
2005-05-05 00:22:32 +04:00
|
|
|
/**
|
|
|
|
* Attach the content viewer to its DOM window and docshell.
|
2005-08-15 22:16:42 +04:00
|
|
|
* @param aState A state object that might be useful in attaching the DOM
|
|
|
|
* window.
|
2006-08-06 22:50:17 +04:00
|
|
|
* @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.
|
2005-05-05 00:22:32 +04:00
|
|
|
*/
|
2005-11-06 22:23:03 +03:00
|
|
|
void open(in nsISupports aState, in nsISHEntry aSHEntry);
|
2005-05-05 00:22:32 +04:00
|
|
|
|
|
|
|
/**
|
2005-05-18 07:52:33 +04:00
|
|
|
* Clears the current history entry. This is used if we need to clear out
|
|
|
|
* the saved presentation state.
|
2005-05-05 00:22:32 +04:00
|
|
|
*/
|
2005-05-18 07:52:33 +04:00
|
|
|
void clearHistoryEntry();
|
2006-04-01 05:19:28 +04:00
|
|
|
|
2012-08-13 23:05:34 +04:00
|
|
|
/**
|
2006-04-01 05:19:28 +04:00
|
|
|
* Change the layout to view the document with page layout (like print preview), but
|
|
|
|
* dynamic and editable (like Galley layout).
|
2012-08-13 23:05:34 +04:00
|
|
|
*/
|
2019-04-29 16:53:25 +03:00
|
|
|
void setPageModeForTesting(in boolean aPageMode,
|
|
|
|
in nsIPrintSettings aPrintSettings);
|
2007-10-06 04:35:00 +04:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Get the history entry that this viewer will save itself into when
|
|
|
|
* destroyed. Can return null
|
|
|
|
*/
|
|
|
|
readonly attribute nsISHEntry historyEntry;
|
2011-02-16 03:35:28 +03:00
|
|
|
|
2012-08-13 23:05:34 +04:00
|
|
|
/**
|
2011-02-16 03:35:28 +03:00
|
|
|
* 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;
|
2011-10-15 11:33:26 +04:00
|
|
|
|
2012-08-13 23:05:34 +04:00
|
|
|
/**
|
|
|
|
* Returns whether this content viewer is in a hidden state.
|
2014-07-11 23:09:08 +04:00
|
|
|
*
|
|
|
|
* @note Only Gecko internal code should set the attribute!
|
2012-08-13 23:05:34 +04:00
|
|
|
*/
|
2014-07-11 23:09:08 +04:00
|
|
|
attribute boolean isHidden;
|
2012-08-13 23:05:34 +04:00
|
|
|
|
2018-11-20 04:17:53 +03:00
|
|
|
// presShell can be null.
|
2019-04-16 05:47:26 +03:00
|
|
|
[notxpcom,nostdcall] readonly attribute PresShellPtr presShell;
|
2018-11-20 04:17:53 +03:00
|
|
|
// presContext can be null.
|
|
|
|
[notxpcom,nostdcall] readonly attribute nsPresContextPtr presContext;
|
2012-06-06 11:36:58 +04:00
|
|
|
// aDocument must not be null.
|
2018-05-11 20:46:15 +03:00
|
|
|
[noscript] void setDocumentInternal(in Document aDocument,
|
2011-10-15 11:33:26 +04:00
|
|
|
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.
|
|
|
|
*/
|
2013-01-03 17:23:11 +04:00
|
|
|
[noscript,notxpcom,nostdcall] nsViewPtr findContainerView();
|
2011-10-15 11:33:26 +04:00
|
|
|
/**
|
|
|
|
* Set collector for navigation timing data (load, unload events).
|
|
|
|
*/
|
|
|
|
[noscript,notxpcom,nostdcall] void setNavigationTiming(in nsDOMNavigationTimingPtr aTiming);
|
2014-07-10 01:27:49 +04:00
|
|
|
|
2017-09-28 00:06:37 +03:00
|
|
|
/**
|
|
|
|
* The actual full zoom in effect, as modified by the device context.
|
|
|
|
* For a requested full zoom, the device context may choose a slightly
|
|
|
|
* different effectiveFullZoom to accomodate integer rounding of app units
|
|
|
|
* per dev pixel. This property returns the actual zoom amount in use,
|
|
|
|
* though it may not be good user experience to report that a requested zoom
|
|
|
|
* of 90% is actually 89.1%, for example. This value is provided primarily to
|
|
|
|
* support media queries of dppx values, because those queries are matched
|
|
|
|
* against the actual native device pixel ratio and the actual full zoom.
|
2020-04-22 21:05:44 +03:00
|
|
|
*
|
|
|
|
* You should only need this for testing.
|
2017-09-28 00:06:37 +03:00
|
|
|
*/
|
2020-04-22 21:05:44 +03:00
|
|
|
readonly attribute float deviceFullZoomForTest;
|
2017-09-28 00:06:37 +03:00
|
|
|
|
2016-08-25 14:15:19 +03:00
|
|
|
/**
|
|
|
|
* The value used to override devicePixelRatio and media queries dppx.
|
|
|
|
* Default is 0.0, that means no overriding is done (only a positive value
|
|
|
|
* is applied).
|
|
|
|
*/
|
|
|
|
attribute float overrideDPPX;
|
|
|
|
|
2020-10-04 06:25:16 +03:00
|
|
|
/**
|
|
|
|
* Disable entire author style level (including HTML presentation hints),
|
|
|
|
* for this viewer but not any child viewers.
|
|
|
|
*/
|
2014-07-10 01:27:49 +04:00
|
|
|
attribute boolean authorStyleDisabled;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* XXX comm-central only: bug 829543.
|
|
|
|
*/
|
|
|
|
attribute ACString hintCharacterSet;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* XXX comm-central only: bug 829543.
|
|
|
|
*/
|
|
|
|
attribute int32_t hintCharacterSetSource;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Requests the size of the content to the container.
|
|
|
|
*/
|
|
|
|
void getContentSize(out long width, out long height);
|
|
|
|
|
2016-10-19 23:10:18 +03:00
|
|
|
/**
|
|
|
|
* Returns the preferred width and height of the content, constrained to the
|
|
|
|
* given maximum values. If either maxWidth or maxHeight is less than zero,
|
|
|
|
* that dimension is not constrained.
|
|
|
|
*
|
|
|
|
* All input and output values are in device pixels, rather than CSS pixels.
|
|
|
|
*/
|
|
|
|
void getContentSizeConstrained(in long maxWidth, in long maxHeight,
|
|
|
|
out long width, out long height);
|
|
|
|
|
2016-01-21 09:55:37 +03:00
|
|
|
/**
|
|
|
|
* Instruct the refresh driver to discontinue painting until further
|
|
|
|
* notice.
|
|
|
|
*/
|
|
|
|
void pausePainting();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Instruct the refresh driver to resume painting after a previous call to
|
|
|
|
* pausePainting().
|
|
|
|
*/
|
|
|
|
void resumePainting();
|
|
|
|
|
2014-07-10 01:27:49 +04:00
|
|
|
/*
|
|
|
|
* Render the document as if being viewed on a device with the specified
|
|
|
|
* media type. This will cause a reflow.
|
|
|
|
*
|
|
|
|
* @param mediaType The media type to be emulated
|
|
|
|
*/
|
|
|
|
void emulateMedium(in AString aMediaType);
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Restore the viewer's natural media type
|
|
|
|
*/
|
|
|
|
void stopEmulatingMedium();
|
2017-06-25 16:46:08 +03:00
|
|
|
|
2019-08-01 19:41:09 +03:00
|
|
|
cenum PrefersColorScheme : 8 {
|
|
|
|
PREFERS_COLOR_SCHEME_LIGHT,
|
|
|
|
PREFERS_COLOR_SCHEME_DARK,
|
|
|
|
PREFERS_COLOR_SCHEME_NONE, /* This clears the override. */
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Emulate or stop emulating the prefers color scheme on this page and
|
|
|
|
* subdocuments.
|
|
|
|
*/
|
|
|
|
void emulatePrefersColorScheme(in nsIContentViewer_PrefersColorScheme aPrefersColorScheme);
|
|
|
|
|
2017-06-25 16:46:08 +03:00
|
|
|
[noscript, notxpcom] Encoding getHintCharset();
|
|
|
|
[noscript, notxpcom] void setHintCharset(in Encoding aEncoding);
|
2011-02-16 03:35:28 +03:00
|
|
|
};
|
2020-09-22 01:41:01 +03:00
|
|
|
|
|
|
|
%{C++
|
|
|
|
namespace mozilla {
|
|
|
|
namespace dom {
|
|
|
|
|
2020-10-09 22:28:00 +03:00
|
|
|
using XPCOMPermitUnloadAction = nsIContentViewer::PermitUnloadAction;
|
2020-09-22 01:41:01 +03:00
|
|
|
using PermitUnloadResult = nsIContentViewer::PermitUnloadResult;
|
|
|
|
|
|
|
|
} // namespace dom
|
|
|
|
} // namespace mozilla
|
|
|
|
%}
|