1/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2/* This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
4 * You can obtain one at http://mozilla.org/MPL/2.0/.
5 */
6
7callback BrowserElementNextPaintEventCallback = undefined ();
8
9enum BrowserFindCaseSensitivity { "case-sensitive", "case-insensitive" };
10enum BrowserFindDirection { "forward", "backward" };
11
12dictionary BrowserElementDownloadOptions {
13  DOMString? filename;
14  DOMString? referrer;
15};
16
17dictionary BrowserElementExecuteScriptOptions {
18  DOMString? url;
19  DOMString? origin;
20};
21
22interface mixin BrowserElement {
23};
24
25BrowserElement includes BrowserElementCommon;
26BrowserElement includes BrowserElementPrivileged;
27
28interface mixin BrowserElementCommon {
29  [Throws,
30   Pref="dom.mozBrowserFramesEnabled",
31   ChromeOnly]
32  undefined addNextPaintListener(BrowserElementNextPaintEventCallback listener);
33
34  [Throws,
35   Pref="dom.mozBrowserFramesEnabled",
36   ChromeOnly]
37  undefined removeNextPaintListener(BrowserElementNextPaintEventCallback listener);
38};
39
40interface mixin BrowserElementPrivileged {
41  [Throws,
42   Pref="dom.mozBrowserFramesEnabled",
43   ChromeOnly]
44  undefined sendMouseEvent(DOMString type,
45                      unsigned long x,
46                      unsigned long y,
47                      unsigned long button,
48                      unsigned long clickCount,
49                      unsigned long modifiers);
50
51  [Throws,
52   Pref="dom.mozBrowserFramesEnabled",
53   Func="TouchEvent::PrefEnabled",
54   ChromeOnly]
55  undefined sendTouchEvent(DOMString type,
56                      sequence<unsigned long> identifiers,
57                      sequence<long> x,
58                      sequence<long> y,
59                      sequence<unsigned long> rx,
60                      sequence<unsigned long> ry,
61                      sequence<float> rotationAngles,
62                      sequence<float> forces,
63                      unsigned long count,
64                      unsigned long modifiers);
65
66  [Throws,
67   Pref="dom.mozBrowserFramesEnabled",
68   ChromeOnly]
69  undefined goBack();
70
71  [Throws,
72   Pref="dom.mozBrowserFramesEnabled",
73   ChromeOnly]
74  undefined goForward();
75
76  [Throws,
77   Pref="dom.mozBrowserFramesEnabled",
78   ChromeOnly]
79  undefined reload(optional boolean hardReload = false);
80
81  [Throws,
82   Pref="dom.mozBrowserFramesEnabled",
83   ChromeOnly]
84  undefined stop();
85
86  [Throws,
87   Pref="dom.mozBrowserFramesEnabled",
88   ChromeOnly]
89  DOMRequest download(DOMString url,
90                      optional BrowserElementDownloadOptions options);
91
92  [Throws,
93   Pref="dom.mozBrowserFramesEnabled",
94   ChromeOnly]
95  DOMRequest purgeHistory();
96
97  [Throws,
98   Pref="dom.mozBrowserFramesEnabled",
99   ChromeOnly]
100  DOMRequest getScreenshot([EnforceRange] unsigned long width,
101                           [EnforceRange] unsigned long height,
102                           optional DOMString mimeType="");
103
104  [Throws,
105   Pref="dom.mozBrowserFramesEnabled",
106   ChromeOnly]
107  undefined zoom(float zoom);
108
109  [Throws,
110   Pref="dom.mozBrowserFramesEnabled",
111   ChromeOnly]
112  DOMRequest getCanGoBack();
113
114  [Throws,
115   Pref="dom.mozBrowserFramesEnabled",
116   ChromeOnly]
117  DOMRequest getCanGoForward();
118
119  [Throws,
120   Pref="dom.mozBrowserFramesEnabled",
121   ChromeOnly]
122  DOMRequest getContentDimensions();
123
124  [Throws,
125   Pref="dom.mozBrowserFramesEnabled",
126   ChromeOnly]
127  undefined findAll(DOMString searchString, BrowserFindCaseSensitivity caseSensitivity);
128
129  [Throws,
130   Pref="dom.mozBrowserFramesEnabled",
131   ChromeOnly]
132  undefined findNext(BrowserFindDirection direction);
133
134  [Throws,
135   Pref="dom.mozBrowserFramesEnabled",
136   ChromeOnly]
137  undefined clearMatch();
138
139  [Throws,
140   Pref="dom.mozBrowserFramesEnabled",
141   ChromeOnly]
142  DOMRequest executeScript(DOMString script,
143                           optional BrowserElementExecuteScriptOptions options);
144
145  [Throws,
146   Pref="dom.mozBrowserFramesEnabled",
147   ChromeOnly]
148  DOMRequest getWebManifest();
149
150};
151