mirror of
https://github.com/servo/servo.git
synced 2025-08-04 13:10:20 +01:00
clippy: Refactor script/dom/globalscope.rs
to avoid overly complex types (#33782)
* Simplified types in globalscope.rs, folded callbacks, and replaced Result with Fallible Signed-off-by: L Ashwin B <lashwinib@gmail.com> * clippy: Refactor script/dom/globalscope.rs to avoid overly complex types Signed-off-by: L Ashwin B <lashwinib@gmail.com> --------- Signed-off-by: L Ashwin B <lashwinib@gmail.com>
This commit is contained in:
parent
2b71130a8a
commit
88f1d9dd5e
1 changed files with 23 additions and 40 deletions
|
@ -374,6 +374,8 @@ struct TimerListener {
|
||||||
context: Trusted<GlobalScope>,
|
context: Trusted<GlobalScope>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type FileListenerCallback = Box<dyn Fn(Rc<Promise>, Fallible<Vec<u8>>) + Send>;
|
||||||
|
|
||||||
/// A wrapper for the handling of file data received by the ipc router
|
/// A wrapper for the handling of file data received by the ipc router
|
||||||
struct FileListener {
|
struct FileListener {
|
||||||
/// State should progress as either of:
|
/// State should progress as either of:
|
||||||
|
@ -384,19 +386,14 @@ struct FileListener {
|
||||||
task_canceller: TaskCanceller,
|
task_canceller: TaskCanceller,
|
||||||
}
|
}
|
||||||
|
|
||||||
enum FileListenerCallback {
|
|
||||||
Promise(Box<dyn Fn(Rc<Promise>, Result<Vec<u8>, Error>) + Send>),
|
|
||||||
Stream,
|
|
||||||
}
|
|
||||||
|
|
||||||
enum FileListenerTarget {
|
enum FileListenerTarget {
|
||||||
Promise(TrustedPromise),
|
Promise(TrustedPromise, FileListenerCallback),
|
||||||
Stream(Trusted<ReadableStream>),
|
Stream(Trusted<ReadableStream>),
|
||||||
}
|
}
|
||||||
|
|
||||||
enum FileListenerState {
|
enum FileListenerState {
|
||||||
Empty(FileListenerCallback, FileListenerTarget),
|
Empty(FileListenerTarget),
|
||||||
Receiving(Vec<u8>, FileListenerCallback, FileListenerTarget),
|
Receiving(Vec<u8>, FileListenerTarget),
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(JSTraceable, MallocSizeOf)]
|
#[derive(JSTraceable, MallocSizeOf)]
|
||||||
|
@ -616,7 +613,7 @@ impl MessageListener {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Callback used to enqueue file chunks to streams as part of FileListener.
|
/// Callback used to enqueue file chunks to streams as part of FileListener.
|
||||||
fn stream_handle_incoming(stream: &ReadableStream, bytes: Result<Vec<u8>, Error>) {
|
fn stream_handle_incoming(stream: &ReadableStream, bytes: Fallible<Vec<u8>>) {
|
||||||
match bytes {
|
match bytes {
|
||||||
Ok(b) => {
|
Ok(b) => {
|
||||||
stream.enqueue_native(b);
|
stream.enqueue_native(b);
|
||||||
|
@ -636,7 +633,7 @@ impl FileListener {
|
||||||
fn handle(&mut self, msg: FileManagerResult<ReadFileProgress>) {
|
fn handle(&mut self, msg: FileManagerResult<ReadFileProgress>) {
|
||||||
match msg {
|
match msg {
|
||||||
Ok(ReadFileProgress::Meta(blob_buf)) => match self.state.take() {
|
Ok(ReadFileProgress::Meta(blob_buf)) => match self.state.take() {
|
||||||
Some(FileListenerState::Empty(callback, target)) => {
|
Some(FileListenerState::Empty(target)) => {
|
||||||
let bytes = if let FileListenerTarget::Stream(ref trusted_stream) = target {
|
let bytes = if let FileListenerTarget::Stream(ref trusted_stream) = target {
|
||||||
let trusted = trusted_stream.clone();
|
let trusted = trusted_stream.clone();
|
||||||
|
|
||||||
|
@ -653,14 +650,14 @@ impl FileListener {
|
||||||
blob_buf.bytes
|
blob_buf.bytes
|
||||||
};
|
};
|
||||||
|
|
||||||
self.state = Some(FileListenerState::Receiving(bytes, callback, target));
|
self.state = Some(FileListenerState::Receiving(bytes, target));
|
||||||
},
|
},
|
||||||
_ => panic!(
|
_ => panic!(
|
||||||
"Unexpected FileListenerState when receiving ReadFileProgress::Meta msg."
|
"Unexpected FileListenerState when receiving ReadFileProgress::Meta msg."
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
Ok(ReadFileProgress::Partial(mut bytes_in)) => match self.state.take() {
|
Ok(ReadFileProgress::Partial(mut bytes_in)) => match self.state.take() {
|
||||||
Some(FileListenerState::Receiving(mut bytes, callback, target)) => {
|
Some(FileListenerState::Receiving(mut bytes, target)) => {
|
||||||
if let FileListenerTarget::Stream(ref trusted_stream) = target {
|
if let FileListenerTarget::Stream(ref trusted_stream) = target {
|
||||||
let trusted = trusted_stream.clone();
|
let trusted = trusted_stream.clone();
|
||||||
|
|
||||||
|
@ -676,19 +673,15 @@ impl FileListener {
|
||||||
bytes.append(&mut bytes_in);
|
bytes.append(&mut bytes_in);
|
||||||
};
|
};
|
||||||
|
|
||||||
self.state = Some(FileListenerState::Receiving(bytes, callback, target));
|
self.state = Some(FileListenerState::Receiving(bytes, target));
|
||||||
},
|
},
|
||||||
_ => panic!(
|
_ => panic!(
|
||||||
"Unexpected FileListenerState when receiving ReadFileProgress::Partial msg."
|
"Unexpected FileListenerState when receiving ReadFileProgress::Partial msg."
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
Ok(ReadFileProgress::EOF) => match self.state.take() {
|
Ok(ReadFileProgress::EOF) => match self.state.take() {
|
||||||
Some(FileListenerState::Receiving(bytes, callback, target)) => match target {
|
Some(FileListenerState::Receiving(bytes, target)) => match target {
|
||||||
FileListenerTarget::Promise(trusted_promise) => {
|
FileListenerTarget::Promise(trusted_promise, callback) => {
|
||||||
let callback = match callback {
|
|
||||||
FileListenerCallback::Promise(callback) => callback,
|
|
||||||
_ => panic!("Expected promise callback."),
|
|
||||||
};
|
|
||||||
let task = task!(resolve_promise: move || {
|
let task = task!(resolve_promise: move || {
|
||||||
let promise = trusted_promise.root();
|
let promise = trusted_promise.root();
|
||||||
let _ac = enter_realm(&*promise.global());
|
let _ac = enter_realm(&*promise.global());
|
||||||
|
@ -717,16 +710,12 @@ impl FileListener {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Err(_) => match self.state.take() {
|
Err(_) => match self.state.take() {
|
||||||
Some(FileListenerState::Receiving(_, callback, target)) |
|
Some(FileListenerState::Receiving(_, target)) |
|
||||||
Some(FileListenerState::Empty(callback, target)) => {
|
Some(FileListenerState::Empty(target)) => {
|
||||||
let error = Err(Error::Network);
|
let error = Err(Error::Network);
|
||||||
|
|
||||||
match target {
|
match target {
|
||||||
FileListenerTarget::Promise(trusted_promise) => {
|
FileListenerTarget::Promise(trusted_promise, callback) => {
|
||||||
let callback = match callback {
|
|
||||||
FileListenerCallback::Promise(callback) => callback,
|
|
||||||
_ => panic!("Expected promise callback."),
|
|
||||||
};
|
|
||||||
let _ = self.task_source.queue_with_canceller(
|
let _ = self.task_source.queue_with_canceller(
|
||||||
task!(reject_promise: move || {
|
task!(reject_promise: move || {
|
||||||
let promise = trusted_promise.root();
|
let promise = trusted_promise.root();
|
||||||
|
@ -2021,10 +2010,9 @@ impl GlobalScope {
|
||||||
let task_source = self.file_reading_task_source();
|
let task_source = self.file_reading_task_source();
|
||||||
|
|
||||||
let mut file_listener = FileListener {
|
let mut file_listener = FileListener {
|
||||||
state: Some(FileListenerState::Empty(
|
state: Some(FileListenerState::Empty(FileListenerTarget::Stream(
|
||||||
FileListenerCallback::Stream,
|
trusted_stream,
|
||||||
FileListenerTarget::Stream(trusted_stream),
|
))),
|
||||||
)),
|
|
||||||
task_source,
|
task_source,
|
||||||
task_canceller,
|
task_canceller,
|
||||||
};
|
};
|
||||||
|
@ -2042,12 +2030,7 @@ impl GlobalScope {
|
||||||
stream
|
stream
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn read_file_async(
|
pub fn read_file_async(&self, id: Uuid, promise: Rc<Promise>, callback: FileListenerCallback) {
|
||||||
&self,
|
|
||||||
id: Uuid,
|
|
||||||
promise: Rc<Promise>,
|
|
||||||
callback: Box<dyn Fn(Rc<Promise>, Result<Vec<u8>, Error>) + Send>,
|
|
||||||
) {
|
|
||||||
let recv = self.send_msg(id);
|
let recv = self.send_msg(id);
|
||||||
|
|
||||||
let trusted_promise = TrustedPromise::new(promise);
|
let trusted_promise = TrustedPromise::new(promise);
|
||||||
|
@ -2055,10 +2038,10 @@ impl GlobalScope {
|
||||||
let task_source = self.file_reading_task_source();
|
let task_source = self.file_reading_task_source();
|
||||||
|
|
||||||
let mut file_listener = FileListener {
|
let mut file_listener = FileListener {
|
||||||
state: Some(FileListenerState::Empty(
|
state: Some(FileListenerState::Empty(FileListenerTarget::Promise(
|
||||||
FileListenerCallback::Promise(callback),
|
trusted_promise,
|
||||||
FileListenerTarget::Promise(trusted_promise),
|
callback,
|
||||||
)),
|
))),
|
||||||
task_source,
|
task_source,
|
||||||
task_canceller,
|
task_canceller,
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue