soup/auto/
hsts_enforcer.rs

1// This file was generated by gir (https://github.com/gtk-rs/gir)
2// from
3// from gir-files (https://github.com/gtk-rs/gir-files)
4// DO NOT EDIT
5
6use crate::{ffi, HSTSPolicy, SessionFeature};
7use glib::{
8    prelude::*,
9    signal::{connect_raw, SignalHandlerId},
10    translate::*,
11};
12use std::boxed::Box as Box_;
13
14glib::wrapper! {
15    #[doc(alias = "SoupHSTSEnforcer")]
16    pub struct HSTSEnforcer(Object<ffi::SoupHSTSEnforcer, ffi::SoupHSTSEnforcerClass>) @implements SessionFeature;
17
18    match fn {
19        type_ => || ffi::soup_hsts_enforcer_get_type(),
20    }
21}
22
23impl HSTSEnforcer {
24    pub const NONE: Option<&'static HSTSEnforcer> = None;
25
26    #[doc(alias = "soup_hsts_enforcer_new")]
27    pub fn new() -> HSTSEnforcer {
28        assert_initialized_main_thread!();
29        unsafe { from_glib_full(ffi::soup_hsts_enforcer_new()) }
30    }
31}
32
33impl Default for HSTSEnforcer {
34    fn default() -> Self {
35        Self::new()
36    }
37}
38
39mod sealed {
40    pub trait Sealed {}
41    impl<T: super::IsA<super::HSTSEnforcer>> Sealed for T {}
42}
43
44pub trait HSTSEnforcerExt: IsA<HSTSEnforcer> + sealed::Sealed + 'static {
45    #[doc(alias = "soup_hsts_enforcer_get_domains")]
46    #[doc(alias = "get_domains")]
47    fn domains(&self, session_policies: bool) -> Vec<glib::GString> {
48        unsafe {
49            FromGlibPtrContainer::from_glib_full(ffi::soup_hsts_enforcer_get_domains(
50                self.as_ref().to_glib_none().0,
51                session_policies.into_glib(),
52            ))
53        }
54    }
55
56    #[doc(alias = "soup_hsts_enforcer_get_policies")]
57    #[doc(alias = "get_policies")]
58    fn policies(&self, session_policies: bool) -> Vec<HSTSPolicy> {
59        unsafe {
60            FromGlibPtrContainer::from_glib_full(ffi::soup_hsts_enforcer_get_policies(
61                self.as_ref().to_glib_none().0,
62                session_policies.into_glib(),
63            ))
64        }
65    }
66
67    #[doc(alias = "soup_hsts_enforcer_has_valid_policy")]
68    fn has_valid_policy(&self, domain: &str) -> bool {
69        unsafe {
70            from_glib(ffi::soup_hsts_enforcer_has_valid_policy(
71                self.as_ref().to_glib_none().0,
72                domain.to_glib_none().0,
73            ))
74        }
75    }
76
77    #[doc(alias = "soup_hsts_enforcer_is_persistent")]
78    fn is_persistent(&self) -> bool {
79        unsafe {
80            from_glib(ffi::soup_hsts_enforcer_is_persistent(
81                self.as_ref().to_glib_none().0,
82            ))
83        }
84    }
85
86    #[doc(alias = "soup_hsts_enforcer_set_policy")]
87    fn set_policy(&self, policy: &mut HSTSPolicy) {
88        unsafe {
89            ffi::soup_hsts_enforcer_set_policy(
90                self.as_ref().to_glib_none().0,
91                policy.to_glib_none_mut().0,
92            );
93        }
94    }
95
96    #[doc(alias = "soup_hsts_enforcer_set_session_policy")]
97    fn set_session_policy(&self, domain: &str, include_subdomains: bool) {
98        unsafe {
99            ffi::soup_hsts_enforcer_set_session_policy(
100                self.as_ref().to_glib_none().0,
101                domain.to_glib_none().0,
102                include_subdomains.into_glib(),
103            );
104        }
105    }
106
107    #[doc(alias = "changed")]
108    fn connect_changed<F: Fn(&Self, &HSTSPolicy, &HSTSPolicy) + 'static>(
109        &self,
110        f: F,
111    ) -> SignalHandlerId {
112        unsafe extern "C" fn changed_trampoline<
113            P: IsA<HSTSEnforcer>,
114            F: Fn(&P, &HSTSPolicy, &HSTSPolicy) + 'static,
115        >(
116            this: *mut ffi::SoupHSTSEnforcer,
117            old_policy: *mut ffi::SoupHSTSPolicy,
118            new_policy: *mut ffi::SoupHSTSPolicy,
119            f: glib::ffi::gpointer,
120        ) {
121            let f: &F = &*(f as *const F);
122            f(
123                HSTSEnforcer::from_glib_borrow(this).unsafe_cast_ref(),
124                &from_glib_borrow(old_policy),
125                &from_glib_borrow(new_policy),
126            )
127        }
128        unsafe {
129            let f: Box_<F> = Box_::new(f);
130            connect_raw(
131                self.as_ptr() as *mut _,
132                b"changed\0".as_ptr() as *const _,
133                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
134                    changed_trampoline::<Self, F> as *const (),
135                )),
136                Box_::into_raw(f),
137            )
138        }
139    }
140}
141
142impl<O: IsA<HSTSEnforcer>> HSTSEnforcerExt for O {}