summaryrefslogtreecommitdiffstats
path: root/toolkit/components/windowwatcher/nsIOpenWindowInfo.idl
blob: c0edb1853651096879500b52fb0bfff0146190ae (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
 *
 * 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"

webidl BrowsingContext;

%{ C++
namespace mozilla {
class OriginAttributes;
namespace dom {
class BrowserParent;
} // namespace dom
} // namespace mozilla
%}
[ref] native const_OriginAttributes(const mozilla::OriginAttributes);
[ptr] native BrowserParent(mozilla::dom::BrowserParent);

/*
 * nsIBrowsingContextReadyCallback.browsingContextReady() is called within
 * nsFrameLoader to indicate that the browsing context for a newly opened
 * window/tab is ready.
 */
[uuid(0524ee06-7f4c-4cd3-ab80-084562745cad)]
interface nsIBrowsingContextReadyCallback : nsISupports
{
  void browsingContextReady(in BrowsingContext bc);
};

/**
 * nsIOpenWindowInfo is a helper type which contains details used when opening
 * new content windows. This object is used to correctly create new initial
 * content documents when creating a new window.
 */
[scriptable, builtinclass, uuid(30359edb-126c-4f65-ae80-07fb158697f9)]
interface nsIOpenWindowInfo : nsISupports {
  /** BrowsingContext which requested the creation of this new window */
  [infallible]
  readonly attribute BrowsingContext parent;

  /** If `true`, the content document should be created initially-remote */
  [infallible]
  readonly attribute boolean isRemote;

  /** Should |opener| be set on the newly-created content window? */
  [infallible]
  readonly attribute boolean forceNoOpener;

  /** Whether this is a window opened for printing */
  [infallible]
  readonly attribute boolean isForPrinting;

  /**
   * Whether this is a window opened for window.print().
   * When this is true, isForPrinting is necessarily true as well.
   */
  [infallible]
  readonly attribute boolean isForWindowDotPrint;

  /** BrowserParent instance to use in the new window */
  [notxpcom, nostdcall]
  BrowserParent getNextRemoteBrowser();

  /** Origin Attributes for the to-be-created toplevel BrowsingContext */
  [implicit_jscontext, binaryname(ScriptableOriginAttributes)]
  readonly attribute jsval originAttributes;

  [notxpcom, nostdcall, binaryname(GetOriginAttributes)]
  const_OriginAttributes binaryGetOriginAttributes();

  /* Callback to invoke when the browsing context for a new window is ready. */
  [notxpcom, nostdcall]
  nsIBrowsingContextReadyCallback browsingContextReadyCallback();

  /**
   * When creating a window fails, we will be called to notify an error via
   * callback. If no callback, do nothing.
   */
  void cancel();
};