From fe8a22b72c42296ccbbd5c4f459936ea28c5dee2 Mon Sep 17 00:00:00 2001 From: Martin Robinson Date: Tue, 7 Jan 2025 04:36:39 +0100 Subject: script: Unsilence all main thread `TaskQueue` errors (#34849) No longer hide errors while queueing tasks on the main thread. This requires creating two types of `TaskSource`s: one for the main thread and one that can be sent to other threads. This makes queueing a bit more efficient on the main thread and more importantly, no longer hides task queue errors. Fixes #25688. Signed-off-by: Martin Robinson Co-authored-by: Mukilan Thiyagarajan --- components/script/dom/htmlimageelement.rs | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) (limited to 'components/script/dom/htmlimageelement.rs') diff --git a/components/script/dom/htmlimageelement.rs b/components/script/dom/htmlimageelement.rs index 293fc1200cd..274faf873f0 100644 --- a/components/script/dom/htmlimageelement.rs +++ b/components/script/dom/htmlimageelement.rs @@ -891,8 +891,7 @@ impl HTMLImageElement { self.abort_request(State::Broken, ImageRequestPhase::Current, can_gc); self.abort_request(State::Broken, ImageRequestPhase::Pending, can_gc); // Step 9. - // FIXME(nox): Why are errors silenced here? - let _ = task_source.queue(task!(image_null_source_error: move || { + task_source.queue(task!(image_null_source_error: move || { let this = this.root(); { let mut current_request = @@ -924,8 +923,7 @@ impl HTMLImageElement { self.abort_request(State::Broken, ImageRequestPhase::Pending, can_gc); // Step 12.1-12.5. let src = src.0; - // FIXME(nox): Why are errors silenced here? - let _ = task_source.queue(task!(image_selected_source_error: move || { + task_source.queue(task!(image_selected_source_error: move || { let this = this.root(); { let mut current_request = @@ -1016,7 +1014,7 @@ impl HTMLImageElement { let this = Trusted::new(self); let src = src.0; - let _ = window.task_manager().dom_manipulation_task_source().queue( + window.task_manager().dom_manipulation_task_source().queue( task!(image_load_event: move || { let this = this.root(); { @@ -1063,7 +1061,11 @@ impl HTMLImageElement { ) -> IpcSender { let trusted_node = Trusted::new(elem); let (responder_sender, responder_receiver) = ipc::channel().unwrap(); - let task_source = elem.owner_window().task_manager().networking_task_source(); + let task_source = elem + .owner_window() + .task_manager() + .networking_task_source() + .to_sendable(); let generation = elem.generation.get(); ROUTER.add_typed_route( @@ -1075,7 +1077,7 @@ impl HTMLImageElement { let element = trusted_node.clone(); let image: PendingImageResponse = message.unwrap(); let selected_source_clone = selected_source.clone(); - let _ = task_source.queue( + task_source.queue( task!(process_image_response_for_environment_change: move || { let element = element.root(); // Ignore any image response for a previous request that has been discarded. @@ -1240,7 +1242,7 @@ impl HTMLImageElement { let this = Trusted::new(self); let window = self.owner_window(); let src = src.0; - let _ = window.task_manager().dom_manipulation_task_source().queue( + window.task_manager().dom_manipulation_task_source().queue( task!(image_load_event: move || { let this = this.root(); let relevant_mutation = this.generation.get() != generation; -- cgit v1.2.3