mirror of
https://github.com/servo/servo.git
synced 2025-08-04 21:20:23 +01:00
Reuse HttpState in ResourceGroup
This commit is contained in:
parent
016fee016b
commit
8683f4d43e
2 changed files with 16 additions and 20 deletions
|
@ -65,6 +65,7 @@ fn read_block<R: Read>(reader: &mut R) -> Result<Data, ()> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Clone)]
|
||||||
pub struct HttpState {
|
pub struct HttpState {
|
||||||
pub hsts_list: Arc<RwLock<HstsList>>,
|
pub hsts_list: Arc<RwLock<HstsList>>,
|
||||||
pub cookie_jar: Arc<RwLock<CookieStorage>>,
|
pub cookie_jar: Arc<RwLock<CookieStorage>>,
|
||||||
|
|
|
@ -43,9 +43,7 @@ const TFD_PROVIDER: &'static TFDProvider = &TFDProvider;
|
||||||
|
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub struct ResourceGroup {
|
pub struct ResourceGroup {
|
||||||
cookie_jar: Arc<RwLock<CookieStorage>>,
|
http_state: HttpState,
|
||||||
auth_cache: Arc<RwLock<AuthCache>>,
|
|
||||||
hsts_list: Arc<RwLock<HstsList>>,
|
|
||||||
ssl_client: OpensslClient,
|
ssl_client: OpensslClient,
|
||||||
connector: Arc<Pool<Connector>>,
|
connector: Arc<Pool<Connector>>,
|
||||||
}
|
}
|
||||||
|
@ -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 hsts_list, config_dir, "hsts_list.json");
|
||||||
read_json_from_file(&mut cookie_jar, config_dir, "cookie_jar.json");
|
read_json_from_file(&mut cookie_jar, config_dir, "cookie_jar.json");
|
||||||
}
|
}
|
||||||
let ssl_client = create_ssl_client("certs");
|
let http_state = HttpState {
|
||||||
let resource_group = ResourceGroup {
|
|
||||||
cookie_jar: Arc::new(RwLock::new(cookie_jar)),
|
cookie_jar: Arc::new(RwLock::new(cookie_jar)),
|
||||||
auth_cache: Arc::new(RwLock::new(auth_cache)),
|
auth_cache: Arc::new(RwLock::new(auth_cache)),
|
||||||
hsts_list: Arc::new(RwLock::new(hsts_list.clone())),
|
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(),
|
ssl_client: ssl_client.clone(),
|
||||||
connector: create_http_connector(ssl_client.clone()),
|
connector: create_http_connector(ssl_client.clone()),
|
||||||
};
|
};
|
||||||
let private_resource_group = ResourceGroup {
|
let private_resource_group = ResourceGroup {
|
||||||
cookie_jar: Arc::new(RwLock::new(CookieStorage::new(150))),
|
http_state: HttpState::new(),
|
||||||
auth_cache: Arc::new(RwLock::new(AuthCache::new())),
|
|
||||||
hsts_list: Arc::new(RwLock::new(HstsList::new())),
|
|
||||||
ssl_client: ssl_client.clone(),
|
ssl_client: ssl_client.clone(),
|
||||||
connector: create_http_connector(ssl_client),
|
connector: create_http_connector(ssl_client),
|
||||||
};
|
};
|
||||||
|
@ -170,14 +169,14 @@ impl ResourceChannelManager {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
CoreResourceMsg::GetCookiesForUrl(url, consumer, source) => {
|
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();
|
consumer.send(cookie_jar.cookies_for_url(&url, source)).unwrap();
|
||||||
}
|
}
|
||||||
CoreResourceMsg::NetworkMediator(mediator_chan) => {
|
CoreResourceMsg::NetworkMediator(mediator_chan) => {
|
||||||
self.resource_manager.swmanager_chan = Some(mediator_chan)
|
self.resource_manager.swmanager_chan = Some(mediator_chan)
|
||||||
}
|
}
|
||||||
CoreResourceMsg::GetCookiesDataForUrl(url, consumer, source) => {
|
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();
|
let cookies = cookie_jar.cookies_data_for_url(&url, source).map(Serde).collect();
|
||||||
consumer.send(cookies).unwrap();
|
consumer.send(cookies).unwrap();
|
||||||
}
|
}
|
||||||
|
@ -193,15 +192,15 @@ impl ResourceChannelManager {
|
||||||
CoreResourceMsg::ToFileManager(msg) => self.resource_manager.filemanager.handle(msg, TFD_PROVIDER),
|
CoreResourceMsg::ToFileManager(msg) => self.resource_manager.filemanager.handle(msg, TFD_PROVIDER),
|
||||||
CoreResourceMsg::Exit(sender) => {
|
CoreResourceMsg::Exit(sender) => {
|
||||||
if let Some(ref config_dir) = self.config_dir {
|
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"),
|
Ok(auth_cache) => write_json_to_file(&*auth_cache, config_dir, "auth_cache.json"),
|
||||||
Err(_) => warn!("Error writing auth cache to disk"),
|
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"),
|
Ok(jar) => write_json_to_file(&*jar, config_dir, "cookie_jar.json"),
|
||||||
Err(_) => warn!("Error writing cookie jar to disk"),
|
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"),
|
Ok(hsts) => write_json_to_file(&*hsts, config_dir, "hsts_list.json"),
|
||||||
Err(_) => warn!("Error writing hsts list to disk"),
|
Err(_) => warn!("Error writing hsts list to disk"),
|
||||||
}
|
}
|
||||||
|
@ -317,7 +316,7 @@ impl CoreResourceManager {
|
||||||
source: CookieSource,
|
source: CookieSource,
|
||||||
resource_group: &ResourceGroup) {
|
resource_group: &ResourceGroup) {
|
||||||
if let Some(cookie) = cookie::Cookie::new_wrapped(cookie, request, source) {
|
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)
|
cookie_jar.push(cookie, request, source)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -326,11 +325,7 @@ impl CoreResourceManager {
|
||||||
init: RequestInit,
|
init: RequestInit,
|
||||||
mut sender: IpcSender<FetchResponseMsg>,
|
mut sender: IpcSender<FetchResponseMsg>,
|
||||||
group: &ResourceGroup) {
|
group: &ResourceGroup) {
|
||||||
let http_state = HttpState {
|
let http_state = group.http_state.clone();
|
||||||
hsts_list: group.hsts_list.clone(),
|
|
||||||
cookie_jar: group.cookie_jar.clone(),
|
|
||||||
auth_cache: group.auth_cache.clone(),
|
|
||||||
};
|
|
||||||
let ua = self.user_agent.clone();
|
let ua = self.user_agent.clone();
|
||||||
let dc = self.devtools_chan.clone();
|
let dc = self.devtools_chan.clone();
|
||||||
let filemanager = self.filemanager.clone();
|
let filemanager = self.filemanager.clone();
|
||||||
|
@ -360,6 +355,6 @@ impl CoreResourceManager {
|
||||||
resource_grp: &ResourceGroup) {
|
resource_grp: &ResourceGroup) {
|
||||||
websocket_loader::init(connect,
|
websocket_loader::init(connect,
|
||||||
connect_data,
|
connect_data,
|
||||||
resource_grp.cookie_jar.clone());
|
resource_grp.http_state.cookie_jar.clone());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue