diff options
Diffstat (limited to 'chrome')
-rw-r--r-- | chrome/test/ui/ui_test.cc | 24 | ||||
-rw-r--r-- | chrome/test/ui/ui_test.h | 8 |
2 files changed, 26 insertions, 6 deletions
diff --git a/chrome/test/ui/ui_test.cc b/chrome/test/ui/ui_test.cc index 62ba163..4a594c1 100644 --- a/chrome/test/ui/ui_test.cc +++ b/chrome/test/ui/ui_test.cc @@ -407,9 +407,12 @@ void UITest::QuitBrowser() { for (BrowserVector::iterator iter = browsers.begin(); iter != browsers.end(); ++iter) { - // Use ApplyAccelerator since it doesn't wait - (*iter)->ApplyAccelerator(IDC_CLOSE_WINDOW); + bool application_closed = false; + CloseBrowserWithTimeout(*iter, &application_closed, + action_timeout_ms(), NULL); delete (*iter); + if (application_closed) + break; } // Now, drop the automation IPC channel so that the automation provider in @@ -737,22 +740,31 @@ void UITest::CloseBrowserAsync(BrowserProxy* browser) const { bool UITest::CloseBrowser(BrowserProxy* browser, bool* application_closed) const { + return CloseBrowserWithTimeout(browser, application_closed, + base::kNoTimeout, NULL); +} + +bool UITest::CloseBrowserWithTimeout(BrowserProxy* browser, + bool* application_closed, + int timeout_ms, + bool* is_timeout) const { DCHECK(application_closed); if (!browser->is_valid() || !browser->handle()) return false; bool result = true; - bool succeeded = server_->Send(new AutomationMsg_CloseBrowser( - 0, browser->handle(), &result, application_closed)); + bool succeeded = server_->SendWithTimeout( + new AutomationMsg_CloseBrowser( + 0, browser->handle(), &result, application_closed), + timeout_ms, is_timeout); if (!succeeded) return false; if (*application_closed) { // Let's wait until the process dies (if it is not gone already). - bool success = base::WaitForSingleProcess(process_, base::kNoTimeout); - DCHECK(success); + result = base::WaitForSingleProcess(process_, timeout_ms); } return result; diff --git a/chrome/test/ui/ui_test.h b/chrome/test/ui/ui_test.h index 543f1fd..1196760 100644 --- a/chrome/test/ui/ui_test.h +++ b/chrome/test/ui/ui_test.h @@ -201,6 +201,14 @@ class UITest : public testing::Test { // after the browser process has terminated. bool CloseBrowser(BrowserProxy* browser, bool* application_closed) const; + // Closes the specified browser. Returns true if the browser was closed. + // If this was the last browser window, |application_closed| is set to true + // and the function returns after the browser process has terminated. + // This call blocks on closing until specified timeout_ms is reached. If + // timed out, it returns false with is_timeout set to true. + bool CloseBrowserWithTimeout(BrowserProxy* browser, bool* application_closed, + int timeout_ms, bool* is_timeout) const; + // Prints numerical information to stdout in a controlled format, for // post-processing. |measurement| is a description of the quantity being // measured, e.g. "vm_peak"; |modifier| is provided as a convenience and |