mirror of
https://github.com/tauri-apps/tauri.git
synced 2024-11-28 20:48:52 +03:00
feat(core): expose Wry's with_incognito
to Tauri on the WindowBuilder::incognito
function. (#6767)
This commit is contained in:
parent
3480047ec1
commit
f2d68cf7d4
5
.changes/config-incognito.md
Normal file
5
.changes/config-incognito.md
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
'tauri': 'patch:feat'
|
||||||
|
---
|
||||||
|
|
||||||
|
Add `incognito` option to the window configuration object.
|
5
.changes/core-incognito.md
Normal file
5
.changes/core-incognito.md
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
'tauri': 'patch:feat'
|
||||||
|
---
|
||||||
|
|
||||||
|
Add `WindowBuilder::incognito`
|
@ -184,10 +184,10 @@ pub fn context_codegen(data: ContextData) -> Result<TokenStream, EmbeddedAssetsE
|
|||||||
.tauri
|
.tauri
|
||||||
.security
|
.security
|
||||||
.dev_csp
|
.dev_csp
|
||||||
.clone()
|
.as_ref()
|
||||||
.or_else(|| config.tauri.security.csp.clone())
|
.or(config.tauri.security.csp.as_ref())
|
||||||
} else {
|
} else {
|
||||||
config.tauri.security.csp.clone()
|
config.tauri.security.csp.as_ref()
|
||||||
};
|
};
|
||||||
if csp.is_some() {
|
if csp.is_some() {
|
||||||
options = options.with_csp();
|
options = options.with_csp();
|
||||||
|
@ -514,6 +514,11 @@
|
|||||||
"type": "null"
|
"type": "null"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
"incognito": {
|
||||||
|
"description": "Whether or not the webview should be launched in incognito mode.\n\n## Platform-specific:\n\n- **Android**: Unsupported.",
|
||||||
|
"default": false,
|
||||||
|
"type": "boolean"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"additionalProperties": false
|
"additionalProperties": false
|
||||||
|
@ -34,7 +34,7 @@ fn get_env_var<R: FnOnce(String) -> String>(
|
|||||||
|
|
||||||
pub fn entry_point(_attributes: TokenStream, item: TokenStream) -> TokenStream {
|
pub fn entry_point(_attributes: TokenStream, item: TokenStream) -> TokenStream {
|
||||||
let function = parse_macro_input!(item as ItemFn);
|
let function = parse_macro_input!(item as ItemFn);
|
||||||
let function_name = function.sig.ident.clone();
|
let function_name = &function.sig.ident;
|
||||||
|
|
||||||
let mut error = None;
|
let mut error = None;
|
||||||
let domain = get_env_var("TAURI_ANDROID_PACKAGE_PREFIX", |r| r, &mut error, &function);
|
let domain = get_env_var("TAURI_ANDROID_PACKAGE_PREFIX", |r| r, &mut error, &function);
|
||||||
|
@ -3133,6 +3133,10 @@ fn create_webview<T: UserEvent>(
|
|||||||
webview_builder.webview.clipboard = true;
|
webview_builder.webview.clipboard = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if webview_attributes.incognito {
|
||||||
|
webview_builder.webview.incognito = true;
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(any(debug_assertions, feature = "devtools"))]
|
#[cfg(any(debug_assertions, feature = "devtools"))]
|
||||||
{
|
{
|
||||||
webview_builder = webview_builder.with_devtools(true);
|
webview_builder = webview_builder.with_devtools(true);
|
||||||
|
@ -30,11 +30,13 @@ pub struct WebviewAttributes {
|
|||||||
pub accept_first_mouse: bool,
|
pub accept_first_mouse: bool,
|
||||||
pub additional_browser_args: Option<String>,
|
pub additional_browser_args: Option<String>,
|
||||||
pub window_effects: Option<WindowEffectsConfig>,
|
pub window_effects: Option<WindowEffectsConfig>,
|
||||||
|
pub incognito: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl From<&WindowConfig> for WebviewAttributes {
|
impl From<&WindowConfig> for WebviewAttributes {
|
||||||
fn from(config: &WindowConfig) -> Self {
|
fn from(config: &WindowConfig) -> Self {
|
||||||
let mut builder = Self::new(config.url.clone());
|
let mut builder = Self::new(config.url.clone());
|
||||||
|
builder = builder.incognito(config.incognito);
|
||||||
builder = builder.accept_first_mouse(config.accept_first_mouse);
|
builder = builder.accept_first_mouse(config.accept_first_mouse);
|
||||||
if !config.file_drop_enabled {
|
if !config.file_drop_enabled {
|
||||||
builder = builder.disable_file_drop_handler();
|
builder = builder.disable_file_drop_handler();
|
||||||
@ -65,6 +67,7 @@ impl WebviewAttributes {
|
|||||||
accept_first_mouse: false,
|
accept_first_mouse: false,
|
||||||
additional_browser_args: None,
|
additional_browser_args: None,
|
||||||
window_effects: None,
|
window_effects: None,
|
||||||
|
incognito: false,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -126,6 +129,13 @@ impl WebviewAttributes {
|
|||||||
self.window_effects = Some(effects);
|
self.window_effects = Some(effects);
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Enable or disable incognito mode for the WebView.
|
||||||
|
#[must_use]
|
||||||
|
pub fn incognito(mut self, incognito: bool) -> Self {
|
||||||
|
self.incognito = incognito;
|
||||||
|
self
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Do **NOT** implement this trait except for use in a custom [`Runtime`](crate::Runtime).
|
/// Do **NOT** implement this trait except for use in a custom [`Runtime`](crate::Runtime).
|
||||||
|
@ -938,6 +938,13 @@ pub struct WindowConfig {
|
|||||||
/// - **Linux**: Unsupported
|
/// - **Linux**: Unsupported
|
||||||
#[serde(default, alias = "window-effects")]
|
#[serde(default, alias = "window-effects")]
|
||||||
pub window_effects: Option<WindowEffectsConfig>,
|
pub window_effects: Option<WindowEffectsConfig>,
|
||||||
|
/// Whether or not the webview should be launched in incognito mode.
|
||||||
|
///
|
||||||
|
/// ## Platform-specific:
|
||||||
|
///
|
||||||
|
/// - **Android**: Unsupported.
|
||||||
|
#[serde(default)]
|
||||||
|
pub incognito: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for WindowConfig {
|
impl Default for WindowConfig {
|
||||||
@ -978,6 +985,7 @@ impl Default for WindowConfig {
|
|||||||
additional_browser_args: None,
|
additional_browser_args: None,
|
||||||
shadow: true,
|
shadow: true,
|
||||||
window_effects: None,
|
window_effects: None,
|
||||||
|
incognito: false,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2161,6 +2169,7 @@ mod build {
|
|||||||
let additional_browser_args = opt_str_lit(self.additional_browser_args.as_ref());
|
let additional_browser_args = opt_str_lit(self.additional_browser_args.as_ref());
|
||||||
let shadow = self.shadow;
|
let shadow = self.shadow;
|
||||||
let window_effects = opt_lit(self.window_effects.as_ref());
|
let window_effects = opt_lit(self.window_effects.as_ref());
|
||||||
|
let incognito = self.incognito;
|
||||||
|
|
||||||
literal_struct!(
|
literal_struct!(
|
||||||
tokens,
|
tokens,
|
||||||
@ -2199,7 +2208,8 @@ mod build {
|
|||||||
tabbing_identifier,
|
tabbing_identifier,
|
||||||
additional_browser_args,
|
additional_browser_args,
|
||||||
shadow,
|
shadow,
|
||||||
window_effects
|
window_effects,
|
||||||
|
incognito
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -235,14 +235,12 @@ mod test {
|
|||||||
|
|
||||||
// check to see if on_event properly grabs the stored function from listen.
|
// check to see if on_event properly grabs the stored function from listen.
|
||||||
#[test]
|
#[test]
|
||||||
fn check_on_event(e in "[a-z]+", d in "[a-z]+") {
|
fn check_on_event(key in "[a-z]+", d in "[a-z]+") {
|
||||||
let listeners: Listeners = Default::default();
|
let listeners: Listeners = Default::default();
|
||||||
// clone e as the key
|
|
||||||
let key = e.clone();
|
|
||||||
// call listen with e and the event_fn dummy func
|
// call listen with e and the event_fn dummy func
|
||||||
listeners.listen(e.clone(), None, event_fn);
|
listeners.listen(key.clone(), None, event_fn);
|
||||||
// call on event with e and d.
|
// call on event with e and d.
|
||||||
listeners.trigger(&e, None, Some(d));
|
listeners.trigger(&key, None, Some(d));
|
||||||
|
|
||||||
// lock the mutex
|
// lock the mutex
|
||||||
let l = listeners.inner.handlers.lock().unwrap();
|
let l = listeners.inner.handlers.lock().unwrap();
|
||||||
|
@ -741,6 +741,17 @@ impl<'a, R: Runtime> WindowBuilder<'a, R> {
|
|||||||
self.webview_attributes.clipboard = true;
|
self.webview_attributes.clipboard = true;
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Enable or disable incognito mode for the WebView..
|
||||||
|
///
|
||||||
|
/// ## Platform-specific:
|
||||||
|
///
|
||||||
|
/// **Android**: Unsupported.
|
||||||
|
#[must_use]
|
||||||
|
pub fn incognito(mut self, incognito: bool) -> Self {
|
||||||
|
self.webview_attributes.incognito = incognito;
|
||||||
|
self
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Key for a JS event listener.
|
/// Key for a JS event listener.
|
||||||
|
@ -514,6 +514,11 @@
|
|||||||
"type": "null"
|
"type": "null"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
"incognito": {
|
||||||
|
"description": "Whether or not the webview should be launched in incognito mode.\n\n## Platform-specific:\n\n- **Android**: Unsupported.",
|
||||||
|
"default": false,
|
||||||
|
"type": "boolean"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"additionalProperties": false
|
"additionalProperties": false
|
||||||
|
Loading…
Reference in New Issue
Block a user