Webdriver GoBack and GoForward commands wait for navigation complete (#37950)

After sending `GoBack` or `GoForward` command, webdriver wait for the
navigation complete.
It can be achieved by waiting for
`WebViewDelegate::notify_history_changed`

Testing: 
`tests/wpt/meta/webdriver/tests/classic/back/back.py`
`tests/wpt/meta/webdriver/tests/classic/forward/forward.py`

---------

Signed-off-by: batu_hoang <longvatrong111@gmail.com>
Signed-off-by: Josh Matthews <josh@joshmatthews.net>
Signed-off-by: batu_hoang <hoang.binh.trong@huawei.com>
Co-authored-by: Josh Matthews <josh@joshmatthews.net>
This commit is contained in:
batu_hoang 2025-07-15 18:41:50 +08:00 committed by GitHub
parent c817d7b9ce
commit 8e2d2bde6f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
16 changed files with 114 additions and 40 deletions

View file

@ -946,8 +946,11 @@ impl Handler {
// return error with error code no such window.
self.verify_top_level_browsing_context_is_open(webview_id)?;
self.send_message_to_embedder(WebDriverCommandMsg::GoBack(webview_id))?;
Ok(WebDriverResponse::Void)
self.send_message_to_embedder(WebDriverCommandMsg::GoBack(
webview_id,
self.load_status_sender.clone(),
))?;
self.wait_for_load()
}
fn handle_go_forward(&self) -> WebDriverResult<WebDriverResponse> {
@ -956,8 +959,11 @@ impl Handler {
// return error with error code no such window.
self.verify_top_level_browsing_context_is_open(webview_id)?;
self.send_message_to_embedder(WebDriverCommandMsg::GoForward(webview_id))?;
Ok(WebDriverResponse::Void)
self.send_message_to_embedder(WebDriverCommandMsg::GoForward(
webview_id,
self.load_status_sender.clone(),
))?;
self.wait_for_load()
}
fn handle_refresh(&self) -> WebDriverResult<WebDriverResponse> {