use crate::{WebExtensionMatchPatternOptions, ffi};
use glib::translate::*;
glib::wrapper! {
#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub struct WebExtensionMatchPattern(Shared<ffi::WebKitWebExtensionMatchPattern>);
match fn {
ref => |ptr| ffi::webkit_web_extension_match_pattern_ref(ptr),
unref => |ptr| ffi::webkit_web_extension_match_pattern_unref(ptr),
type_ => || ffi::webkit_web_extension_match_pattern_get_type(),
}
}
impl WebExtensionMatchPattern {
#[doc(alias = "webkit_web_extension_match_pattern_new_all_hosts_and_schemes")]
pub fn new_all_hosts_and_schemes() -> WebExtensionMatchPattern {
assert_initialized_main_thread!();
unsafe {
from_glib_full(ffi::webkit_web_extension_match_pattern_new_all_hosts_and_schemes())
}
}
#[doc(alias = "webkit_web_extension_match_pattern_new_all_urls")]
pub fn new_all_urls() -> WebExtensionMatchPattern {
assert_initialized_main_thread!();
unsafe { from_glib_full(ffi::webkit_web_extension_match_pattern_new_all_urls()) }
}
#[doc(alias = "webkit_web_extension_match_pattern_new_with_scheme")]
#[doc(alias = "new_with_scheme")]
pub fn with_scheme(
scheme: &str,
host: &str,
path: &str,
) -> Result<Option<WebExtensionMatchPattern>, glib::Error> {
assert_initialized_main_thread!();
unsafe {
let mut error = std::ptr::null_mut();
let ret = ffi::webkit_web_extension_match_pattern_new_with_scheme(
scheme.to_glib_none().0,
host.to_glib_none().0,
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_match_pattern_new_with_string")]
#[doc(alias = "new_with_string")]
pub fn with_string(string: &str) -> Result<Option<WebExtensionMatchPattern>, glib::Error> {
assert_initialized_main_thread!();
unsafe {
let mut error = std::ptr::null_mut();
let ret = ffi::webkit_web_extension_match_pattern_new_with_string(
string.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_match_pattern_get_host")]
#[doc(alias = "get_host")]
pub fn host(&self) -> Option<glib::GString> {
unsafe {
from_glib_none(ffi::webkit_web_extension_match_pattern_get_host(
self.to_glib_none().0,
))
}
}
#[doc(alias = "webkit_web_extension_match_pattern_get_matches_all_hosts")]
#[doc(alias = "get_matches_all_hosts")]
pub fn is_matches_all_hosts(&self) -> bool {
unsafe {
from_glib(
ffi::webkit_web_extension_match_pattern_get_matches_all_hosts(
self.to_glib_none().0,
),
)
}
}
#[doc(alias = "webkit_web_extension_match_pattern_get_matches_all_urls")]
#[doc(alias = "get_matches_all_urls")]
pub fn is_matches_all_urls(&self) -> bool {
unsafe {
from_glib(
ffi::webkit_web_extension_match_pattern_get_matches_all_urls(self.to_glib_none().0),
)
}
}
#[doc(alias = "webkit_web_extension_match_pattern_get_path")]
#[doc(alias = "get_path")]
pub fn path(&self) -> Option<glib::GString> {
unsafe {
from_glib_none(ffi::webkit_web_extension_match_pattern_get_path(
self.to_glib_none().0,
))
}
}
#[doc(alias = "webkit_web_extension_match_pattern_get_scheme")]
#[doc(alias = "get_scheme")]
pub fn scheme(&self) -> Option<glib::GString> {
unsafe {
from_glib_none(ffi::webkit_web_extension_match_pattern_get_scheme(
self.to_glib_none().0,
))
}
}
#[doc(alias = "webkit_web_extension_match_pattern_get_string")]
#[doc(alias = "get_string")]
pub fn string(&self) -> Option<glib::GString> {
unsafe {
from_glib_none(ffi::webkit_web_extension_match_pattern_get_string(
self.to_glib_none().0,
))
}
}
#[doc(alias = "webkit_web_extension_match_pattern_matches_pattern")]
pub fn matches_pattern(
&self,
pattern: &WebExtensionMatchPattern,
options: WebExtensionMatchPatternOptions,
) -> bool {
unsafe {
from_glib(ffi::webkit_web_extension_match_pattern_matches_pattern(
self.to_glib_none().0,
pattern.to_glib_none().0,
options.into_glib(),
))
}
}
#[doc(alias = "webkit_web_extension_match_pattern_matches_url")]
pub fn matches_url(&self, url: &str, options: WebExtensionMatchPatternOptions) -> bool {
unsafe {
from_glib(ffi::webkit_web_extension_match_pattern_matches_url(
self.to_glib_none().0,
url.to_glib_none().0,
options.into_glib(),
))
}
}
#[cfg_attr(feature = "v2_52", deprecated = "Since 2.52")]
#[allow(deprecated)]
#[doc(alias = "webkit_web_extension_match_pattern_register_custom_URL_scheme")]
pub fn register_custom_URL_scheme(urlScheme: &str) {
assert_initialized_main_thread!();
unsafe {
ffi::webkit_web_extension_match_pattern_register_custom_URL_scheme(
urlScheme.to_glib_none().0,
);
}
}
#[cfg(feature = "v2_52")]
#[cfg_attr(docsrs, doc(cfg(feature = "v2_52")))]
#[doc(alias = "webkit_web_extension_match_pattern_register_custom_url_scheme")]
pub fn register_custom_url_scheme(urlScheme: &str) {
assert_initialized_main_thread!();
unsafe {
ffi::webkit_web_extension_match_pattern_register_custom_url_scheme(
urlScheme.to_glib_none().0,
);
}
}
}