mirror of
https://github.com/servo/servo.git
synced 2025-08-06 14:10:11 +01:00
Auto merge of #11368 - izgzhen:fix-filemanager-exit, r=asajeffrey
Fix FileManager thread panic and other misc improvements - [x] `./mach build -d` does not report any errors - [x] `./mach test-tidy --faster` does not report any errors - [x] There are tests for these changes Changes: - Add shut down logic for FileManager thread - Add an unit test for filemanager_thread <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="35" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/11368) <!-- Reviewable:end -->
This commit is contained in:
commit
0b64586bf5
6 changed files with 46 additions and 3 deletions
|
@ -38,6 +38,7 @@ use msg::constellation_msg::{SubpageId, WindowSizeData, WindowSizeType};
|
|||
use msg::constellation_msg::{self, PanicMsg};
|
||||
use msg::webdriver_msg;
|
||||
use net_traits::bluetooth_thread::BluetoothMethodMsg;
|
||||
use net_traits::filemanager_thread::FileManagerThreadMsg;
|
||||
use net_traits::image_cache_thread::ImageCacheThread;
|
||||
use net_traits::storage_thread::StorageThreadMsg;
|
||||
use net_traits::{self, ResourceThreads, IpcSend};
|
||||
|
@ -850,6 +851,11 @@ impl<LTF: LayoutThreadFactory, STF: ScriptThreadFactory> Constellation<LTF, STF>
|
|||
if let Err(e) = self.resource_threads.send(StorageThreadMsg::Exit) {
|
||||
warn!("Exit storage thread failed ({})", e);
|
||||
}
|
||||
|
||||
if let Err(e) = self.resource_threads.send(FileManagerThreadMsg::Exit) {
|
||||
warn!("Exit storage thread failed ({})", e);
|
||||
}
|
||||
|
||||
if let Err(e) = self.bluetooth_thread.send(BluetoothMethodMsg::Exit) {
|
||||
warn!("Exit bluetooth thread failed ({})", e);
|
||||
}
|
||||
|
|
|
@ -53,6 +53,7 @@ impl FileManager {
|
|||
FileManagerThreadMsg::SelectFiles(sender) => self.select_files(sender),
|
||||
FileManagerThreadMsg::ReadFile(sender, id) => self.read_file(sender, id),
|
||||
FileManagerThreadMsg::DeleteFileID(id) => self.delete_fileid(id),
|
||||
FileManagerThreadMsg::Exit => break,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@ use ipc_channel::ipc::IpcSender;
|
|||
use std::path::PathBuf;
|
||||
use uuid::Uuid;
|
||||
|
||||
#[derive(Deserialize, Serialize)]
|
||||
#[derive(Debug, Deserialize, Serialize)]
|
||||
pub struct SelectedFile {
|
||||
pub id: Uuid,
|
||||
pub filename: PathBuf,
|
||||
|
@ -28,6 +28,9 @@ pub enum FileManagerThreadMsg {
|
|||
|
||||
/// Delete the FileID entry
|
||||
DeleteFileID(Uuid),
|
||||
|
||||
/// Shut down this thread
|
||||
Exit,
|
||||
}
|
||||
|
||||
pub type FileManagerResult<T> = Result<T, FileManagerThreadError>;
|
||||
|
|
|
@ -51,8 +51,6 @@ impl File {
|
|||
pub fn new_from_selected(window: &Window, selected: SelectedFile) -> Root<File> {
|
||||
let name = DOMString::from(selected.filename.to_str().expect("File name encoding error"));
|
||||
|
||||
// FIXME: fix this after PR #11221 is landed
|
||||
let id = selected.id;
|
||||
let slice = DataSlice::empty();
|
||||
|
||||
let global = GlobalRef::Window(window);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue