From 5140ce81f0e007391db4039250495e69a7b25dde Mon Sep 17 00:00:00 2001 From: Josh Matthews Date: Wed, 15 Jan 2025 03:15:37 -0500 Subject: [PATCH] webdriver: Serialize JS int values as i32. (#34997) Signed-off-by: Josh Matthews --- components/script/webdriver_handlers.rs | 9 ++++++++- components/shared/script/webdriver_msg.rs | 1 + components/webdriver_server/lib.rs | 1 + 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/components/script/webdriver_handlers.rs b/components/script/webdriver_handlers.rs index 09281de44b8..518060faca1 100644 --- a/components/script/webdriver_handlers.rs +++ b/components/script/webdriver_handlers.rs @@ -171,7 +171,14 @@ pub(crate) unsafe fn jsval_to_webdriver( Ok(WebDriverJSValue::Null) } else if val.get().is_boolean() { Ok(WebDriverJSValue::Boolean(val.get().to_boolean())) - } else if val.get().is_double() || val.get().is_int32() { + } else if val.get().is_int32() { + Ok(WebDriverJSValue::Int( + match FromJSValConvertible::from_jsval(cx, val, ConversionBehavior::Default).unwrap() { + ConversionResult::Success(c) => c, + _ => unreachable!(), + }, + )) + } else if val.get().is_double() { Ok(WebDriverJSValue::Number( match FromJSValConvertible::from_jsval(cx, val, ()).unwrap() { ConversionResult::Success(c) => c, diff --git a/components/shared/script/webdriver_msg.rs b/components/shared/script/webdriver_msg.rs index 2c36bf40cd9..31869fede17 100644 --- a/components/shared/script/webdriver_msg.rs +++ b/components/shared/script/webdriver_msg.rs @@ -102,6 +102,7 @@ pub enum WebDriverJSValue { Undefined, Null, Boolean(bool), + Int(i32), Number(f64), String(String), Element(WebElement), diff --git a/components/webdriver_server/lib.rs b/components/webdriver_server/lib.rs index c99cd726275..46914c2c11e 100644 --- a/components/webdriver_server/lib.rs +++ b/components/webdriver_server/lib.rs @@ -262,6 +262,7 @@ impl Serialize for SendableWebDriverJSValue { WebDriverJSValue::Undefined => serializer.serialize_unit(), WebDriverJSValue::Null => serializer.serialize_unit(), WebDriverJSValue::Boolean(x) => serializer.serialize_bool(x), + WebDriverJSValue::Int(x) => serializer.serialize_i32(x), WebDriverJSValue::Number(x) => serializer.serialize_f64(x), WebDriverJSValue::String(ref x) => serializer.serialize_str(x), WebDriverJSValue::Element(ref x) => x.serialize(serializer),