From 8683f4d43e776418024684beae53aead7fe1ad59 Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Mon, 3 Apr 2017 12:00:35 +0200 Subject: [PATCH] Reuse HttpState in ResourceGroup --- components/net/http_loader.rs | 1 + components/net/resource_thread.rs | 35 +++++++++++++------------------ 2 files changed, 16 insertions(+), 20 deletions(-) diff --git a/components/net/http_loader.rs b/components/net/http_loader.rs index 7f300202782..fc55b110f1e 100644 --- a/components/net/http_loader.rs +++ b/components/net/http_loader.rs @@ -65,6 +65,7 @@ fn read_block(reader: &mut R) -> Result { } } +#[derive(Clone)] pub struct HttpState { pub hsts_list: Arc>, pub cookie_jar: Arc>, diff --git a/components/net/resource_thread.rs b/components/net/resource_thread.rs index c58d71fd992..76935b27b4e 100644 --- a/components/net/resource_thread.rs +++ b/components/net/resource_thread.rs @@ -43,9 +43,7 @@ const TFD_PROVIDER: &'static TFDProvider = &TFDProvider; #[derive(Clone)] pub struct ResourceGroup { - cookie_jar: Arc>, - auth_cache: Arc>, - hsts_list: Arc>, + http_state: HttpState, ssl_client: OpensslClient, connector: Arc>, } @@ -105,18 +103,19 @@ fn create_resource_groups(config_dir: Option<&Path>) read_json_from_file(&mut hsts_list, config_dir, "hsts_list.json"); read_json_from_file(&mut cookie_jar, config_dir, "cookie_jar.json"); } - let ssl_client = create_ssl_client("certs"); - let resource_group = ResourceGroup { + let http_state = HttpState { cookie_jar: Arc::new(RwLock::new(cookie_jar)), auth_cache: Arc::new(RwLock::new(auth_cache)), hsts_list: Arc::new(RwLock::new(hsts_list.clone())), + }; + let ssl_client = create_ssl_client("certs"); + let resource_group = ResourceGroup { + http_state: http_state, ssl_client: ssl_client.clone(), connector: create_http_connector(ssl_client.clone()), }; let private_resource_group = ResourceGroup { - cookie_jar: Arc::new(RwLock::new(CookieStorage::new(150))), - auth_cache: Arc::new(RwLock::new(AuthCache::new())), - hsts_list: Arc::new(RwLock::new(HstsList::new())), + http_state: HttpState::new(), ssl_client: ssl_client.clone(), connector: create_http_connector(ssl_client), }; @@ -170,14 +169,14 @@ impl ResourceChannelManager { } } CoreResourceMsg::GetCookiesForUrl(url, consumer, source) => { - let mut cookie_jar = group.cookie_jar.write().unwrap(); + let mut cookie_jar = group.http_state.cookie_jar.write().unwrap(); consumer.send(cookie_jar.cookies_for_url(&url, source)).unwrap(); } CoreResourceMsg::NetworkMediator(mediator_chan) => { self.resource_manager.swmanager_chan = Some(mediator_chan) } CoreResourceMsg::GetCookiesDataForUrl(url, consumer, source) => { - let mut cookie_jar = group.cookie_jar.write().unwrap(); + let mut cookie_jar = group.http_state.cookie_jar.write().unwrap(); let cookies = cookie_jar.cookies_data_for_url(&url, source).map(Serde).collect(); consumer.send(cookies).unwrap(); } @@ -193,15 +192,15 @@ impl ResourceChannelManager { CoreResourceMsg::ToFileManager(msg) => self.resource_manager.filemanager.handle(msg, TFD_PROVIDER), CoreResourceMsg::Exit(sender) => { if let Some(ref config_dir) = self.config_dir { - match group.auth_cache.read() { + match group.http_state.auth_cache.read() { Ok(auth_cache) => write_json_to_file(&*auth_cache, config_dir, "auth_cache.json"), Err(_) => warn!("Error writing auth cache to disk"), } - match group.cookie_jar.read() { + match group.http_state.cookie_jar.read() { Ok(jar) => write_json_to_file(&*jar, config_dir, "cookie_jar.json"), Err(_) => warn!("Error writing cookie jar to disk"), } - match group.hsts_list.read() { + match group.http_state.hsts_list.read() { Ok(hsts) => write_json_to_file(&*hsts, config_dir, "hsts_list.json"), Err(_) => warn!("Error writing hsts list to disk"), } @@ -317,7 +316,7 @@ impl CoreResourceManager { source: CookieSource, resource_group: &ResourceGroup) { if let Some(cookie) = cookie::Cookie::new_wrapped(cookie, request, source) { - let mut cookie_jar = resource_group.cookie_jar.write().unwrap(); + let mut cookie_jar = resource_group.http_state.cookie_jar.write().unwrap(); cookie_jar.push(cookie, request, source) } } @@ -326,11 +325,7 @@ impl CoreResourceManager { init: RequestInit, mut sender: IpcSender, group: &ResourceGroup) { - let http_state = HttpState { - hsts_list: group.hsts_list.clone(), - cookie_jar: group.cookie_jar.clone(), - auth_cache: group.auth_cache.clone(), - }; + let http_state = group.http_state.clone(); let ua = self.user_agent.clone(); let dc = self.devtools_chan.clone(); let filemanager = self.filemanager.clone(); @@ -360,6 +355,6 @@ impl CoreResourceManager { resource_grp: &ResourceGroup) { websocket_loader::init(connect, connect_data, - resource_grp.cookie_jar.clone()); + resource_grp.http_state.cookie_jar.clone()); } }