webkit_web_process_extension6/auto/
script_world.rs1use crate::{ffi, Frame, WebPage};
7use glib::{
8 object::ObjectType as _,
9 prelude::*,
10 signal::{connect_raw, SignalHandlerId},
11 translate::*,
12};
13use std::boxed::Box as Box_;
14
15glib::wrapper! {
16 #[doc(alias = "WebKitScriptWorld")]
17 pub struct ScriptWorld(Object<ffi::WebKitScriptWorld, ffi::WebKitScriptWorldClass>);
18
19 match fn {
20 type_ => || ffi::webkit_script_world_get_type(),
21 }
22}
23
24impl ScriptWorld {
25 #[doc(alias = "webkit_script_world_new")]
26 pub fn new() -> ScriptWorld {
27 assert_initialized_main_thread!();
28 unsafe { from_glib_full(ffi::webkit_script_world_new()) }
29 }
30
31 #[doc(alias = "webkit_script_world_new_with_name")]
32 #[doc(alias = "new_with_name")]
33 pub fn with_name(name: &str) -> ScriptWorld {
34 assert_initialized_main_thread!();
35 unsafe {
36 from_glib_full(ffi::webkit_script_world_new_with_name(
37 name.to_glib_none().0,
38 ))
39 }
40 }
41
42 #[doc(alias = "webkit_script_world_get_name")]
43 #[doc(alias = "get_name")]
44 pub fn name(&self) -> Option<glib::GString> {
45 unsafe { from_glib_none(ffi::webkit_script_world_get_name(self.to_glib_none().0)) }
46 }
47
48 #[doc(alias = "webkit_script_world_get_default")]
49 #[doc(alias = "get_default")]
50 #[allow(clippy::should_implement_trait)]
51 pub fn default() -> Option<ScriptWorld> {
52 assert_initialized_main_thread!();
53 unsafe { from_glib_none(ffi::webkit_script_world_get_default()) }
54 }
55
56 #[doc(alias = "window-object-cleared")]
57 pub fn connect_window_object_cleared<F: Fn(&Self, &WebPage, &Frame) + 'static>(
58 &self,
59 f: F,
60 ) -> SignalHandlerId {
61 unsafe extern "C" fn window_object_cleared_trampoline<
62 F: Fn(&ScriptWorld, &WebPage, &Frame) + 'static,
63 >(
64 this: *mut ffi::WebKitScriptWorld,
65 page: *mut ffi::WebKitWebPage,
66 frame: *mut ffi::WebKitFrame,
67 f: glib::ffi::gpointer,
68 ) {
69 let f: &F = &*(f as *const F);
70 f(
71 &from_glib_borrow(this),
72 &from_glib_borrow(page),
73 &from_glib_borrow(frame),
74 )
75 }
76 unsafe {
77 let f: Box_<F> = Box_::new(f);
78 connect_raw(
79 self.as_ptr() as *mut _,
80 c"window-object-cleared".as_ptr() as *const _,
81 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
82 window_object_cleared_trampoline::<F> as *const (),
83 )),
84 Box_::into_raw(f),
85 )
86 }
87 }
88}
89
90impl Default for ScriptWorld {
91 fn default() -> Self {
92 Self::new()
93 }
94}