Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/lifetime/browser_close_manager.h" | 5 #include "chrome/browser/lifetime/browser_close_manager.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 24 matching lines...) Expand all Loading... | |
| 35 #include "chrome/common/chrome_switches.h" | 35 #include "chrome/common/chrome_switches.h" |
| 36 #include "chrome/common/url_constants.h" | 36 #include "chrome/common/url_constants.h" |
| 37 #include "chrome/test/base/in_process_browser_test.h" | 37 #include "chrome/test/base/in_process_browser_test.h" |
| 38 #include "chrome/test/base/ui_test_utils.h" | 38 #include "chrome/test/base/ui_test_utils.h" |
| 39 #include "components/app_modal/javascript_app_modal_dialog.h" | 39 #include "components/app_modal/javascript_app_modal_dialog.h" |
| 40 #include "components/app_modal/native_app_modal_dialog.h" | 40 #include "components/app_modal/native_app_modal_dialog.h" |
| 41 #include "content/public/browser/browser_context.h" | 41 #include "content/public/browser/browser_context.h" |
| 42 #include "content/public/browser/download_item.h" | 42 #include "content/public/browser/download_item.h" |
| 43 #include "content/public/browser/download_manager.h" | 43 #include "content/public/browser/download_manager.h" |
| 44 #include "content/public/browser/notification_service.h" | 44 #include "content/public/browser/notification_service.h" |
| 45 #include "content/public/browser/render_view_host.h" | |
| 46 #include "content/public/browser/render_widget_host.h" | |
| 45 #include "content/public/browser/web_contents.h" | 47 #include "content/public/browser/web_contents.h" |
| 46 #include "content/public/test/download_test_observer.h" | 48 #include "content/public/test/download_test_observer.h" |
| 47 #include "content/public/test/test_navigation_observer.h" | 49 #include "content/public/test/test_navigation_observer.h" |
| 48 #include "net/test/embedded_test_server/embedded_test_server.h" | 50 #include "net/test/embedded_test_server/embedded_test_server.h" |
| 49 #include "net/test/url_request/url_request_mock_http_job.h" | 51 #include "net/test/url_request/url_request_mock_http_job.h" |
| 50 #include "net/test/url_request/url_request_slow_download_job.h" | 52 #include "net/test/url_request/url_request_slow_download_job.h" |
| 51 | 53 |
| 52 #if defined(OS_CHROMEOS) | 54 #if defined(OS_CHROMEOS) |
| 53 #include "chromeos/chromeos_switches.h" | 55 #include "chromeos/chromeos_switches.h" |
| 54 #endif | 56 #endif |
| 55 | 57 |
| 56 namespace { | 58 namespace { |
| 57 | 59 |
| 58 app_modal::NativeAppModalDialog* GetNextDialog() { | 60 app_modal::NativeAppModalDialog* GetNextDialog() { |
| 59 app_modal::AppModalDialog* dialog = ui_test_utils::WaitForAppModalDialog(); | 61 app_modal::AppModalDialog* dialog = ui_test_utils::WaitForAppModalDialog(); |
| 60 EXPECT_TRUE(dialog->IsJavaScriptModalDialog()); | 62 EXPECT_TRUE(dialog->IsJavaScriptModalDialog()); |
| 61 app_modal::JavaScriptAppModalDialog* js_dialog = | 63 app_modal::JavaScriptAppModalDialog* js_dialog = |
| 62 static_cast<app_modal::JavaScriptAppModalDialog*>(dialog); | 64 static_cast<app_modal::JavaScriptAppModalDialog*>(dialog); |
| 63 CHECK(js_dialog->native_dialog()); | 65 CHECK(js_dialog->native_dialog()); |
| 64 return js_dialog->native_dialog(); | 66 return js_dialog->native_dialog(); |
| 65 } | 67 } |
| 66 | 68 |
| 67 void AcceptClose() { | 69 void AcceptClose() { |
|
Charlie Reis
2016/05/23 17:03:29
Please add comments to these saying that they requ
| |
| 68 GetNextDialog()->AcceptAppModalDialog(); | 70 GetNextDialog()->AcceptAppModalDialog(); |
| 69 } | 71 } |
| 70 | 72 |
| 71 void CancelClose() { | 73 void CancelClose() { |
| 72 GetNextDialog()->CancelAppModalDialog(); | 74 GetNextDialog()->CancelAppModalDialog(); |
| 73 } | 75 } |
| 74 | 76 |
| 75 class RepeatedNotificationObserver : public content::NotificationObserver { | 77 class RepeatedNotificationObserver : public content::NotificationObserver { |
| 76 public: | 78 public: |
| 77 explicit RepeatedNotificationObserver(int type, int count) | 79 explicit RepeatedNotificationObserver(int type, int count) |
| (...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 242 browser, | 244 browser, |
| 243 GURL(net::URLRequestSlowDownloadJob::kKnownSizeUrl), | 245 GURL(net::URLRequestSlowDownloadJob::kKnownSizeUrl), |
| 244 NEW_BACKGROUND_TAB, | 246 NEW_BACKGROUND_TAB, |
| 245 ui_test_utils::BROWSER_TEST_NONE); | 247 ui_test_utils::BROWSER_TEST_NONE); |
| 246 observer.WaitForFinished(); | 248 observer.WaitForFinished(); |
| 247 EXPECT_EQ( | 249 EXPECT_EQ( |
| 248 1UL, | 250 1UL, |
| 249 observer.NumDownloadsSeenInState(content::DownloadItem::IN_PROGRESS)); | 251 observer.NumDownloadsSeenInState(content::DownloadItem::IN_PROGRESS)); |
| 250 } | 252 } |
| 251 | 253 |
| 254 // Makes sure that hang monitor will not trigger RendererUnresponsive | |
| 255 // for that web content. | |
|
Charlie Reis
2016/05/23 17:03:30
Please mention that this must be called before any
| |
| 256 void DisableHangMonitor(content::WebContents* web_contents) { | |
| 257 web_contents->GetRenderViewHost()->GetWidget()->DisableHangMonitorForTest(); | |
| 258 } | |
| 259 | |
| 260 void DisableHangMonitor(Browser* browser) { | |
| 261 for (int i = 0; i < browser->tab_strip_model()->count(); i++) | |
| 262 DisableHangMonitor(browser->tab_strip_model()->GetWebContentsAt(i)); | |
| 263 } | |
| 264 | |
| 252 std::vector<Browser*> browsers_; | 265 std::vector<Browser*> browsers_; |
| 253 }; | 266 }; |
| 254 | 267 |
| 255 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, TestSingleTabShutdown) { | 268 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, TestSingleTabShutdown) { |
| 256 ASSERT_TRUE(embedded_test_server()->Start()); | 269 ASSERT_TRUE(embedded_test_server()->Start()); |
| 257 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 270 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 258 browser(), embedded_test_server()->GetURL("/beforeunload.html"))); | 271 browser(), embedded_test_server()->GetURL("/beforeunload.html"))); |
| 272 DisableHangMonitor(browser()); | |
| 273 | |
| 259 RepeatedNotificationObserver cancel_observer( | 274 RepeatedNotificationObserver cancel_observer( |
| 260 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); | 275 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); |
| 261 chrome::CloseAllBrowsersAndQuit(); | 276 chrome::CloseAllBrowsersAndQuit(); |
| 262 ASSERT_NO_FATAL_FAILURE(CancelClose()); | 277 ASSERT_NO_FATAL_FAILURE(CancelClose()); |
| 263 cancel_observer.Wait(); | 278 cancel_observer.Wait(); |
| 264 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 279 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
| 265 EXPECT_EQ(1, browser()->tab_strip_model()->count()); | 280 EXPECT_EQ(1, browser()->tab_strip_model()->count()); |
| 266 | 281 |
| 267 RepeatedNotificationObserver close_observer( | 282 RepeatedNotificationObserver close_observer( |
| 268 chrome::NOTIFICATION_BROWSER_CLOSED, 1); | 283 chrome::NOTIFICATION_BROWSER_CLOSED, 1); |
| 269 chrome::CloseAllBrowsersAndQuit(); | 284 chrome::CloseAllBrowsersAndQuit(); |
| 270 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 285 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 271 close_observer.Wait(); | 286 close_observer.Wait(); |
| 272 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 287 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
| 273 EXPECT_TRUE(BrowserList::GetInstance()->empty()); | 288 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 274 } | 289 } |
| 275 | 290 |
| 276 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, | 291 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
| 277 TestShutdownMoreThanOnce) { | 292 TestShutdownMoreThanOnce) { |
| 278 ASSERT_TRUE(embedded_test_server()->Start()); | 293 ASSERT_TRUE(embedded_test_server()->Start()); |
| 279 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 294 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 280 browser(), embedded_test_server()->GetURL("/beforeunload.html"))); | 295 browser(), embedded_test_server()->GetURL("/beforeunload.html"))); |
| 296 DisableHangMonitor(browser()); | |
| 297 | |
| 281 RepeatedNotificationObserver cancel_observer( | 298 RepeatedNotificationObserver cancel_observer( |
| 282 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); | 299 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); |
| 283 chrome::CloseAllBrowsersAndQuit(); | 300 chrome::CloseAllBrowsersAndQuit(); |
| 284 chrome::CloseAllBrowsersAndQuit(); | 301 chrome::CloseAllBrowsersAndQuit(); |
| 285 ASSERT_NO_FATAL_FAILURE(CancelClose()); | 302 ASSERT_NO_FATAL_FAILURE(CancelClose()); |
| 286 cancel_observer.Wait(); | 303 cancel_observer.Wait(); |
| 287 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 304 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
| 288 EXPECT_EQ(1, browser()->tab_strip_model()->count()); | 305 EXPECT_EQ(1, browser()->tab_strip_model()->count()); |
| 289 | 306 |
| 290 RepeatedNotificationObserver close_observer( | 307 RepeatedNotificationObserver close_observer( |
| 291 chrome::NOTIFICATION_BROWSER_CLOSED, 1); | 308 chrome::NOTIFICATION_BROWSER_CLOSED, 1); |
| 292 chrome::CloseAllBrowsersAndQuit(); | 309 chrome::CloseAllBrowsersAndQuit(); |
| 293 chrome::CloseAllBrowsersAndQuit(); | 310 chrome::CloseAllBrowsersAndQuit(); |
| 294 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 311 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 295 close_observer.Wait(); | 312 close_observer.Wait(); |
| 296 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 313 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
| 297 EXPECT_TRUE(BrowserList::GetInstance()->empty()); | 314 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 298 } | 315 } |
| 299 | 316 |
| 300 // Test is flaky on Mac. http://crbug.com/517687 | |
| 301 #if defined(OS_MACOSX) | |
| 302 #define MAYBE_PRE_TestSessionRestore DISABLED_PRE_TestSessionRestore | |
| 303 #else | |
| 304 #define MAYBE_PRE_TestSessionRestore DISABLED_PRE_TestSessionRestore | |
| 305 #endif | |
| 306 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, | 317 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
| 307 MAYBE_PRE_TestSessionRestore) { | 318 PRE_TestSessionRestore) { |
| 308 ASSERT_TRUE(embedded_test_server()->Start()); | 319 ASSERT_TRUE(embedded_test_server()->Start()); |
| 309 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 320 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 310 browser(), embedded_test_server()->GetURL("/beforeunload.html"))); | 321 browser(), embedded_test_server()->GetURL("/beforeunload.html"))); |
| 311 AddBlankTabAndShow(browser()); | 322 AddBlankTabAndShow(browser()); |
| 312 ASSERT_NO_FATAL_FAILURE( | 323 ASSERT_NO_FATAL_FAILURE( |
| 313 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIAboutURL))); | 324 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIAboutURL))); |
| 325 DisableHangMonitor(browser()); | |
| 326 | |
| 314 RepeatedNotificationObserver cancel_observer( | 327 RepeatedNotificationObserver cancel_observer( |
| 315 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); | 328 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); |
| 316 chrome::CloseAllBrowsersAndQuit(); | 329 chrome::CloseAllBrowsersAndQuit(); |
| 317 ASSERT_NO_FATAL_FAILURE(CancelClose()); | 330 ASSERT_NO_FATAL_FAILURE(CancelClose()); |
| 318 cancel_observer.Wait(); | 331 cancel_observer.Wait(); |
| 319 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 332 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
| 320 | 333 |
| 321 browser()->tab_strip_model() | 334 browser()->tab_strip_model() |
| 322 ->CloseWebContentsAt(1, TabStripModel::CLOSE_USER_GESTURE); | 335 ->CloseWebContentsAt(1, TabStripModel::CLOSE_USER_GESTURE); |
| 323 content::TestNavigationObserver navigation_observer( | 336 content::TestNavigationObserver navigation_observer( |
| 324 browser()->tab_strip_model()->GetActiveWebContents(), 1); | 337 browser()->tab_strip_model()->GetActiveWebContents(), 1); |
| 325 ASSERT_NO_FATAL_FAILURE( | 338 ASSERT_NO_FATAL_FAILURE( |
| 326 NavigateToURLWithDisposition(browser(), | 339 NavigateToURLWithDisposition(browser(), |
| 327 GURL(chrome::kChromeUIVersionURL), | 340 GURL(chrome::kChromeUIVersionURL), |
| 328 CURRENT_TAB, | 341 CURRENT_TAB, |
| 329 ui_test_utils::BROWSER_TEST_NONE)); | 342 ui_test_utils::BROWSER_TEST_NONE)); |
| 330 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 343 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 331 navigation_observer.Wait(); | 344 navigation_observer.Wait(); |
| 332 | 345 |
| 333 RepeatedNotificationObserver close_observer( | 346 RepeatedNotificationObserver close_observer( |
| 334 chrome::NOTIFICATION_BROWSER_CLOSED, 1); | 347 chrome::NOTIFICATION_BROWSER_CLOSED, 1); |
| 335 chrome::CloseAllBrowsersAndQuit(); | 348 chrome::CloseAllBrowsersAndQuit(); |
| 336 close_observer.Wait(); | 349 close_observer.Wait(); |
| 337 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 350 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
| 338 EXPECT_TRUE(BrowserList::GetInstance()->empty()); | 351 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 339 } | 352 } |
| 340 | 353 |
| 341 // Test that the tab closed after the aborted shutdown attempt is not re-opened | 354 // Test that the tab closed after the aborted shutdown attempt is not re-opened |
| 342 // when restoring the session. | 355 // when restoring the session. |
| 343 // Test is flaky on Mac. http://crbug.com/517687 | |
| 344 #if defined(OS_MACOSX) | |
| 345 #define MAYBE_TestSessionRestore DISABLED_TestSessionRestore | |
| 346 #else | |
| 347 #define MAYBE_TestSessionRestore DISABLED_TestSessionRestore | |
| 348 #endif | |
| 349 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, | 356 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
| 350 MAYBE_TestSessionRestore) { | 357 TestSessionRestore) { |
| 351 // The testing framework launches Chrome with about:blank as args. | 358 // The testing framework launches Chrome with about:blank as args. |
| 352 EXPECT_EQ(2, browser()->tab_strip_model()->count()); | 359 EXPECT_EQ(2, browser()->tab_strip_model()->count()); |
| 353 EXPECT_EQ(GURL(chrome::kChromeUIVersionURL), | 360 EXPECT_EQ(GURL(chrome::kChromeUIVersionURL), |
| 354 browser()->tab_strip_model()->GetWebContentsAt(0)->GetURL()); | 361 browser()->tab_strip_model()->GetWebContentsAt(0)->GetURL()); |
| 355 EXPECT_EQ(GURL("about:blank"), | 362 EXPECT_EQ(GURL("about:blank"), |
| 356 browser()->tab_strip_model()->GetWebContentsAt(1)->GetURL()); | 363 browser()->tab_strip_model()->GetWebContentsAt(1)->GetURL()); |
| 357 } | 364 } |
| 358 | 365 |
| 359 // Test that browser windows are only closed if all browsers are ready to close | 366 // Test that browser windows are only closed if all browsers are ready to close |
| 360 // and that all beforeunload dialogs are shown again after a cancel. | 367 // and that all beforeunload dialogs are shown again after a cancel. |
| 361 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, TestMultipleWindows) { | 368 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, TestMultipleWindows) { |
| 362 ASSERT_TRUE(embedded_test_server()->Start()); | 369 ASSERT_TRUE(embedded_test_server()->Start()); |
| 363 browsers_.push_back(CreateBrowser(browser()->profile())); | 370 browsers_.push_back(CreateBrowser(browser()->profile())); |
| 364 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 371 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 365 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); | 372 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); |
| 366 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 373 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 367 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); | 374 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); |
| 375 DisableHangMonitor(browsers_[0]); | |
| 376 DisableHangMonitor(browsers_[1]); | |
| 368 | 377 |
| 369 // Cancel shutdown on the first beforeunload event. | 378 // Cancel shutdown on the first beforeunload event. |
| 370 { | 379 { |
| 371 RepeatedNotificationObserver cancel_observer( | 380 RepeatedNotificationObserver cancel_observer( |
| 372 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); | 381 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); |
| 373 chrome::CloseAllBrowsersAndQuit(); | 382 chrome::CloseAllBrowsersAndQuit(); |
| 374 ASSERT_NO_FATAL_FAILURE(CancelClose()); | 383 ASSERT_NO_FATAL_FAILURE(CancelClose()); |
| 375 cancel_observer.Wait(); | 384 cancel_observer.Wait(); |
| 376 } | 385 } |
| 377 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 386 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
| (...skipping 20 matching lines...) Expand all Loading... | |
| 398 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 407 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 399 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 408 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 400 close_observer.Wait(); | 409 close_observer.Wait(); |
| 401 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 410 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
| 402 EXPECT_TRUE(BrowserList::GetInstance()->empty()); | 411 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 403 } | 412 } |
| 404 | 413 |
| 405 // Test that tabs in the same window with a beforeunload event that hangs are | 414 // Test that tabs in the same window with a beforeunload event that hangs are |
| 406 // treated the same as the user accepting the close, but do not close the tab | 415 // treated the same as the user accepting the close, but do not close the tab |
| 407 // early. | 416 // early. |
| 408 // Test is flaky on windows, disabled. See http://crbug.com/276366 | |
| 409 // Test is flaky on Mac. See http://crbug.com/517687. | |
| 410 #if defined(OS_WIN) || defined(OS_MACOSX) | |
| 411 #define MAYBE_TestHangInBeforeUnloadMultipleTabs \ | |
| 412 DISABLED_TestHangInBeforeUnloadMultipleTabs | |
| 413 #else | |
| 414 #define MAYBE_TestHangInBeforeUnloadMultipleTabs \ | |
| 415 TestHangInBeforeUnloadMultipleTabs | |
| 416 #endif | |
| 417 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, | 417 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
| 418 MAYBE_TestHangInBeforeUnloadMultipleTabs) { | 418 TestHangInBeforeUnloadMultipleTabs) { |
| 419 ASSERT_TRUE(embedded_test_server()->Start()); | 419 ASSERT_TRUE(embedded_test_server()->Start()); |
| 420 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 420 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 421 browsers_[0], embedded_test_server()->GetURL("/beforeunload_hang.html"))); | 421 browsers_[0], embedded_test_server()->GetURL("/beforeunload_hang.html"))); |
| 422 AddBlankTabAndShow(browsers_[0]); | 422 AddBlankTabAndShow(browsers_[0]); |
| 423 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 423 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 424 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); | 424 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); |
| 425 DisableHangMonitor(browsers_[0]->tab_strip_model()->GetWebContentsAt(1)); | |
|
Charlie Reis
2016/05/23 17:03:30
nit: Move this line after this block of NavigateTo
| |
| 425 AddBlankTabAndShow(browsers_[0]); | 426 AddBlankTabAndShow(browsers_[0]); |
| 426 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 427 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 427 browsers_[0], embedded_test_server()->GetURL("/beforeunload_hang.html"))); | 428 browsers_[0], embedded_test_server()->GetURL("/beforeunload_hang.html"))); |
| 428 | 429 |
| 429 RepeatedNotificationObserver cancel_observer( | 430 RepeatedNotificationObserver cancel_observer( |
| 430 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); | 431 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); |
| 431 chrome::CloseAllBrowsersAndQuit(); | 432 chrome::CloseAllBrowsersAndQuit(); |
| 432 ASSERT_NO_FATAL_FAILURE(CancelClose()); | 433 ASSERT_NO_FATAL_FAILURE(CancelClose()); |
| 433 cancel_observer.Wait(); | 434 cancel_observer.Wait(); |
| 434 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 435 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
| (...skipping 14 matching lines...) Expand all Loading... | |
| 449 // early. | 450 // early. |
| 450 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, | 451 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
| 451 TestHangInBeforeUnloadMultipleWindows) { | 452 TestHangInBeforeUnloadMultipleWindows) { |
| 452 ASSERT_TRUE(embedded_test_server()->Start()); | 453 ASSERT_TRUE(embedded_test_server()->Start()); |
| 453 browsers_.push_back(CreateBrowser(browser()->profile())); | 454 browsers_.push_back(CreateBrowser(browser()->profile())); |
| 454 browsers_.push_back(CreateBrowser(browser()->profile())); | 455 browsers_.push_back(CreateBrowser(browser()->profile())); |
| 455 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 456 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 456 browsers_[0], embedded_test_server()->GetURL("/beforeunload_hang.html"))); | 457 browsers_[0], embedded_test_server()->GetURL("/beforeunload_hang.html"))); |
| 457 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 458 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 458 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); | 459 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); |
| 460 DisableHangMonitor(browsers_[1]); | |
|
Charlie Reis
2016/05/23 17:03:29
Same as above.
| |
| 459 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 461 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 460 browsers_[2], embedded_test_server()->GetURL("/beforeunload_hang.html"))); | 462 browsers_[2], embedded_test_server()->GetURL("/beforeunload_hang.html"))); |
| 461 | 463 |
| 462 RepeatedNotificationObserver cancel_observer( | 464 RepeatedNotificationObserver cancel_observer( |
| 463 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2); | 465 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2); |
| 464 chrome::CloseAllBrowsersAndQuit(); | 466 chrome::CloseAllBrowsersAndQuit(); |
| 465 ASSERT_NO_FATAL_FAILURE(CancelClose()); | 467 ASSERT_NO_FATAL_FAILURE(CancelClose()); |
| 466 cancel_observer.Wait(); | 468 cancel_observer.Wait(); |
| 467 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 469 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
| 468 // All windows should still be open. | 470 // All windows should still be open. |
| 469 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); | 471 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); |
| 470 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); | 472 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); |
| 471 EXPECT_EQ(1, browsers_[2]->tab_strip_model()->count()); | 473 EXPECT_EQ(1, browsers_[2]->tab_strip_model()->count()); |
| 472 | 474 |
| 473 RepeatedNotificationObserver close_observer( | 475 RepeatedNotificationObserver close_observer( |
| 474 chrome::NOTIFICATION_BROWSER_CLOSED, 3); | 476 chrome::NOTIFICATION_BROWSER_CLOSED, 3); |
| 475 chrome::CloseAllBrowsersAndQuit(); | 477 chrome::CloseAllBrowsersAndQuit(); |
| 476 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 478 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 477 close_observer.Wait(); | 479 close_observer.Wait(); |
| 478 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 480 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
| 479 EXPECT_TRUE(BrowserList::GetInstance()->empty()); | 481 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 480 } | 482 } |
| 481 | 483 |
| 482 // Test that a window created during shutdown is closed. | 484 // Test that a window created during shutdown is closed. |
| 483 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, | 485 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
| 484 TestAddWindowDuringShutdown) { | 486 TestAddWindowDuringShutdown) { |
| 485 ASSERT_TRUE(embedded_test_server()->Start()); | 487 ASSERT_TRUE(embedded_test_server()->Start()); |
| 486 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 488 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 487 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); | 489 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); |
| 490 DisableHangMonitor(browsers_[0]); | |
| 488 | 491 |
| 489 RepeatedNotificationObserver close_observer( | 492 RepeatedNotificationObserver close_observer( |
| 490 chrome::NOTIFICATION_BROWSER_CLOSED, 2); | 493 chrome::NOTIFICATION_BROWSER_CLOSED, 2); |
| 491 chrome::CloseAllBrowsersAndQuit(); | 494 chrome::CloseAllBrowsersAndQuit(); |
| 492 browsers_.push_back(CreateBrowser(browser()->profile())); | 495 browsers_.push_back(CreateBrowser(browser()->profile())); |
| 493 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 496 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 494 close_observer.Wait(); | 497 close_observer.Wait(); |
| 495 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 498 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
| 496 EXPECT_TRUE(BrowserList::GetInstance()->empty()); | 499 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 497 } | 500 } |
| 498 | 501 |
| 499 // Test that a window created during shutdown with a beforeunload handler can | 502 // Test that a window created during shutdown with a beforeunload handler can |
| 500 // cancel the shutdown. | 503 // cancel the shutdown. |
| 501 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, | 504 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
| 502 TestAddWindowWithBeforeUnloadDuringShutdown) { | 505 TestAddWindowWithBeforeUnloadDuringShutdown) { |
| 503 ASSERT_TRUE(embedded_test_server()->Start()); | 506 ASSERT_TRUE(embedded_test_server()->Start()); |
| 504 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 507 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 505 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); | 508 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); |
| 509 DisableHangMonitor(browsers_[0]); | |
| 506 | 510 |
| 507 RepeatedNotificationObserver cancel_observer( | 511 RepeatedNotificationObserver cancel_observer( |
| 508 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2); | 512 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2); |
| 509 chrome::CloseAllBrowsersAndQuit(); | 513 chrome::CloseAllBrowsersAndQuit(); |
| 510 browsers_.push_back(CreateBrowser(browser()->profile())); | 514 browsers_.push_back(CreateBrowser(browser()->profile())); |
| 511 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 515 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 512 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); | 516 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); |
| 517 DisableHangMonitor(browsers_[1]); | |
| 513 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 518 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 514 ASSERT_NO_FATAL_FAILURE(CancelClose()); | 519 ASSERT_NO_FATAL_FAILURE(CancelClose()); |
| 515 cancel_observer.Wait(); | 520 cancel_observer.Wait(); |
| 516 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 521 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
| 517 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); | 522 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); |
| 518 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); | 523 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); |
| 519 | 524 |
| 520 // Allow shutdown for both beforeunload dialogs. | 525 // Allow shutdown for both beforeunload dialogs. |
| 521 RepeatedNotificationObserver close_observer( | 526 RepeatedNotificationObserver close_observer( |
| 522 chrome::NOTIFICATION_BROWSER_CLOSED, 2); | 527 chrome::NOTIFICATION_BROWSER_CLOSED, 2); |
| 523 chrome::CloseAllBrowsersAndQuit(); | 528 chrome::CloseAllBrowsersAndQuit(); |
| 524 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 529 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 525 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 530 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 526 close_observer.Wait(); | 531 close_observer.Wait(); |
| 527 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 532 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
| 528 EXPECT_TRUE(BrowserList::GetInstance()->empty()); | 533 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 529 } | 534 } |
| 530 | 535 |
| 531 // Test that tabs added during shutdown are closed. | 536 // Test that tabs added during shutdown are closed. |
| 532 // Disabled for being flaky tests: crbug.com/519646 | |
| 533 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, | 537 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
| 534 DISABLED_TestAddTabDuringShutdown) { | 538 TestAddTabDuringShutdown) { |
| 535 ASSERT_TRUE(embedded_test_server()->Start()); | 539 ASSERT_TRUE(embedded_test_server()->Start()); |
| 536 browsers_.push_back(CreateBrowser(browser()->profile())); | 540 browsers_.push_back(CreateBrowser(browser()->profile())); |
| 537 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 541 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 538 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); | 542 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); |
| 539 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 543 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 540 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); | 544 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); |
| 545 DisableHangMonitor(browsers_[0]); | |
| 546 DisableHangMonitor(browsers_[1]); | |
| 541 | 547 |
| 542 RepeatedNotificationObserver close_observer( | 548 RepeatedNotificationObserver close_observer( |
| 543 chrome::NOTIFICATION_BROWSER_CLOSED, 2); | 549 chrome::NOTIFICATION_BROWSER_CLOSED, 2); |
| 544 chrome::CloseAllBrowsersAndQuit(); | 550 chrome::CloseAllBrowsersAndQuit(); |
| 545 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 551 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 546 AddBlankTabAndShow(browsers_[0]); | 552 AddBlankTabAndShow(browsers_[0]); |
| 547 AddBlankTabAndShow(browsers_[1]); | 553 AddBlankTabAndShow(browsers_[1]); |
| 548 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 554 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 549 close_observer.Wait(); | 555 close_observer.Wait(); |
| 550 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 556 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
| 551 EXPECT_TRUE(BrowserList::GetInstance()->empty()); | 557 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 552 } | 558 } |
| 553 | 559 |
| 554 // Test that tabs created during shutdown with beforeunload handlers can cancel | 560 // Test that tabs created during shutdown with beforeunload handlers can cancel |
| 555 // the shutdown. | 561 // the shutdown. |
| 556 // Disabled for being flaky tests: crbug.com/519646 | 562 |
| 557 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, | 563 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
| 558 DISABLED_TestAddTabWithBeforeUnloadDuringShutdown) { | 564 TestAddTabWithBeforeUnloadDuringShutdown) { |
| 559 ASSERT_TRUE(embedded_test_server()->Start()); | 565 ASSERT_TRUE(embedded_test_server()->Start()); |
| 560 browsers_.push_back(CreateBrowser(browser()->profile())); | 566 browsers_.push_back(CreateBrowser(browser()->profile())); |
| 561 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 567 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 562 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); | 568 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); |
| 563 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 569 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 564 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); | 570 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); |
| 571 DisableHangMonitor(browsers_[0]); | |
| 572 DisableHangMonitor(browsers_[1]); | |
| 573 | |
| 565 RepeatedNotificationObserver cancel_observer( | 574 RepeatedNotificationObserver cancel_observer( |
| 566 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2); | 575 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2); |
| 567 chrome::CloseAllBrowsersAndQuit(); | 576 chrome::CloseAllBrowsersAndQuit(); |
| 568 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 577 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 569 AddBlankTabAndShow(browsers_[0]); | 578 AddBlankTabAndShow(browsers_[0]); |
| 570 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 579 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 571 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); | 580 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); |
| 572 AddBlankTabAndShow(browsers_[1]); | 581 AddBlankTabAndShow(browsers_[1]); |
| 573 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 582 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 574 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); | 583 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); |
| 584 DisableHangMonitor(browsers_[0]); | |
| 585 DisableHangMonitor(browsers_[1]); | |
| 575 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 586 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 576 ASSERT_NO_FATAL_FAILURE(CancelClose()); | 587 ASSERT_NO_FATAL_FAILURE(CancelClose()); |
| 577 cancel_observer.Wait(); | 588 cancel_observer.Wait(); |
| 578 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 589 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
| 579 EXPECT_EQ(2, browsers_[0]->tab_strip_model()->count()); | 590 EXPECT_EQ(2, browsers_[0]->tab_strip_model()->count()); |
| 580 EXPECT_EQ(2, browsers_[1]->tab_strip_model()->count()); | 591 EXPECT_EQ(2, browsers_[1]->tab_strip_model()->count()); |
| 581 | |
|
Charlie Reis
2016/05/23 17:03:29
nit: Let's leave this blank line, just to make the
| |
| 582 RepeatedNotificationObserver close_observer( | 592 RepeatedNotificationObserver close_observer( |
| 583 chrome::NOTIFICATION_BROWSER_CLOSED, 2); | 593 chrome::NOTIFICATION_BROWSER_CLOSED, 2); |
| 584 chrome::CloseAllBrowsersAndQuit(); | 594 chrome::CloseAllBrowsersAndQuit(); |
| 585 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 595 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 586 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 596 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 587 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 597 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 588 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 598 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 589 | 599 |
| 590 close_observer.Wait(); | 600 close_observer.Wait(); |
| 591 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 601 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
| 592 EXPECT_TRUE(BrowserList::GetInstance()->empty()); | 602 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 593 } | 603 } |
| 594 | 604 |
| 595 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, | 605 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
| 596 TestCloseTabDuringShutdown) { | 606 TestCloseTabDuringShutdown) { |
| 597 ASSERT_TRUE(embedded_test_server()->Start()); | 607 ASSERT_TRUE(embedded_test_server()->Start()); |
| 598 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 608 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 599 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); | 609 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); |
| 610 DisableHangMonitor(browsers_[0]); | |
| 611 | |
| 600 RepeatedNotificationObserver cancel_observer( | 612 RepeatedNotificationObserver cancel_observer( |
| 601 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); | 613 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); |
| 602 chrome::CloseAllBrowsersAndQuit(); | 614 chrome::CloseAllBrowsersAndQuit(); |
| 603 | 615 |
| 604 browsers_.push_back(CreateBrowser(browser()->profile())); | 616 browsers_.push_back(CreateBrowser(browser()->profile())); |
| 605 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 617 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 606 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); | 618 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); |
| 619 DisableHangMonitor(browsers_[1]); | |
| 607 browsers_[1]->tab_strip_model()->CloseAllTabs(); | 620 browsers_[1]->tab_strip_model()->CloseAllTabs(); |
| 608 ASSERT_NO_FATAL_FAILURE(CancelClose()); | 621 ASSERT_NO_FATAL_FAILURE(CancelClose()); |
| 609 ASSERT_NO_FATAL_FAILURE(CancelClose()); | 622 ASSERT_NO_FATAL_FAILURE(CancelClose()); |
| 610 cancel_observer.Wait(); | 623 cancel_observer.Wait(); |
| 611 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 624 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
| 612 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); | 625 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); |
| 613 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); | 626 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); |
| 614 | 627 |
| 615 RepeatedNotificationObserver close_observer( | 628 RepeatedNotificationObserver close_observer( |
| 616 chrome::NOTIFICATION_BROWSER_CLOSED, 2); | 629 chrome::NOTIFICATION_BROWSER_CLOSED, 2); |
| 617 chrome::CloseAllBrowsersAndQuit(); | 630 chrome::CloseAllBrowsersAndQuit(); |
| 618 browsers_[1]->tab_strip_model()->CloseAllTabs(); | 631 browsers_[1]->tab_strip_model()->CloseAllTabs(); |
| 619 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 632 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 620 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 633 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 621 | 634 |
| 622 close_observer.Wait(); | 635 close_observer.Wait(); |
| 623 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 636 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
| 624 EXPECT_TRUE(BrowserList::GetInstance()->empty()); | 637 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 625 } | 638 } |
| 626 | 639 |
| 627 // Test is flaky on Windows and Mac. See http://crbug.com/276366. | |
| 628 #if defined(OS_WIN) || defined(OS_MACOSX) | |
| 629 #define MAYBE_TestOpenAndCloseWindowDuringShutdown \ | |
| 630 DISABLED_TestOpenAndCloseWindowDuringShutdown | |
| 631 #else | |
| 632 #define MAYBE_TestOpenAndCloseWindowDuringShutdown \ | |
| 633 TestOpenAndCloseWindowDuringShutdown | |
| 634 #endif | |
| 635 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, | 640 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
| 636 MAYBE_TestOpenAndCloseWindowDuringShutdown) { | 641 TestOpenAndCloseWindowDuringShutdown) { |
| 637 ASSERT_TRUE(embedded_test_server()->Start()); | 642 ASSERT_TRUE(embedded_test_server()->Start()); |
| 638 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 643 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 639 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); | 644 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); |
| 645 DisableHangMonitor(browsers_[0]); | |
| 646 | |
| 640 RepeatedNotificationObserver cancel_observer( | 647 RepeatedNotificationObserver cancel_observer( |
| 641 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2); | 648 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2); |
| 642 chrome::CloseAllBrowsersAndQuit(); | 649 chrome::CloseAllBrowsersAndQuit(); |
| 643 | 650 |
| 644 browsers_.push_back(CreateBrowser(browser()->profile())); | 651 browsers_.push_back(CreateBrowser(browser()->profile())); |
| 645 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 652 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 646 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); | 653 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); |
| 654 DisableHangMonitor(browsers_[1]); | |
| 647 ASSERT_FALSE(browsers_[1]->ShouldCloseWindow()); | 655 ASSERT_FALSE(browsers_[1]->ShouldCloseWindow()); |
| 648 ASSERT_NO_FATAL_FAILURE(CancelClose()); | 656 ASSERT_NO_FATAL_FAILURE(CancelClose()); |
| 649 ASSERT_NO_FATAL_FAILURE(CancelClose()); | 657 ASSERT_NO_FATAL_FAILURE(CancelClose()); |
| 650 cancel_observer.Wait(); | 658 cancel_observer.Wait(); |
| 651 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 659 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
| 652 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); | 660 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); |
| 653 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); | 661 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); |
| 654 | 662 |
| 655 RepeatedNotificationObserver close_observer( | 663 RepeatedNotificationObserver close_observer( |
| 656 chrome::NOTIFICATION_BROWSER_CLOSED, 2); | 664 chrome::NOTIFICATION_BROWSER_CLOSED, 2); |
| 657 chrome::CloseAllBrowsersAndQuit(); | 665 chrome::CloseAllBrowsersAndQuit(); |
| 658 ASSERT_FALSE(browsers_[1]->ShouldCloseWindow()); | 666 ASSERT_FALSE(browsers_[1]->ShouldCloseWindow()); |
| 659 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 667 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 660 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 668 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 661 | 669 |
| 662 close_observer.Wait(); | 670 close_observer.Wait(); |
| 663 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 671 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
| 664 EXPECT_TRUE(BrowserList::GetInstance()->empty()); | 672 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 665 } | 673 } |
| 666 | 674 |
| 667 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, | 675 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
| 668 TestCloseWindowDuringShutdown) { | 676 TestCloseWindowDuringShutdown) { |
| 669 ASSERT_TRUE(embedded_test_server()->Start()); | 677 ASSERT_TRUE(embedded_test_server()->Start()); |
| 670 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 678 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 671 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); | 679 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); |
| 672 browsers_.push_back(CreateBrowser(browser()->profile())); | 680 browsers_.push_back(CreateBrowser(browser()->profile())); |
| 673 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 681 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 674 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); | 682 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); |
| 683 DisableHangMonitor(browsers_[0]); | |
| 684 DisableHangMonitor(browsers_[1]); | |
| 685 | |
| 675 RepeatedNotificationObserver cancel_observer( | 686 RepeatedNotificationObserver cancel_observer( |
| 676 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); | 687 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); |
| 677 chrome::CloseAllBrowsersAndQuit(); | 688 chrome::CloseAllBrowsersAndQuit(); |
| 678 | 689 |
| 679 ASSERT_FALSE(browsers_[0]->ShouldCloseWindow()); | 690 ASSERT_FALSE(browsers_[0]->ShouldCloseWindow()); |
| 680 ASSERT_NO_FATAL_FAILURE(CancelClose()); | 691 ASSERT_NO_FATAL_FAILURE(CancelClose()); |
| 681 cancel_observer.Wait(); | 692 cancel_observer.Wait(); |
| 682 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 693 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
| 683 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); | 694 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); |
| 684 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); | 695 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); |
| (...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 903 close_observer.Wait(); | 914 close_observer.Wait(); |
| 904 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 915 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
| 905 EXPECT_TRUE(BrowserList::GetInstance()->empty()); | 916 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 906 if (browser_defaults::kBrowserAliveWithNoWindows) | 917 if (browser_defaults::kBrowserAliveWithNoWindows) |
| 907 EXPECT_EQ(1, DownloadService::NonMaliciousDownloadCountAllProfiles()); | 918 EXPECT_EQ(1, DownloadService::NonMaliciousDownloadCountAllProfiles()); |
| 908 else | 919 else |
| 909 EXPECT_EQ(0, DownloadService::NonMaliciousDownloadCountAllProfiles()); | 920 EXPECT_EQ(0, DownloadService::NonMaliciousDownloadCountAllProfiles()); |
| 910 } | 921 } |
| 911 | 922 |
| 912 // Test shutdown with downloads in progress and beforeunload handlers. | 923 // Test shutdown with downloads in progress and beforeunload handlers. |
| 913 // Disabled, see http://crbug.com/315754. | |
| 914 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerWithDownloadsBrowserTest, | 924 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerWithDownloadsBrowserTest, |
| 915 DISABLED_TestBeforeUnloadAndDownloads) { | 925 TestBeforeUnloadAndDownloads) { |
| 916 ASSERT_TRUE(embedded_test_server()->Start()); | 926 ASSERT_TRUE(embedded_test_server()->Start()); |
| 917 SetDownloadPathForProfile(browser()->profile()); | 927 SetDownloadPathForProfile(browser()->profile()); |
| 918 ASSERT_NO_FATAL_FAILURE(CreateStalledDownload(browser())); | 928 ASSERT_NO_FATAL_FAILURE(CreateStalledDownload(browser())); |
| 919 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 929 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 920 browser(), embedded_test_server()->GetURL("/beforeunload.html"))); | 930 browser(), embedded_test_server()->GetURL("/beforeunload.html"))); |
| 931 DisableHangMonitor(browser()); | |
| 921 | 932 |
| 922 content::WindowedNotificationObserver cancel_observer( | 933 content::WindowedNotificationObserver cancel_observer( |
| 923 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, | 934 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, |
| 924 content::NotificationService::AllSources()); | 935 content::NotificationService::AllSources()); |
| 925 TestBrowserCloseManager::AttemptClose( | 936 TestBrowserCloseManager::AttemptClose( |
| 926 TestBrowserCloseManager::USER_CHOICE_USER_CANCELS_CLOSE); | 937 TestBrowserCloseManager::USER_CHOICE_USER_CANCELS_CLOSE); |
| 927 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 938 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 928 cancel_observer.Wait(); | 939 cancel_observer.Wait(); |
| 929 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 940 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
| 930 | 941 |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1033 | 1044 |
| 1034 chrome::CloseAllBrowsers(); | 1045 chrome::CloseAllBrowsers(); |
| 1035 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 1046 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
| 1036 EXPECT_TRUE(BrowserList::GetInstance()->empty()); | 1047 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 1037 EXPECT_TRUE(IsBackgroundModeSuspended()); | 1048 EXPECT_TRUE(IsBackgroundModeSuspended()); |
| 1038 } | 1049 } |
| 1039 | 1050 |
| 1040 INSTANTIATE_TEST_CASE_P(BrowserCloseManagerWithBackgroundModeBrowserTest, | 1051 INSTANTIATE_TEST_CASE_P(BrowserCloseManagerWithBackgroundModeBrowserTest, |
| 1041 BrowserCloseManagerWithBackgroundModeBrowserTest, | 1052 BrowserCloseManagerWithBackgroundModeBrowserTest, |
| 1042 testing::Bool()); | 1053 testing::Bool()); |
| OLD | NEW |