aboutsummaryrefslogtreecommitdiffstats
path: root/components
diff options
context:
space:
mode:
authorMs2ger <Ms2ger@gmail.com>2016-10-13 13:39:42 +0200
committerMs2ger <Ms2ger@gmail.com>2016-10-14 11:30:08 +0200
commitd82038775807faf3dcce7ec72e1f0d5213105888 (patch)
tree6cc84455d14aaeff55c3d3f49f83782b2ecba70b /components
parent53b6343f3c2bb54bf2f541d88efcb4ce47e4eb7a (diff)
downloadservo-d82038775807faf3dcce7ec72e1f0d5213105888.tar.gz
servo-d82038775807faf3dcce7ec72e1f0d5213105888.zip
Stop wrapping FileManager in an Arc.
It already contains an Arc internally.
Diffstat (limited to 'components')
-rw-r--r--components/net/blob_loader.rs4
-rw-r--r--components/net/filemanager_thread.rs9
-rw-r--r--components/net/resource_thread.rs4
3 files changed, 13 insertions, 4 deletions
diff --git a/components/net/blob_loader.rs b/components/net/blob_loader.rs
index 1bf931dac32..bb9537e48dd 100644
--- a/components/net/blob_loader.rs
+++ b/components/net/blob_loader.rs
@@ -23,7 +23,7 @@ use util::thread::spawn_named;
// TODO: Check on GET
// https://w3c.github.io/FileAPI/#requestResponseModel
-pub fn factory<UI: 'static + UIProvider>(filemanager: Arc<FileManager<UI>>)
+pub fn factory<UI: 'static + UIProvider>(filemanager: FileManager<UI>)
-> Box<FnBox(LoadData, LoadConsumer, Arc<MimeClassifier>, CancellationListener) + Send> {
box move |load_data: LoadData, start_chan, classifier, cancel_listener| {
spawn_named(format!("blob loader for {}", load_data.url), move || {
@@ -35,7 +35,7 @@ pub fn factory<UI: 'static + UIProvider>(filemanager: Arc<FileManager<UI>>)
fn load_blob<UI: 'static + UIProvider>
(load_data: LoadData, start_chan: LoadConsumer,
classifier: Arc<MimeClassifier>,
- filemanager: Arc<FileManager<UI>>,
+ filemanager: FileManager<UI>,
cancel_listener: CancellationListener) {
let (chan, recv) = ipc::channel().unwrap();
if let Ok((id, origin, _fragment)) = parse_blob_url(&load_data.url.clone()) {
diff --git a/components/net/filemanager_thread.rs b/components/net/filemanager_thread.rs
index ac8ad70d1bc..d682ea02569 100644
--- a/components/net/filemanager_thread.rs
+++ b/components/net/filemanager_thread.rs
@@ -116,6 +116,15 @@ pub struct FileManager<UI: 'static + UIProvider> {
store: Arc<FileManagerStore<UI>>,
}
+// Not derived to avoid an unnecessary `UI: Clone` bound.
+impl<UI: 'static + UIProvider> Clone for FileManager<UI> {
+ fn clone(&self) -> Self {
+ FileManager {
+ store: self.store.clone(),
+ }
+ }
+}
+
impl<UI: 'static + UIProvider> FileManager<UI> {
pub fn new(ui: &'static UI) -> FileManager<UI> {
FileManager {
diff --git a/components/net/resource_thread.rs b/components/net/resource_thread.rs
index 86e382e4bb3..6f596684408 100644
--- a/components/net/resource_thread.rs
+++ b/components/net/resource_thread.rs
@@ -475,7 +475,7 @@ pub struct CoreResourceManager {
devtools_chan: Option<Sender<DevtoolsControlMsg>>,
swmanager_chan: Option<IpcSender<CustomResponseMediator>>,
profiler_chan: ProfilerChan,
- filemanager: Arc<FileManager<TFDProvider>>,
+ filemanager: FileManager<TFDProvider>,
cancel_load_map: HashMap<ResourceId, Sender<()>>,
next_resource_id: ResourceId,
}
@@ -490,7 +490,7 @@ impl CoreResourceManager {
devtools_chan: devtools_channel,
swmanager_chan: None,
profiler_chan: profiler_chan,
- filemanager: Arc::new(FileManager::new(TFD_PROVIDER)),
+ filemanager: FileManager::new(TFD_PROVIDER),
cancel_load_map: HashMap::new(),
next_resource_id: ResourceId(0),
}