1use crate::{
2 class::{Debugger, Session},
3 interface::{
4 EnableDeviceEmulationOptions,
5 FindInPageOptions,
6 InputEvent,
7 InsertCssOptions,
8 Item,
9 LoadFileOptions,
10 LoadUrlOptions,
11 OpenDevToolsOptions,
12 PrintToPdfOptions,
13 Rectangle,
14 WebContentsPrintOptions,
15 },
16};
17use js_sys::{Function, JsString, Promise};
18use node_sys::events::EventEmitter;
19use wasm_bindgen::prelude::*;
20
21#[wasm_bindgen(module = "electron")]
22#[wasm_bindgen]
23extern {
24 #[wasm_bindgen(extends = EventEmitter)]
25 pub type WebContents;
27
28 #[wasm_bindgen(static_method_of = WebContents)]
33 pub fn from_id(id: usize) -> WebContents;
34
35 #[wasm_bindgen(static_method_of = WebContents)]
36 pub fn get_all_web_contents() -> Box<[JsValue]>;
37
38 #[wasm_bindgen(static_method_of = WebContents)]
39 pub fn get_focused_web_contents() -> WebContents;
40
41 #[wasm_bindgen(method, js_name = "addWorkSpace")]
46 pub fn add_work_space(this: &WebContents, path: &str);
47
48 #[wasm_bindgen(method, js_name = "beginFrameSubscription")]
49 pub fn begin_frame_subscription(this: &WebContents, only_dirty: bool, callback: &Function);
50
51 #[wasm_bindgen(method, js_name = "canGoBack")]
52 pub fn can_go_back(this: &WebContents) -> bool;
53
54 #[wasm_bindgen(method, js_name = "canGoForward")]
55 pub fn can_go_forward(this: &WebContents) -> bool;
56
57 #[wasm_bindgen(method, js_name = "canGoForward")]
58 pub fn can_go_to_offset(this: &WebContents, offset: u32) -> bool;
59
60 #[must_use]
61 #[wasm_bindgen(method, js_name = "capturePage")]
62 pub fn capture_page(this: &WebContents, rectangle: Option<Rectangle>) -> Promise;
63
64 #[wasm_bindgen(method, js_name = "clearHistory")]
65 pub fn clear_history(this: &WebContents);
66
67 #[wasm_bindgen(method, js_name = "closeDevTools")]
68 pub fn close_dev_tools(this: &WebContents);
69
70 #[wasm_bindgen(method)]
71 pub fn copy(this: &WebContents);
72
73 #[wasm_bindgen(method, js_name = "copyImageAt")]
74 pub fn copy_image_at(this: &WebContents, x: usize, y: usize);
75
76 #[wasm_bindgen(method)]
77 pub fn cut(this: &WebContents);
78
79 #[wasm_bindgen(method)]
80 pub fn delete(this: &WebContents);
81
82 #[wasm_bindgen(method, js_name = "disableDeviceEmulation")]
83 pub fn disable_device_emulation(this: &WebContents);
84
85 #[wasm_bindgen(method, js_name = "downloadURL")]
86 pub fn download_url(this: &WebContents);
87
88 #[wasm_bindgen(method, js_name = "enableDeviceEmulation")]
89 pub fn enable_device_emulation(this: &WebContents, options: EnableDeviceEmulationOptions);
90
91 #[wasm_bindgen(method, js_name = "endFrameSubscription")]
92 pub fn end_frame_subscription(this: &WebContents);
93
94 #[must_use]
95 #[wasm_bindgen(method, js_name = "executeJavaScript")]
96 pub fn execute_java_script(this: &WebContents, code: &str, user_gesture: Option<bool>) -> Promise;
97
98 #[must_use]
99 #[wasm_bindgen(method, js_name = "executeJavaScriptInIsolatedWorld")]
100 pub fn execute_java_script_in_isolated_world(
101 this: &WebContents,
102 world_id: u32,
103 scripts: Box<[JsValue]>,
104 user_gesture: Option<bool>,
105 ) -> Promise;
106
107 #[wasm_bindgen(method, js_name = "findInPage")]
108 pub fn find_in_page(this: &WebContents, text: &str, options: Option<FindInPageOptions>) -> usize;
109
110 #[wasm_bindgen(method)]
111 pub fn focus(this: &WebContents);
112
113 #[wasm_bindgen(method, js_name = "getAllSharedWorkers")]
114 pub fn get_all_shared_workers(this: &WebContents) -> Box<[JsValue]>;
115
116 #[wasm_bindgen(method, js_name = "getOSProcessId")]
117 pub fn get_os_process_id(this: &WebContents) -> u32;
118
119 #[wasm_bindgen(method, js_name = "getPrinters")]
120 pub fn get_printers(this: &WebContents);
121
122 #[wasm_bindgen(method, js_name = "getProcessId")]
123 pub fn get_process_id(this: &WebContents) -> u32;
124
125 #[wasm_bindgen(method, js_name = "getTitle")]
126 pub fn get_title(this: &WebContents) -> JsString;
127
128 #[wasm_bindgen(method, js_name = "getType")]
129 pub fn get_type(this: &WebContents) -> JsString;
130
131 #[wasm_bindgen(method, js_name = "getURL")]
132 pub fn get_url(this: &WebContents) -> JsString;
133
134 #[wasm_bindgen(method, js_name = "getWebRTCIPHandlingPolicy")]
135 pub fn get_web_rtc_ip_handling_policy(this: &WebContents) -> JsString;
136
137 #[wasm_bindgen(method, js_name = "goBack")]
138 pub fn go_back(this: &WebContents);
139
140 #[wasm_bindgen(method, js_name = "goForward")]
141 pub fn go_forward(this: &WebContents);
142
143 #[wasm_bindgen(method, js_name = "goToIndex")]
144 pub fn go_to_index(this: &WebContents, index: usize);
145
146 #[wasm_bindgen(method, js_name = "goToOffset")]
147 pub fn go_to_offset(this: &WebContents, index: usize);
148
149 #[must_use]
150 #[wasm_bindgen(method, js_name = "insertCSS")]
151 pub fn insert_css(this: &WebContents, css: &str, options: Option<InsertCssOptions>) -> Promise;
152
153 #[must_use]
154 #[wasm_bindgen(method, js_name = "insertText")]
155 pub fn insert_text(this: &WebContents, text: &str) -> Promise;
156
157 #[wasm_bindgen(method, js_name = "inspectElement")]
158 pub fn inspect_element(this: &WebContents, x: usize, y: usize);
159
160 #[wasm_bindgen(method, js_name = "inspectServiceWorker")]
161 pub fn inspect_service_worker(this: &WebContents);
162
163 #[wasm_bindgen(method, js_name = "inspectSharedWorker")]
164 pub fn inspect_shared_worker(this: &WebContents);
165
166 #[wasm_bindgen(method, js_name = "inspectSharedWorkerById")]
167 pub fn inspect_shared_worker_by_id(this: &WebContents, worker_id: &str);
168
169 #[wasm_bindgen(method)]
170 pub fn invalidate(this: &WebContents);
171
172 #[wasm_bindgen(method, js_name = "isCrashed")]
173 pub fn is_crashed(this: &WebContents) -> bool;
174
175 #[wasm_bindgen(method, js_name = "isCurrentlyAudible")]
176 pub fn is_currently_audible(this: &WebContents) -> bool;
177
178 #[wasm_bindgen(method, js_name = "isDestroyed")]
179 pub fn is_destroyed(this: &WebContents) -> bool;
180
181 #[wasm_bindgen(method, js_name = "isDevToolsFocused")]
182 pub fn is_dev_tools_focused(this: &WebContents) -> bool;
183
184 #[wasm_bindgen(method, js_name = "isDevToolsOpened")]
185 pub fn is_dev_tools_opened(this: &WebContents) -> bool;
186
187 #[wasm_bindgen(method, js_name = "isFocused")]
188 pub fn is_focused(this: &WebContents) -> bool;
189
190 #[wasm_bindgen(method, js_name = "isLoading")]
191 pub fn is_loading(this: &WebContents) -> bool;
192
193 #[wasm_bindgen(method, js_name = "isLoadingMainFrame")]
194 pub fn is_loading_main_frame(this: &WebContents) -> bool;
195
196 #[wasm_bindgen(method, js_name = "isOffscreen")]
197 pub fn is_offscreen(this: &WebContents) -> bool;
198
199 #[wasm_bindgen(method, js_name = "isPainting")]
200 pub fn is_painting(this: &WebContents) -> bool;
201
202 #[wasm_bindgen(method, js_name = "isWaitingForResponse")]
203 pub fn is_waiting_for_response(this: &WebContents) -> bool;
204
205 #[must_use]
206 #[wasm_bindgen(method, js_name = "loadFile")]
207 pub fn load_file(this: &WebContents, file_path: &str, options: Option<LoadFileOptions>) -> Promise;
208
209 #[must_use]
210 #[wasm_bindgen(method, js_name = "loadURL")]
211 pub fn load_url(this: &WebContents, url: &str, options: Option<LoadUrlOptions>) -> Promise;
212
213 #[wasm_bindgen(method, js_name = "openDevTools")]
214 pub fn open_dev_tools(this: &WebContents, options: Option<OpenDevToolsOptions>);
215
216 #[wasm_bindgen(method)]
217 pub fn paste(this: &WebContents);
218
219 #[wasm_bindgen(method, js_name = "pasteAndMatchStyle")]
220 pub fn paste_and_match_style(this: &WebContents);
221
222 #[wasm_bindgen(method)]
223 pub fn print(this: &WebContents, options: Option<WebContentsPrintOptions>, callback: Option<&Function>);
224
225 #[must_use]
226 #[wasm_bindgen(method, js_name = "printToPDF")]
227 pub fn print_to_pdf(this: &WebContents, options: PrintToPdfOptions) -> Promise;
228
229 #[wasm_bindgen(method)]
230 pub fn redo(this: &WebContents);
231
232 #[wasm_bindgen(method)]
233 pub fn reload(this: &WebContents);
234
235 #[wasm_bindgen(method, js_name = "reloadIgnoringCache")]
236 pub fn reload_ignoring_cache(this: &WebContents);
237
238 #[must_use]
239 #[wasm_bindgen(method, js_name = "removeInsertedCSS")]
240 pub fn remove_inserted_css(this: &WebContents, key: &str) -> Promise;
241
242 #[wasm_bindgen(method, js_name = "removeWorkSpace")]
243 pub fn remove_work_space(this: &WebContents, path: &str);
244
245 #[wasm_bindgen(method)]
246 pub fn replace(this: &WebContents, text: &str);
247
248 #[wasm_bindgen(method, js_name = "replaceMisspelling")]
249 pub fn replaceMisspelling(this: &WebContents, text: &str);
250
251 #[must_use]
252 #[wasm_bindgen(method, js_name = "savePage")]
253 pub fn save_page(this: &WebContents, full_path: &str, save_type: &str) -> Promise;
254
255 #[wasm_bindgen(method, js_name = "selectAll")]
256 pub fn select_all(this: &WebContents);
257
258 #[wasm_bindgen(method, variadic)]
259 pub fn send(this: &WebContents, channel: &str, args: Box<[JsValue]>);
260
261 #[wasm_bindgen(method, js_name = "sendInputEvent")]
262 pub fn send_input_event(this: &WebContents, input_event: &InputEvent);
263
264 #[wasm_bindgen(method, variadic, js_name = "sendToFrame")]
265 pub fn send_to_frame(this: &WebContents, frame_id: usize, channel: &str, args: Box<[JsValue]>);
266
267 #[wasm_bindgen(method, js_name = "setBackgroundThrottling")]
268 pub fn set_background_throttling(this: &WebContents, allowed: bool);
269
270 #[wasm_bindgen(method, js_name = "setDevToolsWebContents")]
271 pub fn set_dev_tools_web_contents(this: &WebContents, dev_tools_web_contents: &WebContents);
272
273 #[wasm_bindgen(method, js_name = "setIgnoreMenuShortcuts")]
274 pub fn set_ignore_menu_shortcuts(this: &WebContents, ignore: bool);
275
276 #[must_use]
277 #[wasm_bindgen(method, js_name = "setLayoutZoomLevelLimits")]
278 pub fn set_layout_zoom_level_limits(this: &WebContents, min: f32, max: f32) -> Promise;
279
280 #[must_use]
281 #[wasm_bindgen(method, js_name = "setVisualZoomLevelLimits")]
282 pub fn set_visual_zoom_level_limits(this: &WebContents, min: f32, max: f32) -> Promise;
283
284 #[wasm_bindgen(method, js_name = "setWebRTCIPHandlingPolicy")]
285 pub fn set_web_rtc_ip_handling_policy(this: &WebContents, policy: &str);
286
287 #[wasm_bindgen(method, js_name = "showDefinitionForSelection")]
288 pub fn show_definition_for_selection(this: &WebContents);
289
290 #[wasm_bindgen(method, js_name = "startDrag")]
291 pub fn start_drag(this: &WebContents, item: Item);
292
293 #[wasm_bindgen(method, js_name = "startPainting")]
294 pub fn start_painting(this: &WebContents);
295
296 #[wasm_bindgen(method)]
297 pub fn stop(this: &WebContents);
298
299 #[wasm_bindgen(method, js_name = "stopFindInPage")]
300 pub fn stop_finding_in_page(this: &WebContents, action: &str);
301
302 #[wasm_bindgen(method, js_name = "stopPainting")]
303 pub fn stop_painting(this: &WebContents);
304
305 #[wasm_bindgen(method, js_name = "takeHeapSnapshot")]
306 pub fn take_heap_snapshot(this: &WebContents);
307
308 #[wasm_bindgen(method, js_name = "toggleDevtools")]
309 pub fn toggle_dev_tools(this: &WebContents);
310
311 #[wasm_bindgen(method)]
312 pub fn undo(this: &WebContents);
313
314 #[wasm_bindgen(method)]
315 pub fn unselect(this: &WebContents);
316
317 #[wasm_bindgen(method, getter, js_name = "audioMuted")]
322 pub fn audio_muted(this: &WebContents) -> bool;
323
324 #[wasm_bindgen(method, setter, js_name = "audioMuted")]
325 pub fn set_audio_muted(this: &WebContents, value: bool);
326
327 #[wasm_bindgen(method, getter)] pub fn debugger(this: &WebContents) -> Debugger;
329
330 #[wasm_bindgen(method, getter, js_name = "devToolsWebContents")] pub fn dev_tools_web_contents(this: &WebContents) -> WebContents;
332
333 #[wasm_bindgen(method, getter, js_name = "frameRate")]
334 pub fn frame_rate(this: &WebContents) -> f32;
335
336 #[wasm_bindgen(method, setter, js_name = "frameRate")]
337 pub fn set_frame_rate(this: &WebContents, value: f32);
338
339 #[wasm_bindgen(method, getter, js_name = "hostWebContents")] pub fn host_web_contents(this: &WebContents) -> WebContents;
341
342 #[wasm_bindgen(method, getter)] pub fn id(this: &WebContents) -> usize;
344
345 #[wasm_bindgen(method, getter)] pub fn session(this: &WebContents) -> Session;
347
348 #[wasm_bindgen(method, getter)]
349 pub fn user_agent(this: &WebContents) -> JsString;
350
351 #[wasm_bindgen(method, getter, js_name = "zoomFactor")]
352 pub fn zoom_factor(this: &WebContents) -> f32;
353
354 #[wasm_bindgen(method, setter, js_name = "zoomFactor")]
355 pub fn set_zoom_factor(this: &WebContents, value: f32);
356
357 #[wasm_bindgen(method, setter, js_name = "zoomLevel")]
358 pub fn zoom_level(this: &WebContents) -> f32;
359
360 #[wasm_bindgen(method, setter, js_name = "zoomLevel")]
361 pub fn set_zoom_level(this: &WebContents, value: f32);
362}