capacitor_bindings/
browser.rs1use crate::error::Error;
2use crate::helpers::*;
3use crate::{extern_functions::*, prelude::*};
4use serde::{Deserialize, Serialize};
5use serde_with::skip_serializing_none;
6
7pub struct Browser;
8
9impl Browser {
10 pub async fn open(options: impl Into<OpenOptions>) -> Result<(), Error> {
12 run_value_unit(options, browser_open).await
13 }
14 #[cfg(any(feature = "ios", feature = "web"))]
15 pub async fn close() -> Result<(), Error> {
17 run_unit_unit(browser_close).await
18 }
19
20 pub async fn remove_all_listeners() -> Result<(), Error> {
22 run_unit_unit(browser_remove_all_listeners).await
23 }
24
25 #[cfg(any(feature = "ios", feature = "android"))]
26 pub async fn add_browser_finished_listener<F: Fn(()) + 'static>(
27 func: F,
28 ) -> Result<PluginListenerHandle, Error> {
29 listen_async(func, "browserFinished", browser_add_listener).await
30 }
31
32 #[cfg(any(feature = "ios", feature = "android"))]
33 pub async fn add_browser_page_loaded_listener<F: Fn(()) + 'static>(
34 func: F,
35 ) -> Result<PluginListenerHandle, Error> {
36 listen_async(func, "browserPageLoaded", browser_add_listener).await
37 }
38}
39
40#[skip_serializing_none]
41#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
42#[serde(rename_all = "camelCase", default)]
43pub struct OpenOptions {
44 pub url: String,
46 pub window_name: Option<String>,
48 pub toolbar_color: Option<String>,
50 pub presentation_style: Option<PresentationStyle>,
52 pub width: Option<u32>,
54 pub height: Option<u32>,
56}
57
58#[derive(Copy, Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
59#[serde(rename_all = "kebab-case")]
60pub enum PresentationStyle {
61 Fullscreen,
62 Popover,
63}