mirror of
https://github.com/servo/servo.git
synced 2025-07-23 07:13:52 +01:00
Factor out FileManager::read_file().
This commit is contained in:
parent
508e6adb7e
commit
5ce869d58a
2 changed files with 19 additions and 12 deletions
|
@ -12,7 +12,7 @@ use mime_classifier::MimeClassifier;
|
||||||
use net_traits::{LoadConsumer, LoadData, Metadata, NetworkError};
|
use net_traits::{LoadConsumer, LoadData, Metadata, NetworkError};
|
||||||
use net_traits::ProgressMsg::{Done, Payload};
|
use net_traits::ProgressMsg::{Done, Payload};
|
||||||
use net_traits::blob_url_store::parse_blob_url;
|
use net_traits::blob_url_store::parse_blob_url;
|
||||||
use net_traits::filemanager_thread::{FileManagerThreadMsg, ReadFileProgress};
|
use net_traits::filemanager_thread::ReadFileProgress;
|
||||||
use net_traits::response::HttpsState;
|
use net_traits::response::HttpsState;
|
||||||
use resource_thread::{send_error, start_sending_sniffed_opt};
|
use resource_thread::{send_error, start_sending_sniffed_opt};
|
||||||
use resource_thread::CancellationListener;
|
use resource_thread::CancellationListener;
|
||||||
|
@ -41,8 +41,7 @@ fn load_blob<UI: 'static + UIProvider>
|
||||||
let (chan, recv) = ipc::channel().unwrap();
|
let (chan, recv) = ipc::channel().unwrap();
|
||||||
if let Ok((id, origin, _fragment)) = parse_blob_url(&load_data.url.clone()) {
|
if let Ok((id, origin, _fragment)) = parse_blob_url(&load_data.url.clone()) {
|
||||||
let check_url_validity = true;
|
let check_url_validity = true;
|
||||||
let msg = FileManagerThreadMsg::ReadFile(chan, id, check_url_validity, origin);
|
filemanager.read_file(chan, id, check_url_validity, origin, Some(cancel_listener));
|
||||||
let _ = filemanager.handle(msg, Some(cancel_listener));
|
|
||||||
|
|
||||||
// Receive first chunk
|
// Receive first chunk
|
||||||
match recv.recv().unwrap() {
|
match recv.recv().unwrap() {
|
||||||
|
@ -137,8 +136,7 @@ pub fn load_blob_sync<UI: 'static + UIProvider>
|
||||||
|
|
||||||
let (sender, receiver) = ipc::channel().unwrap();
|
let (sender, receiver) = ipc::channel().unwrap();
|
||||||
let check_url_validity = true;
|
let check_url_validity = true;
|
||||||
let msg = FileManagerThreadMsg::ReadFile(sender, id, check_url_validity, origin);
|
filemanager.read_file(sender, id, check_url_validity, origin, None);
|
||||||
let _ = filemanager.handle(msg, None);
|
|
||||||
|
|
||||||
let blob_buf = match receiver.recv().unwrap() {
|
let blob_buf = match receiver.recv().unwrap() {
|
||||||
Ok(ReadFileProgress::Meta(blob_buf)) => blob_buf,
|
Ok(ReadFileProgress::Meta(blob_buf)) => blob_buf,
|
||||||
|
|
|
@ -135,6 +135,21 @@ impl<UI: 'static + UIProvider> FileManager<UI> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn read_file(&self,
|
||||||
|
sender: IpcSender<FileManagerResult<ReadFileProgress>>,
|
||||||
|
id: Uuid,
|
||||||
|
check_url_validity: bool,
|
||||||
|
origin: FileOrigin,
|
||||||
|
cancel_listener: Option<CancellationListener>) {
|
||||||
|
let store = self.store.clone();
|
||||||
|
spawn_named("read file".to_owned(), move || {
|
||||||
|
if let Err(e) = store.try_read_file(&sender, id, check_url_validity,
|
||||||
|
origin, cancel_listener) {
|
||||||
|
let _ = sender.send(Err(FileManagerThreadError::BlobURLStoreError(e)));
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
/// Message handler
|
/// Message handler
|
||||||
pub fn handle(&self, msg: FileManagerThreadMsg, cancel_listener: Option<CancellationListener>) {
|
pub fn handle(&self, msg: FileManagerThreadMsg, cancel_listener: Option<CancellationListener>) {
|
||||||
match msg {
|
match msg {
|
||||||
|
@ -153,13 +168,7 @@ impl<UI: 'static + UIProvider> FileManager<UI> {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
FileManagerThreadMsg::ReadFile(sender, id, check_url_validity, origin) => {
|
FileManagerThreadMsg::ReadFile(sender, id, check_url_validity, origin) => {
|
||||||
let store = self.store.clone();
|
self.read_file(sender, id, check_url_validity, origin, cancel_listener);
|
||||||
spawn_named("read file".to_owned(), move || {
|
|
||||||
if let Err(e) = store.try_read_file(&sender, id, check_url_validity,
|
|
||||||
origin, cancel_listener) {
|
|
||||||
let _ = sender.send(Err(FileManagerThreadError::BlobURLStoreError(e)));
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
FileManagerThreadMsg::PromoteMemory(blob_buf, set_valid, sender, origin) => {
|
FileManagerThreadMsg::PromoteMemory(blob_buf, set_valid, sender, origin) => {
|
||||||
let store = self.store.clone();
|
let store = self.store.clone();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue