electron_sys/class/
web_contents.rs

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    /// Docs: http://electronjs.org/docs/api/web-contents
26    pub type WebContents;
27
28    //****************//
29    // Static Methods //
30    //****************//
31
32    #[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    //******************//
42    // Instance Methods //
43    //******************//
44
45    #[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    //*********************//
318    // Instance Properties //
319    //*********************//
320
321    #[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)] // readonly
328    pub fn debugger(this: &WebContents) -> Debugger;
329
330    #[wasm_bindgen(method, getter, js_name = "devToolsWebContents")] // readonly
331    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")] // readonly
340    pub fn host_web_contents(this: &WebContents) -> WebContents;
341
342    #[wasm_bindgen(method, getter)] // readonly
343    pub fn id(this: &WebContents) -> usize;
344
345    #[wasm_bindgen(method, getter)] // readonly
346    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}