@@ -1399,6 +1399,8 @@ pub enum WebviewMessage {
1399
1399
EvaluateScript ( String , Sender < ( ) > , tracing:: Span ) ,
1400
1400
CookiesForUrl ( Url , Sender < Result < Vec < tauri_runtime:: Cookie < ' static > > > > ) ,
1401
1401
Cookies ( Sender < Result < Vec < tauri_runtime:: Cookie < ' static > > > > ) ,
1402
+ SetCookie ( tauri_runtime:: Cookie < ' static > ) ,
1403
+ DeleteCookie ( tauri_runtime:: Cookie < ' static > ) ,
1402
1404
WebviewEvent ( WebviewEvent ) ,
1403
1405
SynthesizedWindowEvent ( SynthesizedWindowEvent ) ,
1404
1406
Navigate ( Url ) ,
@@ -1688,6 +1690,30 @@ impl<T: UserEvent> WebviewDispatch<T> for WryWebviewDispatcher<T> {
1688
1690
webview_getter ! ( self , WebviewMessage :: Cookies ) ?
1689
1691
}
1690
1692
1693
+ fn set_cookie ( & self , cookie : Cookie < ' _ > ) -> Result < ( ) > {
1694
+ send_user_message (
1695
+ & self . context ,
1696
+ Message :: Webview (
1697
+ * self . window_id . lock ( ) . unwrap ( ) ,
1698
+ self . webview_id ,
1699
+ WebviewMessage :: SetCookie ( cookie. into_owned ( ) ) ,
1700
+ ) ,
1701
+ ) ?;
1702
+ Ok ( ( ) )
1703
+ }
1704
+
1705
+ fn delete_cookie ( & self , cookie : Cookie < ' _ > ) -> Result < ( ) > {
1706
+ send_user_message (
1707
+ & self . context ,
1708
+ Message :: Webview (
1709
+ * self . window_id . lock ( ) . unwrap ( ) ,
1710
+ self . webview_id ,
1711
+ WebviewMessage :: DeleteCookie ( cookie. clone ( ) . into_owned ( ) ) ,
1712
+ ) ,
1713
+ ) ?;
1714
+ Ok ( ( ) )
1715
+ }
1716
+
1691
1717
fn set_auto_resize ( & self , auto_resize : bool ) -> Result < ( ) > {
1692
1718
send_user_message (
1693
1719
& self . context ,
@@ -3685,6 +3711,18 @@ fn handle_user_message<T: UserEvent>(
3685
3711
. unwrap ( ) ;
3686
3712
}
3687
3713
3714
+ WebviewMessage :: SetCookie ( cookie) => {
3715
+ if let Err ( e) = webview. set_cookie ( & cookie) {
3716
+ log:: error!( "failed to set webview cookie: {e}" ) ;
3717
+ }
3718
+ }
3719
+
3720
+ WebviewMessage :: DeleteCookie ( cookie) => {
3721
+ if let Err ( e) = webview. delete_cookie ( & cookie) {
3722
+ log:: error!( "failed to delete webview cookie: {e}" ) ;
3723
+ }
3724
+ }
3725
+
3688
3726
WebviewMessage :: CookiesForUrl ( url, tx) => {
3689
3727
let webview_cookies = webview
3690
3728
. cookies_for_url ( url. as_str ( ) )
0 commit comments