summaryrefslogtreecommitdiffstats
path: root/toolkit/components/browser/nsIWebBrowserChrome.idl
blob: 217beda78edf31bab4c37209964d7a5bf5425195 (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
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
141
142
143
/* -*- Mode: IDL; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 *
 * 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 "nsIBaseWindow.idl"

interface nsIWebBrowser;
interface nsIDocShellTreeItem;

/**
 * nsIWebBrowserChrome corresponds to the top-level, outermost window
 * containing an embedded Gecko web browser.
 */

[scriptable, builtinclass, uuid(E8C414C4-DC38-4BA3-AB4E-EC4CBBE22907)]
interface nsIWebBrowserChrome : nsISupports
{
    /**
     * Called when the link hover status is being changed.
     * @param status status string. empty string is an acceptable value
     *               meaning no link is hovered.
     */
    void setLinkStatus(in AString status);

    /**
     * Definitions for the chrome flags
     */
    const unsigned long CHROME_DEFAULT                = 1 << 0;
    const unsigned long CHROME_WINDOW_BORDERS         = 1 << 1;
    const unsigned long CHROME_WINDOW_CLOSE           = 1 << 2;
    const unsigned long CHROME_WINDOW_RESIZE          = 1 << 3;
    const unsigned long CHROME_MENUBAR                = 1 << 4;
    const unsigned long CHROME_TOOLBAR                = 1 << 5;
    const unsigned long CHROME_LOCATIONBAR            = 1 << 6;
    const unsigned long CHROME_STATUSBAR              = 1 << 7;
    const unsigned long CHROME_PERSONAL_TOOLBAR       = 1 << 8;
    const unsigned long CHROME_SCROLLBARS             = 1 << 9;
    const unsigned long CHROME_TITLEBAR               = 1 << 10;
    const unsigned long CHROME_EXTRA                  = 1 << 11;

    // Free bits here.
    const unsigned long CHROME_ALL =
        CHROME_WINDOW_BORDERS | CHROME_WINDOW_CLOSE | CHROME_WINDOW_RESIZE |
        CHROME_MENUBAR | CHROME_TOOLBAR | CHROME_LOCATIONBAR |
        CHROME_STATUSBAR | CHROME_PERSONAL_TOOLBAR | CHROME_SCROLLBARS |
        CHROME_TITLEBAR | CHROME_EXTRA;

    const unsigned long CHROME_WINDOW_MINIMIZE        = 1 << 14;

    const unsigned long CHROME_ALERT                  = 1 << 15;

    // whether to open a new private window.  CHROME_NON_PRIVATE_WINDOW
    // forces the opened window to be non-private, and overrides
    // CHROME_PRIVATE_WINDOW if it's set.  CHROME_PRIVATE_WINDOW
    // forces the opened window to be private.  If neither of these
    // flags are specified, the opened window will inherit the privacy
    // status of its opener.  If there is no opener window, the new
    // window will be non-private.
    //
    // CHROME_PRIVATE_LIFETIME causes the docshell to affect private-browsing
    // session lifetime.  This flag is currently respected only for remote
    // docshells.
    const unsigned long CHROME_PRIVATE_WINDOW         = 1 << 16;
    const unsigned long CHROME_NON_PRIVATE_WINDOW     = 1 << 17;
    const unsigned long CHROME_PRIVATE_LIFETIME       = 1 << 18;
    const unsigned long CHROME_ALWAYS_ON_TOP          = 1 << 19;

    // Whether this window should use remote (out-of-process) tabs.
    const unsigned long CHROME_REMOTE_WINDOW          = 1 << 20;

    // Whether this window should use out-of-process cross-origin subframes.
    const unsigned long CHROME_FISSION_WINDOW         = 1 << 21;

    // Prevents new window animations on MacOS and Windows. Currently
    // ignored for Linux.
    const unsigned long CHROME_SUPPRESS_ANIMATION     = 1 << 24;

    const unsigned long CHROME_WINDOW_RAISED          = 1 << 25;
    const unsigned long CHROME_WINDOW_LOWERED         = 1 << 26;
    const unsigned long CHROME_CENTER_SCREEN          = 1 << 27;

    // Make the new window dependent on the parent.  This flag is only
    // meaningful if CHROME_OPENAS_CHROME is set; content windows should not be
    // dependent.
    const unsigned long CHROME_DEPENDENT              = 1 << 28;

    // Note: The modal style bit just affects the way the window looks and does
    //       mean it's actually modal.
    const unsigned long CHROME_MODAL                  = 1 << 29;
    const unsigned long CHROME_OPENAS_DIALOG          = 1 << 30;
    const unsigned long CHROME_OPENAS_CHROME          = 1 << 31;

    const unsigned long CHROME_MINIMAL_POPUP =
      CHROME_WINDOW_BORDERS | CHROME_WINDOW_CLOSE | CHROME_WINDOW_RESIZE |
      CHROME_WINDOW_MINIMIZE | CHROME_LOCATIONBAR | CHROME_STATUSBAR |
      CHROME_SCROLLBARS | CHROME_TITLEBAR;

    /**
     * The chrome flags for this browser chrome. The implementation should
     * reflect the value of this attribute by hiding or showing its chrome
     * appropriately.
     */
    attribute unsigned long chromeFlags;

    /**
     * Shows the window as a modal window.
     */
    void showAsModal();

    /**
     * Is the window modal (that is, currently executing a modal loop)?
     * @return true if it's a modal window
     */
    boolean isWindowModal();

    /**
     * Allows to request the change of individual dimensions of a window
     * without specifying all dimensions.
     *
     * Gets called as fallback when no nsIBaseWindow is available.
     *
     * @see nsIBaseWindow
     */
    [noscript] void setDimensions(in DimensionRequest aRequest);

    /**
     * Gets the dimensions of the window. The caller may pass
     * <CODE>nullptr</CODE> for any value it is uninterested in receiving.
     *
     * Gets called as fallback when no nsIBaseWindow is available.
     *
     * @see nsIBaseWindow
     */
    [noscript] void getDimensions(in DimensionKind aDimensionKind, out long aX, out long aY, out long aCX, out long aCY);

    /**
     * Blur the window. This should unfocus the window and send an onblur event.
     */
    void blur();
};