summaryrefslogtreecommitdiffstats
path: root/chrome/test/ui/ui_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/test/ui/ui_test.cc')
-rw-r--r--chrome/test/ui/ui_test.cc24
1 files changed, 18 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;