use crate::{WebExtensionMatchPattern, ffi};
use glib::{
prelude::*,
signal::{SignalHandlerId, connect_raw},
translate::*,
};
use std::boxed::Box as Box_;
glib::wrapper! {
#[doc(alias = "WebKitWebExtension")]
pub struct WebExtension(Object<ffi::WebKitWebExtension, ffi::WebKitWebExtensionClass>) @implements gio::Initable;
match fn {
type_ => || ffi::webkit_web_extension_get_type(),
}
}
impl WebExtension {
#[doc(alias = "webkit_web_extension_new")]
pub fn new(extension_path: &str) -> Result<Option<WebExtension>, glib::Error> {
assert_initialized_main_thread!();
unsafe {
let mut error = std::ptr::null_mut();
let ret = ffi::webkit_web_extension_new(extension_path.to_glib_none().0, &mut error);
if error.is_null() {
Ok(from_glib_full(ret))
} else {
Err(from_glib_full(error))
}
}
}
#[doc(alias = "webkit_web_extension_get_action_icon")]
#[doc(alias = "get_action_icon")]
pub fn action_icon(&self, width: f64, height: f64) -> Option<gio::Icon> {
unsafe {
from_glib_none(ffi::webkit_web_extension_get_action_icon(
self.to_glib_none().0,
width,
height,
))
}
}
#[doc(alias = "webkit_web_extension_get_all_requested_match_patterns")]
#[doc(alias = "get_all_requested_match_patterns")]
pub fn all_requested_match_patterns(&self) -> Vec<WebExtensionMatchPattern> {
unsafe {
FromGlibPtrContainer::from_glib_full(
ffi::webkit_web_extension_get_all_requested_match_patterns(self.to_glib_none().0),
)
}
}
#[doc(alias = "webkit_web_extension_get_default_locale")]
#[doc(alias = "get_default_locale")]
#[doc(alias = "default-locale")]
pub fn default_locale(&self) -> Option<glib::GString> {
unsafe {
from_glib_none(ffi::webkit_web_extension_get_default_locale(
self.to_glib_none().0,
))
}
}
#[doc(alias = "webkit_web_extension_get_display_action_label")]
#[doc(alias = "get_display_action_label")]
#[doc(alias = "display-action-label")]
pub fn display_action_label(&self) -> Option<glib::GString> {
unsafe {
from_glib_none(ffi::webkit_web_extension_get_display_action_label(
self.to_glib_none().0,
))
}
}
#[doc(alias = "webkit_web_extension_get_display_description")]
#[doc(alias = "get_display_description")]
#[doc(alias = "display-description")]
pub fn display_description(&self) -> Option<glib::GString> {
unsafe {
from_glib_none(ffi::webkit_web_extension_get_display_description(
self.to_glib_none().0,
))
}
}
#[doc(alias = "webkit_web_extension_get_display_name")]
#[doc(alias = "get_display_name")]
#[doc(alias = "display-name")]
pub fn display_name(&self) -> Option<glib::GString> {
unsafe {
from_glib_none(ffi::webkit_web_extension_get_display_name(
self.to_glib_none().0,
))
}
}
#[doc(alias = "webkit_web_extension_get_display_short_name")]
#[doc(alias = "get_display_short_name")]
#[doc(alias = "display-short-name")]
pub fn display_short_name(&self) -> Option<glib::GString> {
unsafe {
from_glib_none(ffi::webkit_web_extension_get_display_short_name(
self.to_glib_none().0,
))
}
}
#[doc(alias = "webkit_web_extension_get_display_version")]
#[doc(alias = "get_display_version")]
#[doc(alias = "display-version")]
pub fn display_version(&self) -> Option<glib::GString> {
unsafe {
from_glib_none(ffi::webkit_web_extension_get_display_version(
self.to_glib_none().0,
))
}
}
#[doc(alias = "webkit_web_extension_get_has_background_content")]
#[doc(alias = "get_has_background_content")]
#[doc(alias = "has-background-content")]
pub fn has_background_content(&self) -> bool {
unsafe {
from_glib(ffi::webkit_web_extension_get_has_background_content(
self.to_glib_none().0,
))
}
}
#[doc(alias = "webkit_web_extension_get_has_commands")]
#[doc(alias = "get_has_commands")]
#[doc(alias = "has-commands")]
pub fn has_commands(&self) -> bool {
unsafe {
from_glib(ffi::webkit_web_extension_get_has_commands(
self.to_glib_none().0,
))
}
}
#[doc(alias = "webkit_web_extension_get_has_content_modification_rules")]
#[doc(alias = "get_has_content_modification_rules")]
#[doc(alias = "has-content-modification-rules")]
pub fn has_content_modification_rules(&self) -> bool {
unsafe {
from_glib(
ffi::webkit_web_extension_get_has_content_modification_rules(self.to_glib_none().0),
)
}
}
#[doc(alias = "webkit_web_extension_get_has_injected_content")]
#[doc(alias = "get_has_injected_content")]
#[doc(alias = "has-injected-content")]
pub fn has_injected_content(&self) -> bool {
unsafe {
from_glib(ffi::webkit_web_extension_get_has_injected_content(
self.to_glib_none().0,
))
}
}
#[doc(alias = "webkit_web_extension_get_has_options_page")]
#[doc(alias = "get_has_options_page")]
#[doc(alias = "has-options-page")]
pub fn has_options_page(&self) -> bool {
unsafe {
from_glib(ffi::webkit_web_extension_get_has_options_page(
self.to_glib_none().0,
))
}
}
#[doc(alias = "webkit_web_extension_get_has_override_new_tab_page")]
#[doc(alias = "get_has_override_new_tab_page")]
#[doc(alias = "has-override-new-tab-page")]
pub fn has_override_new_tab_page(&self) -> bool {
unsafe {
from_glib(ffi::webkit_web_extension_get_has_override_new_tab_page(
self.to_glib_none().0,
))
}
}
#[doc(alias = "webkit_web_extension_get_has_persistent_background_content")]
#[doc(alias = "get_has_persistent_background_content")]
#[doc(alias = "has-persistent-background-content")]
pub fn has_persistent_background_content(&self) -> bool {
unsafe {
from_glib(
ffi::webkit_web_extension_get_has_persistent_background_content(
self.to_glib_none().0,
),
)
}
}
#[doc(alias = "webkit_web_extension_get_icon")]
#[doc(alias = "get_icon")]
pub fn icon(&self, width: f64, height: f64) -> Option<gio::Icon> {
unsafe {
from_glib_none(ffi::webkit_web_extension_get_icon(
self.to_glib_none().0,
width,
height,
))
}
}
#[doc(alias = "webkit_web_extension_get_manifest_version")]
#[doc(alias = "get_manifest_version")]
#[doc(alias = "manifest-version")]
pub fn manifest_version(&self) -> f64 {
unsafe { ffi::webkit_web_extension_get_manifest_version(self.to_glib_none().0) }
}
#[doc(alias = "webkit_web_extension_get_optional_permission_match_patterns")]
#[doc(alias = "get_optional_permission_match_patterns")]
pub fn optional_permission_match_patterns(&self) -> Vec<WebExtensionMatchPattern> {
unsafe {
FromGlibPtrContainer::from_glib_full(
ffi::webkit_web_extension_get_optional_permission_match_patterns(
self.to_glib_none().0,
),
)
}
}
#[doc(alias = "webkit_web_extension_get_optional_permissions")]
#[doc(alias = "get_optional_permissions")]
#[doc(alias = "optional-permissions")]
pub fn optional_permissions(&self) -> Vec<glib::GString> {
unsafe {
FromGlibPtrContainer::from_glib_none(
ffi::webkit_web_extension_get_optional_permissions(self.to_glib_none().0),
)
}
}
#[doc(alias = "webkit_web_extension_get_path")]
#[doc(alias = "get_path")]
pub fn path(&self) -> Option<glib::GString> {
unsafe { from_glib_none(ffi::webkit_web_extension_get_path(self.to_glib_none().0)) }
}
#[doc(alias = "webkit_web_extension_get_requested_permission_match_patterns")]
#[doc(alias = "get_requested_permission_match_patterns")]
pub fn requested_permission_match_patterns(&self) -> Vec<WebExtensionMatchPattern> {
unsafe {
FromGlibPtrContainer::from_glib_full(
ffi::webkit_web_extension_get_requested_permission_match_patterns(
self.to_glib_none().0,
),
)
}
}
#[doc(alias = "webkit_web_extension_get_requested_permissions")]
#[doc(alias = "get_requested_permissions")]
#[doc(alias = "requested-permissions")]
pub fn requested_permissions(&self) -> Vec<glib::GString> {
unsafe {
FromGlibPtrContainer::from_glib_none(
ffi::webkit_web_extension_get_requested_permissions(self.to_glib_none().0),
)
}
}
#[doc(alias = "webkit_web_extension_get_version")]
#[doc(alias = "get_version")]
pub fn version(&self) -> Option<glib::GString> {
unsafe { from_glib_none(ffi::webkit_web_extension_get_version(self.to_glib_none().0)) }
}
#[doc(alias = "webkit_web_extension_supports_manifest_version")]
pub fn supports_manifest_version(&self, manifest_version: f64) -> bool {
unsafe {
from_glib(ffi::webkit_web_extension_supports_manifest_version(
self.to_glib_none().0,
manifest_version,
))
}
}
#[cfg(feature = "v2_52")]
#[cfg_attr(docsrs, doc(cfg(feature = "v2_52")))]
#[doc(alias = "default-locale")]
pub fn connect_default_locale_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
unsafe extern "C" fn notify_default_locale_trampoline<F: Fn(&WebExtension) + 'static>(
this: *mut ffi::WebKitWebExtension,
_param_spec: glib::ffi::gpointer,
f: glib::ffi::gpointer,
) {
unsafe {
let f: &F = &*(f as *const F);
f(&from_glib_borrow(this))
}
}
unsafe {
let f: Box_<F> = Box_::new(f);
connect_raw(
self.as_ptr() as *mut _,
c"notify::default-locale".as_ptr(),
Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
notify_default_locale_trampoline::<F> as *const (),
)),
Box_::into_raw(f),
)
}
}
#[cfg(feature = "v2_52")]
#[cfg_attr(docsrs, doc(cfg(feature = "v2_52")))]
#[doc(alias = "display-action-label")]
pub fn connect_display_action_label_notify<F: Fn(&Self) + 'static>(
&self,
f: F,
) -> SignalHandlerId {
unsafe extern "C" fn notify_display_action_label_trampoline<
F: Fn(&WebExtension) + 'static,
>(
this: *mut ffi::WebKitWebExtension,
_param_spec: glib::ffi::gpointer,
f: glib::ffi::gpointer,
) {
unsafe {
let f: &F = &*(f as *const F);
f(&from_glib_borrow(this))
}
}
unsafe {
let f: Box_<F> = Box_::new(f);
connect_raw(
self.as_ptr() as *mut _,
c"notify::display-action-label".as_ptr(),
Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
notify_display_action_label_trampoline::<F> as *const (),
)),
Box_::into_raw(f),
)
}
}
#[cfg(feature = "v2_52")]
#[cfg_attr(docsrs, doc(cfg(feature = "v2_52")))]
#[doc(alias = "display-description")]
pub fn connect_display_description_notify<F: Fn(&Self) + 'static>(
&self,
f: F,
) -> SignalHandlerId {
unsafe extern "C" fn notify_display_description_trampoline<
F: Fn(&WebExtension) + 'static,
>(
this: *mut ffi::WebKitWebExtension,
_param_spec: glib::ffi::gpointer,
f: glib::ffi::gpointer,
) {
unsafe {
let f: &F = &*(f as *const F);
f(&from_glib_borrow(this))
}
}
unsafe {
let f: Box_<F> = Box_::new(f);
connect_raw(
self.as_ptr() as *mut _,
c"notify::display-description".as_ptr(),
Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
notify_display_description_trampoline::<F> as *const (),
)),
Box_::into_raw(f),
)
}
}
#[cfg(feature = "v2_52")]
#[cfg_attr(docsrs, doc(cfg(feature = "v2_52")))]
#[doc(alias = "display-name")]
pub fn connect_display_name_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
unsafe extern "C" fn notify_display_name_trampoline<F: Fn(&WebExtension) + 'static>(
this: *mut ffi::WebKitWebExtension,
_param_spec: glib::ffi::gpointer,
f: glib::ffi::gpointer,
) {
unsafe {
let f: &F = &*(f as *const F);
f(&from_glib_borrow(this))
}
}
unsafe {
let f: Box_<F> = Box_::new(f);
connect_raw(
self.as_ptr() as *mut _,
c"notify::display-name".as_ptr(),
Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
notify_display_name_trampoline::<F> as *const (),
)),
Box_::into_raw(f),
)
}
}
#[cfg(feature = "v2_52")]
#[cfg_attr(docsrs, doc(cfg(feature = "v2_52")))]
#[doc(alias = "display-short-name")]
pub fn connect_display_short_name_notify<F: Fn(&Self) + 'static>(
&self,
f: F,
) -> SignalHandlerId {
unsafe extern "C" fn notify_display_short_name_trampoline<
F: Fn(&WebExtension) + 'static,
>(
this: *mut ffi::WebKitWebExtension,
_param_spec: glib::ffi::gpointer,
f: glib::ffi::gpointer,
) {
unsafe {
let f: &F = &*(f as *const F);
f(&from_glib_borrow(this))
}
}
unsafe {
let f: Box_<F> = Box_::new(f);
connect_raw(
self.as_ptr() as *mut _,
c"notify::display-short-name".as_ptr(),
Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
notify_display_short_name_trampoline::<F> as *const (),
)),
Box_::into_raw(f),
)
}
}
#[cfg(feature = "v2_52")]
#[cfg_attr(docsrs, doc(cfg(feature = "v2_52")))]
#[doc(alias = "display-version")]
pub fn connect_display_version_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
unsafe extern "C" fn notify_display_version_trampoline<F: Fn(&WebExtension) + 'static>(
this: *mut ffi::WebKitWebExtension,
_param_spec: glib::ffi::gpointer,
f: glib::ffi::gpointer,
) {
unsafe {
let f: &F = &*(f as *const F);
f(&from_glib_borrow(this))
}
}
unsafe {
let f: Box_<F> = Box_::new(f);
connect_raw(
self.as_ptr() as *mut _,
c"notify::display-version".as_ptr(),
Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
notify_display_version_trampoline::<F> as *const (),
)),
Box_::into_raw(f),
)
}
}
#[cfg(feature = "v2_52")]
#[cfg_attr(docsrs, doc(cfg(feature = "v2_52")))]
#[doc(alias = "has-background-content")]
pub fn connect_has_background_content_notify<F: Fn(&Self) + 'static>(
&self,
f: F,
) -> SignalHandlerId {
unsafe extern "C" fn notify_has_background_content_trampoline<
F: Fn(&WebExtension) + 'static,
>(
this: *mut ffi::WebKitWebExtension,
_param_spec: glib::ffi::gpointer,
f: glib::ffi::gpointer,
) {
unsafe {
let f: &F = &*(f as *const F);
f(&from_glib_borrow(this))
}
}
unsafe {
let f: Box_<F> = Box_::new(f);
connect_raw(
self.as_ptr() as *mut _,
c"notify::has-background-content".as_ptr(),
Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
notify_has_background_content_trampoline::<F> as *const (),
)),
Box_::into_raw(f),
)
}
}
#[cfg(feature = "v2_52")]
#[cfg_attr(docsrs, doc(cfg(feature = "v2_52")))]
#[doc(alias = "has-commands")]
pub fn connect_has_commands_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
unsafe extern "C" fn notify_has_commands_trampoline<F: Fn(&WebExtension) + 'static>(
this: *mut ffi::WebKitWebExtension,
_param_spec: glib::ffi::gpointer,
f: glib::ffi::gpointer,
) {
unsafe {
let f: &F = &*(f as *const F);
f(&from_glib_borrow(this))
}
}
unsafe {
let f: Box_<F> = Box_::new(f);
connect_raw(
self.as_ptr() as *mut _,
c"notify::has-commands".as_ptr(),
Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
notify_has_commands_trampoline::<F> as *const (),
)),
Box_::into_raw(f),
)
}
}
#[cfg(feature = "v2_52")]
#[cfg_attr(docsrs, doc(cfg(feature = "v2_52")))]
#[doc(alias = "has-content-modification-rules")]
pub fn connect_has_content_modification_rules_notify<F: Fn(&Self) + 'static>(
&self,
f: F,
) -> SignalHandlerId {
unsafe extern "C" fn notify_has_content_modification_rules_trampoline<
F: Fn(&WebExtension) + 'static,
>(
this: *mut ffi::WebKitWebExtension,
_param_spec: glib::ffi::gpointer,
f: glib::ffi::gpointer,
) {
unsafe {
let f: &F = &*(f as *const F);
f(&from_glib_borrow(this))
}
}
unsafe {
let f: Box_<F> = Box_::new(f);
connect_raw(
self.as_ptr() as *mut _,
c"notify::has-content-modification-rules".as_ptr(),
Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
notify_has_content_modification_rules_trampoline::<F> as *const (),
)),
Box_::into_raw(f),
)
}
}
#[cfg(feature = "v2_52")]
#[cfg_attr(docsrs, doc(cfg(feature = "v2_52")))]
#[doc(alias = "has-injected-content")]
pub fn connect_has_injected_content_notify<F: Fn(&Self) + 'static>(
&self,
f: F,
) -> SignalHandlerId {
unsafe extern "C" fn notify_has_injected_content_trampoline<
F: Fn(&WebExtension) + 'static,
>(
this: *mut ffi::WebKitWebExtension,
_param_spec: glib::ffi::gpointer,
f: glib::ffi::gpointer,
) {
unsafe {
let f: &F = &*(f as *const F);
f(&from_glib_borrow(this))
}
}
unsafe {
let f: Box_<F> = Box_::new(f);
connect_raw(
self.as_ptr() as *mut _,
c"notify::has-injected-content".as_ptr(),
Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
notify_has_injected_content_trampoline::<F> as *const (),
)),
Box_::into_raw(f),
)
}
}
#[cfg(feature = "v2_52")]
#[cfg_attr(docsrs, doc(cfg(feature = "v2_52")))]
#[doc(alias = "has-options-page")]
pub fn connect_has_options_page_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
unsafe extern "C" fn notify_has_options_page_trampoline<F: Fn(&WebExtension) + 'static>(
this: *mut ffi::WebKitWebExtension,
_param_spec: glib::ffi::gpointer,
f: glib::ffi::gpointer,
) {
unsafe {
let f: &F = &*(f as *const F);
f(&from_glib_borrow(this))
}
}
unsafe {
let f: Box_<F> = Box_::new(f);
connect_raw(
self.as_ptr() as *mut _,
c"notify::has-options-page".as_ptr(),
Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
notify_has_options_page_trampoline::<F> as *const (),
)),
Box_::into_raw(f),
)
}
}
#[cfg(feature = "v2_52")]
#[cfg_attr(docsrs, doc(cfg(feature = "v2_52")))]
#[doc(alias = "has-override-new-tab-page")]
pub fn connect_has_override_new_tab_page_notify<F: Fn(&Self) + 'static>(
&self,
f: F,
) -> SignalHandlerId {
unsafe extern "C" fn notify_has_override_new_tab_page_trampoline<
F: Fn(&WebExtension) + 'static,
>(
this: *mut ffi::WebKitWebExtension,
_param_spec: glib::ffi::gpointer,
f: glib::ffi::gpointer,
) {
unsafe {
let f: &F = &*(f as *const F);
f(&from_glib_borrow(this))
}
}
unsafe {
let f: Box_<F> = Box_::new(f);
connect_raw(
self.as_ptr() as *mut _,
c"notify::has-override-new-tab-page".as_ptr(),
Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
notify_has_override_new_tab_page_trampoline::<F> as *const (),
)),
Box_::into_raw(f),
)
}
}
#[cfg(feature = "v2_52")]
#[cfg_attr(docsrs, doc(cfg(feature = "v2_52")))]
#[doc(alias = "has-persistent-background-content")]
pub fn connect_has_persistent_background_content_notify<F: Fn(&Self) + 'static>(
&self,
f: F,
) -> SignalHandlerId {
unsafe extern "C" fn notify_has_persistent_background_content_trampoline<
F: Fn(&WebExtension) + 'static,
>(
this: *mut ffi::WebKitWebExtension,
_param_spec: glib::ffi::gpointer,
f: glib::ffi::gpointer,
) {
unsafe {
let f: &F = &*(f as *const F);
f(&from_glib_borrow(this))
}
}
unsafe {
let f: Box_<F> = Box_::new(f);
connect_raw(
self.as_ptr() as *mut _,
c"notify::has-persistent-background-content".as_ptr(),
Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
notify_has_persistent_background_content_trampoline::<F> as *const (),
)),
Box_::into_raw(f),
)
}
}
#[cfg(feature = "v2_52")]
#[cfg_attr(docsrs, doc(cfg(feature = "v2_52")))]
#[doc(alias = "manifest-version")]
pub fn connect_manifest_version_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
unsafe extern "C" fn notify_manifest_version_trampoline<F: Fn(&WebExtension) + 'static>(
this: *mut ffi::WebKitWebExtension,
_param_spec: glib::ffi::gpointer,
f: glib::ffi::gpointer,
) {
unsafe {
let f: &F = &*(f as *const F);
f(&from_glib_borrow(this))
}
}
unsafe {
let f: Box_<F> = Box_::new(f);
connect_raw(
self.as_ptr() as *mut _,
c"notify::manifest-version".as_ptr(),
Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
notify_manifest_version_trampoline::<F> as *const (),
)),
Box_::into_raw(f),
)
}
}
#[cfg(feature = "v2_52")]
#[cfg_attr(docsrs, doc(cfg(feature = "v2_52")))]
#[doc(alias = "optional-permissions")]
pub fn connect_optional_permissions_notify<F: Fn(&Self) + 'static>(
&self,
f: F,
) -> SignalHandlerId {
unsafe extern "C" fn notify_optional_permissions_trampoline<
F: Fn(&WebExtension) + 'static,
>(
this: *mut ffi::WebKitWebExtension,
_param_spec: glib::ffi::gpointer,
f: glib::ffi::gpointer,
) {
unsafe {
let f: &F = &*(f as *const F);
f(&from_glib_borrow(this))
}
}
unsafe {
let f: Box_<F> = Box_::new(f);
connect_raw(
self.as_ptr() as *mut _,
c"notify::optional-permissions".as_ptr(),
Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
notify_optional_permissions_trampoline::<F> as *const (),
)),
Box_::into_raw(f),
)
}
}
#[cfg(feature = "v2_52")]
#[cfg_attr(docsrs, doc(cfg(feature = "v2_52")))]
#[doc(alias = "requested-permissions")]
pub fn connect_requested_permissions_notify<F: Fn(&Self) + 'static>(
&self,
f: F,
) -> SignalHandlerId {
unsafe extern "C" fn notify_requested_permissions_trampoline<
F: Fn(&WebExtension) + 'static,
>(
this: *mut ffi::WebKitWebExtension,
_param_spec: glib::ffi::gpointer,
f: glib::ffi::gpointer,
) {
unsafe {
let f: &F = &*(f as *const F);
f(&from_glib_borrow(this))
}
}
unsafe {
let f: Box_<F> = Box_::new(f);
connect_raw(
self.as_ptr() as *mut _,
c"notify::requested-permissions".as_ptr(),
Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
notify_requested_permissions_trampoline::<F> as *const (),
)),
Box_::into_raw(f),
)
}
}
#[cfg(feature = "v2_52")]
#[cfg_attr(docsrs, doc(cfg(feature = "v2_52")))]
#[doc(alias = "version")]
pub fn connect_version_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
unsafe extern "C" fn notify_version_trampoline<F: Fn(&WebExtension) + 'static>(
this: *mut ffi::WebKitWebExtension,
_param_spec: glib::ffi::gpointer,
f: glib::ffi::gpointer,
) {
unsafe {
let f: &F = &*(f as *const F);
f(&from_glib_borrow(this))
}
}
unsafe {
let f: Box_<F> = Box_::new(f);
connect_raw(
self.as_ptr() as *mut _,
c"notify::version".as_ptr(),
Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
notify_version_trampoline::<F> as *const (),
)),
Box_::into_raw(f),
)
}
}
}