diff --git a/components/net/resource_thread.rs b/components/net/resource_thread.rs index 7d97ce65780..e43451f0806 100644 --- a/components/net/resource_thread.rs +++ b/components/net/resource_thread.rs @@ -174,8 +174,8 @@ pub fn new_resource_threads(user_agent: String, devtools_chan, profiler_chan, filemanager_chan.clone(), - config_dir); - let storage: IpcSender = StorageThreadFactory::new(); + config_dir.clone()); + let storage: IpcSender = StorageThreadFactory::new(config_dir); (ResourceThreads::new(public_core, storage.clone(), filemanager_chan.clone()), ResourceThreads::new(private_core, storage, filemanager_chan)) } diff --git a/components/net/storage_thread.rs b/components/net/storage_thread.rs index 3432e6aa873..0e7c7647420 100644 --- a/components/net/storage_thread.rs +++ b/components/net/storage_thread.rs @@ -8,23 +8,22 @@ use resource_thread; use std::borrow::ToOwned; use std::collections::BTreeMap; use std::collections::HashMap; -use std::path::Path; +use std::path::PathBuf; use url::Url; -use util::opts; use util::thread::spawn_named; const QUOTA_SIZE_LIMIT: usize = 5 * 1024 * 1024; pub trait StorageThreadFactory { - fn new() -> Self; + fn new(config_dir: Option) -> Self; } impl StorageThreadFactory for IpcSender { /// Create a storage thread - fn new() -> IpcSender { + fn new(config_dir: Option) -> IpcSender { let (chan, port) = ipc::channel().unwrap(); spawn_named("StorageManager".to_owned(), move || { - StorageManager::new(port).start(); + StorageManager::new(port, config_dir).start(); }); chan } @@ -34,19 +33,22 @@ struct StorageManager { port: IpcReceiver, session_data: HashMap)>, local_data: HashMap)>, + config_dir: Option, } impl StorageManager { - fn new(port: IpcReceiver) -> StorageManager { + fn new(port: IpcReceiver, + config_dir: Option) + -> StorageManager { let mut local_data = HashMap::new(); - if let Some(ref config_dir) = opts::get().config_dir { - resource_thread::read_json_from_file( - &mut local_data, Path::new(config_dir), "local_data.json"); + if let Some(ref config_dir) = config_dir { + resource_thread::read_json_from_file(&mut local_data, config_dir, "local_data.json"); } StorageManager { port: port, session_data: HashMap::new(), local_data: local_data, + config_dir: config_dir, } } } @@ -77,9 +79,8 @@ impl StorageManager { self.clear(sender, url, storage_type) } StorageThreadMsg::Exit(sender) => { - if let Some(ref config_dir) = opts::get().config_dir { - resource_thread::write_json_to_file( - &self.local_data, Path::new(config_dir), "local_data.json"); + if let Some(ref config_dir) = self.config_dir { + resource_thread::write_json_to_file(&self.local_data, config_dir, "local_data.json"); } let _ = sender.send(()); break