summaryrefslogtreecommitdiffstats
path: root/embedding/browser/nsIWebBrowserChrome.idl
blob: 32dba421953f4958d0277d2ee9023237e5b44a51 (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
144
/* -*- 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"

interface nsIWebBrowser;
interface nsIDocShellTreeItem;

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

[scriptable, uuid(E8C414C4-DC38-4BA3-AB4E-EC4CBBE22907)]
interface nsIWebBrowserChrome : nsISupports
{
    const unsigned long STATUS_SCRIPT         = 0x00000001;
    const unsigned long STATUS_LINK           = 0x00000003;

    /**
     * Called when the status text in the chrome needs to be updated.
     * @param statusType indicates what is setting the text
     * @param status status string. null is an acceptable value meaning
     *               no status.
     */
    void setStatus(in unsigned long statusType, in wstring status);

    /**
     * The currently loaded WebBrowser.  The browser chrome may be
     * told to set the WebBrowser object to a new object by setting this
     * attribute.  In this case the implementer is responsible for taking the
     * new WebBrowser object and doing any necessary initialization or setup
     * as if it had created the WebBrowser itself.  This includes positioning
     * setting up listeners etc.
     */
    attribute nsIWebBrowser webBrowser;

    /**
     * Definitions for the chrome flags
     */
    const unsigned long CHROME_DEFAULT                = 0x00000001;
    const unsigned long CHROME_WINDOW_BORDERS         = 0x00000002;
    const unsigned long CHROME_WINDOW_CLOSE           = 0x00000004;
    const unsigned long CHROME_WINDOW_RESIZE          = 0x00000008;
    const unsigned long CHROME_MENUBAR                = 0x00000010;
    const unsigned long CHROME_TOOLBAR                = 0x00000020;
    const unsigned long CHROME_LOCATIONBAR            = 0x00000040;
    const unsigned long CHROME_STATUSBAR              = 0x00000080;
    const unsigned long CHROME_PERSONAL_TOOLBAR       = 0x00000100;
    const unsigned long CHROME_SCROLLBARS             = 0x00000200;
    const unsigned long CHROME_TITLEBAR               = 0x00000400;
    const unsigned long CHROME_EXTRA                  = 0x00000800;

    // createBrowserWindow specific flags
    const unsigned long CHROME_WITH_SIZE              = 0x00001000;
    const unsigned long CHROME_WITH_POSITION          = 0x00002000;

    // special cases
    const unsigned long CHROME_WINDOW_MIN             = 0x00004000;
    const unsigned long CHROME_WINDOW_POPUP           = 0x00008000;

    // 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         = 0x00010000;
    const unsigned long CHROME_NON_PRIVATE_WINDOW     = 0x00020000;
    const unsigned long CHROME_PRIVATE_LIFETIME       = 0x00040000;

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

    // Prevents new window animations on Mac OS X Lion.  Ignored on other
    // platforms.
    const unsigned long CHROME_MAC_SUPPRESS_ANIMATION = 0x01000000;

    const unsigned long CHROME_WINDOW_RAISED          = 0x02000000;
    const unsigned long CHROME_WINDOW_LOWERED         = 0x04000000;
    const unsigned long CHROME_CENTER_SCREEN          = 0x08000000;

    // 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              = 0x10000000;

    // Note: The modal style bit just affects the way the window looks and does
    //       mean it's actually modal.
    const unsigned long CHROME_MODAL                  = 0x20000000;
    const unsigned long CHROME_OPENAS_DIALOG          = 0x40000000;
    const unsigned long CHROME_OPENAS_CHROME          = 0x80000000;

    const unsigned long CHROME_ALL                    = 0x00000ffe;

    /**
     * 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;

    /**
     * Asks the implementer to destroy the window associated with this
     * WebBrowser object.
     */
    void destroyBrowserWindow();

    /**
     * Tells the chrome to size itself such that the browser will be the
     * specified size.
     * @param aCX new width of the browser
     * @param aCY new height of the browser
     */
    void sizeBrowserTo(in long aCX, in long aCY);

    /**
     * Shows the window as a modal window.
     * @return (the function error code) the status value specified by
     *         in exitModalEventLoop.
     */
    void showAsModal();

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

    /**
     * Exit a modal event loop if we're in one. The implementation
     * should also exit out of the loop if the window is destroyed.
     * @param aStatus - the result code to return from showAsModal
     */
    void exitModalEventLoop(in nsresult aStatus);
};