1use crate::{class::Session, interface::DefaultFontFamily};
2use js_sys::JsString;
3use wasm_bindgen::prelude::*;
4
5#[wasm_bindgen]
6#[derive(Clone, Debug, Default)]
7pub struct WebPreferences {
8 accessible_title: Option<JsString>,
9 additional_arguments: Option<Box<[JsValue]>>,
10 affinity: Option<JsString>,
11 allow_running_insecure_content: Option<bool>,
12 autoplay_policy: Option<JsString>,
13 background_throttling: Option<bool>,
14 context_isolation: Option<bool>,
15 default_encoding: Option<JsString>,
16 default_font_family: Option<DefaultFontFamily>,
17 default_font_size: Option<u32>,
18 default_monospace_font_size: Option<u32>,
19 dev_tools: Option<bool>,
20 disable_blink_features: Option<JsString>,
21 disable_html_fullscreen_window_resize: Option<bool>,
22 enable_blink_features: Option<JsString>,
23 enable_remote_module: Option<bool>,
24 experimental_features: Option<bool>,
25 images: Option<bool>,
26 javascript: Option<bool>,
27 minimum_font_size: Option<u32>,
28 native_window_open: Option<bool>,
29 navigate_on_drag_drop: Option<bool>,
30 node_integration_in_sub_frames: Option<bool>,
31 node_integration_in_worker: Option<bool>,
32 node_integration: Option<bool>,
33 offscreen: Option<bool>,
34 partition: Option<JsString>,
35 plugins: Option<bool>,
36 preload: Option<JsString>,
37 safe_dialogs_message: Option<JsString>,
38 safe_dialogs: Option<bool>,
39 sandbox: Option<bool>,
40 scroll_bounce: Option<bool>,
41 session: Option<Session>,
42 spellcheck: Option<bool>,
43 text_areas_are_resizable: Option<bool>,
44 web_security: Option<bool>,
45 webgl: Option<bool>,
46 webview_tag: Option<bool>,
47 zoom_factor: Option<f32>,
48}
49
50#[wasm_bindgen]
51impl WebPreferences {
52 #[allow(clippy::too_many_arguments)]
53 #[wasm_bindgen(constructor)]
54 pub fn new_with_values(
55 accessible_title: Option<JsString>,
56 additional_arguments: Option<Box<[JsValue]>>,
57 affinity: Option<JsString>,
58 allow_running_insecure_content: Option<bool>,
59 autoplay_policy: Option<JsString>,
60 background_throttling: Option<bool>,
61 context_isolation: Option<bool>,
62 default_encoding: Option<JsString>,
63 default_font_family: Option<DefaultFontFamily>,
64 default_font_size: Option<u32>,
65 default_monospace_font_size: Option<u32>,
66 dev_tools: Option<bool>,
67 disable_blink_features: Option<JsString>,
68 disable_html_fullscreen_window_resize: Option<bool>,
69 enable_blink_features: Option<JsString>,
70 enable_remote_module: Option<bool>,
71 experimental_features: Option<bool>,
72 images: Option<bool>,
73 javascript: Option<bool>,
74 minimum_font_size: Option<u32>,
75 native_window_open: Option<bool>,
76 navigate_on_drag_drop: Option<bool>,
77 node_integration_in_sub_frames: Option<bool>,
78 node_integration_in_worker: Option<bool>,
79 node_integration: Option<bool>,
80 offscreen: Option<bool>,
81 partition: Option<JsString>,
82 plugins: Option<bool>,
83 preload: Option<JsString>,
84 safe_dialogs_message: Option<JsString>,
85 safe_dialogs: Option<bool>,
86 sandbox: Option<bool>,
87 scroll_bounce: Option<bool>,
88 session: Option<Session>,
89 spellcheck: Option<bool>,
90 text_areas_are_resizable: Option<bool>,
91 web_security: Option<bool>,
92 webgl: Option<bool>,
93 webview_tag: Option<bool>,
94 zoom_factor: Option<f32>,
95 ) -> WebPreferences {
96 WebPreferences {
97 accessible_title,
98 additional_arguments,
99 affinity,
100 allow_running_insecure_content,
101 autoplay_policy,
102 background_throttling,
103 context_isolation,
104 default_encoding,
105 default_font_family,
106 default_font_size,
107 default_monospace_font_size,
108 dev_tools,
109 disable_blink_features,
110 disable_html_fullscreen_window_resize,
111 enable_blink_features,
112 enable_remote_module,
113 experimental_features,
114 images,
115 javascript,
116 minimum_font_size,
117 native_window_open,
118 navigate_on_drag_drop,
119 node_integration_in_sub_frames,
120 node_integration_in_worker,
121 node_integration,
122 offscreen,
123 partition,
124 plugins,
125 preload,
126 safe_dialogs_message,
127 safe_dialogs,
128 sandbox,
129 scroll_bounce,
130 session,
131 spellcheck,
132 text_areas_are_resizable,
133 web_security,
134 webgl,
135 webview_tag,
136 zoom_factor,
137 }
138 }
139
140 #[wasm_bindgen(getter, js_name = "accessibleTitle")]
141 pub fn accessible_title(&self) -> Option<JsString> {
142 self.accessible_title.clone()
143 }
144
145 #[wasm_bindgen(setter)]
146 pub fn set_accessible_title(&mut self, value: Option<JsString>) {
147 self.accessible_title = value;
148 }
149
150 #[wasm_bindgen(getter, js_name = "additionalArguments")]
151 pub fn additional_arguments(&self) -> Option<Box<[JsValue]>> {
152 self.additional_arguments.clone()
153 }
154
155 #[wasm_bindgen(setter)]
156 pub fn set_additional_arguments(&mut self, value: Option<Box<[JsValue]>>) {
157 self.additional_arguments = value;
158 }
159
160 #[wasm_bindgen(getter)]
161 pub fn affinity(&self) -> Option<JsString> {
162 self.affinity.clone()
163 }
164
165 #[wasm_bindgen(setter)]
166 pub fn set_affinity(&mut self, value: Option<JsString>) {
167 self.affinity = value;
168 }
169
170 #[wasm_bindgen(getter, js_name = "allowRunningInsecureContent")]
171 pub fn allow_running_insecure_content(&self) -> Option<bool> {
172 self.allow_running_insecure_content
173 }
174
175 #[wasm_bindgen(setter)]
176 pub fn set_allow_running_insecure_content(&mut self, value: Option<bool>) {
177 self.allow_running_insecure_content = value;
178 }
179
180 #[wasm_bindgen(getter, js_name = "autoplayPolicy")]
181 pub fn autoplay_policy(&self) -> Option<JsString> {
182 self.autoplay_policy.clone()
183 }
184
185 #[wasm_bindgen(setter)]
186 pub fn set_autoplay_policy(&mut self, value: Option<JsString>) {
187 self.autoplay_policy = value;
188 }
189
190 #[wasm_bindgen(getter, js_name = "backgroundThrottling")]
191 pub fn background_throttling(&self) -> Option<bool> {
192 self.background_throttling
193 }
194
195 #[wasm_bindgen(setter)]
196 pub fn set_background_throttling(&mut self, value: Option<bool>) {
197 self.background_throttling = value;
198 }
199
200 #[wasm_bindgen(getter, js_name = "contextIsolation")]
201 pub fn context_isolation(&self) -> Option<bool> {
202 self.context_isolation
203 }
204
205 #[wasm_bindgen(setter)]
206 pub fn set_context_isolation(&mut self, value: Option<bool>) {
207 self.context_isolation = value;
208 }
209
210 #[wasm_bindgen(getter, js_name = "defaultEncoding")]
211 pub fn default_encoding(&self) -> Option<JsString> {
212 self.default_encoding.clone()
213 }
214
215 #[wasm_bindgen(setter)]
216 pub fn set_default_encoding(&mut self, value: Option<JsString>) {
217 self.default_encoding = value;
218 }
219
220 #[wasm_bindgen(getter, js_name = "defaultFontFamily")]
221 pub fn default_font_family(&self) -> Option<DefaultFontFamily> {
222 self.default_font_family.clone()
223 }
224
225 #[wasm_bindgen(setter)]
226 pub fn set_default_font_family(&mut self, value: Option<DefaultFontFamily>) {
227 self.default_font_family = value;
228 }
229
230 #[wasm_bindgen(getter, js_name = "defaultFontSize")]
231 pub fn default_font_size(&self) -> Option<u32> {
232 self.default_font_size
233 }
234
235 #[wasm_bindgen(setter)]
236 pub fn set_default_font_size(&mut self, value: Option<u32>) {
237 self.default_font_size = value;
238 }
239
240 #[wasm_bindgen(getter, js_name = "defaultMonospaceFontSize")]
241 pub fn default_monospace_font_size(&self) -> Option<u32> {
242 self.default_monospace_font_size
243 }
244
245 #[wasm_bindgen(setter)]
246 pub fn set_default_monospace_font_size(&mut self, value: Option<u32>) {
247 self.default_monospace_font_size = value;
248 }
249
250 #[wasm_bindgen(getter, js_name = "devTools")]
251 pub fn dev_tools(&self) -> Option<bool> {
252 self.dev_tools
253 }
254
255 #[wasm_bindgen(setter)]
256 pub fn set_dev_tools(&mut self, value: Option<bool>) {
257 self.dev_tools = value;
258 }
259
260 #[wasm_bindgen(getter, js_name = "disableBlinkFeatures")]
261 pub fn disable_blink_features(&self) -> Option<JsString> {
262 self.disable_blink_features.clone()
263 }
264
265 #[wasm_bindgen(setter)]
266 pub fn set_disable_blink_features(&mut self, value: Option<JsString>) {
267 self.disable_blink_features = value;
268 }
269
270 #[wasm_bindgen(getter, js_name = "disableHtmlFullscreenWindowResize")]
271 pub fn disable_html_fullscreen_window_resize(&self) -> Option<bool> {
272 self.disable_html_fullscreen_window_resize
273 }
274
275 #[wasm_bindgen(setter)]
276 pub fn set_disable_html_fullscreen_window_resize(&mut self, value: Option<bool>) {
277 self.disable_html_fullscreen_window_resize = value;
278 }
279
280 #[wasm_bindgen(getter, js_name = "enableBlinkFeatures")]
281 pub fn enable_blink_features(&self) -> Option<JsString> {
282 self.enable_blink_features.clone()
283 }
284
285 #[wasm_bindgen(setter)]
286 pub fn set_enable_blink_features(&mut self, value: Option<JsString>) {
287 self.enable_blink_features = value;
288 }
289
290 #[wasm_bindgen(getter, js_name = "enableRemoteModule")]
291 pub fn enable_remote_module(&self) -> Option<bool> {
292 self.enable_remote_module
293 }
294
295 #[wasm_bindgen(setter)]
296 pub fn set_enable_remote_module(&mut self, value: Option<bool>) {
297 self.enable_remote_module = value;
298 }
299
300 #[wasm_bindgen(getter, js_name = "experimentalFeatures")]
301 pub fn experimental_features(&self) -> Option<bool> {
302 self.experimental_features
303 }
304
305 #[wasm_bindgen(setter)]
306 pub fn set_experimental_features(&mut self, value: Option<bool>) {
307 self.experimental_features = value;
308 }
309
310 #[wasm_bindgen(getter)]
311 pub fn images(&self) -> Option<bool> {
312 self.images
313 }
314
315 #[wasm_bindgen(setter)]
316 pub fn set_images(&mut self, value: Option<bool>) {
317 self.images = value;
318 }
319
320 #[wasm_bindgen(getter)]
321 pub fn javascript(&self) -> Option<bool> {
322 self.javascript
323 }
324
325 #[wasm_bindgen(setter)]
326 pub fn set_javascript(&mut self, value: Option<bool>) {
327 self.javascript = value;
328 }
329
330 #[wasm_bindgen(getter, js_name = "minimumFontSize")]
331 pub fn minimum_font_size(&self) -> Option<u32> {
332 self.minimum_font_size
333 }
334
335 #[wasm_bindgen(setter)]
336 pub fn set_minimum_font_size(&mut self, value: Option<u32>) {
337 self.minimum_font_size = value;
338 }
339
340 #[wasm_bindgen(getter, js_name = "nativeWindowOpen")]
341 pub fn native_window_open(&self) -> Option<bool> {
342 self.native_window_open
343 }
344
345 #[wasm_bindgen(setter)]
346 pub fn set_native_window_open(&mut self, value: Option<bool>) {
347 self.native_window_open = value;
348 }
349
350 #[wasm_bindgen(getter, js_name = "navigateOnDragDrop")]
351 pub fn navigate_on_drag_drop(&self) -> Option<bool> {
352 self.navigate_on_drag_drop
353 }
354
355 #[wasm_bindgen(setter)]
356 pub fn set_navigate_on_drag_drop(&mut self, value: Option<bool>) {
357 self.navigate_on_drag_drop = value;
358 }
359
360 #[wasm_bindgen(getter, js_name = "nodeIntegrationInSubFrames")]
361 pub fn node_integration_in_sub_frames(&self) -> Option<bool> {
362 self.node_integration_in_sub_frames
363 }
364
365 #[wasm_bindgen(setter)]
366 pub fn set_node_integration_in_sub_frames(&mut self, value: Option<bool>) {
367 self.node_integration_in_sub_frames = value;
368 }
369
370 #[wasm_bindgen(getter, js_name = "nodeIntegrationInWorker")]
371 pub fn node_integration_in_worker(&self) -> Option<bool> {
372 self.node_integration_in_worker
373 }
374
375 #[wasm_bindgen(setter)]
376 pub fn set_node_integration_in_worker(&mut self, value: Option<bool>) {
377 self.node_integration_in_worker = value;
378 }
379
380 #[wasm_bindgen(getter, js_name = "nodeIntegration")]
381 pub fn node_integration(&self) -> Option<bool> {
382 self.node_integration
383 }
384
385 #[wasm_bindgen(setter)]
386 pub fn set_node_integration(&mut self, value: Option<bool>) {
387 self.node_integration = value;
388 }
389
390 #[wasm_bindgen(getter)]
391 pub fn offscreen(&self) -> Option<bool> {
392 self.offscreen
393 }
394
395 #[wasm_bindgen(setter)]
396 pub fn set_offscreen(&mut self, value: Option<bool>) {
397 self.offscreen = value;
398 }
399
400 #[wasm_bindgen(getter)]
401 pub fn partition(&self) -> Option<JsString> {
402 self.partition.clone()
403 }
404
405 #[wasm_bindgen(setter)]
406 pub fn set_partition(&mut self, value: Option<JsString>) {
407 self.partition = value;
408 }
409
410 #[wasm_bindgen(getter)]
411 pub fn plugins(&self) -> Option<bool> {
412 self.plugins
413 }
414
415 #[wasm_bindgen(setter)]
416 pub fn set_plugins(&mut self, value: Option<bool>) {
417 self.plugins = value;
418 }
419
420 #[wasm_bindgen(getter)]
421 pub fn preload(&self) -> Option<JsString> {
422 self.preload.clone()
423 }
424
425 #[wasm_bindgen(setter)]
426 pub fn set_preload(&mut self, value: Option<JsString>) {
427 self.preload = value;
428 }
429
430 #[wasm_bindgen(getter, js_name = "safeDialogsMessage")]
431 pub fn safe_dialogs_message(&self) -> Option<JsString> {
432 self.safe_dialogs_message.clone()
433 }
434
435 #[wasm_bindgen(setter)]
436 pub fn set_safe_dialogs_message(&mut self, value: Option<JsString>) {
437 self.safe_dialogs_message = value;
438 }
439
440 #[wasm_bindgen(getter, js_name = "safeDialogs")]
441 pub fn safe_dialogs(&self) -> Option<bool> {
442 self.safe_dialogs
443 }
444
445 #[wasm_bindgen(setter)]
446 pub fn set_safe_dialogs(&mut self, value: Option<bool>) {
447 self.safe_dialogs = value;
448 }
449
450 #[wasm_bindgen(getter)]
451 pub fn sandbox(&self) -> Option<bool> {
452 self.sandbox
453 }
454
455 #[wasm_bindgen(setter)]
456 pub fn set_sandbox(&mut self, value: Option<bool>) {
457 self.sandbox = value;
458 }
459
460 #[wasm_bindgen(getter, js_name = "scrollBounce")]
461 pub fn scroll_bounce(&self) -> Option<bool> {
462 self.scroll_bounce
463 }
464
465 #[wasm_bindgen(setter)]
466 pub fn set_scroll_bounce(&mut self, value: Option<bool>) {
467 self.scroll_bounce = value;
468 }
469
470 #[wasm_bindgen(getter)]
471 pub fn session(&self) -> Option<Session> {
472 self.session.clone()
473 }
474
475 #[wasm_bindgen(setter)]
476 pub fn set_session(&mut self, value: Option<Session>) {
477 self.session = value;
478 }
479
480 #[wasm_bindgen(getter)]
481 pub fn spellcheck(&self) -> Option<bool> {
482 self.spellcheck
483 }
484
485 #[wasm_bindgen(setter)]
486 pub fn set_spellcheck(&mut self, value: Option<bool>) {
487 self.spellcheck = value;
488 }
489
490 #[wasm_bindgen(getter, js_name = "textAreasAreResizable")]
491 pub fn text_areas_are_resizable(&self) -> Option<bool> {
492 self.text_areas_are_resizable
493 }
494
495 #[wasm_bindgen(setter)]
496 pub fn set_text_areas_are_resizable(&mut self, value: Option<bool>) {
497 self.text_areas_are_resizable = value;
498 }
499
500 #[wasm_bindgen(getter, js_name = "webSecurity")]
501 pub fn web_security(&self) -> Option<bool> {
502 self.web_security
503 }
504
505 #[wasm_bindgen(setter)]
506 pub fn set_web_security(&mut self, value: Option<bool>) {
507 self.web_security = value;
508 }
509
510 #[wasm_bindgen(getter)]
511 pub fn webgl(&self) -> Option<bool> {
512 self.webgl
513 }
514
515 #[wasm_bindgen(setter)]
516 pub fn set_webgl(&mut self, value: Option<bool>) {
517 self.webgl = value;
518 }
519
520 #[wasm_bindgen(getter, js_name = "webviewTag")]
521 pub fn webview_tag(&self) -> Option<bool> {
522 self.webview_tag
523 }
524
525 #[wasm_bindgen(setter)]
526 pub fn set_webview_tag(&mut self, value: Option<bool>) {
527 self.webview_tag = value;
528 }
529
530 #[wasm_bindgen(getter, js_name = "zoomFactor")]
531 pub fn zoom_factor(&self) -> Option<f32> {
532 self.zoom_factor
533 }
534
535 #[wasm_bindgen(setter)]
536 pub fn set_zoom_factor(&mut self, value: Option<f32>) {
537 self.zoom_factor = value;
538 }
539}