@@ -55,13 +55,9 @@ use wry::{
5555} ;
5656
5757use std:: {
58- collections:: {
59- hash_map:: Entry :: { Occupied , Vacant } ,
60- HashMap ,
61- } ,
58+ collections:: HashMap ,
6259 convert:: TryFrom ,
6360 fs:: read,
64- path:: PathBuf ,
6561 sync:: {
6662 atomic:: { AtomicBool , Ordering } ,
6763 mpsc:: { channel, Sender } ,
@@ -79,10 +75,8 @@ mod mime_type;
7975use mime_type:: MimeType ;
8076
8177type MainTask = Arc < Mutex < Option < Box < dyn FnOnce ( ) + Send > > > > ;
82- type WebContextStore = Mutex < HashMap < Option < PathBuf > , WebContext > > ;
83- type CreateWebviewHandler = Box <
84- dyn FnOnce ( & EventLoopWindowTarget < Message > , & WebContextStore ) -> Result < WebviewWrapper > + Send ,
85- > ;
78+ type CreateWebviewHandler =
79+ Box < dyn FnOnce ( & EventLoopWindowTarget < Message > ) -> Result < WebviewWrapper > + Send > ;
8680type WindowEventHandler = Box < dyn Fn ( & WindowEvent ) + Send > ;
8781type WindowEventListenersMap = Arc < Mutex < HashMap < Uuid , WindowEventHandler > > > ;
8882type WindowEventListeners = Arc < Mutex < HashMap < WindowId , WindowEventListenersMap > > > ;
@@ -872,9 +866,9 @@ impl Dispatch for WryDispatcher {
872866 . context
873867 . proxy
874868 . send_event ( Message :: CreateWebview (
875- Arc :: new ( Mutex :: new ( Some ( Box :: new (
876- move |event_loop , web_context| create_webview ( event_loop, web_context , context, pending) ,
877- ) ) ) ) ,
869+ Arc :: new ( Mutex :: new ( Some ( Box :: new ( move |event_loop| {
870+ create_webview ( event_loop, context, pending)
871+ } ) ) ) ) ,
878872 tx,
879873 ) )
880874 . map_err ( |_| Error :: FailedToSendMessage ) ?;
@@ -1148,7 +1142,6 @@ pub struct Wry {
11481142 clipboard_manager_handle : ClipboardManagerWrapper ,
11491143 is_event_loop_running : Arc < AtomicBool > ,
11501144 event_loop : EventLoop < Message > ,
1151- web_context : WebContextStore ,
11521145 webviews : Arc < Mutex < HashMap < WindowId , WebviewWrapper > > > ,
11531146 window_event_listeners : WindowEventListeners ,
11541147 #[ cfg( feature = "menu" ) ]
@@ -1179,11 +1172,9 @@ impl RuntimeHandle for WryHandle {
11791172 . dispatcher_context
11801173 . proxy
11811174 . send_event ( Message :: CreateWebview (
1182- Arc :: new ( Mutex :: new ( Some ( Box :: new (
1183- move |event_loop, web_context| {
1184- create_webview ( event_loop, web_context, dispatcher_context, pending)
1185- } ,
1186- ) ) ) ) ,
1175+ Arc :: new ( Mutex :: new ( Some ( Box :: new ( move |event_loop| {
1176+ create_webview ( event_loop, dispatcher_context, pending)
1177+ } ) ) ) ) ,
11871178 tx,
11881179 ) )
11891180 . map_err ( |_| Error :: FailedToSendMessage ) ?;
@@ -1245,7 +1236,6 @@ impl Runtime for Wry {
12451236 clipboard_manager_handle,
12461237 is_event_loop_running,
12471238 event_loop,
1248- web_context : Default :: default ( ) ,
12491239 webviews : Default :: default ( ) ,
12501240 window_event_listeners : Default :: default ( ) ,
12511241 #[ cfg( feature = "menu" ) ]
@@ -1284,7 +1274,6 @@ impl Runtime for Wry {
12841274 let proxy = self . event_loop . create_proxy ( ) ;
12851275 let webview = create_webview (
12861276 & self . event_loop ,
1287- & self . web_context ,
12881277 DispatcherContext {
12891278 main_thread_id : self . main_thread_id ,
12901279 is_event_loop_running : self . is_event_loop_running . clone ( ) ,
@@ -1359,7 +1348,6 @@ impl Runtime for Wry {
13591348 fn run_iteration < F : Fn ( RunEvent ) + ' static > ( & mut self , callback : F ) -> RunIteration {
13601349 use wry:: application:: platform:: run_return:: EventLoopExtRunReturn ;
13611350 let webviews = self . webviews . clone ( ) ;
1362- let web_context = & self . web_context ;
13631351 let window_event_listeners = self . window_event_listeners . clone ( ) ;
13641352 #[ cfg( feature = "menu" ) ]
13651353 let menu_event_listeners = self . menu_event_listeners . clone ( ) ;
@@ -1394,7 +1382,6 @@ impl Runtime for Wry {
13941382 #[ cfg( feature = "system-tray" ) ]
13951383 tray_context : tray_context. clone ( ) ,
13961384 } ,
1397- web_context,
13981385 ) ;
13991386 } ) ;
14001387 self . is_event_loop_running . store ( false , Ordering :: Relaxed ) ;
@@ -1405,7 +1392,6 @@ impl Runtime for Wry {
14051392 fn run < F : Fn ( RunEvent ) + ' static > ( self , callback : F ) {
14061393 self . is_event_loop_running . store ( true , Ordering :: Relaxed ) ;
14071394 let webviews = self . webviews . clone ( ) ;
1408- let web_context = self . web_context ;
14091395 let window_event_listeners = self . window_event_listeners . clone ( ) ;
14101396 #[ cfg( feature = "menu" ) ]
14111397 let menu_event_listeners = self . menu_event_listeners . clone ( ) ;
@@ -1432,7 +1418,6 @@ impl Runtime for Wry {
14321418 #[ cfg( feature = "system-tray" ) ]
14331419 tray_context : tray_context. clone ( ) ,
14341420 } ,
1435- & web_context,
14361421 ) ;
14371422 } )
14381423 }
@@ -1456,7 +1441,6 @@ fn handle_event_loop(
14561441 event_loop : & EventLoopWindowTarget < Message > ,
14571442 control_flow : & mut ControlFlow ,
14581443 context : EventLoopIterationContext < ' _ > ,
1459- web_context : & WebContextStore ,
14601444) -> RunIteration {
14611445 let EventLoopIterationContext {
14621446 callback,
@@ -1729,7 +1713,7 @@ fn handle_event_loop(
17291713 let mut lock = handler. lock ( ) . expect ( "poisoned create webview handler" ) ;
17301714 std:: mem:: take ( & mut * lock) . unwrap ( )
17311715 } ;
1732- match handler ( event_loop, web_context ) {
1716+ match handler ( event_loop) {
17331717 Ok ( webview) => {
17341718 let window_id = webview. inner . window ( ) . id ( ) ;
17351719 webviews. insert ( window_id, webview) ;
@@ -1740,7 +1724,6 @@ fn handle_event_loop(
17401724 }
17411725 }
17421726 }
1743-
17441727 #[ cfg( feature = "system-tray" ) ]
17451728 Message :: Tray ( tray_message) => match tray_message {
17461729 TrayMessage :: UpdateItem ( menu_id, update) => {
@@ -1858,7 +1841,6 @@ fn center_window(window: &Window) -> Result<()> {
18581841
18591842fn create_webview < P : Params < Runtime = Wry > > (
18601843 event_loop : & EventLoopWindowTarget < Message > ,
1861- web_context : & WebContextStore ,
18621844 context : DispatcherContext ,
18631845 pending : PendingWindow < P > ,
18641846) -> Result < WebviewWrapper > {
@@ -1925,27 +1907,13 @@ fn create_webview<P: Params<Runtime = Wry>>(
19251907 . map_err ( |_| wry:: Error :: InitScriptError )
19261908 } ) ;
19271909 }
1928-
1910+ let context = WebContext :: new ( webview_attributes. data_directory ) ;
1911+ webview_builder = webview_builder. with_web_context ( & context) ;
19291912 for script in webview_attributes. initialization_scripts {
19301913 webview_builder = webview_builder. with_initialization_script ( & script) ;
19311914 }
19321915
1933- let mut web_context = web_context. lock ( ) . expect ( "poisoned WebContext store" ) ;
1934- let is_first_context = web_context. is_empty ( ) ;
1935- let web_context = match web_context. entry ( webview_attributes. data_directory ) {
1936- Occupied ( occupied) => occupied. into_mut ( ) ,
1937- Vacant ( vacant) => {
1938- let mut web_context = WebContext :: new ( vacant. key ( ) . clone ( ) ) ;
1939- web_context. set_allows_automation ( match std:: env:: var ( "TAURI_AUTOMATION" ) . as_deref ( ) {
1940- Ok ( "true" ) => is_first_context,
1941- _ => false ,
1942- } ) ;
1943- vacant. insert ( web_context)
1944- }
1945- } ;
1946-
19471916 let webview = webview_builder
1948- . with_web_context ( web_context)
19491917 . build ( )
19501918 . map_err ( |e| Error :: CreateWebview ( Box :: new ( e) ) ) ?;
19511919
0 commit comments