mirror of
https://github.com/servo/servo.git
synced 2025-08-05 05:30:08 +01:00
webdriver: improve session commands (#38397)
Add timeout and strictFileInteractability capabilities to response of new session command. Allow delete session command to run without a session. Testing: Clear some unexpected results of session tests in webdriver CI and `tests/wpt/meta/webdriver/tests/classic/delete_session/delete.py.ini` --------- Signed-off-by: batu_hoang <hoang.binh.trong@huawei.com> Signed-off-by: batu_hoang <longvatrong111@gmail.com>
This commit is contained in:
parent
c836ed374c
commit
929fd0aa3c
4 changed files with 19 additions and 11 deletions
|
@ -623,8 +623,12 @@ impl Handler {
|
||||||
Ok(WebDriverResponse::NewSession(response))
|
Ok(WebDriverResponse::NewSession(response))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <https://w3c.github.io/webdriver/#dfn-delete-session>
|
||||||
fn handle_delete_session(&mut self) -> WebDriverResult<WebDriverResponse> {
|
fn handle_delete_session(&mut self) -> WebDriverResult<WebDriverResponse> {
|
||||||
|
// Step 1. If session is http, close the session
|
||||||
self.session = None;
|
self.session = None;
|
||||||
|
|
||||||
|
// Step 2. Return success with data null
|
||||||
Ok(WebDriverResponse::DeleteSession)
|
Ok(WebDriverResponse::DeleteSession)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2445,7 +2449,9 @@ impl WebDriverHandler<ServoExtensionRoute> for Handler {
|
||||||
// Unless we are trying to create a new session, we need to ensure that a
|
// Unless we are trying to create a new session, we need to ensure that a
|
||||||
// session has previously been created
|
// session has previously been created
|
||||||
match msg.command {
|
match msg.command {
|
||||||
WebDriverCommand::NewSession(_) | WebDriverCommand::Status => {},
|
WebDriverCommand::NewSession(_) |
|
||||||
|
WebDriverCommand::Status |
|
||||||
|
WebDriverCommand::DeleteSession => {},
|
||||||
_ => {
|
_ => {
|
||||||
self.session()?;
|
self.session()?;
|
||||||
},
|
},
|
||||||
|
|
|
@ -119,6 +119,8 @@ impl Handler {
|
||||||
capabilities.get("strictFileInteractability")
|
capabilities.get("strictFileInteractability")
|
||||||
{
|
{
|
||||||
session.strict_file_interactability = *strict_file_interactability;
|
session.strict_file_interactability = *strict_file_interactability;
|
||||||
|
} else {
|
||||||
|
capabilities.insert(String::from("strictFileInteractability"), json!(false));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Step 9.3. Let timeouts be the result of getting a property "timeouts" from capabilities.
|
// Step 9.3. Let timeouts be the result of getting a property "timeouts" from capabilities.
|
||||||
|
|
|
@ -46,9 +46,15 @@ pub(crate) fn deserialize_as_timeouts_configuration(
|
||||||
})? as u64;
|
})? as u64;
|
||||||
},
|
},
|
||||||
"script" => {
|
"script" => {
|
||||||
config.script = Some(value.as_f64().ok_or_else(|| {
|
config.script = match value {
|
||||||
WebDriverError::new(ErrorStatus::InvalidArgument, "Invalid script timeout")
|
Value::Null => None,
|
||||||
})? as u64);
|
_ => Some(value.as_f64().ok_or_else(|| {
|
||||||
|
WebDriverError::new(
|
||||||
|
ErrorStatus::InvalidArgument,
|
||||||
|
"Invalid script timeout",
|
||||||
|
)
|
||||||
|
})? as u64),
|
||||||
|
};
|
||||||
},
|
},
|
||||||
_ => {
|
_ => {
|
||||||
return Err(WebDriverError::new(
|
return Err(WebDriverError::new(
|
||||||
|
@ -69,9 +75,7 @@ pub(crate) fn deserialize_as_timeouts_configuration(
|
||||||
|
|
||||||
pub(crate) fn serialize_timeouts_configuration(timeouts: &TimeoutsConfiguration) -> Value {
|
pub(crate) fn serialize_timeouts_configuration(timeouts: &TimeoutsConfiguration) -> Value {
|
||||||
let mut map = serde_json::Map::new();
|
let mut map = serde_json::Map::new();
|
||||||
if let Some(script_timeout) = timeouts.script {
|
map.insert("script".to_string(), Value::from(timeouts.script));
|
||||||
map.insert("script".to_string(), Value::from(script_timeout));
|
|
||||||
}
|
|
||||||
map.insert("pageLoad".to_string(), Value::from(timeouts.page_load));
|
map.insert("pageLoad".to_string(), Value::from(timeouts.page_load));
|
||||||
map.insert("implicit".to_string(), Value::from(timeouts.implicit_wait));
|
map.insert("implicit".to_string(), Value::from(timeouts.implicit_wait));
|
||||||
Value::Object(map)
|
Value::Object(map)
|
||||||
|
|
|
@ -1,7 +1,3 @@
|
||||||
[delete.py]
|
[delete.py]
|
||||||
expected: ERROR
|
|
||||||
[test_null_response_value]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[test_accepted_beforeunload_prompt]
|
[test_accepted_beforeunload_prompt]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue