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