Commit d47e2e3c authored by Cole Winstanley's avatar Cole Winstanley Committed by Commit Bot

Reland "[ChromeDriver] Making CloseWindow W3C Compliant"

This is a reland of be44dc6b

Original change's description:
> [ChromeDriver] Making CloseWindow W3C Compliant
> 
> Making CloseWindow W3C compliant by returning the result of
> GetWindowHandles. Modified testCloseWindow in run_py_tests.py
> to test this conformance.
> 
> Bug: chromedriver:1990
> Change-Id: I2e90e9e9ca16559ea3678846a7d605b402b4d431
> Reviewed-on: https://chromium-review.googlesource.com/1115813
> Reviewed-by: Caleb Rouleau <crouleau@chromium.org>
> Reviewed-by: John Chen <johnchen@chromium.org>
> Commit-Queue: Cole Winstanley <cwinstanley@google.com>
> Cr-Commit-Position: refs/heads/master@{#571334}

Bug: chromedriver:1990
Change-Id: Iac9b60f09aeb697151077410dbcb408dbba420c2
Reviewed-on: https://chromium-review.googlesource.com/1120696Reviewed-by: default avatarJohn Chen <johnchen@chromium.org>
Commit-Queue: Cole Winstanley <cwinstanley@google.com>
Cr-Commit-Position: refs/heads/master@{#571639}
parent f8f19b4f
......@@ -308,7 +308,7 @@ class ChromeDriver(object):
return self.ExecuteCommand(Command.GET_CURRENT_WINDOW_HANDLE)
def CloseWindow(self):
self.ExecuteCommand(Command.CLOSE)
return self.ExecuteCommand(Command.CLOSE)
def Load(self, url):
self.ExecuteCommand(Command.GET, {'url': url})
......
......@@ -414,11 +414,10 @@ Status ExecuteClose(Session* session,
if (status.IsError())
return status;
status = session->chrome->GetWebViewIds(&web_view_ids,
session->w3c_compliant);
status = ExecuteGetWindowHandles(session, base::DictionaryValue(), value);
if ((status.code() == kChromeNotReachable && is_last_web_view) ||
(status.IsOk() && web_view_ids.empty())) {
// If no window is open, close is the equivalent of calling "quit".
(status.IsOk() && (*value)->GetList().empty())) {
// If the only open window was closed, close is the same as calling "quit".
session->quit = true;
return session->chrome->Quit();
}
......
......@@ -388,16 +388,21 @@ class ChromeDriverTest(ChromeDriverBaseTestWithWebServer):
self.assertEquals(new_window_handle, self._driver.GetCurrentWindowHandle())
self.assertRaises(chromedriver.NoSuchElement,
self._driver.FindElement, 'id', 'link')
self._driver.CloseWindow()
close_returned_handles = self._driver.CloseWindow()
self.assertRaises(chromedriver.NoSuchWindow,
self._driver.GetCurrentWindowHandle)
new_handles = self._driver.GetWindowHandles()
self.assertEquals(close_returned_handles, new_handles)
for old_handle in old_handles:
self.assertTrue(old_handle in new_handles)
for handle in new_handles:
self._driver.SwitchToWindow(handle)
self.assertEquals(handle, self._driver.GetCurrentWindowHandle())
self._driver.CloseWindow()
close_handles = self._driver.CloseWindow()
# CloseWindow quits the session if on the last window.
if handle is not new_handles[-1]:
from_get_window_handles = self._driver.GetWindowHandles()
self.assertEquals(close_handles, from_get_window_handles)
def testCloseWindowUsingJavascript(self):
self._driver.Load(self.GetHttpUrlForFile('/chromedriver/page_test.html'))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment