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

[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/1115813Reviewed-by: default avatarCaleb Rouleau <crouleau@chromium.org>
Reviewed-by: default avatarJohn Chen <johnchen@chromium.org>
Commit-Queue: Cole Winstanley <cwinstanley@google.com>
Cr-Commit-Position: refs/heads/master@{#571334}
parent ffb81aba
......@@ -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