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

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

Issue 2798143004: Fix for URL opening code (Closed)
Patch Set: Fixed class name usage. Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/lifetime/browser_close_manager.h" 5 #include "chrome/browser/lifetime/browser_close_manager.h"
6 6
7 #include <utility> 7 #include <utility>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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
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
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
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
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
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
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
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
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
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
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());
OLDNEW
« no previous file with comments | « chrome/browser/app_controller_mac_browsertest.mm ('k') | chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698