mirror of
https://github.com/servo/servo.git
synced 2025-08-02 04:00:32 +01:00
WebDriver: Wait focus to complete when switching window (#38160)
Previously the webdriver do not wait for focus to complete, which can cause some instability. No matter interact as human or webdriver, the focus chain always goes as: Embedder forwards -> Constellation (do some updates) -> Embedder (do some updates). --------- Signed-off-by: Euclid Ye <euclid.ye@huawei.com>
This commit is contained in:
parent
7c96084298
commit
b0a29393a9
10 changed files with 48 additions and 23 deletions
|
@ -1266,9 +1266,14 @@ impl Handler {
|
|||
let webview_id = *webview_id;
|
||||
session.webview_id = webview_id;
|
||||
session.browsing_context_id = BrowsingContextId::from(webview_id);
|
||||
|
||||
let msg = WebDriverCommandMsg::FocusWebView(webview_id);
|
||||
let (sender, receiver) = ipc::channel().unwrap();
|
||||
let msg = WebDriverCommandMsg::FocusWebView(webview_id, sender);
|
||||
self.send_message_to_embedder(msg)?;
|
||||
if wait_for_script_response(receiver)? {
|
||||
debug!("Focus new webview successfully");
|
||||
} else {
|
||||
debug!("Focus new webview failed, it may not exist anymore");
|
||||
}
|
||||
Ok(WebDriverResponse::Void)
|
||||
} else {
|
||||
Err(WebDriverError::new(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue