servo: Merge #12577 - Chunked ReadFile from file manager (from izgzhen:fm-chunked); r=Manishearth
authorZhen Zhang <izgzhen@gmail.com>
Tue, 26 Jul 2016 02:42:45 -0500
changeset 339367 de0aee4b1421860bb26044a29ab452fe75230c03
parent 339366 8157803c6bd85f01b0e2142d1f9d7b894fd1c559
child 339368 0ce84f875f2b3a191cdf4ac41427adf750bb11b3
push id31307
push usergszorc@mozilla.com
push dateSat, 04 Feb 2017 00:59:06 +0000
treeherdermozilla-central@94079d43835f [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersManishearth
servo: Merge #12577 - Chunked ReadFile from file manager (from izgzhen:fm-chunked); r=Manishearth + Introduce a `ReadFileProgress` sender in the `ReadFile` msg to file manager, and implement the related I/O operations + Change `tests/unit/net/test.jpeg` from a 4.8K file to a 39K file to better test the chunked reading (Since one chunk is maximally 8129 Bytes). r? @Manishearth <!-- Please describe your changes on the following line: --> --- <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: --> - [x] `./mach build -d` does not report any errors - [x] `./mach test-tidy` does not report any errors - [x] There are tests for these changes <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. --> Source-Repo: https://github.com/servo/servo Source-Revision: b41bf4f1f30b8f4eec92909c8971bc02d5422b50
servo/components/net/blob_loader.rs
servo/components/net/filemanager_thread.rs
servo/components/net_traits/filemanager_thread.rs
servo/components/script/dom/blob.rs
servo/tests/unit/net/filemanager_thread.rs
servo/tests/unit/net/test.jpeg
servo/tests/unit/net/test.txt
--- a/servo/components/net/blob_loader.rs
+++ b/servo/components/net/blob_loader.rs
@@ -5,52 +5,55 @@
 use hyper::header::{DispositionType, ContentDisposition, DispositionParam};
 use hyper::header::{Headers, ContentType, ContentLength, Charset};
 use hyper::http::RawStatus;
 use ipc_channel::ipc::{self, IpcSender};
 use mime::{Mime, Attr};
 use mime_classifier::MimeClassifier;
 use net_traits::ProgressMsg::{Payload, Done};
 use net_traits::blob_url_store::parse_blob_url;
-use net_traits::filemanager_thread::{FileManagerThreadMsg, SelectedFileId};
+use net_traits::filemanager_thread::{FileManagerThreadMsg, SelectedFileId, ReadFileProgress};
 use net_traits::response::HttpsState;
 use net_traits::{LoadConsumer, LoadData, Metadata, NetworkError};
 use resource_thread::CancellationListener;
 use resource_thread::{start_sending_sniffed_opt, send_error};
 use std::boxed::FnBox;
 use std::sync::Arc;
 use util::thread::spawn_named;
 
 // TODO: Check on GET
 // https://w3c.github.io/FileAPI/#requestResponseModel
 
 pub fn factory(filemanager_chan: IpcSender<FileManagerThreadMsg>)
                -> Box<FnBox(LoadData,
                             LoadConsumer,
                             Arc<MimeClassifier>,
                             CancellationListener) + Send> {
-    box move |load_data: LoadData, start_chan, classifier, _cancel_listener| {
+    box move |load_data: LoadData, start_chan, classifier, cancel_listener| {
         spawn_named(format!("blob loader for {}", load_data.url), move || {
-            load_blob(load_data, start_chan, classifier, filemanager_chan);
+            load_blob(load_data, start_chan, classifier, filemanager_chan, cancel_listener);
         })
     }
 }
 
 fn load_blob(load_data: LoadData, start_chan: LoadConsumer,
              classifier: Arc<MimeClassifier>,
-             filemanager_chan: IpcSender<FileManagerThreadMsg>) {
+             filemanager_chan: IpcSender<FileManagerThreadMsg>,
+             // XXX(izgzhen): we should utilize cancel_listener, filed in #12589
+             _cancel_listener: CancellationListener) {
     let (chan, recv) = ipc::channel().unwrap();
     if let Ok((id, origin, _fragment)) = parse_blob_url(&load_data.url.clone()) {
         let id = SelectedFileId(id.simple().to_string());
         let check_url_validity = true;
         let msg = FileManagerThreadMsg::ReadFile(chan, id, check_url_validity, origin);
         let _ = filemanager_chan.send(msg);
 
+        // Receive first chunk
         match recv.recv().unwrap() {
-            Ok(blob_buf) => {
+            Ok(ReadFileProgress::Meta(blob_buf)) => {
                 let content_type: Mime = blob_buf.type_string.parse().unwrap_or(mime!(Text / Plain));
                 let charset = content_type.get_param(Attr::Charset);
 
                 let mut headers = Headers::new();
 
                 if let Some(name) = blob_buf.filename {
                     let charset = charset.and_then(|c| c.as_str().parse().ok());
                     headers.set(ContentDisposition {
@@ -75,19 +78,44 @@ fn load_blob(load_data: LoadData, start_
                     https_state: HttpsState::None,
                     referrer: None,
                 };
 
                 if let Ok(chan) =
                     start_sending_sniffed_opt(start_chan, metadata, classifier,
                                               &blob_buf.bytes, load_data.context.clone()) {
                     let _ = chan.send(Payload(blob_buf.bytes));
-                    let _ = chan.send(Done(Ok(())));
+
+                    loop {
+                        match recv.recv().unwrap() {
+                            Ok(ReadFileProgress::Partial(bytes)) => {
+                                let _ = chan.send(Payload(bytes));
+                            }
+                            Ok(ReadFileProgress::EOF) => {
+                                let _ = chan.send(Done(Ok(())));
+                                return;
+                            }
+                            Ok(_) => {
+                                let err = NetworkError::Internal("Invalid filemanager reply".to_string());
+                                let _ = chan.send(Done(Err(err)));
+                                return;
+                            }
+                            Err(e) => {
+                                let err = NetworkError::Internal(format!("{:?}", e));
+                                let _ = chan.send(Done(Err(err)));
+                                return;
+                            }
+                        }
+                    }
                 }
             }
+            Ok(_) => {
+                let err = NetworkError::Internal("Invalid filemanager reply".to_string());
+                send_error(load_data.url, err, start_chan);
+            }
             Err(e) => {
                 let err = NetworkError::Internal(format!("{:?}", e));
                 send_error(load_data.url, err, start_chan);
             }
         }
     } else {
         let e = format!("Invalid blob URL format {:?}", load_data.url);
         let format_err = NetworkError::Internal(e);
--- a/servo/components/net/filemanager_thread.rs
+++ b/servo/components/net/filemanager_thread.rs
@@ -1,17 +1,18 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 use ipc_channel::ipc::{self, IpcReceiver, IpcSender};
 use mime_guess::guess_mime_type_opt;
 use net_traits::blob_url_store::{BlobBuf, BlobURLStoreError};
 use net_traits::filemanager_thread::{FileManagerThreadMsg, FileManagerResult, FilterPattern, FileOrigin};
-use net_traits::filemanager_thread::{SelectedFile, RelativePos, FileManagerThreadError, SelectedFileId};
+use net_traits::filemanager_thread::{SelectedFile, RelativePos, FileManagerThreadError};
+use net_traits::filemanager_thread::{SelectedFileId, ReadFileProgress};
 use std::collections::HashMap;
 use std::fs::File;
 use std::io::{Read, Seek, SeekFrom};
 use std::ops::Index;
 use std::path::{Path, PathBuf};
 use std::sync::atomic::{self, AtomicUsize, AtomicBool, Ordering};
 use std::sync::{Arc, RwLock};
 #[cfg(any(target_os = "macos", target_os = "linux", target_os = "windows"))]
@@ -151,21 +152,18 @@ impl<UI: 'static + UIProvider> FileManag
                 }
                 FileManagerThreadMsg::SelectFiles(filter, sender, origin, opt_test_paths) => {
                     spawn_named("select files".to_owned(), move || {
                         store.select_files(filter, sender, origin, opt_test_paths);
                     })
                 }
                 FileManagerThreadMsg::ReadFile(sender, id, check_url_validity, origin) => {
                     spawn_named("read file".to_owned(), move || {
-                        match store.try_read_file(id, check_url_validity, origin) {
-                            Ok(buffer) => { let _ = sender.send(Ok(buffer)); }
-                            Err(e) => {
-                                let _ = sender.send(Err(FileManagerThreadError::BlobURLStoreError(e)));
-                            }
+                        if let Err(e) = store.try_read_file(sender.clone(), id, check_url_validity, origin) {
+                            let _ = sender.send(Err(FileManagerThreadError::BlobURLStoreError(e)));
                         }
                     })
                 }
                 FileManagerThreadMsg::PromoteMemory(blob_buf, set_valid, sender, origin) => {
                     spawn_named("transfer memory".to_owned(), move || {
                         store.promote_memory(blob_buf, set_valid, sender, origin);
                     })
                 }
@@ -365,18 +363,18 @@ impl <UI: 'static + UIProvider> FileMana
                 return;
             }
         }
     }
 
     fn create_entry(&self, file_path: &Path, origin: &str) -> Result<SelectedFile, FileManagerThreadError> {
         use net_traits::filemanager_thread::FileManagerThreadError::FileSystemError;
 
-        let handler = try!(File::open(file_path).map_err(|e| FileSystemError(e.to_string())));
-        let metadata = try!(handler.metadata().map_err(|e| FileSystemError(e.to_string())));
+        let file = try!(File::open(file_path).map_err(|e| FileSystemError(e.to_string())));
+        let metadata = try!(file.metadata().map_err(|e| FileSystemError(e.to_string())));
         let modified = try!(metadata.modified().map_err(|e| FileSystemError(e.to_string())));
         let elapsed = try!(modified.elapsed().map_err(|e| FileSystemError(e.to_string())));
         // Unix Epoch: https://doc.servo.org/std/time/constant.UNIX_EPOCH.html
         let modified_epoch = elapsed.as_secs() * 1000 + elapsed.subsec_nanos() as u64 / 1000000;
         let file_size = metadata.len();
         let file_name = try!(file_path.file_name().ok_or(FileSystemError("Invalid filepath".to_string())));
 
         let file_impl = FileImpl::MetaDataOnly(FileMetaData {
@@ -405,79 +403,80 @@ impl <UI: 'static + UIProvider> FileMana
             id: SelectedFileId(id.simple().to_string()),
             filename: filename_path.to_path_buf(),
             modified: modified_epoch,
             size: file_size,
             type_string: type_string,
         })
     }
 
-    fn get_blob_buf(&self, id: &Uuid, origin_in: &FileOrigin, rel_pos: RelativePos,
-                    check_url_validity: bool) -> Result<BlobBuf, BlobURLStoreError> {
+    fn get_blob_buf(&self, sender: IpcSender<FileManagerResult<ReadFileProgress>>,
+                    id: &Uuid, origin_in: &FileOrigin, rel_pos: RelativePos,
+                    check_url_validity: bool) -> Result<(), BlobURLStoreError> {
         let file_impl = try!(self.get_impl(id, origin_in, check_url_validity));
         match file_impl {
             FileImpl::Memory(buf) => {
                 let range = rel_pos.to_abs_range(buf.size as usize);
-                Ok(BlobBuf {
+                let buf = BlobBuf {
                     filename: None,
                     type_string: buf.type_string,
                     size: range.len() as u64,
                     bytes: buf.bytes.index(range).to_vec(),
-                })
+                };
+
+                let _ = sender.send(Ok(ReadFileProgress::Meta(buf)));
+                let _ = sender.send(Ok(ReadFileProgress::EOF));
+
+                Ok(())
             }
             FileImpl::MetaDataOnly(metadata) => {
                 /* XXX: Snapshot state check (optional) https://w3c.github.io/FileAPI/#snapshot-state.
-                        Concretely, here we create another handler, and this handler might not
+                        Concretely, here we create another file, and this file might not
                         has the same underlying file state (meta-info plus content) as the time
                         create_entry is called.
                 */
 
                 let opt_filename = metadata.path.file_name()
                                            .and_then(|osstr| osstr.to_str())
                                            .map(|s| s.to_string());
 
                 let mime = guess_mime_type_opt(metadata.path.clone());
                 let range = rel_pos.to_abs_range(metadata.size as usize);
 
-                let mut handler = try!(File::open(&metadata.path)
+                let mut file = try!(File::open(&metadata.path)
                                       .map_err(|e| BlobURLStoreError::External(e.to_string())));
-                let seeked_start = try!(handler.seek(SeekFrom::Start(range.start as u64))
+                let seeked_start = try!(file.seek(SeekFrom::Start(range.start as u64))
                                        .map_err(|e| BlobURLStoreError::External(e.to_string())));
 
                 if seeked_start == (range.start as u64) {
-                    let mut bytes = vec![0; range.len()];
-                    try!(handler.read_exact(&mut bytes)
-                        .map_err(|e| BlobURLStoreError::External(e.to_string())));
+                    let type_string = match mime {
+                        Some(x) => format!("{}", x),
+                        None    => "".to_string(),
+                    };
 
-                    Ok(BlobBuf {
-                        filename: opt_filename,
-                        type_string: match mime {
-                            Some(x) => format!("{}", x),
-                            None    => "".to_string(),
-                        },
-                        size: range.len() as u64,
-                        bytes: bytes,
-                    })
+                    chunked_read(sender, &mut file, range.len(), opt_filename, type_string);
+                    Ok(())
                 } else {
                     Err(BlobURLStoreError::InvalidEntry)
                 }
             }
             FileImpl::Sliced(parent_id, inner_rel_pos) => {
                 // Next time we don't need to check validity since
                 // we have already done that for requesting URL if necessary
-                self.get_blob_buf(&parent_id, origin_in, rel_pos.slice_inner(&inner_rel_pos), false)
+                self.get_blob_buf(sender, &parent_id, origin_in, rel_pos.slice_inner(&inner_rel_pos), false)
             }
         }
     }
 
     // Convenient wrapper over get_blob_buf
-    fn try_read_file(&self, id: SelectedFileId, check_url_validity: bool,
-                     origin_in: FileOrigin) -> Result<BlobBuf, BlobURLStoreError> {
+    fn try_read_file(&self, sender: IpcSender<FileManagerResult<ReadFileProgress>>,
+                     id: SelectedFileId, check_url_validity: bool,
+                     origin_in: FileOrigin) -> Result<(), BlobURLStoreError> {
         let id = try!(Uuid::parse_str(&id.0).map_err(|_| BlobURLStoreError::InvalidFileID));
-        self.get_blob_buf(&id, &origin_in, RelativePos::full_range(), check_url_validity)
+        self.get_blob_buf(sender, &id, &origin_in, RelativePos::full_range(), check_url_validity)
     }
 
     fn dec_ref(&self, id: &Uuid, origin_in: &FileOrigin,
                unset_url_validity: bool) -> Result<(), BlobURLStoreError> {
         let (do_remove, opt_parent_id) = match self.entries.read().unwrap().get(id) {
             Some(entry) => {
                 if *entry.origin == *origin_in {
                     let old_refs = entry.refs.fetch_sub(1, Ordering::Release);
@@ -558,8 +557,51 @@ impl <UI: 'static + UIProvider> FileMana
     }
 }
 
 
 fn select_files_pref_enabled() -> bool {
     PREFS.get("dom.testing.htmlinputelement.select_files.enabled")
          .as_boolean().unwrap_or(false)
 }
+
+const CHUNK_SIZE: usize = 8192;
+
+fn chunked_read(sender: IpcSender<FileManagerResult<ReadFileProgress>>,
+                file: &mut File, size: usize, opt_filename: Option<String>, type_string: String) {
+    // First chunk
+    let mut buf = vec![0; CHUNK_SIZE];
+    match file.read(&mut buf) {
+        Ok(n) => {
+            buf.truncate(n);
+            let blob_buf = BlobBuf {
+                filename: opt_filename,
+                type_string: type_string,
+                size: size as u64,
+                bytes: buf,
+            };
+            let _ = sender.send(Ok(ReadFileProgress::Meta(blob_buf)));
+        }
+        Err(e) => {
+            let _ = sender.send(Err(FileManagerThreadError::FileSystemError(e.to_string())));
+            return;
+        }
+    }
+
+    // Send the remaining chunks
+    loop {
+        let mut buf = vec![0; CHUNK_SIZE];
+        match file.read(&mut buf) {
+            Ok(0) => {
+                let _ = sender.send(Ok(ReadFileProgress::EOF));
+                return;
+            }
+            Ok(n) => {
+                buf.truncate(n);
+                let _ = sender.send(Ok(ReadFileProgress::Partial(buf)));
+            }
+            Err(e) => {
+                let _ = sender.send(Err(FileManagerThreadError::FileSystemError(e.to_string())));
+                return;
+            }
+        }
+    }
+}
--- a/servo/components/net_traits/filemanager_thread.rs
+++ b/servo/components/net_traits/filemanager_thread.rs
@@ -122,19 +122,18 @@ pub struct FilterPattern(pub String);
 #[derive(Deserialize, Serialize)]
 pub enum FileManagerThreadMsg {
     /// Select a single file, return triple (FileID, FileName, lastModified)
     SelectFile(Vec<FilterPattern>, IpcSender<FileManagerResult<SelectedFile>>, FileOrigin, Option<String>),
 
     /// Select multiple files, return a vector of triples
     SelectFiles(Vec<FilterPattern>, IpcSender<FileManagerResult<Vec<SelectedFile>>>, FileOrigin, Option<Vec<String>>),
 
-    /// Read file by FileID, optionally check URL validity based on
-    /// third flag, return the blob buffer object
-    ReadFile(IpcSender<FileManagerResult<BlobBuf>>, SelectedFileId, bool, FileOrigin),
+    /// Read file in chunks by FileID, optionally check URL validity based on fourth flag
+    ReadFile(IpcSender<FileManagerResult<ReadFileProgress>>, SelectedFileId, bool, FileOrigin),
 
     /// Add an entry as promoted memory-based blob and send back the associated FileID
     /// as part of a valid/invalid Blob URL depending on the second bool flag
     PromoteMemory(BlobBuf, bool, IpcSender<Result<SelectedFileId, BlobURLStoreError>>, FileOrigin),
 
     /// Add a sliced entry pointing to the parent FileID, and send back the associated FileID
     /// as part of a valid Blob URL
     AddSlicedURLEntry(SelectedFileId, RelativePos, IpcSender<Result<SelectedFileId, BlobURLStoreError>>, FileOrigin),
@@ -150,16 +149,23 @@ pub enum FileManagerThreadMsg {
 
     /// Activate an internal FileID so it becomes valid as part of a Blob URL
     ActivateBlobURL(SelectedFileId, IpcSender<Result<(), BlobURLStoreError>>, FileOrigin),
 
     /// Shut down this thread
     Exit,
 }
 
+#[derive(Debug, Deserialize, Serialize)]
+pub enum ReadFileProgress {
+    Meta(BlobBuf),
+    Partial(Vec<u8>),
+    EOF
+}
+
 pub type FileManagerResult<T> = Result<T, FileManagerThreadError>;
 
 #[derive(Debug, Deserialize, Serialize)]
 pub enum FileManagerThreadError {
     /// The selection action is invalid due to exceptional reason
     InvalidSelection,
     /// The selection action is cancelled by user
     UserCancelled,
--- a/servo/components/script/dom/blob.rs
+++ b/servo/components/script/dom/blob.rs
@@ -11,17 +11,17 @@ use dom::bindings::global::GlobalRef;
 use dom::bindings::js::{JS, Root};
 use dom::bindings::reflector::{Reflectable, Reflector, reflect_dom_object};
 use dom::bindings::str::DOMString;
 use encoding::all::UTF_8;
 use encoding::types::{EncoderTrap, Encoding};
 use ipc_channel::ipc;
 use net_traits::IpcSend;
 use net_traits::blob_url_store::{BlobBuf, get_blob_origin};
-use net_traits::filemanager_thread::{FileManagerThreadMsg, SelectedFileId, RelativePos};
+use net_traits::filemanager_thread::{FileManagerThreadMsg, SelectedFileId, RelativePos, ReadFileProgress};
 use std::cell::Cell;
 use std::ops::Index;
 use std::path::PathBuf;
 use uuid::Uuid;
 
 /// File-based blob
 #[derive(JSTraceable)]
 pub struct FileBlob {
@@ -281,19 +281,31 @@ impl Drop for Blob {
 fn read_file(global: GlobalRef, id: SelectedFileId) -> Result<Vec<u8>, ()> {
     let file_manager = global.filemanager_thread();
     let (chan, recv) = ipc::channel().map_err(|_|())?;
     let origin = get_blob_origin(&global.get_url());
     let check_url_validity = false;
     let msg = FileManagerThreadMsg::ReadFile(chan, id, check_url_validity, origin);
     let _ = file_manager.send(msg);
 
-    match recv.recv().unwrap() {
-        Ok(blob_buf) => Ok(blob_buf.bytes),
-        Err(_) => Err(()),
+    let mut bytes = vec![];
+
+    loop {
+        match recv.recv().unwrap() {
+            Ok(ReadFileProgress::Meta(mut blob_buf)) => {
+                bytes.append(&mut blob_buf.bytes);
+            }
+            Ok(ReadFileProgress::Partial(mut bytes_in)) => {
+                bytes.append(&mut bytes_in);
+            }
+            Ok(ReadFileProgress::EOF) => {
+                return Ok(bytes);
+            }
+            Err(_) => return Err(()),
+        }
     }
 }
 
 /// Extract bytes from BlobParts, used by Blob and File constructor
 /// https://w3c.github.io/FileAPI/#constructorBlob
 pub fn blob_parts_to_bytes(blobparts: Vec<BlobOrString>) -> Result<Vec<u8>, ()> {
     let mut ret = vec![];
 
--- a/servo/tests/unit/net/filemanager_thread.rs
+++ b/servo/tests/unit/net/filemanager_thread.rs
@@ -1,68 +1,87 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 use ipc_channel::ipc::{self, IpcSender};
 use net::filemanager_thread::{FileManagerThreadFactory, UIProvider};
 use net_traits::blob_url_store::BlobURLStoreError;
-use net_traits::filemanager_thread::{FilterPattern, FileManagerThreadMsg, FileManagerThreadError};
+use net_traits::filemanager_thread::{FilterPattern, FileManagerThreadMsg, FileManagerThreadError, ReadFileProgress};
 use std::fs::File;
 use std::io::Read;
 use std::path::PathBuf;
 
 const TEST_PROVIDER: &'static TestProvider = &TestProvider;
 
 struct TestProvider;
 
 impl UIProvider for TestProvider {
     fn open_file_dialog(&self, _path: &str, _patterns: Vec<FilterPattern>) -> Option<String> {
-        Some("test.txt".to_string())
+        Some("test.jpeg".to_string())
     }
 
     fn open_file_dialog_multi(&self, _path: &str, _patterns: Vec<FilterPattern>) -> Option<Vec<String>> {
-        Some(vec!["test.txt".to_string()])
+        Some(vec!["test.jpeg".to_string()])
     }
 }
 
 #[test]
 fn test_filemanager() {
     let chan: IpcSender<FileManagerThreadMsg> = FileManagerThreadFactory::new(TEST_PROVIDER);
 
-    // Try to open a dummy file "tests/unit/net/test.txt" in tree
-    let mut handler = File::open("test.txt").expect("test.txt is stolen");
+    // Try to open a dummy file "tests/unit/net/test.jpeg" in tree
+    let mut handler = File::open("test.jpeg").expect("test.jpeg is stolen");
     let mut test_file_content = vec![];
 
     handler.read_to_end(&mut test_file_content)
-           .expect("Read tests/unit/net/test.txt error");
+           .expect("Read tests/unit/net/test.jpeg error");
 
     let patterns = vec![FilterPattern(".txt".to_string())];
     let origin = "test.com".to_string();
 
     {
-        // Try to select a dummy file "tests/unit/net/test.txt"
+        // Try to select a dummy file "tests/unit/net/test.jpeg"
         let (tx, rx) = ipc::channel().unwrap();
         chan.send(FileManagerThreadMsg::SelectFile(patterns.clone(), tx, origin.clone(), None)).unwrap();
         let selected = rx.recv().expect("Broken channel")
-                                .expect("The file manager failed to find test.txt");
+                                .expect("The file manager failed to find test.jpeg");
 
         // Expecting attributes conforming the spec
-        assert!(selected.filename == PathBuf::from("test.txt"));
-        assert!(selected.type_string == "text/plain".to_string());
+        assert_eq!(selected.filename, PathBuf::from("test.jpeg"));
+        assert_eq!(selected.type_string, "image/jpeg".to_string());
 
         // Test by reading, expecting same content
         {
             let (tx2, rx2) = ipc::channel().unwrap();
             chan.send(FileManagerThreadMsg::ReadFile(tx2, selected.id.clone(), false, origin.clone())).unwrap();
 
             let msg = rx2.recv().expect("Broken channel");
 
-            let blob_buf = msg.expect("File manager reading failure is unexpected");
-            assert_eq!(test_file_content, blob_buf.bytes, "Read content differs");
+            if let ReadFileProgress::Meta(blob_buf) = msg.expect("File manager reading failure is unexpected") {
+                let mut bytes = blob_buf.bytes;
+
+                loop {
+                    match rx2.recv().expect("Broken channel").expect("File manager reading failure is unexpected") {
+                        ReadFileProgress::Meta(_) => {
+                            panic!("Invalid FileManager reply");
+                        }
+                        ReadFileProgress::Partial(mut bytes_in) => {
+                            bytes.append(&mut bytes_in);
+                        }
+                        ReadFileProgress::EOF => {
+                            break;
+                        }
+                    }
+                }
+
+                assert_eq!(test_file_content, bytes, "Read content differs");
+            } else {
+                panic!("Invalid FileManager reply");
+            }
         }
 
         // Delete the id
         {
             let (tx2, rx2) = ipc::channel().unwrap();
             chan.send(FileManagerThreadMsg::DecRef(selected.id.clone(), origin.clone(), tx2)).unwrap();
 
             let ret = rx2.recv().expect("Broken channel");
index 1a0bdb7acd1d231e015270ccc1727b31b2002003..08f084cf549ca2fd44c56485f8451c7a6f546b98
GIT binary patch
literal 62218
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
WfGzGksD4$ELoglAahj_FXaCtZ(E{TD
deleted file mode 100644
--- a/servo/tests/unit/net/test.txt
+++ /dev/null
@@ -1,1 +0,0 @@
-hello, servo
\ No newline at end of file