Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(488)

Side by Side Diff: chrome/browser/lifetime/browser_close_manager_browsertest.cc

Issue 1644773003: Remove BrowserIterator (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@host-desktop-1
Patch Set: . Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « chrome/browser/lifetime/browser_close_manager.cc ('k') | chrome/browser/memory/tab_manager.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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());
OLDNEW
« no previous file with comments | « chrome/browser/lifetime/browser_close_manager.cc ('k') | chrome/browser/memory/tab_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698