diff --git a/components/webdriver_server/lib.rs b/components/webdriver_server/lib.rs index d29d0c823fd..1cad3e84741 100644 --- a/components/webdriver_server/lib.rs +++ b/components/webdriver_server/lib.rs @@ -203,8 +203,8 @@ impl WebDriverSession { WebDriverSession { id: Uuid::new_v4(), - browsing_context_id, webview_id, + browsing_context_id, window_handles, @@ -760,7 +760,7 @@ impl Handler { } /// - fn handle_get(&self, parameters: &GetParameters) -> WebDriverResult { + fn handle_get(&mut self, parameters: &GetParameters) -> WebDriverResult { let webview_id = self.session()?.webview_id; // Step 2. If session's current top-level browsing context is no longer open, // return error with error code no such window. @@ -781,7 +781,13 @@ impl Handler { WebDriverCommandMsg::LoadUrl(webview_id, url, self.load_status_sender.clone()); self.send_message_to_embedder(cmd_msg)?; - self.wait_for_navigation_to_complete() + // Step 8.2.1: try to wait for navigation to complete. + self.wait_for_navigation_to_complete()?; + + // Step 8.3. Set current browsing context with session and current top browsing context + self.session_mut()?.browsing_context_id = BrowsingContextId::from(webview_id); + + Ok(WebDriverResponse::Void) } /// @@ -989,7 +995,7 @@ impl Handler { self.wait_for_navigation_to_complete() } - fn handle_refresh(&self) -> WebDriverResult { + fn handle_refresh(&mut self) -> WebDriverResult { let webview_id = self.session()?.webview_id; // Step 1. If session's current top-level browsing context is no longer open, // return error with error code no such window. @@ -998,7 +1004,13 @@ impl Handler { let cmd_msg = WebDriverCommandMsg::Refresh(webview_id, self.load_status_sender.clone()); self.send_message_to_embedder(cmd_msg)?; - self.wait_for_navigation_to_complete() + // Step 4.1: Try to wait for navigation to complete. + self.wait_for_navigation_to_complete()?; + + // Step 5. Set current browsing context with session and current top browsing context. + self.session_mut()?.browsing_context_id = BrowsingContextId::from(webview_id); + + Ok(WebDriverResponse::Void) } fn handle_title(&self) -> WebDriverResult { diff --git a/tests/wpt/meta/webdriver/tests/classic/refresh/refresh.py.ini b/tests/wpt/meta/webdriver/tests/classic/refresh/refresh.py.ini index 3b120a48422..01e72ced1fc 100644 --- a/tests/wpt/meta/webdriver/tests/classic/refresh/refresh.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/refresh/refresh.py.ini @@ -13,6 +13,3 @@ [test_history_pushstate] expected: FAIL - - [test_refresh_switches_to_parent_browsing_context] - expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/take_element_screenshot/screenshot.py.ini b/tests/wpt/meta/webdriver/tests/classic/take_element_screenshot/screenshot.py.ini index 981c68641a8..37cf5675d2a 100644 --- a/tests/wpt/meta/webdriver/tests/classic/take_element_screenshot/screenshot.py.ini +++ b/tests/wpt/meta/webdriver/tests/classic/take_element_screenshot/screenshot.py.ini @@ -1,7 +1,4 @@ [screenshot.py] - [test_no_browsing_context] - expected: FAIL - [test_no_such_element_with_invalid_value] expected: FAIL diff --git a/tests/wpt/meta/webdriver/tests/classic/take_screenshot/screenshot.py.ini b/tests/wpt/meta/webdriver/tests/classic/take_screenshot/screenshot.py.ini deleted file mode 100644 index e092d5aebe7..00000000000 --- a/tests/wpt/meta/webdriver/tests/classic/take_screenshot/screenshot.py.ini +++ /dev/null @@ -1,3 +0,0 @@ -[screenshot.py] - [test_no_browsing_context] - expected: FAIL