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 |