| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/lifetime/browser_close_manager.h" | 5 #include "chrome/browser/lifetime/browser_close_manager.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 45 #include "content/public/browser/browser_context.h" | 45 #include "content/public/browser/browser_context.h" |
| 46 #include "content/public/browser/download_item.h" | 46 #include "content/public/browser/download_item.h" |
| 47 #include "content/public/browser/download_manager.h" | 47 #include "content/public/browser/download_manager.h" |
| 48 #include "content/public/browser/notification_service.h" | 48 #include "content/public/browser/notification_service.h" |
| 49 #include "content/public/browser/render_frame_host.h" | 49 #include "content/public/browser/render_frame_host.h" |
| 50 #include "content/public/browser/render_view_host.h" | 50 #include "content/public/browser/render_view_host.h" |
| 51 #include "content/public/browser/render_widget_host.h" | 51 #include "content/public/browser/render_widget_host.h" |
| 52 #include "content/public/browser/web_contents.h" | 52 #include "content/public/browser/web_contents.h" |
| 53 #include "content/public/test/browser_test_utils.h" | 53 #include "content/public/test/browser_test_utils.h" |
| 54 #include "content/public/test/download_test_observer.h" | 54 #include "content/public/test/download_test_observer.h" |
| 55 #include "content/public/test/repeated_notification_observer.h" |
| 55 #include "content/public/test/test_navigation_observer.h" | 56 #include "content/public/test/test_navigation_observer.h" |
| 56 #include "net/test/embedded_test_server/embedded_test_server.h" | 57 #include "net/test/embedded_test_server/embedded_test_server.h" |
| 57 #include "net/test/url_request/url_request_mock_http_job.h" | 58 #include "net/test/url_request/url_request_mock_http_job.h" |
| 58 #include "net/test/url_request/url_request_slow_download_job.h" | 59 #include "net/test/url_request/url_request_slow_download_job.h" |
| 59 | 60 |
| 60 #if defined(OS_CHROMEOS) | 61 #if defined(OS_CHROMEOS) |
| 61 #include "chromeos/chromeos_switches.h" | 62 #include "chromeos/chromeos_switches.h" |
| 62 #endif | 63 #endif |
| 63 | 64 |
| 64 namespace { | 65 namespace { |
| (...skipping 12 matching lines...) Expand all Loading... |
| 77 void AcceptClose() { | 78 void AcceptClose() { |
| 78 GetNextDialog()->AcceptAppModalDialog(); | 79 GetNextDialog()->AcceptAppModalDialog(); |
| 79 } | 80 } |
| 80 | 81 |
| 81 // Note: call |PrepareForDialog| on the relevant WebContents or Browser before | 82 // Note: call |PrepareForDialog| on the relevant WebContents or Browser before |
| 82 // trying to close it, to avoid flakiness. https://crbug.com/519646 | 83 // trying to close it, to avoid flakiness. https://crbug.com/519646 |
| 83 void CancelClose() { | 84 void CancelClose() { |
| 84 GetNextDialog()->CancelAppModalDialog(); | 85 GetNextDialog()->CancelAppModalDialog(); |
| 85 } | 86 } |
| 86 | 87 |
| 87 class RepeatedNotificationObserver : public content::NotificationObserver { | |
| 88 public: | |
| 89 explicit RepeatedNotificationObserver(int type, int count) | |
| 90 : num_outstanding_(count), running_(false) { | |
| 91 registrar_.Add(this, type, content::NotificationService::AllSources()); | |
| 92 } | |
| 93 | |
| 94 void Observe(int type, | |
| 95 const content::NotificationSource& source, | |
| 96 const content::NotificationDetails& details) override { | |
| 97 ASSERT_GT(num_outstanding_, 0); | |
| 98 if (!--num_outstanding_ && running_) { | |
| 99 content::BrowserThread::PostTask( | |
| 100 content::BrowserThread::UI, FROM_HERE, run_loop_.QuitClosure()); | |
| 101 } | |
| 102 } | |
| 103 | |
| 104 void Wait() { | |
| 105 if (num_outstanding_ <= 0) | |
| 106 return; | |
| 107 | |
| 108 running_ = true; | |
| 109 run_loop_.Run(); | |
| 110 running_ = false; | |
| 111 } | |
| 112 | |
| 113 private: | |
| 114 int num_outstanding_; | |
| 115 content::NotificationRegistrar registrar_; | |
| 116 bool running_; | |
| 117 base::RunLoop run_loop_; | |
| 118 | |
| 119 DISALLOW_COPY_AND_ASSIGN(RepeatedNotificationObserver); | |
| 120 }; | |
| 121 | |
| 122 class TabRestoreServiceChangesObserver | 88 class TabRestoreServiceChangesObserver |
| 123 : public sessions::TabRestoreServiceObserver { | 89 : public sessions::TabRestoreServiceObserver { |
| 124 public: | 90 public: |
| 125 explicit TabRestoreServiceChangesObserver(Profile* profile) | 91 explicit TabRestoreServiceChangesObserver(Profile* profile) |
| 126 : service_(TabRestoreServiceFactory::GetForProfile(profile)) { | 92 : service_(TabRestoreServiceFactory::GetForProfile(profile)) { |
| 127 if (service_) | 93 if (service_) |
| 128 service_->AddObserver(this); | 94 service_->AddObserver(this); |
| 129 } | 95 } |
| 130 | 96 |
| 131 ~TabRestoreServiceChangesObserver() override { | 97 ~TabRestoreServiceChangesObserver() override { |
| (...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 301 | 267 |
| 302 std::vector<Browser*> browsers_; | 268 std::vector<Browser*> browsers_; |
| 303 }; | 269 }; |
| 304 | 270 |
| 305 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, TestSingleTabShutdown) { | 271 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, TestSingleTabShutdown) { |
| 306 ASSERT_TRUE(embedded_test_server()->Start()); | 272 ASSERT_TRUE(embedded_test_server()->Start()); |
| 307 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 273 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 308 browser(), embedded_test_server()->GetURL("/beforeunload.html"))); | 274 browser(), embedded_test_server()->GetURL("/beforeunload.html"))); |
| 309 PrepareForDialog(browser()); | 275 PrepareForDialog(browser()); |
| 310 | 276 |
| 311 RepeatedNotificationObserver cancel_observer( | 277 content::RepeatedNotificationObserver cancel_observer( |
| 312 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); | 278 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); |
| 313 chrome::CloseAllBrowsersAndQuit(); | 279 chrome::CloseAllBrowsersAndQuit(); |
| 314 ASSERT_NO_FATAL_FAILURE(CancelClose()); | 280 ASSERT_NO_FATAL_FAILURE(CancelClose()); |
| 315 cancel_observer.Wait(); | 281 cancel_observer.Wait(); |
| 316 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 282 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
| 317 EXPECT_EQ(1, browser()->tab_strip_model()->count()); | 283 EXPECT_EQ(1, browser()->tab_strip_model()->count()); |
| 318 | 284 |
| 319 RepeatedNotificationObserver close_observer( | 285 content::RepeatedNotificationObserver close_observer( |
| 320 chrome::NOTIFICATION_BROWSER_CLOSED, 1); | 286 chrome::NOTIFICATION_BROWSER_CLOSED, 1); |
| 321 chrome::CloseAllBrowsersAndQuit(); | 287 chrome::CloseAllBrowsersAndQuit(); |
| 322 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 288 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 323 close_observer.Wait(); | 289 close_observer.Wait(); |
| 324 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 290 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
| 325 EXPECT_TRUE(BrowserList::GetInstance()->empty()); | 291 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 326 } | 292 } |
| 327 | 293 |
| 328 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, | 294 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
| 329 TestShutdownMoreThanOnce) { | 295 TestShutdownMoreThanOnce) { |
| 330 ASSERT_TRUE(embedded_test_server()->Start()); | 296 ASSERT_TRUE(embedded_test_server()->Start()); |
| 331 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 297 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 332 browser(), embedded_test_server()->GetURL("/beforeunload.html"))); | 298 browser(), embedded_test_server()->GetURL("/beforeunload.html"))); |
| 333 PrepareForDialog(browser()); | 299 PrepareForDialog(browser()); |
| 334 | 300 |
| 335 RepeatedNotificationObserver cancel_observer( | 301 content::RepeatedNotificationObserver cancel_observer( |
| 336 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); | 302 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); |
| 337 chrome::CloseAllBrowsersAndQuit(); | 303 chrome::CloseAllBrowsersAndQuit(); |
| 338 chrome::CloseAllBrowsersAndQuit(); | 304 chrome::CloseAllBrowsersAndQuit(); |
| 339 ASSERT_NO_FATAL_FAILURE(CancelClose()); | 305 ASSERT_NO_FATAL_FAILURE(CancelClose()); |
| 340 cancel_observer.Wait(); | 306 cancel_observer.Wait(); |
| 341 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 307 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
| 342 EXPECT_EQ(1, browser()->tab_strip_model()->count()); | 308 EXPECT_EQ(1, browser()->tab_strip_model()->count()); |
| 343 | 309 |
| 344 RepeatedNotificationObserver close_observer( | 310 content::RepeatedNotificationObserver close_observer( |
| 345 chrome::NOTIFICATION_BROWSER_CLOSED, 1); | 311 chrome::NOTIFICATION_BROWSER_CLOSED, 1); |
| 346 chrome::CloseAllBrowsersAndQuit(); | 312 chrome::CloseAllBrowsersAndQuit(); |
| 347 chrome::CloseAllBrowsersAndQuit(); | 313 chrome::CloseAllBrowsersAndQuit(); |
| 348 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 314 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 349 close_observer.Wait(); | 315 close_observer.Wait(); |
| 350 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 316 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
| 351 EXPECT_TRUE(BrowserList::GetInstance()->empty()); | 317 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 352 } | 318 } |
| 353 | 319 |
| 354 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, | 320 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
| 355 PRE_TestSessionRestore) { | 321 PRE_TestSessionRestore) { |
| 356 ASSERT_TRUE(embedded_test_server()->Start()); | 322 ASSERT_TRUE(embedded_test_server()->Start()); |
| 357 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 323 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 358 browser(), embedded_test_server()->GetURL("/beforeunload.html"))); | 324 browser(), embedded_test_server()->GetURL("/beforeunload.html"))); |
| 359 AddBlankTabAndShow(browser()); | 325 AddBlankTabAndShow(browser()); |
| 360 ASSERT_NO_FATAL_FAILURE( | 326 ASSERT_NO_FATAL_FAILURE( |
| 361 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIAboutURL))); | 327 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIAboutURL))); |
| 362 PrepareForDialog(browser()); | 328 PrepareForDialog(browser()); |
| 363 | 329 |
| 364 RepeatedNotificationObserver cancel_observer( | 330 content::RepeatedNotificationObserver cancel_observer( |
| 365 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); | 331 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); |
| 366 chrome::CloseAllBrowsersAndQuit(); | 332 chrome::CloseAllBrowsersAndQuit(); |
| 367 ASSERT_NO_FATAL_FAILURE(CancelClose()); | 333 ASSERT_NO_FATAL_FAILURE(CancelClose()); |
| 368 cancel_observer.Wait(); | 334 cancel_observer.Wait(); |
| 369 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 335 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
| 370 | 336 |
| 371 browser()->tab_strip_model() | 337 browser()->tab_strip_model() |
| 372 ->CloseWebContentsAt(1, TabStripModel::CLOSE_USER_GESTURE); | 338 ->CloseWebContentsAt(1, TabStripModel::CLOSE_USER_GESTURE); |
| 373 content::TestNavigationObserver navigation_observer( | 339 content::TestNavigationObserver navigation_observer( |
| 374 browser()->tab_strip_model()->GetActiveWebContents(), 1); | 340 browser()->tab_strip_model()->GetActiveWebContents(), 1); |
| 375 ASSERT_NO_FATAL_FAILURE(NavigateToURLWithDisposition( | 341 ASSERT_NO_FATAL_FAILURE(NavigateToURLWithDisposition( |
| 376 browser(), GURL(chrome::kChromeUIVersionURL), | 342 browser(), GURL(chrome::kChromeUIVersionURL), |
| 377 WindowOpenDisposition::CURRENT_TAB, ui_test_utils::BROWSER_TEST_NONE)); | 343 WindowOpenDisposition::CURRENT_TAB, ui_test_utils::BROWSER_TEST_NONE)); |
| 378 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 344 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 379 navigation_observer.Wait(); | 345 navigation_observer.Wait(); |
| 380 | 346 |
| 381 RepeatedNotificationObserver close_observer( | 347 content::RepeatedNotificationObserver close_observer( |
| 382 chrome::NOTIFICATION_BROWSER_CLOSED, 1); | 348 chrome::NOTIFICATION_BROWSER_CLOSED, 1); |
| 383 chrome::CloseAllBrowsersAndQuit(); | 349 chrome::CloseAllBrowsersAndQuit(); |
| 384 close_observer.Wait(); | 350 close_observer.Wait(); |
| 385 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 351 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
| 386 EXPECT_TRUE(BrowserList::GetInstance()->empty()); | 352 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 387 } | 353 } |
| 388 | 354 |
| 389 // Test that the tab closed after the aborted shutdown attempt is not re-opened | 355 // Test that the tab closed after the aborted shutdown attempt is not re-opened |
| 390 // when restoring the session. | 356 // when restoring the session. |
| 391 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, | 357 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
| (...skipping 13 matching lines...) Expand all Loading... |
| 405 browsers_.push_back(CreateBrowser(browser()->profile())); | 371 browsers_.push_back(CreateBrowser(browser()->profile())); |
| 406 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 372 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 407 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); | 373 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); |
| 408 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 374 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 409 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); | 375 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); |
| 410 PrepareForDialog(browsers_[0]); | 376 PrepareForDialog(browsers_[0]); |
| 411 PrepareForDialog(browsers_[1]); | 377 PrepareForDialog(browsers_[1]); |
| 412 | 378 |
| 413 // Cancel shutdown on the first beforeunload event. | 379 // Cancel shutdown on the first beforeunload event. |
| 414 { | 380 { |
| 415 RepeatedNotificationObserver cancel_observer( | 381 content::RepeatedNotificationObserver cancel_observer( |
| 416 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); | 382 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); |
| 417 chrome::CloseAllBrowsersAndQuit(); | 383 chrome::CloseAllBrowsersAndQuit(); |
| 418 ASSERT_NO_FATAL_FAILURE(CancelClose()); | 384 ASSERT_NO_FATAL_FAILURE(CancelClose()); |
| 419 cancel_observer.Wait(); | 385 cancel_observer.Wait(); |
| 420 } | 386 } |
| 421 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 387 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
| 422 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); | 388 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); |
| 423 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); | 389 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); |
| 424 | 390 |
| 425 // Cancel shutdown on the second beforeunload event. | 391 // Cancel shutdown on the second beforeunload event. |
| 426 { | 392 { |
| 427 RepeatedNotificationObserver cancel_observer( | 393 content::RepeatedNotificationObserver cancel_observer( |
| 428 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2); | 394 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2); |
| 429 chrome::CloseAllBrowsersAndQuit(); | 395 chrome::CloseAllBrowsersAndQuit(); |
| 430 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 396 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 431 ASSERT_NO_FATAL_FAILURE(CancelClose()); | 397 ASSERT_NO_FATAL_FAILURE(CancelClose()); |
| 432 cancel_observer.Wait(); | 398 cancel_observer.Wait(); |
| 433 } | 399 } |
| 434 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 400 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
| 435 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); | 401 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); |
| 436 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); | 402 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); |
| 437 | 403 |
| 438 // Allow shutdown for both beforeunload events. | 404 // Allow shutdown for both beforeunload events. |
| 439 RepeatedNotificationObserver close_observer( | 405 content::RepeatedNotificationObserver close_observer( |
| 440 chrome::NOTIFICATION_BROWSER_CLOSED, 2); | 406 chrome::NOTIFICATION_BROWSER_CLOSED, 2); |
| 441 chrome::CloseAllBrowsersAndQuit(); | 407 chrome::CloseAllBrowsersAndQuit(); |
| 442 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 408 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 443 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 409 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 444 close_observer.Wait(); | 410 close_observer.Wait(); |
| 445 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 411 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
| 446 EXPECT_TRUE(BrowserList::GetInstance()->empty()); | 412 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 447 } | 413 } |
| 448 | 414 |
| 449 // Test that tabs in the same window with a beforeunload event that hangs are | 415 // Test that tabs in the same window with a beforeunload event that hangs are |
| 450 // treated the same as the user accepting the close, but do not close the tab | 416 // treated the same as the user accepting the close, but do not close the tab |
| 451 // early. | 417 // early. |
| 452 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, | 418 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
| 453 TestHangInBeforeUnloadMultipleTabs) { | 419 TestHangInBeforeUnloadMultipleTabs) { |
| 454 ASSERT_TRUE(embedded_test_server()->Start()); | 420 ASSERT_TRUE(embedded_test_server()->Start()); |
| 455 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 421 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 456 browsers_[0], embedded_test_server()->GetURL("/beforeunload_hang.html"))); | 422 browsers_[0], embedded_test_server()->GetURL("/beforeunload_hang.html"))); |
| 457 AddBlankTabAndShow(browsers_[0]); | 423 AddBlankTabAndShow(browsers_[0]); |
| 458 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 424 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 459 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); | 425 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); |
| 460 AddBlankTabAndShow(browsers_[0]); | 426 AddBlankTabAndShow(browsers_[0]); |
| 461 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 427 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 462 browsers_[0], embedded_test_server()->GetURL("/beforeunload_hang.html"))); | 428 browsers_[0], embedded_test_server()->GetURL("/beforeunload_hang.html"))); |
| 463 // Disable the hang monitor in the tab that is not expected to hang, so that | 429 // Disable the hang monitor in the tab that is not expected to hang, so that |
| 464 // the dialog is guaranteed to show. | 430 // the dialog is guaranteed to show. |
| 465 PrepareForDialog(browsers_[0]->tab_strip_model()->GetWebContentsAt(1)); | 431 PrepareForDialog(browsers_[0]->tab_strip_model()->GetWebContentsAt(1)); |
| 466 | 432 |
| 467 RepeatedNotificationObserver cancel_observer( | 433 content::RepeatedNotificationObserver cancel_observer( |
| 468 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); | 434 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); |
| 469 chrome::CloseAllBrowsersAndQuit(); | 435 chrome::CloseAllBrowsersAndQuit(); |
| 470 ASSERT_NO_FATAL_FAILURE(CancelClose()); | 436 ASSERT_NO_FATAL_FAILURE(CancelClose()); |
| 471 cancel_observer.Wait(); | 437 cancel_observer.Wait(); |
| 472 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 438 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
| 473 // All tabs should still be open. | 439 // All tabs should still be open. |
| 474 EXPECT_EQ(3, browsers_[0]->tab_strip_model()->count()); | 440 EXPECT_EQ(3, browsers_[0]->tab_strip_model()->count()); |
| 475 | 441 |
| 476 RepeatedNotificationObserver close_observer( | 442 content::RepeatedNotificationObserver close_observer( |
| 477 chrome::NOTIFICATION_BROWSER_CLOSED, 1); | 443 chrome::NOTIFICATION_BROWSER_CLOSED, 1); |
| 478 chrome::CloseAllBrowsersAndQuit(); | 444 chrome::CloseAllBrowsersAndQuit(); |
| 479 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 445 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 480 close_observer.Wait(); | 446 close_observer.Wait(); |
| 481 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 447 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
| 482 EXPECT_TRUE(BrowserList::GetInstance()->empty()); | 448 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 483 } | 449 } |
| 484 | 450 |
| 485 // Test that tabs in different windows with a beforeunload event that hangs are | 451 // Test that tabs in different windows with a beforeunload event that hangs are |
| 486 // treated the same as the user accepting the close, but do not close the tab | 452 // treated the same as the user accepting the close, but do not close the tab |
| 487 // early. | 453 // early. |
| 488 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, | 454 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
| 489 TestHangInBeforeUnloadMultipleWindows) { | 455 TestHangInBeforeUnloadMultipleWindows) { |
| 490 ASSERT_TRUE(embedded_test_server()->Start()); | 456 ASSERT_TRUE(embedded_test_server()->Start()); |
| 491 browsers_.push_back(CreateBrowser(browser()->profile())); | 457 browsers_.push_back(CreateBrowser(browser()->profile())); |
| 492 browsers_.push_back(CreateBrowser(browser()->profile())); | 458 browsers_.push_back(CreateBrowser(browser()->profile())); |
| 493 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 459 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 494 browsers_[0], embedded_test_server()->GetURL("/beforeunload_hang.html"))); | 460 browsers_[0], embedded_test_server()->GetURL("/beforeunload_hang.html"))); |
| 495 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 461 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 496 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); | 462 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); |
| 497 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 463 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 498 browsers_[2], embedded_test_server()->GetURL("/beforeunload_hang.html"))); | 464 browsers_[2], embedded_test_server()->GetURL("/beforeunload_hang.html"))); |
| 499 // Disable the hang monitor in the tab that is not expected to hang, so that | 465 // Disable the hang monitor in the tab that is not expected to hang, so that |
| 500 // the dialog is guaranteed to show. | 466 // the dialog is guaranteed to show. |
| 501 PrepareForDialog(browsers_[1]); | 467 PrepareForDialog(browsers_[1]); |
| 502 | 468 |
| 503 RepeatedNotificationObserver cancel_observer( | 469 content::RepeatedNotificationObserver cancel_observer( |
| 504 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2); | 470 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2); |
| 505 chrome::CloseAllBrowsersAndQuit(); | 471 chrome::CloseAllBrowsersAndQuit(); |
| 506 ASSERT_NO_FATAL_FAILURE(CancelClose()); | 472 ASSERT_NO_FATAL_FAILURE(CancelClose()); |
| 507 cancel_observer.Wait(); | 473 cancel_observer.Wait(); |
| 508 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 474 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
| 509 // All windows should still be open. | 475 // All windows should still be open. |
| 510 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); | 476 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); |
| 511 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); | 477 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); |
| 512 EXPECT_EQ(1, browsers_[2]->tab_strip_model()->count()); | 478 EXPECT_EQ(1, browsers_[2]->tab_strip_model()->count()); |
| 513 | 479 |
| 514 RepeatedNotificationObserver close_observer( | 480 content::RepeatedNotificationObserver close_observer( |
| 515 chrome::NOTIFICATION_BROWSER_CLOSED, 3); | 481 chrome::NOTIFICATION_BROWSER_CLOSED, 3); |
| 516 chrome::CloseAllBrowsersAndQuit(); | 482 chrome::CloseAllBrowsersAndQuit(); |
| 517 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 483 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 518 close_observer.Wait(); | 484 close_observer.Wait(); |
| 519 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 485 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
| 520 EXPECT_TRUE(BrowserList::GetInstance()->empty()); | 486 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 521 } | 487 } |
| 522 | 488 |
| 523 // Test that tabs that are slow to respond are not closed prematurely. | 489 // Test that tabs that are slow to respond are not closed prematurely. |
| 524 // Regression for crbug.com/365052 caused some of tabs to be closed even if | 490 // Regression for crbug.com/365052 caused some of tabs to be closed even if |
| (...skipping 14 matching lines...) Expand all Loading... |
| 539 browsers_[0], | 505 browsers_[0], |
| 540 embedded_test_server()->GetURL((i == kResposiveTabIndex) | 506 embedded_test_server()->GetURL((i == kResposiveTabIndex) |
| 541 ? "/beforeunload.html" | 507 ? "/beforeunload.html" |
| 542 : "/beforeunload_slow.html"))); | 508 : "/beforeunload_slow.html"))); |
| 543 } | 509 } |
| 544 // Disable the hang monitor in the tab that is not expected to hang, so that | 510 // Disable the hang monitor in the tab that is not expected to hang, so that |
| 545 // the dialog is guaranteed to show. | 511 // the dialog is guaranteed to show. |
| 546 PrepareForDialog( | 512 PrepareForDialog( |
| 547 browsers_[0]->tab_strip_model()->GetWebContentsAt(kResposiveTabIndex)); | 513 browsers_[0]->tab_strip_model()->GetWebContentsAt(kResposiveTabIndex)); |
| 548 | 514 |
| 549 RepeatedNotificationObserver cancel_observer( | 515 content::RepeatedNotificationObserver cancel_observer( |
| 550 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); | 516 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); |
| 551 chrome::CloseAllBrowsersAndQuit(); | 517 chrome::CloseAllBrowsersAndQuit(); |
| 552 ASSERT_NO_FATAL_FAILURE(CancelClose()); | 518 ASSERT_NO_FATAL_FAILURE(CancelClose()); |
| 553 cancel_observer.Wait(); | 519 cancel_observer.Wait(); |
| 554 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 520 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
| 555 | 521 |
| 556 // All tabs should still be open. | 522 // All tabs should still be open. |
| 557 EXPECT_EQ(kTabCount, browsers_[0]->tab_strip_model()->count()); | 523 EXPECT_EQ(kTabCount, browsers_[0]->tab_strip_model()->count()); |
| 558 RepeatedNotificationObserver close_observer( | 524 content::RepeatedNotificationObserver close_observer( |
| 559 chrome::NOTIFICATION_BROWSER_CLOSED, 1); | 525 chrome::NOTIFICATION_BROWSER_CLOSED, 1); |
| 560 | 526 |
| 561 // Quit, this time accepting close confirmation dialog. | 527 // Quit, this time accepting close confirmation dialog. |
| 562 chrome::CloseAllBrowsersAndQuit(); | 528 chrome::CloseAllBrowsersAndQuit(); |
| 563 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 529 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 564 close_observer.Wait(); | 530 close_observer.Wait(); |
| 565 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 531 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
| 566 EXPECT_TRUE(BrowserList::GetInstance()->empty()); | 532 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 567 } | 533 } |
| 568 | 534 |
| (...skipping 18 matching lines...) Expand all Loading... |
| 587 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 553 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 588 browsers_[i], | 554 browsers_[i], |
| 589 embedded_test_server()->GetURL((i == kResposiveBrowserIndex) | 555 embedded_test_server()->GetURL((i == kResposiveBrowserIndex) |
| 590 ? "/beforeunload.html" | 556 ? "/beforeunload.html" |
| 591 : "/beforeunload_slow.html"))); | 557 : "/beforeunload_slow.html"))); |
| 592 } | 558 } |
| 593 // Disable the hang monitor in the tab that is not expected to hang, so that | 559 // Disable the hang monitor in the tab that is not expected to hang, so that |
| 594 // the dialog is guaranteed to show. | 560 // the dialog is guaranteed to show. |
| 595 PrepareForDialog(browsers_[kResposiveBrowserIndex]); | 561 PrepareForDialog(browsers_[kResposiveBrowserIndex]); |
| 596 | 562 |
| 597 RepeatedNotificationObserver cancel_observer( | 563 content::RepeatedNotificationObserver cancel_observer( |
| 598 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, kResposiveBrowserIndex + 1); | 564 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, kResposiveBrowserIndex + 1); |
| 599 chrome::CloseAllBrowsersAndQuit(); | 565 chrome::CloseAllBrowsersAndQuit(); |
| 600 ASSERT_NO_FATAL_FAILURE(CancelClose()); | 566 ASSERT_NO_FATAL_FAILURE(CancelClose()); |
| 601 cancel_observer.Wait(); | 567 cancel_observer.Wait(); |
| 602 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 568 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
| 603 | 569 |
| 604 // All windows should still be open. | 570 // All windows should still be open. |
| 605 for (int i = 0; i < kBrowserCount; i++) | 571 for (int i = 0; i < kBrowserCount; i++) |
| 606 EXPECT_EQ(1, browsers_[i]->tab_strip_model()->count()); | 572 EXPECT_EQ(1, browsers_[i]->tab_strip_model()->count()); |
| 607 | 573 |
| 608 // Quit, this time accepting close confirmation dialog. | 574 // Quit, this time accepting close confirmation dialog. |
| 609 RepeatedNotificationObserver close_observer( | 575 content::RepeatedNotificationObserver close_observer( |
| 610 chrome::NOTIFICATION_BROWSER_CLOSED, kBrowserCount); | 576 chrome::NOTIFICATION_BROWSER_CLOSED, kBrowserCount); |
| 611 chrome::CloseAllBrowsersAndQuit(); | 577 chrome::CloseAllBrowsersAndQuit(); |
| 612 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 578 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 613 close_observer.Wait(); | 579 close_observer.Wait(); |
| 614 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 580 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
| 615 EXPECT_TRUE(BrowserList::GetInstance()->empty()); | 581 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 616 } | 582 } |
| 617 | 583 |
| 618 // Test that a window created during shutdown is closed. | 584 // Test that a window created during shutdown is closed. |
| 619 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, | 585 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
| 620 TestAddWindowDuringShutdown) { | 586 TestAddWindowDuringShutdown) { |
| 621 ASSERT_TRUE(embedded_test_server()->Start()); | 587 ASSERT_TRUE(embedded_test_server()->Start()); |
| 622 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 588 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 623 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); | 589 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); |
| 624 PrepareForDialog(browsers_[0]); | 590 PrepareForDialog(browsers_[0]); |
| 625 | 591 |
| 626 RepeatedNotificationObserver close_observer( | 592 content::RepeatedNotificationObserver close_observer( |
| 627 chrome::NOTIFICATION_BROWSER_CLOSED, 2); | 593 chrome::NOTIFICATION_BROWSER_CLOSED, 2); |
| 628 chrome::CloseAllBrowsersAndQuit(); | 594 chrome::CloseAllBrowsersAndQuit(); |
| 629 browsers_.push_back(CreateBrowser(browser()->profile())); | 595 browsers_.push_back(CreateBrowser(browser()->profile())); |
| 630 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 596 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 631 close_observer.Wait(); | 597 close_observer.Wait(); |
| 632 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 598 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
| 633 EXPECT_TRUE(BrowserList::GetInstance()->empty()); | 599 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 634 } | 600 } |
| 635 | 601 |
| 636 // Test that a window created during shutdown with a beforeunload handler can | 602 // Test that a window created during shutdown with a beforeunload handler can |
| 637 // cancel the shutdown. | 603 // cancel the shutdown. |
| 638 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, | 604 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
| 639 TestAddWindowWithBeforeUnloadDuringShutdown) { | 605 TestAddWindowWithBeforeUnloadDuringShutdown) { |
| 640 ASSERT_TRUE(embedded_test_server()->Start()); | 606 ASSERT_TRUE(embedded_test_server()->Start()); |
| 641 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 607 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 642 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); | 608 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); |
| 643 PrepareForDialog(browsers_[0]); | 609 PrepareForDialog(browsers_[0]); |
| 644 | 610 |
| 645 RepeatedNotificationObserver cancel_observer( | 611 content::RepeatedNotificationObserver cancel_observer( |
| 646 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2); | 612 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2); |
| 647 chrome::CloseAllBrowsersAndQuit(); | 613 chrome::CloseAllBrowsersAndQuit(); |
| 648 browsers_.push_back(CreateBrowser(browser()->profile())); | 614 browsers_.push_back(CreateBrowser(browser()->profile())); |
| 649 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 615 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 650 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); | 616 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); |
| 651 PrepareForDialog(browsers_[1]); | 617 PrepareForDialog(browsers_[1]); |
| 652 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 618 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 653 ASSERT_NO_FATAL_FAILURE(CancelClose()); | 619 ASSERT_NO_FATAL_FAILURE(CancelClose()); |
| 654 cancel_observer.Wait(); | 620 cancel_observer.Wait(); |
| 655 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 621 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
| 656 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); | 622 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); |
| 657 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); | 623 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); |
| 658 | 624 |
| 659 // Allow shutdown for both beforeunload dialogs. | 625 // Allow shutdown for both beforeunload dialogs. |
| 660 RepeatedNotificationObserver close_observer( | 626 content::RepeatedNotificationObserver close_observer( |
| 661 chrome::NOTIFICATION_BROWSER_CLOSED, 2); | 627 chrome::NOTIFICATION_BROWSER_CLOSED, 2); |
| 662 chrome::CloseAllBrowsersAndQuit(); | 628 chrome::CloseAllBrowsersAndQuit(); |
| 663 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 629 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 664 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 630 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 665 close_observer.Wait(); | 631 close_observer.Wait(); |
| 666 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 632 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
| 667 EXPECT_TRUE(BrowserList::GetInstance()->empty()); | 633 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 668 } | 634 } |
| 669 | 635 |
| 670 // Test that tabs added during shutdown are closed. | 636 // Test that tabs added during shutdown are closed. |
| 671 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, | 637 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
| 672 TestAddTabDuringShutdown) { | 638 TestAddTabDuringShutdown) { |
| 673 ASSERT_TRUE(embedded_test_server()->Start()); | 639 ASSERT_TRUE(embedded_test_server()->Start()); |
| 674 browsers_.push_back(CreateBrowser(browser()->profile())); | 640 browsers_.push_back(CreateBrowser(browser()->profile())); |
| 675 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 641 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 676 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); | 642 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); |
| 677 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 643 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 678 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); | 644 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); |
| 679 PrepareForDialog(browsers_[0]); | 645 PrepareForDialog(browsers_[0]); |
| 680 PrepareForDialog(browsers_[1]); | 646 PrepareForDialog(browsers_[1]); |
| 681 | 647 |
| 682 RepeatedNotificationObserver close_observer( | 648 content::RepeatedNotificationObserver close_observer( |
| 683 chrome::NOTIFICATION_BROWSER_CLOSED, 2); | 649 chrome::NOTIFICATION_BROWSER_CLOSED, 2); |
| 684 chrome::CloseAllBrowsersAndQuit(); | 650 chrome::CloseAllBrowsersAndQuit(); |
| 685 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 651 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 686 AddBlankTabAndShow(browsers_[0]); | 652 AddBlankTabAndShow(browsers_[0]); |
| 687 AddBlankTabAndShow(browsers_[1]); | 653 AddBlankTabAndShow(browsers_[1]); |
| 688 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 654 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 689 close_observer.Wait(); | 655 close_observer.Wait(); |
| 690 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 656 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
| 691 EXPECT_TRUE(BrowserList::GetInstance()->empty()); | 657 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 692 } | 658 } |
| 693 | 659 |
| 694 // Test that tabs created during shutdown with beforeunload handlers can cancel | 660 // Test that tabs created during shutdown with beforeunload handlers can cancel |
| 695 // the shutdown. | 661 // the shutdown. |
| 696 | 662 |
| 697 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, | 663 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
| 698 TestAddTabWithBeforeUnloadDuringShutdown) { | 664 TestAddTabWithBeforeUnloadDuringShutdown) { |
| 699 ASSERT_TRUE(embedded_test_server()->Start()); | 665 ASSERT_TRUE(embedded_test_server()->Start()); |
| 700 browsers_.push_back(CreateBrowser(browser()->profile())); | 666 browsers_.push_back(CreateBrowser(browser()->profile())); |
| 701 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 667 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 702 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); | 668 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); |
| 703 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 669 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 704 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); | 670 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); |
| 705 PrepareForDialog(browsers_[0]); | 671 PrepareForDialog(browsers_[0]); |
| 706 PrepareForDialog(browsers_[1]); | 672 PrepareForDialog(browsers_[1]); |
| 707 | 673 |
| 708 RepeatedNotificationObserver cancel_observer( | 674 content::RepeatedNotificationObserver cancel_observer( |
| 709 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2); | 675 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2); |
| 710 chrome::CloseAllBrowsersAndQuit(); | 676 chrome::CloseAllBrowsersAndQuit(); |
| 711 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 677 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 712 AddBlankTabAndShow(browsers_[0]); | 678 AddBlankTabAndShow(browsers_[0]); |
| 713 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 679 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 714 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); | 680 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); |
| 715 AddBlankTabAndShow(browsers_[1]); | 681 AddBlankTabAndShow(browsers_[1]); |
| 716 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 682 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 717 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); | 683 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); |
| 718 PrepareForDialog(browsers_[0]); | 684 PrepareForDialog(browsers_[0]); |
| 719 PrepareForDialog(browsers_[1]); | 685 PrepareForDialog(browsers_[1]); |
| 720 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 686 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 721 ASSERT_NO_FATAL_FAILURE(CancelClose()); | 687 ASSERT_NO_FATAL_FAILURE(CancelClose()); |
| 722 cancel_observer.Wait(); | 688 cancel_observer.Wait(); |
| 723 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 689 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
| 724 EXPECT_EQ(2, browsers_[0]->tab_strip_model()->count()); | 690 EXPECT_EQ(2, browsers_[0]->tab_strip_model()->count()); |
| 725 EXPECT_EQ(2, browsers_[1]->tab_strip_model()->count()); | 691 EXPECT_EQ(2, browsers_[1]->tab_strip_model()->count()); |
| 726 | 692 |
| 727 RepeatedNotificationObserver close_observer( | 693 content::RepeatedNotificationObserver close_observer( |
| 728 chrome::NOTIFICATION_BROWSER_CLOSED, 2); | 694 chrome::NOTIFICATION_BROWSER_CLOSED, 2); |
| 729 chrome::CloseAllBrowsersAndQuit(); | 695 chrome::CloseAllBrowsersAndQuit(); |
| 730 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 696 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 731 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 697 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 732 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 698 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 733 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 699 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 734 | 700 |
| 735 close_observer.Wait(); | 701 close_observer.Wait(); |
| 736 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 702 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
| 737 EXPECT_TRUE(BrowserList::GetInstance()->empty()); | 703 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 842 browser2->tab_strip_model()->GetWebContentsAt(1)->GetURL()); | 808 browser2->tab_strip_model()->GetWebContentsAt(1)->GetURL()); |
| 843 } | 809 } |
| 844 | 810 |
| 845 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, | 811 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
| 846 TestCloseTabDuringShutdown) { | 812 TestCloseTabDuringShutdown) { |
| 847 ASSERT_TRUE(embedded_test_server()->Start()); | 813 ASSERT_TRUE(embedded_test_server()->Start()); |
| 848 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 814 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 849 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); | 815 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); |
| 850 PrepareForDialog(browsers_[0]); | 816 PrepareForDialog(browsers_[0]); |
| 851 | 817 |
| 852 RepeatedNotificationObserver cancel_observer( | 818 content::RepeatedNotificationObserver cancel_observer( |
| 853 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); | 819 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); |
| 854 chrome::CloseAllBrowsersAndQuit(); | 820 chrome::CloseAllBrowsersAndQuit(); |
| 855 | 821 |
| 856 browsers_.push_back(CreateBrowser(browser()->profile())); | 822 browsers_.push_back(CreateBrowser(browser()->profile())); |
| 857 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 823 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 858 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); | 824 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); |
| 859 PrepareForDialog(browsers_[1]); | 825 PrepareForDialog(browsers_[1]); |
| 860 browsers_[1]->tab_strip_model()->CloseAllTabs(); | 826 browsers_[1]->tab_strip_model()->CloseAllTabs(); |
| 861 ASSERT_NO_FATAL_FAILURE(CancelClose()); | 827 ASSERT_NO_FATAL_FAILURE(CancelClose()); |
| 862 ASSERT_NO_FATAL_FAILURE(CancelClose()); | 828 ASSERT_NO_FATAL_FAILURE(CancelClose()); |
| 863 cancel_observer.Wait(); | 829 cancel_observer.Wait(); |
| 864 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 830 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
| 865 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); | 831 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); |
| 866 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); | 832 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); |
| 867 | 833 |
| 868 RepeatedNotificationObserver close_observer( | 834 content::RepeatedNotificationObserver close_observer( |
| 869 chrome::NOTIFICATION_BROWSER_CLOSED, 2); | 835 chrome::NOTIFICATION_BROWSER_CLOSED, 2); |
| 870 chrome::CloseAllBrowsersAndQuit(); | 836 chrome::CloseAllBrowsersAndQuit(); |
| 871 browsers_[1]->tab_strip_model()->CloseAllTabs(); | 837 browsers_[1]->tab_strip_model()->CloseAllTabs(); |
| 872 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 838 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 873 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 839 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 874 | 840 |
| 875 close_observer.Wait(); | 841 close_observer.Wait(); |
| 876 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 842 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
| 877 EXPECT_TRUE(BrowserList::GetInstance()->empty()); | 843 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 878 } | 844 } |
| 879 | 845 |
| 880 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, | 846 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
| 881 TestOpenAndCloseWindowDuringShutdown) { | 847 TestOpenAndCloseWindowDuringShutdown) { |
| 882 ASSERT_TRUE(embedded_test_server()->Start()); | 848 ASSERT_TRUE(embedded_test_server()->Start()); |
| 883 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 849 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 884 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); | 850 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); |
| 885 PrepareForDialog(browsers_[0]); | 851 PrepareForDialog(browsers_[0]); |
| 886 | 852 |
| 887 RepeatedNotificationObserver cancel_observer( | 853 content::RepeatedNotificationObserver cancel_observer( |
| 888 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2); | 854 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2); |
| 889 chrome::CloseAllBrowsersAndQuit(); | 855 chrome::CloseAllBrowsersAndQuit(); |
| 890 | 856 |
| 891 browsers_.push_back(CreateBrowser(browser()->profile())); | 857 browsers_.push_back(CreateBrowser(browser()->profile())); |
| 892 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 858 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 893 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); | 859 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); |
| 894 PrepareForDialog(browsers_[1]); | 860 PrepareForDialog(browsers_[1]); |
| 895 ASSERT_FALSE(browsers_[1]->ShouldCloseWindow()); | 861 ASSERT_FALSE(browsers_[1]->ShouldCloseWindow()); |
| 896 ASSERT_NO_FATAL_FAILURE(CancelClose()); | 862 ASSERT_NO_FATAL_FAILURE(CancelClose()); |
| 897 ASSERT_NO_FATAL_FAILURE(CancelClose()); | 863 ASSERT_NO_FATAL_FAILURE(CancelClose()); |
| 898 cancel_observer.Wait(); | 864 cancel_observer.Wait(); |
| 899 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 865 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
| 900 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); | 866 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); |
| 901 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); | 867 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); |
| 902 | 868 |
| 903 RepeatedNotificationObserver close_observer( | 869 content::RepeatedNotificationObserver close_observer( |
| 904 chrome::NOTIFICATION_BROWSER_CLOSED, 2); | 870 chrome::NOTIFICATION_BROWSER_CLOSED, 2); |
| 905 chrome::CloseAllBrowsersAndQuit(); | 871 chrome::CloseAllBrowsersAndQuit(); |
| 906 ASSERT_FALSE(browsers_[1]->ShouldCloseWindow()); | 872 ASSERT_FALSE(browsers_[1]->ShouldCloseWindow()); |
| 907 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 873 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 908 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 874 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 909 | 875 |
| 910 close_observer.Wait(); | 876 close_observer.Wait(); |
| 911 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 877 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
| 912 EXPECT_TRUE(BrowserList::GetInstance()->empty()); | 878 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 913 } | 879 } |
| 914 | 880 |
| 915 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, | 881 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
| 916 TestCloseWindowDuringShutdown) { | 882 TestCloseWindowDuringShutdown) { |
| 917 ASSERT_TRUE(embedded_test_server()->Start()); | 883 ASSERT_TRUE(embedded_test_server()->Start()); |
| 918 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 884 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 919 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); | 885 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); |
| 920 browsers_.push_back(CreateBrowser(browser()->profile())); | 886 browsers_.push_back(CreateBrowser(browser()->profile())); |
| 921 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 887 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| 922 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); | 888 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); |
| 923 PrepareForDialog(browsers_[0]); | 889 PrepareForDialog(browsers_[0]); |
| 924 PrepareForDialog(browsers_[1]); | 890 PrepareForDialog(browsers_[1]); |
| 925 | 891 |
| 926 RepeatedNotificationObserver cancel_observer( | 892 content::RepeatedNotificationObserver cancel_observer( |
| 927 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); | 893 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); |
| 928 chrome::CloseAllBrowsersAndQuit(); | 894 chrome::CloseAllBrowsersAndQuit(); |
| 929 | 895 |
| 930 ASSERT_FALSE(browsers_[0]->ShouldCloseWindow()); | 896 ASSERT_FALSE(browsers_[0]->ShouldCloseWindow()); |
| 931 ASSERT_NO_FATAL_FAILURE(CancelClose()); | 897 ASSERT_NO_FATAL_FAILURE(CancelClose()); |
| 932 cancel_observer.Wait(); | 898 cancel_observer.Wait(); |
| 933 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 899 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
| 934 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); | 900 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); |
| 935 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); | 901 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); |
| 936 | 902 |
| 937 RepeatedNotificationObserver close_observer( | 903 content::RepeatedNotificationObserver close_observer( |
| 938 chrome::NOTIFICATION_BROWSER_CLOSED, 2); | 904 chrome::NOTIFICATION_BROWSER_CLOSED, 2); |
| 939 chrome::CloseAllBrowsersAndQuit(); | 905 chrome::CloseAllBrowsersAndQuit(); |
| 940 ASSERT_FALSE(browsers_[0]->ShouldCloseWindow()); | 906 ASSERT_FALSE(browsers_[0]->ShouldCloseWindow()); |
| 941 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 907 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 942 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 908 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 943 | 909 |
| 944 close_observer.Wait(); | 910 close_observer.Wait(); |
| 945 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 911 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
| 946 EXPECT_TRUE(BrowserList::GetInstance()->empty()); | 912 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 947 } | 913 } |
| (...skipping 29 matching lines...) Expand all Loading... |
| 977 // Mac has its own in-progress download prompt in app_controller_mac.mm, so | 943 // Mac has its own in-progress download prompt in app_controller_mac.mm, so |
| 978 // BrowserCloseManager should simply close all browsers. If there are no | 944 // BrowserCloseManager should simply close all browsers. If there are no |
| 979 // browsers, it should not crash. | 945 // browsers, it should not crash. |
| 980 #if defined(OS_MACOSX) | 946 #if defined(OS_MACOSX) |
| 981 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerWithDownloadsBrowserTest, | 947 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerWithDownloadsBrowserTest, |
| 982 TestWithDownloads) { | 948 TestWithDownloads) { |
| 983 ASSERT_TRUE(embedded_test_server()->Start()); | 949 ASSERT_TRUE(embedded_test_server()->Start()); |
| 984 SetDownloadPathForProfile(browser()->profile()); | 950 SetDownloadPathForProfile(browser()->profile()); |
| 985 ASSERT_NO_FATAL_FAILURE(CreateStalledDownload(browser())); | 951 ASSERT_NO_FATAL_FAILURE(CreateStalledDownload(browser())); |
| 986 | 952 |
| 987 RepeatedNotificationObserver close_observer( | 953 content::RepeatedNotificationObserver close_observer( |
| 988 chrome::NOTIFICATION_BROWSER_CLOSED, 1); | 954 chrome::NOTIFICATION_BROWSER_CLOSED, 1); |
| 989 | 955 |
| 990 TestBrowserCloseManager::AttemptClose( | 956 TestBrowserCloseManager::AttemptClose( |
| 991 TestBrowserCloseManager::NO_USER_CHOICE); | 957 TestBrowserCloseManager::NO_USER_CHOICE); |
| 992 close_observer.Wait(); | 958 close_observer.Wait(); |
| 993 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 959 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
| 994 EXPECT_TRUE(BrowserList::GetInstance()->empty()); | 960 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 995 EXPECT_EQ(1, DownloadCoreService::NonMaliciousDownloadCountAllProfiles()); | 961 EXPECT_EQ(1, DownloadCoreService::NonMaliciousDownloadCountAllProfiles()); |
| 996 | 962 |
| 997 // Attempting to close again should not crash. | 963 // Attempting to close again should not crash. |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1050 ASSERT_NO_FATAL_FAILURE(CreateStalledDownload(browser())); | 1016 ASSERT_NO_FATAL_FAILURE(CreateStalledDownload(browser())); |
| 1051 content::TestNavigationObserver navigation_observer( | 1017 content::TestNavigationObserver navigation_observer( |
| 1052 browser()->tab_strip_model()->GetActiveWebContents(), 1); | 1018 browser()->tab_strip_model()->GetActiveWebContents(), 1); |
| 1053 TestBrowserCloseManager::AttemptClose( | 1019 TestBrowserCloseManager::AttemptClose( |
| 1054 TestBrowserCloseManager::USER_CHOICE_USER_CANCELS_CLOSE); | 1020 TestBrowserCloseManager::USER_CHOICE_USER_CANCELS_CLOSE); |
| 1055 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 1021 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
| 1056 navigation_observer.Wait(); | 1022 navigation_observer.Wait(); |
| 1057 EXPECT_EQ(GURL(chrome::kChromeUIDownloadsURL), | 1023 EXPECT_EQ(GURL(chrome::kChromeUIDownloadsURL), |
| 1058 browser()->tab_strip_model()->GetActiveWebContents()->GetURL()); | 1024 browser()->tab_strip_model()->GetActiveWebContents()->GetURL()); |
| 1059 | 1025 |
| 1060 RepeatedNotificationObserver close_observer( | 1026 content::RepeatedNotificationObserver close_observer( |
| 1061 chrome::NOTIFICATION_BROWSER_CLOSED, 1); | 1027 chrome::NOTIFICATION_BROWSER_CLOSED, 1); |
| 1062 | 1028 |
| 1063 TestBrowserCloseManager::AttemptClose( | 1029 TestBrowserCloseManager::AttemptClose( |
| 1064 TestBrowserCloseManager::USER_CHOICE_USER_ALLOWS_CLOSE); | 1030 TestBrowserCloseManager::USER_CHOICE_USER_ALLOWS_CLOSE); |
| 1065 close_observer.Wait(); | 1031 close_observer.Wait(); |
| 1066 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 1032 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
| 1067 EXPECT_TRUE(BrowserList::GetInstance()->empty()); | 1033 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 1068 if (browser_defaults::kBrowserAliveWithNoWindows) | 1034 if (browser_defaults::kBrowserAliveWithNoWindows) |
| 1069 EXPECT_EQ(1, DownloadCoreService::NonMaliciousDownloadCountAllProfiles()); | 1035 EXPECT_EQ(1, DownloadCoreService::NonMaliciousDownloadCountAllProfiles()); |
| 1070 else | 1036 else |
| 1071 EXPECT_EQ(0, DownloadCoreService::NonMaliciousDownloadCountAllProfiles()); | 1037 EXPECT_EQ(0, DownloadCoreService::NonMaliciousDownloadCountAllProfiles()); |
| 1072 } | 1038 } |
| 1073 | 1039 |
| 1074 // Test shutdown with a download in progress in an off-the-record profile. | 1040 // Test shutdown with a download in progress in an off-the-record profile. |
| 1075 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerWithDownloadsBrowserTest, | 1041 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerWithDownloadsBrowserTest, |
| 1076 TestWithOffTheRecordDownloads) { | 1042 TestWithOffTheRecordDownloads) { |
| 1077 ASSERT_TRUE(embedded_test_server()->Start()); | 1043 ASSERT_TRUE(embedded_test_server()->Start()); |
| 1078 Profile* otr_profile = browser()->profile()->GetOffTheRecordProfile(); | 1044 Profile* otr_profile = browser()->profile()->GetOffTheRecordProfile(); |
| 1079 SetDownloadPathForProfile(otr_profile); | 1045 SetDownloadPathForProfile(otr_profile); |
| 1080 Browser* otr_browser = CreateBrowser(otr_profile); | 1046 Browser* otr_browser = CreateBrowser(otr_profile); |
| 1081 { | 1047 { |
| 1082 RepeatedNotificationObserver close_observer( | 1048 content::RepeatedNotificationObserver close_observer( |
| 1083 chrome::NOTIFICATION_BROWSER_CLOSED, 1); | 1049 chrome::NOTIFICATION_BROWSER_CLOSED, 1); |
| 1084 browser()->window()->Close(); | 1050 browser()->window()->Close(); |
| 1085 close_observer.Wait(); | 1051 close_observer.Wait(); |
| 1086 } | 1052 } |
| 1087 ASSERT_NO_FATAL_FAILURE(CreateStalledDownload(otr_browser)); | 1053 ASSERT_NO_FATAL_FAILURE(CreateStalledDownload(otr_browser)); |
| 1088 content::TestNavigationObserver navigation_observer( | 1054 content::TestNavigationObserver navigation_observer( |
| 1089 otr_browser->tab_strip_model()->GetActiveWebContents(), 1); | 1055 otr_browser->tab_strip_model()->GetActiveWebContents(), 1); |
| 1090 TestBrowserCloseManager::AttemptClose( | 1056 TestBrowserCloseManager::AttemptClose( |
| 1091 TestBrowserCloseManager::USER_CHOICE_USER_CANCELS_CLOSE); | 1057 TestBrowserCloseManager::USER_CHOICE_USER_CANCELS_CLOSE); |
| 1092 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 1058 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
| 1093 navigation_observer.Wait(); | 1059 navigation_observer.Wait(); |
| 1094 EXPECT_EQ(GURL(chrome::kChromeUIDownloadsURL), | 1060 EXPECT_EQ(GURL(chrome::kChromeUIDownloadsURL), |
| 1095 otr_browser->tab_strip_model()->GetActiveWebContents()->GetURL()); | 1061 otr_browser->tab_strip_model()->GetActiveWebContents()->GetURL()); |
| 1096 | 1062 |
| 1097 RepeatedNotificationObserver close_observer( | 1063 content::RepeatedNotificationObserver close_observer( |
| 1098 chrome::NOTIFICATION_BROWSER_CLOSED, 1); | 1064 chrome::NOTIFICATION_BROWSER_CLOSED, 1); |
| 1099 | 1065 |
| 1100 TestBrowserCloseManager::AttemptClose( | 1066 TestBrowserCloseManager::AttemptClose( |
| 1101 TestBrowserCloseManager::USER_CHOICE_USER_ALLOWS_CLOSE); | 1067 TestBrowserCloseManager::USER_CHOICE_USER_ALLOWS_CLOSE); |
| 1102 close_observer.Wait(); | 1068 close_observer.Wait(); |
| 1103 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 1069 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
| 1104 EXPECT_TRUE(BrowserList::GetInstance()->empty()); | 1070 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 1105 EXPECT_EQ(0, DownloadCoreService::NonMaliciousDownloadCountAllProfiles()); | 1071 EXPECT_EQ(0, DownloadCoreService::NonMaliciousDownloadCountAllProfiles()); |
| 1106 } | 1072 } |
| 1107 | 1073 |
| (...skipping 13 matching lines...) Expand all Loading... |
| 1121 ui_test_utils::NavigateToURL(otr_browser, GURL("about:blank")); | 1087 ui_test_utils::NavigateToURL(otr_browser, GURL("about:blank")); |
| 1122 navigation_observer.Wait(); | 1088 navigation_observer.Wait(); |
| 1123 | 1089 |
| 1124 int num_downloads_blocking = 0; | 1090 int num_downloads_blocking = 0; |
| 1125 ASSERT_EQ( | 1091 ASSERT_EQ( |
| 1126 Browser::DOWNLOAD_CLOSE_OK, | 1092 Browser::DOWNLOAD_CLOSE_OK, |
| 1127 otr_browser->OkToCloseWithInProgressDownloads(&num_downloads_blocking)); | 1093 otr_browser->OkToCloseWithInProgressDownloads(&num_downloads_blocking)); |
| 1128 ASSERT_EQ(0, num_downloads_blocking); | 1094 ASSERT_EQ(0, num_downloads_blocking); |
| 1129 | 1095 |
| 1130 { | 1096 { |
| 1131 RepeatedNotificationObserver close_observer( | 1097 content::RepeatedNotificationObserver close_observer( |
| 1132 chrome::NOTIFICATION_BROWSER_CLOSED, 1); | 1098 chrome::NOTIFICATION_BROWSER_CLOSED, 1); |
| 1133 otr_browser->window()->Close(); | 1099 otr_browser->window()->Close(); |
| 1134 close_observer.Wait(); | 1100 close_observer.Wait(); |
| 1135 } | 1101 } |
| 1136 | 1102 |
| 1137 ASSERT_EQ( | 1103 ASSERT_EQ( |
| 1138 Browser::DOWNLOAD_CLOSE_BROWSER_SHUTDOWN, | 1104 Browser::DOWNLOAD_CLOSE_BROWSER_SHUTDOWN, |
| 1139 browser()->OkToCloseWithInProgressDownloads(&num_downloads_blocking)); | 1105 browser()->OkToCloseWithInProgressDownloads(&num_downloads_blocking)); |
| 1140 ASSERT_EQ(1, num_downloads_blocking); | 1106 ASSERT_EQ(1, num_downloads_blocking); |
| 1141 | 1107 |
| 1142 { | 1108 { |
| 1143 RepeatedNotificationObserver close_observer( | 1109 content::RepeatedNotificationObserver close_observer( |
| 1144 chrome::NOTIFICATION_BROWSER_CLOSED, 2); | 1110 chrome::NOTIFICATION_BROWSER_CLOSED, 2); |
| 1145 TestBrowserCloseManager::AttemptClose( | 1111 TestBrowserCloseManager::AttemptClose( |
| 1146 TestBrowserCloseManager::USER_CHOICE_USER_ALLOWS_CLOSE); | 1112 TestBrowserCloseManager::USER_CHOICE_USER_ALLOWS_CLOSE); |
| 1147 close_observer.Wait(); | 1113 close_observer.Wait(); |
| 1148 } | 1114 } |
| 1149 | 1115 |
| 1150 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 1116 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
| 1151 EXPECT_TRUE(BrowserList::GetInstance()->empty()); | 1117 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 1152 if (browser_defaults::kBrowserAliveWithNoWindows) | 1118 if (browser_defaults::kBrowserAliveWithNoWindows) |
| 1153 EXPECT_EQ(1, DownloadCoreService::NonMaliciousDownloadCountAllProfiles()); | 1119 EXPECT_EQ(1, DownloadCoreService::NonMaliciousDownloadCountAllProfiles()); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 1171 Profile::CreateProfile(path, NULL, Profile::CREATE_MODE_SYNCHRONOUS); | 1137 Profile::CreateProfile(path, NULL, Profile::CREATE_MODE_SYNCHRONOUS); |
| 1172 } | 1138 } |
| 1173 profile_manager->RegisterTestingProfile(other_profile, true, false); | 1139 profile_manager->RegisterTestingProfile(other_profile, true, false); |
| 1174 Browser* other_profile_browser = CreateBrowser(other_profile); | 1140 Browser* other_profile_browser = CreateBrowser(other_profile); |
| 1175 | 1141 |
| 1176 ASSERT_TRUE(embedded_test_server()->Start()); | 1142 ASSERT_TRUE(embedded_test_server()->Start()); |
| 1177 SetDownloadPathForProfile(browser()->profile()); | 1143 SetDownloadPathForProfile(browser()->profile()); |
| 1178 SetDownloadPathForProfile(other_profile); | 1144 SetDownloadPathForProfile(other_profile); |
| 1179 ASSERT_NO_FATAL_FAILURE(CreateStalledDownload(browser())); | 1145 ASSERT_NO_FATAL_FAILURE(CreateStalledDownload(browser())); |
| 1180 { | 1146 { |
| 1181 RepeatedNotificationObserver close_observer( | 1147 content::RepeatedNotificationObserver close_observer( |
| 1182 chrome::NOTIFICATION_BROWSER_CLOSED, 1); | 1148 chrome::NOTIFICATION_BROWSER_CLOSED, 1); |
| 1183 browser()->window()->Close(); | 1149 browser()->window()->Close(); |
| 1184 close_observer.Wait(); | 1150 close_observer.Wait(); |
| 1185 } | 1151 } |
| 1186 | 1152 |
| 1187 // When the shutdown is cancelled, the downloads page should be opened in a | 1153 // When the shutdown is cancelled, the downloads page should be opened in a |
| 1188 // browser for that profile. Because there are no browsers for that profile, a | 1154 // browser for that profile. Because there are no browsers for that profile, a |
| 1189 // new browser should be opened. | 1155 // new browser should be opened. |
| 1190 ui_test_utils::BrowserAddedObserver new_browser_observer; | 1156 ui_test_utils::BrowserAddedObserver new_browser_observer; |
| 1191 TestBrowserCloseManager::AttemptClose( | 1157 TestBrowserCloseManager::AttemptClose( |
| 1192 TestBrowserCloseManager::USER_CHOICE_USER_CANCELS_CLOSE); | 1158 TestBrowserCloseManager::USER_CHOICE_USER_CANCELS_CLOSE); |
| 1193 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 1159 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
| 1194 Browser* opened_browser = new_browser_observer.WaitForSingleNewBrowser(); | 1160 Browser* opened_browser = new_browser_observer.WaitForSingleNewBrowser(); |
| 1195 EXPECT_EQ( | 1161 EXPECT_EQ( |
| 1196 GURL(chrome::kChromeUIDownloadsURL), | 1162 GURL(chrome::kChromeUIDownloadsURL), |
| 1197 opened_browser->tab_strip_model()->GetActiveWebContents()->GetURL()); | 1163 opened_browser->tab_strip_model()->GetActiveWebContents()->GetURL()); |
| 1198 EXPECT_EQ(GURL("about:blank"), | 1164 EXPECT_EQ(GURL("about:blank"), |
| 1199 other_profile_browser->tab_strip_model()->GetActiveWebContents() | 1165 other_profile_browser->tab_strip_model()->GetActiveWebContents() |
| 1200 ->GetURL()); | 1166 ->GetURL()); |
| 1201 | 1167 |
| 1202 RepeatedNotificationObserver close_observer( | 1168 content::RepeatedNotificationObserver close_observer( |
| 1203 chrome::NOTIFICATION_BROWSER_CLOSED, 2); | 1169 chrome::NOTIFICATION_BROWSER_CLOSED, 2); |
| 1204 TestBrowserCloseManager::AttemptClose( | 1170 TestBrowserCloseManager::AttemptClose( |
| 1205 TestBrowserCloseManager::USER_CHOICE_USER_ALLOWS_CLOSE); | 1171 TestBrowserCloseManager::USER_CHOICE_USER_ALLOWS_CLOSE); |
| 1206 close_observer.Wait(); | 1172 close_observer.Wait(); |
| 1207 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 1173 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
| 1208 EXPECT_TRUE(BrowserList::GetInstance()->empty()); | 1174 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 1209 if (browser_defaults::kBrowserAliveWithNoWindows) | 1175 if (browser_defaults::kBrowserAliveWithNoWindows) |
| 1210 EXPECT_EQ(1, DownloadCoreService::NonMaliciousDownloadCountAllProfiles()); | 1176 EXPECT_EQ(1, DownloadCoreService::NonMaliciousDownloadCountAllProfiles()); |
| 1211 else | 1177 else |
| 1212 EXPECT_EQ(0, DownloadCoreService::NonMaliciousDownloadCountAllProfiles()); | 1178 EXPECT_EQ(0, DownloadCoreService::NonMaliciousDownloadCountAllProfiles()); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 1224 | 1190 |
| 1225 content::WindowedNotificationObserver cancel_observer( | 1191 content::WindowedNotificationObserver cancel_observer( |
| 1226 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, | 1192 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, |
| 1227 content::NotificationService::AllSources()); | 1193 content::NotificationService::AllSources()); |
| 1228 TestBrowserCloseManager::AttemptClose( | 1194 TestBrowserCloseManager::AttemptClose( |
| 1229 TestBrowserCloseManager::USER_CHOICE_USER_CANCELS_CLOSE); | 1195 TestBrowserCloseManager::USER_CHOICE_USER_CANCELS_CLOSE); |
| 1230 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 1196 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 1231 cancel_observer.Wait(); | 1197 cancel_observer.Wait(); |
| 1232 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 1198 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
| 1233 | 1199 |
| 1234 RepeatedNotificationObserver close_observer( | 1200 content::RepeatedNotificationObserver close_observer( |
| 1235 chrome::NOTIFICATION_BROWSER_CLOSED, 1); | 1201 chrome::NOTIFICATION_BROWSER_CLOSED, 1); |
| 1236 TestBrowserCloseManager::AttemptClose( | 1202 TestBrowserCloseManager::AttemptClose( |
| 1237 TestBrowserCloseManager::USER_CHOICE_USER_ALLOWS_CLOSE); | 1203 TestBrowserCloseManager::USER_CHOICE_USER_ALLOWS_CLOSE); |
| 1238 ASSERT_NO_FATAL_FAILURE(AcceptClose()); | 1204 ASSERT_NO_FATAL_FAILURE(AcceptClose()); |
| 1239 close_observer.Wait(); | 1205 close_observer.Wait(); |
| 1240 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 1206 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
| 1241 EXPECT_TRUE(BrowserList::GetInstance()->empty()); | 1207 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 1242 } | 1208 } |
| 1243 | 1209 |
| 1244 #endif // defined(OS_MACOSX) | 1210 #endif // defined(OS_MACOSX) |
| (...skipping 25 matching lines...) Expand all Loading... |
| 1270 | 1236 |
| 1271 // Check that background mode is suspended when closing all browsers unless we | 1237 // Check that background mode is suspended when closing all browsers unless we |
| 1272 // are quitting and that background mode is resumed when a new browser window is | 1238 // are quitting and that background mode is resumed when a new browser window is |
| 1273 // opened. | 1239 // opened. |
| 1274 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerWithBackgroundModeBrowserTest, | 1240 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerWithBackgroundModeBrowserTest, |
| 1275 CloseAllBrowsersWithBackgroundMode) { | 1241 CloseAllBrowsersWithBackgroundMode) { |
| 1276 EXPECT_FALSE(IsBackgroundModeSuspended()); | 1242 EXPECT_FALSE(IsBackgroundModeSuspended()); |
| 1277 std::unique_ptr<ScopedKeepAlive> tmp_keep_alive; | 1243 std::unique_ptr<ScopedKeepAlive> tmp_keep_alive; |
| 1278 Profile* profile = browser()->profile(); | 1244 Profile* profile = browser()->profile(); |
| 1279 { | 1245 { |
| 1280 RepeatedNotificationObserver close_observer( | 1246 content::RepeatedNotificationObserver close_observer( |
| 1281 chrome::NOTIFICATION_BROWSER_CLOSED, 1); | 1247 chrome::NOTIFICATION_BROWSER_CLOSED, 1); |
| 1282 tmp_keep_alive.reset(new ScopedKeepAlive(KeepAliveOrigin::PANEL_VIEW, | 1248 tmp_keep_alive.reset(new ScopedKeepAlive(KeepAliveOrigin::PANEL_VIEW, |
| 1283 KeepAliveRestartOption::DISABLED)); | 1249 KeepAliveRestartOption::DISABLED)); |
| 1284 chrome::CloseAllBrowsers(); | 1250 chrome::CloseAllBrowsers(); |
| 1285 close_observer.Wait(); | 1251 close_observer.Wait(); |
| 1286 } | 1252 } |
| 1287 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 1253 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
| 1288 EXPECT_TRUE(BrowserList::GetInstance()->empty()); | 1254 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 1289 EXPECT_TRUE(IsBackgroundModeSuspended()); | 1255 EXPECT_TRUE(IsBackgroundModeSuspended()); |
| 1290 | 1256 |
| 1291 // Background mode should be resumed when a new browser window is opened. | 1257 // Background mode should be resumed when a new browser window is opened. |
| 1292 ui_test_utils::BrowserAddedObserver new_browser_observer; | 1258 ui_test_utils::BrowserAddedObserver new_browser_observer; |
| 1293 chrome::NewEmptyWindow(profile); | 1259 chrome::NewEmptyWindow(profile); |
| 1294 new_browser_observer.WaitForSingleNewBrowser(); | 1260 new_browser_observer.WaitForSingleNewBrowser(); |
| 1295 tmp_keep_alive.reset(); | 1261 tmp_keep_alive.reset(); |
| 1296 EXPECT_FALSE(IsBackgroundModeSuspended()); | 1262 EXPECT_FALSE(IsBackgroundModeSuspended()); |
| 1297 RepeatedNotificationObserver close_observer( | 1263 content::RepeatedNotificationObserver close_observer( |
| 1298 chrome::NOTIFICATION_BROWSER_CLOSED, 1); | 1264 chrome::NOTIFICATION_BROWSER_CLOSED, 1); |
| 1299 | 1265 |
| 1300 // Background mode should not be suspended when quitting. | 1266 // Background mode should not be suspended when quitting. |
| 1301 chrome::CloseAllBrowsersAndQuit(); | 1267 chrome::CloseAllBrowsersAndQuit(); |
| 1302 close_observer.Wait(); | 1268 close_observer.Wait(); |
| 1303 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 1269 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
| 1304 EXPECT_TRUE(BrowserList::GetInstance()->empty()); | 1270 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 1305 EXPECT_FALSE(IsBackgroundModeSuspended()); | 1271 EXPECT_FALSE(IsBackgroundModeSuspended()); |
| 1306 } | 1272 } |
| 1307 | 1273 |
| 1308 // Check that closing the last browser window individually does not affect | 1274 // Check that closing the last browser window individually does not affect |
| 1309 // background mode. | 1275 // background mode. |
| 1310 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerWithBackgroundModeBrowserTest, | 1276 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerWithBackgroundModeBrowserTest, |
| 1311 DISABLED_CloseSingleBrowserWithBackgroundMode) { | 1277 DISABLED_CloseSingleBrowserWithBackgroundMode) { |
| 1312 RepeatedNotificationObserver close_observer( | 1278 content::RepeatedNotificationObserver close_observer( |
| 1313 chrome::NOTIFICATION_BROWSER_CLOSED, 1); | 1279 chrome::NOTIFICATION_BROWSER_CLOSED, 1); |
| 1314 EXPECT_FALSE(IsBackgroundModeSuspended()); | 1280 EXPECT_FALSE(IsBackgroundModeSuspended()); |
| 1315 browser()->window()->Close(); | 1281 browser()->window()->Close(); |
| 1316 close_observer.Wait(); | 1282 close_observer.Wait(); |
| 1317 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 1283 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
| 1318 EXPECT_TRUE(BrowserList::GetInstance()->empty()); | 1284 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 1319 EXPECT_FALSE(IsBackgroundModeSuspended()); | 1285 EXPECT_FALSE(IsBackgroundModeSuspended()); |
| 1320 } | 1286 } |
| 1321 | 1287 |
| 1322 // Check that closing all browsers with no browser windows open suspends | 1288 // Check that closing all browsers with no browser windows open suspends |
| 1323 // background mode but does not cause Chrome to quit. | 1289 // background mode but does not cause Chrome to quit. |
| 1324 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerWithBackgroundModeBrowserTest, | 1290 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerWithBackgroundModeBrowserTest, |
| 1325 DISABLED_CloseAllBrowsersWithNoOpenBrowsersWithBackground
Mode) { | 1291 DISABLED_CloseAllBrowsersWithNoOpenBrowsersWithBackground
Mode) { |
| 1326 RepeatedNotificationObserver close_observer( | 1292 content::RepeatedNotificationObserver close_observer( |
| 1327 chrome::NOTIFICATION_BROWSER_CLOSED, 1); | 1293 chrome::NOTIFICATION_BROWSER_CLOSED, 1); |
| 1328 EXPECT_FALSE(IsBackgroundModeSuspended()); | 1294 EXPECT_FALSE(IsBackgroundModeSuspended()); |
| 1329 ScopedKeepAlive tmp_keep_alive(KeepAliveOrigin::PANEL_VIEW, | 1295 ScopedKeepAlive tmp_keep_alive(KeepAliveOrigin::PANEL_VIEW, |
| 1330 KeepAliveRestartOption::DISABLED); | 1296 KeepAliveRestartOption::DISABLED); |
| 1331 browser()->window()->Close(); | 1297 browser()->window()->Close(); |
| 1332 close_observer.Wait(); | 1298 close_observer.Wait(); |
| 1333 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 1299 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
| 1334 EXPECT_TRUE(BrowserList::GetInstance()->empty()); | 1300 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 1335 EXPECT_FALSE(IsBackgroundModeSuspended()); | 1301 EXPECT_FALSE(IsBackgroundModeSuspended()); |
| 1336 | 1302 |
| 1337 chrome::CloseAllBrowsers(); | 1303 chrome::CloseAllBrowsers(); |
| 1338 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 1304 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
| 1339 EXPECT_TRUE(BrowserList::GetInstance()->empty()); | 1305 EXPECT_TRUE(BrowserList::GetInstance()->empty()); |
| 1340 EXPECT_TRUE(IsBackgroundModeSuspended()); | 1306 EXPECT_TRUE(IsBackgroundModeSuspended()); |
| 1341 } | 1307 } |
| 1342 | 1308 |
| 1343 INSTANTIATE_TEST_CASE_P(BrowserCloseManagerWithBackgroundModeBrowserTest, | 1309 INSTANTIATE_TEST_CASE_P(BrowserCloseManagerWithBackgroundModeBrowserTest, |
| 1344 BrowserCloseManagerWithBackgroundModeBrowserTest, | 1310 BrowserCloseManagerWithBackgroundModeBrowserTest, |
| 1345 testing::Bool()); | 1311 testing::Bool()); |
| OLD | NEW |