From c665a656900db286df275bd3a0f1a31b307844c1 Mon Sep 17 00:00:00 2001 From: George Roman Date: Sun, 11 Aug 2019 00:37:24 +0300 Subject: Finish the JSON clone algorithm --- components/webdriver_server/lib.rs | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) (limited to 'components/webdriver_server') diff --git a/components/webdriver_server/lib.rs b/components/webdriver_server/lib.rs index 0bd7d140c32..3b5d223c3fb 100644 --- a/components/webdriver_server/lib.rs +++ b/components/webdriver_server/lib.rs @@ -241,11 +241,18 @@ impl Serialize for SendableWebDriverJSValue { WebDriverJSValue::Number(x) => serializer.serialize_f64(x), WebDriverJSValue::String(ref x) => serializer.serialize_str(&x), WebDriverJSValue::Element(ref x) => x.serialize(serializer), + WebDriverJSValue::Frame(ref x) => x.serialize(serializer), + WebDriverJSValue::Window(ref x) => x.serialize(serializer), WebDriverJSValue::ArrayLike(ref x) => x .iter() .map(|element| SendableWebDriverJSValue(element.clone())) .collect::>() .serialize(serializer), + WebDriverJSValue::Object(ref x) => x + .iter() + .map(|(k, v)| (k.clone(), SendableWebDriverJSValue(v.clone()))) + .collect::>() + .serialize(serializer), } } } @@ -1396,18 +1403,22 @@ impl Handler { Ok(value) => Ok(WebDriverResponse::Generic(ValueResponse( serde_json::to_value(SendableWebDriverJSValue(value))?, ))), - Err(WebDriverJSError::Timeout) => Err(WebDriverError::new(ErrorStatus::Timeout, "")), - Err(WebDriverJSError::UnknownType) => Err(WebDriverError::new( - ErrorStatus::UnsupportedOperation, - "Unsupported return type", + Err(WebDriverJSError::BrowsingContextNotFound) => Err(WebDriverError::new( + ErrorStatus::JavascriptError, + "Pipeline id not found in browsing context", )), Err(WebDriverJSError::JSError) => Err(WebDriverError::new( ErrorStatus::JavascriptError, "JS evaluation raised an exception", )), - Err(WebDriverJSError::BrowsingContextNotFound) => Err(WebDriverError::new( - ErrorStatus::JavascriptError, - "Pipeline id not found in browsing context", + Err(WebDriverJSError::StaleElementReference) => Err(WebDriverError::new( + ErrorStatus::StaleElementReference, + "Stale element", + )), + Err(WebDriverJSError::Timeout) => Err(WebDriverError::new(ErrorStatus::Timeout, "")), + Err(WebDriverJSError::UnknownType) => Err(WebDriverError::new( + ErrorStatus::UnsupportedOperation, + "Unsupported return type", )), } } -- cgit v1.2.3