summaryrefslogtreecommitdiffstats
path: root/embedding/browser/nsIEmbeddingSiteWindow.idl
blob: a8eefacb429dc2dfd7c05cde9314dfe245439c5d (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
145
146
147
148
149
150
151
152
153
154
155
156
157
/* -*- 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"

/* THIS IS A PUBLIC EMBEDDING API */

/**
 * The nsIEmbeddingSiteWindow is implemented by the embedder to provide
 * Gecko with the means to call up to the host to resize the window,
 * hide or show it and set/get its title.
 */
[scriptable, uuid(0b976267-4aaa-4f36-a2d4-27b5ca8d73bb)]
interface nsIEmbeddingSiteWindow : nsISupports
{
    /**
     * Flag indicates that position of the top left corner of the outer area
     * is required/specified.
     *
     * @see setDimensions
     * @see getDimensions
     */
    const unsigned long DIM_FLAGS_POSITION   = 1;
    
    /**
     * Flag indicates that the size of the inner area is required/specified.
     *
     * @note The inner and outer flags are mutually exclusive and it is
     *       invalid to combine them.
     *
     * @see setDimensions
     * @see getDimensions
     * @see DIM_FLAGS_SIZE_OUTER
     */
    const unsigned long DIM_FLAGS_SIZE_INNER = 2;

    /**
     * Flag indicates that the size of the outer area is required/specified.
     *
     * @see setDimensions
     * @see getDimensions
     * @see DIM_FLAGS_SIZE_INNER
     */
    const unsigned long DIM_FLAGS_SIZE_OUTER = 4;

    /**
     * Flag indicates that the x parameter should be ignored.
     *
     * @see setDimensions
     */
    const unsigned long DIM_FLAGS_IGNORE_X = 8;

    /**
     * Flag indicates that the y parameter should be ignored.
     *
     * @see setDimensions
     */
    const unsigned long DIM_FLAGS_IGNORE_Y = 16;

    /**
     * Flag indicates that the cx parameter should be ignored.
     *
     * @see setDimensions
     */
    const unsigned long DIM_FLAGS_IGNORE_CX = 32;

    /**
     * Flag indicates that the cy parameter should be ignored.
     *
     * @see setDimensions
     */
    const unsigned long DIM_FLAGS_IGNORE_CY = 64;


    /**
     * Sets the dimensions for the window; the position & size. The
     * flags to indicate what the caller wants to set and whether the size
     * refers to the inner or outer area. The inner area refers to just
     * the embedded area, wheras the outer area can also include any 
     * surrounding chrome, window frame, title bar, and so on.
     *
     * @param flags  Combination of position, inner and outer size flags.
     *               The ignore flags are telling the parent to use the
     *               current values for those dimensions and ignore the
     *               corresponding parameters the child sends.
     * @param x      Left hand corner of the outer area.
     * @param y      Top corner of the outer area.
     * @param cx     Width of the inner or outer area.
     * @param cy     Height of the inner or outer area.
     *
     * @return <code>NS_OK</code> if operation was performed correctly;
     *         <code>NS_ERROR_UNEXPECTED</code> if window could not be
     *           destroyed;
     *         <code>NS_ERROR_INVALID_ARG</code> for bad flag combination
     *           or illegal dimensions.
     *
     * @see getDimensions
     * @see DIM_FLAGS_POSITION
     * @see DIM_FLAGS_SIZE_OUTER
     * @see DIM_FLAGS_SIZE_INNER
     */
    void setDimensions(in unsigned long flags, in long x, in long y, in long cx, in long cy);

    /**
     * Gets the dimensions of the window. The caller may pass
     * <CODE>nullptr</CODE> for any value it is uninterested in receiving.
     *
     * @param flags  Combination of position, inner and outer size flag .
     * @param x      Left hand corner of the outer area; or <CODE>nullptr</CODE>.
     * @param y      Top corner of the outer area; or <CODE>nullptr</CODE>.
     * @param cx     Width of the inner or outer area; or <CODE>nullptr</CODE>.
     * @param cy     Height of the inner or outer area; or <CODE>nullptr</CODE>.
     *
     * @see setDimensions
     * @see DIM_FLAGS_POSITION
     * @see DIM_FLAGS_SIZE_OUTER
     * @see DIM_FLAGS_SIZE_INNER
     */
    void getDimensions(in unsigned long flags, out long x, out long y, out long cx, out long cy);

    /**
     * Give the window focus.
     */
    void setFocus();

    /**
     * Visibility of the window.
     */
    attribute boolean visibility;

    /**
     * Title of the window.
     */
    attribute wstring title;

    /**
     * Native window for the site's window. The implementor should copy the
     * native window object into the address supplied by the caller. The
     * type of the native window that the address refers to is  platform
     * and OS specific as follows:
     *
     * <ul>
     *   <li>On Win32 it is an <CODE>HWND</CODE>.</li>
     *   <li>On MacOS this is a <CODE>WindowPtr</CODE>.</li>
     *   <li>On GTK this is a <CODE>GtkWidget*</CODE>.</li>
     * </ul>
     */
    [noscript] readonly attribute voidPtr siteWindow;
    
    /**
     * Blur the window. This should unfocus the window and send an onblur event.
     */
    void blur();
};