| 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" |
| 11 #include "base/files/scoped_temp_dir.h" | 11 #include "base/files/scoped_temp_dir.h" |
| 12 #include "base/macros.h" | 12 #include "base/macros.h" |
| 13 #include "build/build_config.h" | 13 #include "build/build_config.h" |
| 14 #include "chrome/browser/background/background_mode_manager.h" | 14 #include "chrome/browser/background/background_mode_manager.h" |
| 15 #include "chrome/browser/browser_process.h" | 15 #include "chrome/browser/browser_process.h" |
| 16 #include "chrome/browser/browser_shutdown.h" | 16 #include "chrome/browser/browser_shutdown.h" |
| 17 #include "chrome/browser/chrome_notification_types.h" | 17 #include "chrome/browser/chrome_notification_types.h" |
| 18 #include "chrome/browser/defaults.h" | 18 #include "chrome/browser/defaults.h" |
| 19 #include "chrome/browser/download/chrome_download_manager_delegate.h" | 19 #include "chrome/browser/download/chrome_download_manager_delegate.h" |
| 20 #include "chrome/browser/download/download_prefs.h" | 20 #include "chrome/browser/download/download_prefs.h" |
| 21 #include "chrome/browser/download/download_service.h" | 21 #include "chrome/browser/download/download_service.h" |
| 22 #include "chrome/browser/download/download_service_factory.h" | 22 #include "chrome/browser/download/download_service_factory.h" |
| 23 #include "chrome/browser/lifetime/application_lifetime.h" | 23 #include "chrome/browser/lifetime/application_lifetime.h" |
| 24 #include "chrome/browser/net/url_request_mock_util.h" | 24 #include "chrome/browser/net/url_request_mock_util.h" |
| 25 #include "chrome/browser/prefs/session_startup_pref.h" | 25 #include "chrome/browser/prefs/session_startup_pref.h" |
| 26 #include "chrome/browser/profiles/profile.h" | 26 #include "chrome/browser/profiles/profile.h" |
| 27 #include "chrome/browser/profiles/profile_manager.h" | 27 #include "chrome/browser/profiles/profile_manager.h" |
| 28 #include "chrome/browser/ui/browser.h" | 28 #include "chrome/browser/ui/browser.h" |
| 29 #include "chrome/browser/ui/browser_commands.h" | 29 #include "chrome/browser/ui/browser_commands.h" |
| 30 #include "chrome/browser/ui/browser_iterator.h" | 30 #include "chrome/browser/ui/browser_list.h" |
| 31 #include "chrome/browser/ui/browser_window.h" | 31 #include "chrome/browser/ui/browser_window.h" |
| 32 #include "chrome/browser/ui/tabs/tab_strip_model.h" | 32 #include "chrome/browser/ui/tabs/tab_strip_model.h" |
| 33 #include "chrome/common/chrome_switches.h" | 33 #include "chrome/common/chrome_switches.h" |
| 34 #include "chrome/common/url_constants.h" | 34 #include "chrome/common/url_constants.h" |
| 35 #include "chrome/test/base/in_process_browser_test.h" | 35 #include "chrome/test/base/in_process_browser_test.h" |
| 36 #include "chrome/test/base/ui_test_utils.h" | 36 #include "chrome/test/base/ui_test_utils.h" |
| 37 #include "components/app_modal/javascript_app_modal_dialog.h" | 37 #include "components/app_modal/javascript_app_modal_dialog.h" |
| 38 #include "components/app_modal/native_app_modal_dialog.h" | 38 #include "components/app_modal/native_app_modal_dialog.h" |
| 39 #include "content/public/browser/browser_context.h" | 39 #include "content/public/browser/browser_context.h" |
| 40 #include "content/public/browser/download_item.h" | 40 #include "content/public/browser/download_item.h" |
| (...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 261 cancel_observer.Wait(); | 261 cancel_observer.Wait(); |
| 262 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 262 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
| 263 EXPECT_EQ(1, browser()->tab_strip_model()->count()); | 263 EXPECT_EQ(1, browser()->tab_strip_model()->count()); |
| 264 | 264 |
| 265 RepeatedNotificationObserver close_observer( | 265 RepeatedNotificationObserver close_observer( |
| 266 chrome::NOTIFICATION_BROWSER_CLOSED, 1); | 266 chrome::NOTIFICATION_BROWSER_CLOSED, 1); |
| 267 chrome::CloseAllBrowsersAndQuit(); | 267 chrome::CloseAllBrowsersAndQuit(); |
| 268 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 268 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 269 close_observer.Wait(); | 269 close_observer.Wait(); |
| 270 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 270 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
| 271 EXPECT_TRUE(chrome::BrowserIterator().done()); | 271 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 272 } | 272 } |
| 273 | 273 |
| 274 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, | 274 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
| 275 TestShutdownMoreThanOnce) { | 275 TestShutdownMoreThanOnce) { |
| 276 ASSERT_TRUE(embedded_test_server()->Start()); | 276 ASSERT_TRUE(embedded_test_server()->Start()); |
| 277 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 277 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 278 browser(), embedded_test_server()->GetURL("/beforeunload.html"))); | 278 browser(), embedded_test_server()->GetURL("/beforeunload.html"))); |
| 279 RepeatedNotificationObserver cancel_observer( | 279 RepeatedNotificationObserver cancel_observer( |
| 280 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); | 280 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); |
| 281 chrome::CloseAllBrowsersAndQuit(); | 281 chrome::CloseAllBrowsersAndQuit(); |
| 282 chrome::CloseAllBrowsersAndQuit(); | 282 chrome::CloseAllBrowsersAndQuit(); |
| 283 ASSERT_NO_FATAL_FAILURE(CancelClose()); | 283 ASSERT_NO_FATAL_FAILURE(CancelClose()); |
| 284 cancel_observer.Wait(); | 284 cancel_observer.Wait(); |
| 285 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 285 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
| 286 EXPECT_EQ(1, browser()->tab_strip_model()->count()); | 286 EXPECT_EQ(1, browser()->tab_strip_model()->count()); |
| 287 | 287 |
| 288 RepeatedNotificationObserver close_observer( | 288 RepeatedNotificationObserver close_observer( |
| 289 chrome::NOTIFICATION_BROWSER_CLOSED, 1); | 289 chrome::NOTIFICATION_BROWSER_CLOSED, 1); |
| 290 chrome::CloseAllBrowsersAndQuit(); | 290 chrome::CloseAllBrowsersAndQuit(); |
| 291 chrome::CloseAllBrowsersAndQuit(); | 291 chrome::CloseAllBrowsersAndQuit(); |
| 292 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 292 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 293 close_observer.Wait(); | 293 close_observer.Wait(); |
| 294 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 294 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
| 295 EXPECT_TRUE(chrome::BrowserIterator().done()); | 295 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 296 } | 296 } |
| 297 | 297 |
| 298 // Test is flaky on Mac. http://crbug.com/517687 | 298 // Test is flaky on Mac. http://crbug.com/517687 |
| 299 #if defined(OS_MACOSX) | 299 #if defined(OS_MACOSX) |
| 300 #define MAYBE_PRE_TestSessionRestore DISABLED_PRE_TestSessionRestore | 300 #define MAYBE_PRE_TestSessionRestore DISABLED_PRE_TestSessionRestore |
| 301 #else | 301 #else |
| 302 #define MAYBE_PRE_TestSessionRestore DISABLED_PRE_TestSessionRestore | 302 #define MAYBE_PRE_TestSessionRestore DISABLED_PRE_TestSessionRestore |
| 303 #endif | 303 #endif |
| 304 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, | 304 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
| 305 MAYBE_PRE_TestSessionRestore) { | 305 MAYBE_PRE_TestSessionRestore) { |
| (...skipping 20 matching lines...) Expand all Loading... |
| 326 CURRENT_TAB, | 326 CURRENT_TAB, |
| 327 ui_test_utils::BROWSER_TEST_NONE)); | 327 ui_test_utils::BROWSER_TEST_NONE)); |
| 328 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 328 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 329 navigation_observer.Wait(); | 329 navigation_observer.Wait(); |
| 330 | 330 |
| 331 RepeatedNotificationObserver close_observer( | 331 RepeatedNotificationObserver close_observer( |
| 332 chrome::NOTIFICATION_BROWSER_CLOSED, 1); | 332 chrome::NOTIFICATION_BROWSER_CLOSED, 1); |
| 333 chrome::CloseAllBrowsersAndQuit(); | 333 chrome::CloseAllBrowsersAndQuit(); |
| 334 close_observer.Wait(); | 334 close_observer.Wait(); |
| 335 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 335 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
| 336 EXPECT_TRUE(chrome::BrowserIterator().done()); | 336 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 337 } | 337 } |
| 338 | 338 |
| 339 // Test that the tab closed after the aborted shutdown attempt is not re-opened | 339 // Test that the tab closed after the aborted shutdown attempt is not re-opened |
| 340 // when restoring the session. | 340 // when restoring the session. |
| 341 // Test is flaky on Mac. http://crbug.com/517687 | 341 // Test is flaky on Mac. http://crbug.com/517687 |
| 342 #if defined(OS_MACOSX) | 342 #if defined(OS_MACOSX) |
| 343 #define MAYBE_TestSessionRestore DISABLED_TestSessionRestore | 343 #define MAYBE_TestSessionRestore DISABLED_TestSessionRestore |
| 344 #else | 344 #else |
| 345 #define MAYBE_TestSessionRestore DISABLED_TestSessionRestore | 345 #define MAYBE_TestSessionRestore DISABLED_TestSessionRestore |
| 346 #endif | 346 #endif |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 390 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); | 390 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); |
| 391 | 391 |
| 392 // Allow shutdown for both beforeunload events. | 392 // Allow shutdown for both beforeunload events. |
| 393 RepeatedNotificationObserver close_observer( | 393 RepeatedNotificationObserver close_observer( |
| 394 chrome::NOTIFICATION_BROWSER_CLOSED, 2); | 394 chrome::NOTIFICATION_BROWSER_CLOSED, 2); |
| 395 chrome::CloseAllBrowsersAndQuit(); | 395 chrome::CloseAllBrowsersAndQuit(); |
| 396 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 396 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 397 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 397 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 398 close_observer.Wait(); | 398 close_observer.Wait(); |
| 399 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 399 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
| 400 EXPECT_TRUE(chrome::BrowserIterator().done()); | 400 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 401 } | 401 } |
| 402 | 402 |
| 403 // Test that tabs in the same window with a beforeunload event that hangs are | 403 // Test that tabs in the same window with a beforeunload event that hangs are |
| 404 // treated the same as the user accepting the close, but do not close the tab | 404 // treated the same as the user accepting the close, but do not close the tab |
| 405 // early. | 405 // early. |
| 406 // Test is flaky on windows, disabled. See http://crbug.com/276366 | 406 // Test is flaky on windows, disabled. See http://crbug.com/276366 |
| 407 // Test is flaky on Mac. See http://crbug.com/517687. | 407 // Test is flaky on Mac. See http://crbug.com/517687. |
| 408 #if defined(OS_WIN) || defined(OS_MACOSX) | 408 #if defined(OS_WIN) || defined(OS_MACOSX) |
| 409 #define MAYBE_TestHangInBeforeUnloadMultipleTabs \ | 409 #define MAYBE_TestHangInBeforeUnloadMultipleTabs \ |
| 410 DISABLED_TestHangInBeforeUnloadMultipleTabs | 410 DISABLED_TestHangInBeforeUnloadMultipleTabs |
| (...skipping 21 matching lines...) Expand all Loading... |
| 432 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 432 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
| 433 // All tabs should still be open. | 433 // All tabs should still be open. |
| 434 EXPECT_EQ(3, browsers_[0]->tab_strip_model()->count()); | 434 EXPECT_EQ(3, browsers_[0]->tab_strip_model()->count()); |
| 435 | 435 |
| 436 RepeatedNotificationObserver close_observer( | 436 RepeatedNotificationObserver close_observer( |
| 437 chrome::NOTIFICATION_BROWSER_CLOSED, 1); | 437 chrome::NOTIFICATION_BROWSER_CLOSED, 1); |
| 438 chrome::CloseAllBrowsersAndQuit(); | 438 chrome::CloseAllBrowsersAndQuit(); |
| 439 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 439 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 440 close_observer.Wait(); | 440 close_observer.Wait(); |
| 441 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 441 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
| 442 EXPECT_TRUE(chrome::BrowserIterator().done()); | 442 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 443 } | 443 } |
| 444 | 444 |
| 445 // Test that tabs in different windows with a beforeunload event that hangs are | 445 // Test that tabs in different windows with a beforeunload event that hangs are |
| 446 // treated the same as the user accepting the close, but do not close the tab | 446 // treated the same as the user accepting the close, but do not close the tab |
| 447 // early. | 447 // early. |
| 448 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, | 448 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
| 449 TestHangInBeforeUnloadMultipleWindows) { | 449 TestHangInBeforeUnloadMultipleWindows) { |
| 450 ASSERT_TRUE(embedded_test_server()->Start()); | 450 ASSERT_TRUE(embedded_test_server()->Start()); |
| 451 browsers_.push_back(CreateBrowser(browser()->profile())); | 451 browsers_.push_back(CreateBrowser(browser()->profile())); |
| 452 browsers_.push_back(CreateBrowser(browser()->profile())); | 452 browsers_.push_back(CreateBrowser(browser()->profile())); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 467 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); | 467 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); |
| 468 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); | 468 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); |
| 469 EXPECT_EQ(1, browsers_[2]->tab_strip_model()->count()); | 469 EXPECT_EQ(1, browsers_[2]->tab_strip_model()->count()); |
| 470 | 470 |
| 471 RepeatedNotificationObserver close_observer( | 471 RepeatedNotificationObserver close_observer( |
| 472 chrome::NOTIFICATION_BROWSER_CLOSED, 3); | 472 chrome::NOTIFICATION_BROWSER_CLOSED, 3); |
| 473 chrome::CloseAllBrowsersAndQuit(); | 473 chrome::CloseAllBrowsersAndQuit(); |
| 474 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 474 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 475 close_observer.Wait(); | 475 close_observer.Wait(); |
| 476 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 476 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
| 477 EXPECT_TRUE(chrome::BrowserIterator().done()); | 477 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 478 } | 478 } |
| 479 | 479 |
| 480 // Test that a window created during shutdown is closed. | 480 // Test that a window created during shutdown is closed. |
| 481 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, | 481 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
| 482 TestAddWindowDuringShutdown) { | 482 TestAddWindowDuringShutdown) { |
| 483 ASSERT_TRUE(embedded_test_server()->Start()); | 483 ASSERT_TRUE(embedded_test_server()->Start()); |
| 484 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 484 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 485 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); | 485 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); |
| 486 | 486 |
| 487 RepeatedNotificationObserver close_observer( | 487 RepeatedNotificationObserver close_observer( |
| 488 chrome::NOTIFICATION_BROWSER_CLOSED, 2); | 488 chrome::NOTIFICATION_BROWSER_CLOSED, 2); |
| 489 chrome::CloseAllBrowsersAndQuit(); | 489 chrome::CloseAllBrowsersAndQuit(); |
| 490 browsers_.push_back(CreateBrowser(browser()->profile())); | 490 browsers_.push_back(CreateBrowser(browser()->profile())); |
| 491 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 491 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 492 close_observer.Wait(); | 492 close_observer.Wait(); |
| 493 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 493 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
| 494 EXPECT_TRUE(chrome::BrowserIterator().done()); | 494 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 495 } | 495 } |
| 496 | 496 |
| 497 // Test that a window created during shutdown with a beforeunload handler can | 497 // Test that a window created during shutdown with a beforeunload handler can |
| 498 // cancel the shutdown. | 498 // cancel the shutdown. |
| 499 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, | 499 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
| 500 TestAddWindowWithBeforeUnloadDuringShutdown) { | 500 TestAddWindowWithBeforeUnloadDuringShutdown) { |
| 501 ASSERT_TRUE(embedded_test_server()->Start()); | 501 ASSERT_TRUE(embedded_test_server()->Start()); |
| 502 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 502 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 503 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); | 503 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); |
| 504 | 504 |
| (...skipping 11 matching lines...) Expand all Loading... |
| 516 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); | 516 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); |
| 517 | 517 |
| 518 // Allow shutdown for both beforeunload dialogs. | 518 // Allow shutdown for both beforeunload dialogs. |
| 519 RepeatedNotificationObserver close_observer( | 519 RepeatedNotificationObserver close_observer( |
| 520 chrome::NOTIFICATION_BROWSER_CLOSED, 2); | 520 chrome::NOTIFICATION_BROWSER_CLOSED, 2); |
| 521 chrome::CloseAllBrowsersAndQuit(); | 521 chrome::CloseAllBrowsersAndQuit(); |
| 522 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 522 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 523 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 523 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 524 close_observer.Wait(); | 524 close_observer.Wait(); |
| 525 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 525 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
| 526 EXPECT_TRUE(chrome::BrowserIterator().done()); | 526 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 527 } | 527 } |
| 528 | 528 |
| 529 // Test that tabs added during shutdown are closed. | 529 // Test that tabs added during shutdown are closed. |
| 530 // Disabled for being flaky tests: crbug.com/519646 | 530 // Disabled for being flaky tests: crbug.com/519646 |
| 531 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, | 531 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
| 532 DISABLED_TestAddTabDuringShutdown) { | 532 DISABLED_TestAddTabDuringShutdown) { |
| 533 ASSERT_TRUE(embedded_test_server()->Start()); | 533 ASSERT_TRUE(embedded_test_server()->Start()); |
| 534 browsers_.push_back(CreateBrowser(browser()->profile())); | 534 browsers_.push_back(CreateBrowser(browser()->profile())); |
| 535 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 535 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 536 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); | 536 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); |
| 537 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 537 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 538 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); | 538 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); |
| 539 | 539 |
| 540 RepeatedNotificationObserver close_observer( | 540 RepeatedNotificationObserver close_observer( |
| 541 chrome::NOTIFICATION_BROWSER_CLOSED, 2); | 541 chrome::NOTIFICATION_BROWSER_CLOSED, 2); |
| 542 chrome::CloseAllBrowsersAndQuit(); | 542 chrome::CloseAllBrowsersAndQuit(); |
| 543 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 543 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 544 AddBlankTabAndShow(browsers_[0]); | 544 AddBlankTabAndShow(browsers_[0]); |
| 545 AddBlankTabAndShow(browsers_[1]); | 545 AddBlankTabAndShow(browsers_[1]); |
| 546 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 546 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 547 close_observer.Wait(); | 547 close_observer.Wait(); |
| 548 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 548 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
| 549 EXPECT_TRUE(chrome::BrowserIterator().done()); | 549 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 550 } | 550 } |
| 551 | 551 |
| 552 // Test that tabs created during shutdown with beforeunload handlers can cancel | 552 // Test that tabs created during shutdown with beforeunload handlers can cancel |
| 553 // the shutdown. | 553 // the shutdown. |
| 554 // Disabled for being flaky tests: crbug.com/519646 | 554 // Disabled for being flaky tests: crbug.com/519646 |
| 555 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, | 555 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
| 556 DISABLED_TestAddTabWithBeforeUnloadDuringShutdown) { | 556 DISABLED_TestAddTabWithBeforeUnloadDuringShutdown) { |
| 557 ASSERT_TRUE(embedded_test_server()->Start()); | 557 ASSERT_TRUE(embedded_test_server()->Start()); |
| 558 browsers_.push_back(CreateBrowser(browser()->profile())); | 558 browsers_.push_back(CreateBrowser(browser()->profile())); |
| 559 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 559 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| (...skipping 20 matching lines...) Expand all Loading... |
| 580 RepeatedNotificationObserver close_observer( | 580 RepeatedNotificationObserver close_observer( |
| 581 chrome::NOTIFICATION_BROWSER_CLOSED, 2); | 581 chrome::NOTIFICATION_BROWSER_CLOSED, 2); |
| 582 chrome::CloseAllBrowsersAndQuit(); | 582 chrome::CloseAllBrowsersAndQuit(); |
| 583 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 583 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 584 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 584 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 585 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 585 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 586 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 586 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 587 | 587 |
| 588 close_observer.Wait(); | 588 close_observer.Wait(); |
| 589 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 589 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
| 590 EXPECT_TRUE(chrome::BrowserIterator().done()); | 590 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 591 } | 591 } |
| 592 | 592 |
| 593 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, | 593 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
| 594 TestCloseTabDuringShutdown) { | 594 TestCloseTabDuringShutdown) { |
| 595 ASSERT_TRUE(embedded_test_server()->Start()); | 595 ASSERT_TRUE(embedded_test_server()->Start()); |
| 596 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 596 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 597 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); | 597 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); |
| 598 RepeatedNotificationObserver cancel_observer( | 598 RepeatedNotificationObserver cancel_observer( |
| 599 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); | 599 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); |
| 600 chrome::CloseAllBrowsersAndQuit(); | 600 chrome::CloseAllBrowsersAndQuit(); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 612 | 612 |
| 613 RepeatedNotificationObserver close_observer( | 613 RepeatedNotificationObserver close_observer( |
| 614 chrome::NOTIFICATION_BROWSER_CLOSED, 2); | 614 chrome::NOTIFICATION_BROWSER_CLOSED, 2); |
| 615 chrome::CloseAllBrowsersAndQuit(); | 615 chrome::CloseAllBrowsersAndQuit(); |
| 616 browsers_[1]->tab_strip_model()->CloseAllTabs(); | 616 browsers_[1]->tab_strip_model()->CloseAllTabs(); |
| 617 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 617 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 618 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 618 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 619 | 619 |
| 620 close_observer.Wait(); | 620 close_observer.Wait(); |
| 621 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 621 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
| 622 EXPECT_TRUE(chrome::BrowserIterator().done()); | 622 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 623 } | 623 } |
| 624 | 624 |
| 625 // Test is flaky on Windows and Mac. See http://crbug.com/276366. | 625 // Test is flaky on Windows and Mac. See http://crbug.com/276366. |
| 626 #if defined(OS_WIN) || defined(OS_MACOSX) | 626 #if defined(OS_WIN) || defined(OS_MACOSX) |
| 627 #define MAYBE_TestOpenAndCloseWindowDuringShutdown \ | 627 #define MAYBE_TestOpenAndCloseWindowDuringShutdown \ |
| 628 DISABLED_TestOpenAndCloseWindowDuringShutdown | 628 DISABLED_TestOpenAndCloseWindowDuringShutdown |
| 629 #else | 629 #else |
| 630 #define MAYBE_TestOpenAndCloseWindowDuringShutdown \ | 630 #define MAYBE_TestOpenAndCloseWindowDuringShutdown \ |
| 631 TestOpenAndCloseWindowDuringShutdown | 631 TestOpenAndCloseWindowDuringShutdown |
| 632 #endif | 632 #endif |
| (...skipping 19 matching lines...) Expand all Loading... |
| 652 | 652 |
| 653 RepeatedNotificationObserver close_observer( | 653 RepeatedNotificationObserver close_observer( |
| 654 chrome::NOTIFICATION_BROWSER_CLOSED, 2); | 654 chrome::NOTIFICATION_BROWSER_CLOSED, 2); |
| 655 chrome::CloseAllBrowsersAndQuit(); | 655 chrome::CloseAllBrowsersAndQuit(); |
| 656 ASSERT_FALSE(browsers_[1]->ShouldCloseWindow()); | 656 ASSERT_FALSE(browsers_[1]->ShouldCloseWindow()); |
| 657 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 657 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 658 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 658 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 659 | 659 |
| 660 close_observer.Wait(); | 660 close_observer.Wait(); |
| 661 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 661 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
| 662 EXPECT_TRUE(chrome::BrowserIterator().done()); | 662 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 663 } | 663 } |
| 664 | 664 |
| 665 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, | 665 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
| 666 TestCloseWindowDuringShutdown) { | 666 TestCloseWindowDuringShutdown) { |
| 667 ASSERT_TRUE(embedded_test_server()->Start()); | 667 ASSERT_TRUE(embedded_test_server()->Start()); |
| 668 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 668 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 669 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); | 669 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); |
| 670 browsers_.push_back(CreateBrowser(browser()->profile())); | 670 browsers_.push_back(CreateBrowser(browser()->profile())); |
| 671 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 671 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 672 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); | 672 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 683 | 683 |
| 684 RepeatedNotificationObserver close_observer( | 684 RepeatedNotificationObserver close_observer( |
| 685 chrome::NOTIFICATION_BROWSER_CLOSED, 2); | 685 chrome::NOTIFICATION_BROWSER_CLOSED, 2); |
| 686 chrome::CloseAllBrowsersAndQuit(); | 686 chrome::CloseAllBrowsersAndQuit(); |
| 687 ASSERT_FALSE(browsers_[0]->ShouldCloseWindow()); | 687 ASSERT_FALSE(browsers_[0]->ShouldCloseWindow()); |
| 688 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 688 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 689 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 689 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 690 | 690 |
| 691 close_observer.Wait(); | 691 close_observer.Wait(); |
| 692 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 692 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
| 693 EXPECT_TRUE(chrome::BrowserIterator().done()); | 693 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 694 } | 694 } |
| 695 | 695 |
| 696 INSTANTIATE_TEST_CASE_P(BrowserCloseManagerBrowserTest, | 696 INSTANTIATE_TEST_CASE_P(BrowserCloseManagerBrowserTest, |
| 697 BrowserCloseManagerBrowserTest, | 697 BrowserCloseManagerBrowserTest, |
| 698 testing::Bool()); | 698 testing::Bool()); |
| 699 | 699 |
| 700 class BrowserCloseManagerWithDownloadsBrowserTest : | 700 class BrowserCloseManagerWithDownloadsBrowserTest : |
| 701 public BrowserCloseManagerBrowserTest { | 701 public BrowserCloseManagerBrowserTest { |
| 702 public: | 702 public: |
| 703 BrowserCloseManagerWithDownloadsBrowserTest() {} | 703 BrowserCloseManagerWithDownloadsBrowserTest() {} |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 738 SetDownloadPathForProfile(browser()->profile()); | 738 SetDownloadPathForProfile(browser()->profile()); |
| 739 ASSERT_NO_FATAL_FAILURE(CreateStalledDownload(browser())); | 739 ASSERT_NO_FATAL_FAILURE(CreateStalledDownload(browser())); |
| 740 | 740 |
| 741 RepeatedNotificationObserver close_observer( | 741 RepeatedNotificationObserver close_observer( |
| 742 chrome::NOTIFICATION_BROWSER_CLOSED, 1); | 742 chrome::NOTIFICATION_BROWSER_CLOSED, 1); |
| 743 | 743 |
| 744 TestBrowserCloseManager::AttemptClose( | 744 TestBrowserCloseManager::AttemptClose( |
| 745 TestBrowserCloseManager::NO_USER_CHOICE); | 745 TestBrowserCloseManager::NO_USER_CHOICE); |
| 746 close_observer.Wait(); | 746 close_observer.Wait(); |
| 747 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 747 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
| 748 EXPECT_TRUE(chrome::BrowserIterator().done()); | 748 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 749 EXPECT_EQ(1, DownloadService::NonMaliciousDownloadCountAllProfiles()); | 749 EXPECT_EQ(1, DownloadService::NonMaliciousDownloadCountAllProfiles()); |
| 750 | 750 |
| 751 // Attempting to close again should not crash. | 751 // Attempting to close again should not crash. |
| 752 TestBrowserCloseManager::AttemptClose( | 752 TestBrowserCloseManager::AttemptClose( |
| 753 TestBrowserCloseManager::NO_USER_CHOICE); | 753 TestBrowserCloseManager::NO_USER_CHOICE); |
| 754 } | 754 } |
| 755 #else // defined(OS_MACOSX) | 755 #else // defined(OS_MACOSX) |
| 756 | 756 |
| 757 // Test shutdown with a DANGEROUS_URL download undecided. | 757 // Test shutdown with a DANGEROUS_URL download undecided. |
| 758 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerWithDownloadsBrowserTest, | 758 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerWithDownloadsBrowserTest, |
| (...skipping 29 matching lines...) Expand all Loading... |
| 788 EXPECT_EQ(0, content::BrowserContext::GetDownloadManager( | 788 EXPECT_EQ(0, content::BrowserContext::GetDownloadManager( |
| 789 browser()->profile())->NonMaliciousInProgressCount()); | 789 browser()->profile())->NonMaliciousInProgressCount()); |
| 790 | 790 |
| 791 // Close the browser with no user action. | 791 // Close the browser with no user action. |
| 792 RepeatedNotificationObserver close_observer( | 792 RepeatedNotificationObserver close_observer( |
| 793 chrome::NOTIFICATION_BROWSER_CLOSED, 1); | 793 chrome::NOTIFICATION_BROWSER_CLOSED, 1); |
| 794 TestBrowserCloseManager::AttemptClose( | 794 TestBrowserCloseManager::AttemptClose( |
| 795 TestBrowserCloseManager::NO_USER_CHOICE); | 795 TestBrowserCloseManager::NO_USER_CHOICE); |
| 796 close_observer.Wait(); | 796 close_observer.Wait(); |
| 797 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 797 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
| 798 EXPECT_TRUE(chrome::BrowserIterator().done()); | 798 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 799 } | 799 } |
| 800 | 800 |
| 801 // Test shutdown with a download in progress. | 801 // Test shutdown with a download in progress. |
| 802 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerWithDownloadsBrowserTest, | 802 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerWithDownloadsBrowserTest, |
| 803 TestWithDownloads) { | 803 TestWithDownloads) { |
| 804 ASSERT_TRUE(embedded_test_server()->Start()); | 804 ASSERT_TRUE(embedded_test_server()->Start()); |
| 805 SetDownloadPathForProfile(browser()->profile()); | 805 SetDownloadPathForProfile(browser()->profile()); |
| 806 ASSERT_NO_FATAL_FAILURE(CreateStalledDownload(browser())); | 806 ASSERT_NO_FATAL_FAILURE(CreateStalledDownload(browser())); |
| 807 content::TestNavigationObserver navigation_observer( | 807 content::TestNavigationObserver navigation_observer( |
| 808 browser()->tab_strip_model()->GetActiveWebContents(), 1); | 808 browser()->tab_strip_model()->GetActiveWebContents(), 1); |
| 809 TestBrowserCloseManager::AttemptClose( | 809 TestBrowserCloseManager::AttemptClose( |
| 810 TestBrowserCloseManager::USER_CHOICE_USER_CANCELS_CLOSE); | 810 TestBrowserCloseManager::USER_CHOICE_USER_CANCELS_CLOSE); |
| 811 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 811 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
| 812 navigation_observer.Wait(); | 812 navigation_observer.Wait(); |
| 813 EXPECT_EQ(GURL(chrome::kChromeUIDownloadsURL), | 813 EXPECT_EQ(GURL(chrome::kChromeUIDownloadsURL), |
| 814 browser()->tab_strip_model()->GetActiveWebContents()->GetURL()); | 814 browser()->tab_strip_model()->GetActiveWebContents()->GetURL()); |
| 815 | 815 |
| 816 RepeatedNotificationObserver close_observer( | 816 RepeatedNotificationObserver close_observer( |
| 817 chrome::NOTIFICATION_BROWSER_CLOSED, 1); | 817 chrome::NOTIFICATION_BROWSER_CLOSED, 1); |
| 818 | 818 |
| 819 TestBrowserCloseManager::AttemptClose( | 819 TestBrowserCloseManager::AttemptClose( |
| 820 TestBrowserCloseManager::USER_CHOICE_USER_ALLOWS_CLOSE); | 820 TestBrowserCloseManager::USER_CHOICE_USER_ALLOWS_CLOSE); |
| 821 close_observer.Wait(); | 821 close_observer.Wait(); |
| 822 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 822 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
| 823 EXPECT_TRUE(chrome::BrowserIterator().done()); | 823 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 824 if (browser_defaults::kBrowserAliveWithNoWindows) | 824 if (browser_defaults::kBrowserAliveWithNoWindows) |
| 825 EXPECT_EQ(1, DownloadService::NonMaliciousDownloadCountAllProfiles()); | 825 EXPECT_EQ(1, DownloadService::NonMaliciousDownloadCountAllProfiles()); |
| 826 else | 826 else |
| 827 EXPECT_EQ(0, DownloadService::NonMaliciousDownloadCountAllProfiles()); | 827 EXPECT_EQ(0, DownloadService::NonMaliciousDownloadCountAllProfiles()); |
| 828 } | 828 } |
| 829 | 829 |
| 830 // Test shutdown with a download in progress in an off-the-record profile. | 830 // Test shutdown with a download in progress in an off-the-record profile. |
| 831 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerWithDownloadsBrowserTest, | 831 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerWithDownloadsBrowserTest, |
| 832 TestWithOffTheRecordDownloads) { | 832 TestWithOffTheRecordDownloads) { |
| 833 ASSERT_TRUE(embedded_test_server()->Start()); | 833 ASSERT_TRUE(embedded_test_server()->Start()); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 850 EXPECT_EQ(GURL(chrome::kChromeUIDownloadsURL), | 850 EXPECT_EQ(GURL(chrome::kChromeUIDownloadsURL), |
| 851 otr_browser->tab_strip_model()->GetActiveWebContents()->GetURL()); | 851 otr_browser->tab_strip_model()->GetActiveWebContents()->GetURL()); |
| 852 | 852 |
| 853 RepeatedNotificationObserver close_observer( | 853 RepeatedNotificationObserver close_observer( |
| 854 chrome::NOTIFICATION_BROWSER_CLOSED, 1); | 854 chrome::NOTIFICATION_BROWSER_CLOSED, 1); |
| 855 | 855 |
| 856 TestBrowserCloseManager::AttemptClose( | 856 TestBrowserCloseManager::AttemptClose( |
| 857 TestBrowserCloseManager::USER_CHOICE_USER_ALLOWS_CLOSE); | 857 TestBrowserCloseManager::USER_CHOICE_USER_ALLOWS_CLOSE); |
| 858 close_observer.Wait(); | 858 close_observer.Wait(); |
| 859 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 859 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
| 860 EXPECT_TRUE(chrome::BrowserIterator().done()); | 860 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 861 EXPECT_EQ(0, DownloadService::NonMaliciousDownloadCountAllProfiles()); | 861 EXPECT_EQ(0, DownloadService::NonMaliciousDownloadCountAllProfiles()); |
| 862 } | 862 } |
| 863 | 863 |
| 864 // Test shutdown with a download in progress from one profile, where the only | 864 // Test shutdown with a download in progress from one profile, where the only |
| 865 // open windows are for another profile. | 865 // open windows are for another profile. |
| 866 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerWithDownloadsBrowserTest, | 866 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerWithDownloadsBrowserTest, |
| 867 TestWithDownloadsFromDifferentProfiles) { | 867 TestWithDownloadsFromDifferentProfiles) { |
| 868 ProfileManager* profile_manager = g_browser_process->profile_manager(); | 868 ProfileManager* profile_manager = g_browser_process->profile_manager(); |
| 869 base::FilePath path = | 869 base::FilePath path = |
| 870 profile_manager->user_data_dir().AppendASCII("test_profile"); | 870 profile_manager->user_data_dir().AppendASCII("test_profile"); |
| (...skipping 29 matching lines...) Expand all Loading... |
| 900 EXPECT_EQ(GURL("about:blank"), | 900 EXPECT_EQ(GURL("about:blank"), |
| 901 other_profile_browser->tab_strip_model()->GetActiveWebContents() | 901 other_profile_browser->tab_strip_model()->GetActiveWebContents() |
| 902 ->GetURL()); | 902 ->GetURL()); |
| 903 | 903 |
| 904 RepeatedNotificationObserver close_observer( | 904 RepeatedNotificationObserver close_observer( |
| 905 chrome::NOTIFICATION_BROWSER_CLOSED, 2); | 905 chrome::NOTIFICATION_BROWSER_CLOSED, 2); |
| 906 TestBrowserCloseManager::AttemptClose( | 906 TestBrowserCloseManager::AttemptClose( |
| 907 TestBrowserCloseManager::USER_CHOICE_USER_ALLOWS_CLOSE); | 907 TestBrowserCloseManager::USER_CHOICE_USER_ALLOWS_CLOSE); |
| 908 close_observer.Wait(); | 908 close_observer.Wait(); |
| 909 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 909 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
| 910 EXPECT_TRUE(chrome::BrowserIterator().done()); | 910 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 911 if (browser_defaults::kBrowserAliveWithNoWindows) | 911 if (browser_defaults::kBrowserAliveWithNoWindows) |
| 912 EXPECT_EQ(1, DownloadService::NonMaliciousDownloadCountAllProfiles()); | 912 EXPECT_EQ(1, DownloadService::NonMaliciousDownloadCountAllProfiles()); |
| 913 else | 913 else |
| 914 EXPECT_EQ(0, DownloadService::NonMaliciousDownloadCountAllProfiles()); | 914 EXPECT_EQ(0, DownloadService::NonMaliciousDownloadCountAllProfiles()); |
| 915 } | 915 } |
| 916 | 916 |
| 917 // Test shutdown with downloads in progress and beforeunload handlers. | 917 // Test shutdown with downloads in progress and beforeunload handlers. |
| 918 // Disabled, see http://crbug.com/315754. | 918 // Disabled, see http://crbug.com/315754. |
| 919 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerWithDownloadsBrowserTest, | 919 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerWithDownloadsBrowserTest, |
| 920 DISABLED_TestBeforeUnloadAndDownloads) { | 920 DISABLED_TestBeforeUnloadAndDownloads) { |
| (...skipping 12 matching lines...) Expand all Loading... |
| 933 cancel_observer.Wait(); | 933 cancel_observer.Wait(); |
| 934 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 934 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
| 935 | 935 |
| 936 RepeatedNotificationObserver close_observer( | 936 RepeatedNotificationObserver close_observer( |
| 937 chrome::NOTIFICATION_BROWSER_CLOSED, 1); | 937 chrome::NOTIFICATION_BROWSER_CLOSED, 1); |
| 938 TestBrowserCloseManager::AttemptClose( | 938 TestBrowserCloseManager::AttemptClose( |
| 939 TestBrowserCloseManager::USER_CHOICE_USER_ALLOWS_CLOSE); | 939 TestBrowserCloseManager::USER_CHOICE_USER_ALLOWS_CLOSE); |
| 940 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 940 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 941 close_observer.Wait(); | 941 close_observer.Wait(); |
| 942 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 942 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
| 943 EXPECT_TRUE(chrome::BrowserIterator().done()); | 943 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 944 } | 944 } |
| 945 | 945 |
| 946 #endif // defined(OS_MACOSX) | 946 #endif // defined(OS_MACOSX) |
| 947 | 947 |
| 948 INSTANTIATE_TEST_CASE_P(BrowserCloseManagerWithDownloadsBrowserTest, | 948 INSTANTIATE_TEST_CASE_P(BrowserCloseManagerWithDownloadsBrowserTest, |
| 949 BrowserCloseManagerWithDownloadsBrowserTest, | 949 BrowserCloseManagerWithDownloadsBrowserTest, |
| 950 testing::Bool()); | 950 testing::Bool()); |
| 951 | 951 |
| 952 class BrowserCloseManagerWithBackgroundModeBrowserTest | 952 class BrowserCloseManagerWithBackgroundModeBrowserTest |
| 953 : public BrowserCloseManagerBrowserTest { | 953 : public BrowserCloseManagerBrowserTest { |
| (...skipping 24 matching lines...) Expand all Loading... |
| 978 EXPECT_FALSE(IsBackgroundModeSuspended()); | 978 EXPECT_FALSE(IsBackgroundModeSuspended()); |
| 979 Profile* profile = browser()->profile(); | 979 Profile* profile = browser()->profile(); |
| 980 { | 980 { |
| 981 RepeatedNotificationObserver close_observer( | 981 RepeatedNotificationObserver close_observer( |
| 982 chrome::NOTIFICATION_BROWSER_CLOSED, 1); | 982 chrome::NOTIFICATION_BROWSER_CLOSED, 1); |
| 983 chrome::IncrementKeepAliveCount(); | 983 chrome::IncrementKeepAliveCount(); |
| 984 chrome::CloseAllBrowsers(); | 984 chrome::CloseAllBrowsers(); |
| 985 close_observer.Wait(); | 985 close_observer.Wait(); |
| 986 } | 986 } |
| 987 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 987 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
| 988 EXPECT_TRUE(chrome::BrowserIterator().done()); | 988 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 989 EXPECT_TRUE(IsBackgroundModeSuspended()); | 989 EXPECT_TRUE(IsBackgroundModeSuspended()); |
| 990 | 990 |
| 991 // Background mode should be resumed when a new browser window is opened. | 991 // Background mode should be resumed when a new browser window is opened. |
| 992 ui_test_utils::BrowserAddedObserver new_browser_observer; | 992 ui_test_utils::BrowserAddedObserver new_browser_observer; |
| 993 chrome::NewEmptyWindow(profile, chrome::HOST_DESKTOP_TYPE_NATIVE); | 993 chrome::NewEmptyWindow(profile, chrome::HOST_DESKTOP_TYPE_NATIVE); |
| 994 new_browser_observer.WaitForSingleNewBrowser(); | 994 new_browser_observer.WaitForSingleNewBrowser(); |
| 995 chrome::DecrementKeepAliveCount(); | 995 chrome::DecrementKeepAliveCount(); |
| 996 EXPECT_FALSE(IsBackgroundModeSuspended()); | 996 EXPECT_FALSE(IsBackgroundModeSuspended()); |
| 997 RepeatedNotificationObserver close_observer( | 997 RepeatedNotificationObserver close_observer( |
| 998 chrome::NOTIFICATION_BROWSER_CLOSED, 1); | 998 chrome::NOTIFICATION_BROWSER_CLOSED, 1); |
| 999 | 999 |
| 1000 // Background mode should not be suspended when quitting. | 1000 // Background mode should not be suspended when quitting. |
| 1001 chrome::CloseAllBrowsersAndQuit(); | 1001 chrome::CloseAllBrowsersAndQuit(); |
| 1002 close_observer.Wait(); | 1002 close_observer.Wait(); |
| 1003 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 1003 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
| 1004 EXPECT_TRUE(chrome::BrowserIterator().done()); | 1004 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 1005 EXPECT_FALSE(IsBackgroundModeSuspended()); | 1005 EXPECT_FALSE(IsBackgroundModeSuspended()); |
| 1006 | 1006 |
| 1007 } | 1007 } |
| 1008 | 1008 |
| 1009 // Check that closing the last browser window individually does not affect | 1009 // Check that closing the last browser window individually does not affect |
| 1010 // background mode. | 1010 // background mode. |
| 1011 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerWithBackgroundModeBrowserTest, | 1011 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerWithBackgroundModeBrowserTest, |
| 1012 CloseSingleBrowserWithBackgroundMode) { | 1012 CloseSingleBrowserWithBackgroundMode) { |
| 1013 RepeatedNotificationObserver close_observer( | 1013 RepeatedNotificationObserver close_observer( |
| 1014 chrome::NOTIFICATION_BROWSER_CLOSED, 1); | 1014 chrome::NOTIFICATION_BROWSER_CLOSED, 1); |
| 1015 EXPECT_FALSE(IsBackgroundModeSuspended()); | 1015 EXPECT_FALSE(IsBackgroundModeSuspended()); |
| 1016 browser()->window()->Close(); | 1016 browser()->window()->Close(); |
| 1017 close_observer.Wait(); | 1017 close_observer.Wait(); |
| 1018 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 1018 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
| 1019 EXPECT_TRUE(chrome::BrowserIterator().done()); | 1019 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 1020 EXPECT_FALSE(IsBackgroundModeSuspended()); | 1020 EXPECT_FALSE(IsBackgroundModeSuspended()); |
| 1021 } | 1021 } |
| 1022 | 1022 |
| 1023 // Check that closing all browsers with no browser windows open suspends | 1023 // Check that closing all browsers with no browser windows open suspends |
| 1024 // background mode but does not cause Chrome to quit. | 1024 // background mode but does not cause Chrome to quit. |
| 1025 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerWithBackgroundModeBrowserTest, | 1025 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerWithBackgroundModeBrowserTest, |
| 1026 CloseAllBrowsersWithNoOpenBrowsersWithBackgroundMode) { | 1026 CloseAllBrowsersWithNoOpenBrowsersWithBackgroundMode) { |
| 1027 RepeatedNotificationObserver close_observer( | 1027 RepeatedNotificationObserver close_observer( |
| 1028 chrome::NOTIFICATION_BROWSER_CLOSED, 1); | 1028 chrome::NOTIFICATION_BROWSER_CLOSED, 1); |
| 1029 EXPECT_FALSE(IsBackgroundModeSuspended()); | 1029 EXPECT_FALSE(IsBackgroundModeSuspended()); |
| 1030 chrome::IncrementKeepAliveCount(); | 1030 chrome::IncrementKeepAliveCount(); |
| 1031 browser()->window()->Close(); | 1031 browser()->window()->Close(); |
| 1032 close_observer.Wait(); | 1032 close_observer.Wait(); |
| 1033 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 1033 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
| 1034 EXPECT_TRUE(chrome::BrowserIterator().done()); | 1034 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 1035 EXPECT_FALSE(IsBackgroundModeSuspended()); | 1035 EXPECT_FALSE(IsBackgroundModeSuspended()); |
| 1036 | 1036 |
| 1037 chrome::CloseAllBrowsers(); | 1037 chrome::CloseAllBrowsers(); |
| 1038 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 1038 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
| 1039 EXPECT_TRUE(chrome::BrowserIterator().done()); | 1039 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 1040 EXPECT_TRUE(IsBackgroundModeSuspended()); | 1040 EXPECT_TRUE(IsBackgroundModeSuspended()); |
| 1041 } | 1041 } |
| 1042 | 1042 |
| 1043 INSTANTIATE_TEST_CASE_P(BrowserCloseManagerWithBackgroundModeBrowserTest, | 1043 INSTANTIATE_TEST_CASE_P(BrowserCloseManagerWithBackgroundModeBrowserTest, |
| 1044 BrowserCloseManagerWithBackgroundModeBrowserTest, | 1044 BrowserCloseManagerWithBackgroundModeBrowserTest, |
| 1045 testing::Bool()); | 1045 testing::Bool()); |
| OLD | NEW |