diff options
author | chickenleaf <lashwinib@gmail.com> | 2024-10-11 09:24:41 +0530 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-10-11 03:54:41 +0000 |
commit | 88f1d9dd5e09442e1a1806d231dc074b37633716 (patch) | |
tree | 8d215064c90423db2ae016fa6368f2aa1ce40343 /components/script/dom/globalscope.rs | |
parent | 2b71130a8a95d0c723532d2486493b5db0c9e1b1 (diff) | |
download | servo-88f1d9dd5e09442e1a1806d231dc074b37633716.tar.gz servo-88f1d9dd5e09442e1a1806d231dc074b37633716.zip |
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>
Diffstat (limited to 'components/script/dom/globalscope.rs')
-rw-r--r-- | components/script/dom/globalscope.rs | 63 |
1 files changed, 23 insertions, 40 deletions
diff --git a/components/script/dom/globalscope.rs b/components/script/dom/globalscope.rs index 9c79628464c..9991ae6c103 100644 --- a/components/script/dom/globalscope.rs +++ b/components/script/dom/globalscope.rs @@ -374,6 +374,8 @@ struct TimerListener { 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 struct FileListener { /// State should progress as either of: @@ -384,19 +386,14 @@ struct FileListener { task_canceller: TaskCanceller, } -enum FileListenerCallback { - Promise(Box<dyn Fn(Rc<Promise>, Result<Vec<u8>, Error>) + Send>), - Stream, -} - enum FileListenerTarget { - Promise(TrustedPromise), + Promise(TrustedPromise, FileListenerCallback), Stream(Trusted<ReadableStream>), } enum FileListenerState { - Empty(FileListenerCallback, FileListenerTarget), - Receiving(Vec<u8>, FileListenerCallback, FileListenerTarget), + Empty(FileListenerTarget), + Receiving(Vec<u8>, FileListenerTarget), } #[derive(JSTraceable, MallocSizeOf)] @@ -616,7 +613,7 @@ impl MessageListener { } /// 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 { Ok(b) => { stream.enqueue_native(b); @@ -636,7 +633,7 @@ impl FileListener { fn handle(&mut self, msg: FileManagerResult<ReadFileProgress>) { match msg { 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 trusted = trusted_stream.clone(); @@ -653,14 +650,14 @@ impl FileListener { blob_buf.bytes }; - self.state = Some(FileListenerState::Receiving(bytes, callback, target)); + self.state = Some(FileListenerState::Receiving(bytes, target)); }, _ => panic!( "Unexpected FileListenerState when receiving ReadFileProgress::Meta msg." ), }, 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 { let trusted = trusted_stream.clone(); @@ -676,19 +673,15 @@ impl FileListener { bytes.append(&mut bytes_in); }; - self.state = Some(FileListenerState::Receiving(bytes, callback, target)); + self.state = Some(FileListenerState::Receiving(bytes, target)); }, _ => panic!( "Unexpected FileListenerState when receiving ReadFileProgress::Partial msg." ), }, Ok(ReadFileProgress::EOF) => match self.state.take() { - Some(FileListenerState::Receiving(bytes, callback, target)) => match target { - FileListenerTarget::Promise(trusted_promise) => { - let callback = match callback { - FileListenerCallback::Promise(callback) => callback, - _ => panic!("Expected promise callback."), - }; + Some(FileListenerState::Receiving(bytes, target)) => match target { + FileListenerTarget::Promise(trusted_promise, callback) => { let task = task!(resolve_promise: move || { let promise = trusted_promise.root(); let _ac = enter_realm(&*promise.global()); @@ -717,16 +710,12 @@ impl FileListener { }, }, Err(_) => match self.state.take() { - Some(FileListenerState::Receiving(_, callback, target)) | - Some(FileListenerState::Empty(callback, target)) => { + Some(FileListenerState::Receiving(_, target)) | + Some(FileListenerState::Empty(target)) => { let error = Err(Error::Network); match target { - FileListenerTarget::Promise(trusted_promise) => { - let callback = match callback { - FileListenerCallback::Promise(callback) => callback, - _ => panic!("Expected promise callback."), - }; + FileListenerTarget::Promise(trusted_promise, callback) => { let _ = self.task_source.queue_with_canceller( task!(reject_promise: move || { let promise = trusted_promise.root(); @@ -2021,10 +2010,9 @@ impl GlobalScope { let task_source = self.file_reading_task_source(); let mut file_listener = FileListener { - state: Some(FileListenerState::Empty( - FileListenerCallback::Stream, - FileListenerTarget::Stream(trusted_stream), - )), + state: Some(FileListenerState::Empty(FileListenerTarget::Stream( + trusted_stream, + ))), task_source, task_canceller, }; @@ -2042,12 +2030,7 @@ impl GlobalScope { stream } - pub fn read_file_async( - &self, - id: Uuid, - promise: Rc<Promise>, - callback: Box<dyn Fn(Rc<Promise>, Result<Vec<u8>, Error>) + Send>, - ) { + pub fn read_file_async(&self, id: Uuid, promise: Rc<Promise>, callback: FileListenerCallback) { let recv = self.send_msg(id); let trusted_promise = TrustedPromise::new(promise); @@ -2055,10 +2038,10 @@ impl GlobalScope { let task_source = self.file_reading_task_source(); let mut file_listener = FileListener { - state: Some(FileListenerState::Empty( - FileListenerCallback::Promise(callback), - FileListenerTarget::Promise(trusted_promise), - )), + state: Some(FileListenerState::Empty(FileListenerTarget::Promise( + trusted_promise, + callback, + ))), task_source, task_canceller, }; |