webdriver: Synchronize "close window" command & Return correct error type (#38620)

1. Synchronize [Close
Window](https://w3c.github.io/webdriver/#dfn-close-window) command to
reduce intermittency
2. There was a update last month exposing that we are not returning
correct error type for Session getter.
https://github.com/web-platform-tests/wpt/pull/53735
3. Other trivial fix

Testing: 
- `/webdriver/tests/classic/close_window/close.py` can now fully pass.
- `/webdriver/tests/classic/delete_session/*` can now fully pass.

---------

Signed-off-by: Euclid Ye <euclid.ye@huawei.com>
This commit is contained in:
Euclid Ye 2025-08-13 12:06:39 +08:00 committed by GitHub
parent 7fc2f31309
commit 6029976365
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 28 additions and 36 deletions

View file

@ -180,9 +180,7 @@ impl App {
.send(EmbedderToConstellationMessage::SetWebDriverResponseSender(
webdriver_response_sender,
))
.unwrap_or_else(|_| {
warn!("Failed to set WebDriver response sender in constellation");
});
.expect("Failed to set WebDriver response sender in constellation when initing");
webdriver_server::start_server(
port,
@ -354,7 +352,7 @@ impl App {
let context = running_state.webview_by_id(webview_id);
if let Err(error) = sender.send(context.is_some()) {
warn!("Failed to send response of IsWebViewOpein: {error}");
warn!("Failed to send response of IsWebViewOpen: {error}");
}
},
WebDriverCommandMsg::IsBrowsingContextOpen(..) => {
@ -371,8 +369,11 @@ impl App {
running_state.set_load_status_sender(new_webview.id(), load_status_sender);
}
},
WebDriverCommandMsg::CloseWebView(webview_id) => {
WebDriverCommandMsg::CloseWebView(webview_id, response_sender) => {
running_state.close_webview(webview_id);
if let Err(error) = response_sender.send(()) {
warn!("Failed to send response of CloseWebView: {error}");
}
},
WebDriverCommandMsg::FocusWebView(webview_id, response_sender) => {
if let Some(webview) = running_state.webview_by_id(webview_id) {