From 924fd06f14b64938202995acb430d118e922ad58 Mon Sep 17 00:00:00 2001 From: Kenzie Raditya Tirtarahardja Date: Sun, 11 May 2025 03:27:19 +0800 Subject: [PATCH] Check receiver response in actions.rs (#36928) Extend `wait_for_script_response()` (https://github.com/servo/servo/pull/35024) for `actions.rs` Signed-off-by: PotatoCP Co-authored-by: PotatoCP --- components/webdriver_server/actions.rs | 32 ++++++++++++-------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/components/webdriver_server/actions.rs b/components/webdriver_server/actions.rs index b18a6eaaf2e..9136e091472 100644 --- a/components/webdriver_server/actions.rs +++ b/components/webdriver_server/actions.rs @@ -16,9 +16,9 @@ use webdriver::actions::{ PointerDownAction, PointerMoveAction, PointerOrigin, PointerType, PointerUpAction, WheelAction, WheelActionItem, WheelScrollAction, }; -use webdriver::error::ErrorStatus; +use webdriver::error::{ErrorStatus, WebDriverError}; -use crate::Handler; +use crate::{Handler, wait_for_script_response}; // Interval between wheelScroll and pointerMove increments in ms, based on common vsync static POINTERMOVE_INTERVAL: u64 = 17; @@ -399,8 +399,11 @@ impl Handler { WebDriverScriptCommand::GetElementInViewCenterPoint(x.to_string(), sender), ) .unwrap(); - - let Some(point) = receiver.recv().unwrap()? else { + let response = match wait_for_script_response(receiver) { + Ok(response) => response, + Err(WebDriverError { error, .. }) => return Err(error), + }; + let Ok(Some(point)) = response else { return Err(ErrorStatus::UnknownError); }; point @@ -645,19 +648,14 @@ impl Handler { .send(EmbedderToConstellationMessage::WebDriverCommand(cmd_msg)) .unwrap(); - match receiver.recv() { - Ok(viewport_size) => { - if x < 0 || - x as f32 > viewport_size.width || - y < 0 || - y as f32 > viewport_size.height - { - Err(ErrorStatus::MoveTargetOutOfBounds) - } else { - Ok(()) - } - }, - Err(_) => Err(ErrorStatus::UnknownError), + let viewport_size = match wait_for_script_response(receiver) { + Ok(response) => response, + Err(WebDriverError { error, .. }) => return Err(error), + }; + if x < 0 || x as f32 > viewport_size.width || y < 0 || y as f32 > viewport_size.height { + Err(ErrorStatus::MoveTargetOutOfBounds) + } else { + Ok(()) } } }