File: nsIWindowMediator.idl

package info (click to toggle)
firefox 147.0.3-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 4,683,320 kB
  • sloc: cpp: 7,607,359; javascript: 6,533,295; ansic: 3,775,223; python: 1,415,500; xml: 634,561; asm: 438,949; java: 186,241; sh: 62,752; makefile: 18,079; objc: 13,092; perl: 12,808; yacc: 4,583; cs: 3,846; pascal: 3,448; lex: 1,720; ruby: 1,003; php: 436; lisp: 258; awk: 247; sql: 66; sed: 54; csh: 10; exp: 6
file content (140 lines) | stat: -rw-r--r-- 5,584 bytes parent folder | download | duplicates (11)
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
/* -*- 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"
#include "nsISimpleEnumerator.idl"

%{C++
#define NS_WINDOWMEDIATOR_CID \
{ 0x79a2b7cc, 0xf05b, 0x4605, \
  { 0xbf, 0xa0, 0xfa, 0xc5, 0x4f, 0x27, 0xee, 0xc8 } }

#define NS_WINDOWMEDIATOR_CONTRACTID \
  "@mozilla.org/appshell/window-mediator;1"

enum class WindowMediatorFilter : uint8_t {
  None = 0,
  SkipPrivateBrowsing = 1 << 0,
  SkipClosed = 1 << 1,
  SkipNonPrivateBrowsing = 1 << 2,
};

MOZ_MAKE_ENUM_CLASS_BITWISE_OPERATORS(WindowMediatorFilter)
%}

interface mozIDOMWindow;
interface mozIDOMWindowProxy;
interface nsIAppWindow;
interface nsIWidget;
interface nsIWindowMediatorListener;

[scriptable, uuid(df0da056-357d-427f-bafd-e6cbf19c9381)]
interface nsIWindowMediator: nsISupports
{
  /** Return an enumerator which iterates over all windows of type aWindowType
    * from the oldest window to the youngest.
    * @param  aWindowType the returned enumerator will enumerate only
    *                     windows of this type. ("type" is the
    *                     |windowtype| attribute of the XML <window> element.)
    *                     If null, all windows will be enumerated.
    * @return an enumerator of nsIDOMWindows.  Note that windows close
    *         asynchronously in many cases, so windows returned from this
    *         enumerator can have .closed set to true.  Caveat enumerator!
    */
  nsISimpleEnumerator getEnumerator(in wstring aWindowType);

  /** Identical to getEnumerator except:
    * @return an enumerator of nsIAppWindows
  */
  nsISimpleEnumerator getAppWindowEnumerator(in wstring aWindowType);

  /** Return an enumerator which iterates over all windows of type aWindowType
    * in their z (front-to-back) order. Note this interface makes
    * no requirement that a window couldn't be revisited if windows
    * are re-ordered while z-order enumerators are active.
    * @param  aWindowType the returned enumerator will enumerate only
    *                     windows of this type. ("type" is the
    *                     |windowtype| attribute of the XML <window> element.)
    *                     If null, all windows will be enumerated.
    * @param  aFrontToBack if true, the enumerator enumerates windows in order
    *                      from front to back. back to front if false.
    * @return an enumerator of nsIAppWindows
    */
  nsISimpleEnumerator getZOrderAppWindowEnumerator(in wstring aWindowType,
                        in boolean aFrontToBack);

  /** This is a shortcut for simply fetching the first window in
    * front to back order.
    * @param  aWindowType return the topmost window of this type.
    *                     ("type" is the |windowtype| attribute of
    *                     the XML <window> element.)
    *                     If null, return the topmost window of any type.
    * @return the topmost window
    */
  mozIDOMWindowProxy getMostRecentWindow(in wstring aWindowType);

  /** This is a shortcut for getMostRecentWindow('navigator:browser'), but
    * if that fails it also tries 'navigator:geckoview' and 'mail:3pane'.
    *
    * @return the topmost browser window
    */
  mozIDOMWindowProxy getMostRecentBrowserWindow();

  /**
   * Same as getMostRecentWindow, but ignores private browsing
   * windows.
   */
  mozIDOMWindowProxy getMostRecentNonPBWindow(in wstring aWindowType);

  /**
   * Same as getMostRecentWindow, but filters out based on the parameter.
   * @param aFilter The value based on the enum WindowMediatorFilter.
   *
   * (Not using WindowMediatorFilter directly it requires [builtinclass])
   */
  mozIDOMWindowProxy getMostRecentWindowBy(in wstring aWindowType, in uint8_t aFilter);

  /**
   * Return the outer window with the given ID, if any.  Can return null.
   */
  mozIDOMWindowProxy getOuterWindowWithId(in unsigned long long aOuterWindowID);

  /**
    * Return the inner window with the given current window ID, if any.
    * Can return null if no inner window with the ID exists or if it's not
    * a current inner anymore.
    */
  mozIDOMWindow getCurrentInnerWindowWithId(in unsigned long long aInnerWindowID);

  /** Add the window to the list of known windows. Listeners (see
    * addListener) will be notified through their onOpenWindow method.
    * @param aWindow the window to add
    */
  [noscript] void registerWindow(in nsIAppWindow aWindow);

  /** Remove the window from the list of known windows. Listeners (see
    * addListener) will be be notified through their onCloseWindow method.
    * @param aWindow the window to remove
    */
  [noscript] void unregisterWindow(in nsIAppWindow aWindow);

  /** Call this method when a window gains focus. It's a primitive means of
    * determining the most recent window. It's no longer necessary and it
    * really should be removed.
    * @param aWindow the window which has gained focus
    */
  [noscript] void updateWindowTimeStamp(in nsIAppWindow aWindow);

  /** Register a listener for window status changes.
    * keeps strong ref? (to be decided)
    * @param aListener the listener to register
    */
  void addListener(in nsIWindowMediatorListener aListener);

  /** Unregister a listener of window status changes.
    * @param aListener the listener to unregister
    */
  void removeListener(in nsIWindowMediatorListener aListener);
};