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

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

Issue 2801813005: Only show a beforeunload dialog if a frame has had a user gesture since its load. (Closed)
Patch Set: test fix Created 3 years, 7 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 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 65
66 app_modal::NativeAppModalDialog* GetNextDialog() { 66 app_modal::NativeAppModalDialog* GetNextDialog() {
67 app_modal::AppModalDialog* dialog = ui_test_utils::WaitForAppModalDialog(); 67 app_modal::AppModalDialog* dialog = ui_test_utils::WaitForAppModalDialog();
68 EXPECT_TRUE(dialog->IsJavaScriptModalDialog()); 68 EXPECT_TRUE(dialog->IsJavaScriptModalDialog());
69 app_modal::JavaScriptAppModalDialog* js_dialog = 69 app_modal::JavaScriptAppModalDialog* js_dialog =
70 static_cast<app_modal::JavaScriptAppModalDialog*>(dialog); 70 static_cast<app_modal::JavaScriptAppModalDialog*>(dialog);
71 CHECK(js_dialog->native_dialog()); 71 CHECK(js_dialog->native_dialog());
72 return js_dialog->native_dialog(); 72 return js_dialog->native_dialog();
73 } 73 }
74 74
75 // Note: call |DisableHangMonitor| on the relevant WebContents or Browser before 75 // Note: call |PrepareForDialog| on the relevant WebContents or Browser before
76 // trying to close it, to avoid flakiness. https://crbug.com/519646 76 // trying to close it, to avoid flakiness. https://crbug.com/519646
77 void AcceptClose() { 77 void AcceptClose() {
78 GetNextDialog()->AcceptAppModalDialog(); 78 GetNextDialog()->AcceptAppModalDialog();
79 } 79 }
80 80
81 // Note: call |DisableHangMonitor| on the relevant WebContents or Browser before 81 // Note: call |PrepareForDialog| on the relevant WebContents or Browser before
82 // trying to close it, to avoid flakiness. https://crbug.com/519646 82 // trying to close it, to avoid flakiness. https://crbug.com/519646
83 void CancelClose() { 83 void CancelClose() {
84 GetNextDialog()->CancelAppModalDialog(); 84 GetNextDialog()->CancelAppModalDialog();
85 } 85 }
86 86
87 class RepeatedNotificationObserver : public content::NotificationObserver { 87 class RepeatedNotificationObserver : public content::NotificationObserver {
88 public: 88 public:
89 explicit RepeatedNotificationObserver(int type, int count) 89 explicit RepeatedNotificationObserver(int type, int count)
90 : num_outstanding_(count), running_(false) { 90 : num_outstanding_(count), running_(false) {
91 registrar_.Add(this, type, content::NotificationService::AllSources()); 91 registrar_.Add(this, type, content::NotificationService::AllSources());
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
283 ui_test_utils::NavigateToURLWithDisposition( 283 ui_test_utils::NavigateToURLWithDisposition(
284 browser, GURL(net::URLRequestSlowDownloadJob::kKnownSizeUrl), 284 browser, GURL(net::URLRequestSlowDownloadJob::kKnownSizeUrl),
285 WindowOpenDisposition::NEW_BACKGROUND_TAB, 285 WindowOpenDisposition::NEW_BACKGROUND_TAB,
286 ui_test_utils::BROWSER_TEST_NONE); 286 ui_test_utils::BROWSER_TEST_NONE);
287 observer.WaitForFinished(); 287 observer.WaitForFinished();
288 EXPECT_EQ( 288 EXPECT_EQ(
289 1UL, 289 1UL,
290 observer.NumDownloadsSeenInState(content::DownloadItem::IN_PROGRESS)); 290 observer.NumDownloadsSeenInState(content::DownloadItem::IN_PROGRESS));
291 } 291 }
292 292
293 // Makes sure that the beforeunload hang monitor will not trigger. That must 293 void PrepareForDialog(content::WebContents* web_contents) {
294 // be called before close action when using |AcceptClose| or |CancelClose|, to 294 content::PrepContentsForBeforeUnloadTest(web_contents);
295 // ensure the timeout does not prevent the dialog from appearing.
296 // https://crbug.com/519646
297 void DisableHangMonitor(content::WebContents* web_contents) {
298 web_contents->GetMainFrame()->DisableBeforeUnloadHangMonitorForTesting();
299 } 295 }
300 296
301 void DisableHangMonitor(Browser* browser) { 297 void PrepareForDialog(Browser* browser) {
302 for (int i = 0; i < browser->tab_strip_model()->count(); i++) 298 for (int i = 0; i < browser->tab_strip_model()->count(); i++) {
303 DisableHangMonitor(browser->tab_strip_model()->GetWebContentsAt(i)); 299 content::PrepContentsForBeforeUnloadTest(
Nico 2017/05/05 16:36:47 nit: If you think having the PrepareForDialog(WebC
Avi (use Gerrit) 2017/05/05 19:29:07 I don't understand your comment. I should name thi
Charlie Reis 2017/05/05 21:27:02 I think he meant to replace this line with Prepare
Avi (use Gerrit) 2017/05/05 22:22:01 Ooooh. Yes.
300 browser->tab_strip_model()->GetWebContentsAt(i));
301 }
304 } 302 }
305 303
306 std::vector<Browser*> browsers_; 304 std::vector<Browser*> browsers_;
307 }; 305 };
308 306
309 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, TestSingleTabShutdown) { 307 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, TestSingleTabShutdown) {
310 ASSERT_TRUE(embedded_test_server()->Start()); 308 ASSERT_TRUE(embedded_test_server()->Start());
311 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 309 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
312 browser(), embedded_test_server()->GetURL("/beforeunload.html"))); 310 browser(), embedded_test_server()->GetURL("/beforeunload.html")));
313 DisableHangMonitor(browser()); 311 PrepareForDialog(browser());
314 312
315 RepeatedNotificationObserver cancel_observer( 313 RepeatedNotificationObserver cancel_observer(
316 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); 314 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1);
317 chrome::CloseAllBrowsersAndQuit(); 315 chrome::CloseAllBrowsersAndQuit();
318 ASSERT_NO_FATAL_FAILURE(CancelClose()); 316 ASSERT_NO_FATAL_FAILURE(CancelClose());
319 cancel_observer.Wait(); 317 cancel_observer.Wait();
320 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); 318 EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
321 EXPECT_EQ(1, browser()->tab_strip_model()->count()); 319 EXPECT_EQ(1, browser()->tab_strip_model()->count());
322 320
323 RepeatedNotificationObserver close_observer( 321 RepeatedNotificationObserver close_observer(
324 chrome::NOTIFICATION_BROWSER_CLOSED, 1); 322 chrome::NOTIFICATION_BROWSER_CLOSED, 1);
325 chrome::CloseAllBrowsersAndQuit(); 323 chrome::CloseAllBrowsersAndQuit();
326 ASSERT_NO_FATAL_FAILURE(AcceptClose()); 324 ASSERT_NO_FATAL_FAILURE(AcceptClose());
327 close_observer.Wait(); 325 close_observer.Wait();
328 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); 326 EXPECT_TRUE(browser_shutdown::IsTryingToQuit());
329 EXPECT_TRUE(BrowserList::GetInstance()->empty()); 327 EXPECT_TRUE(BrowserList::GetInstance()->empty());
330 } 328 }
331 329
332 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, 330 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest,
333 TestShutdownMoreThanOnce) { 331 TestShutdownMoreThanOnce) {
334 ASSERT_TRUE(embedded_test_server()->Start()); 332 ASSERT_TRUE(embedded_test_server()->Start());
335 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 333 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
336 browser(), embedded_test_server()->GetURL("/beforeunload.html"))); 334 browser(), embedded_test_server()->GetURL("/beforeunload.html")));
337 DisableHangMonitor(browser()); 335 PrepareForDialog(browser());
338 336
339 RepeatedNotificationObserver cancel_observer( 337 RepeatedNotificationObserver cancel_observer(
340 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); 338 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1);
341 chrome::CloseAllBrowsersAndQuit(); 339 chrome::CloseAllBrowsersAndQuit();
342 chrome::CloseAllBrowsersAndQuit(); 340 chrome::CloseAllBrowsersAndQuit();
343 ASSERT_NO_FATAL_FAILURE(CancelClose()); 341 ASSERT_NO_FATAL_FAILURE(CancelClose());
344 cancel_observer.Wait(); 342 cancel_observer.Wait();
345 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); 343 EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
346 EXPECT_EQ(1, browser()->tab_strip_model()->count()); 344 EXPECT_EQ(1, browser()->tab_strip_model()->count());
347 345
348 RepeatedNotificationObserver close_observer( 346 RepeatedNotificationObserver close_observer(
349 chrome::NOTIFICATION_BROWSER_CLOSED, 1); 347 chrome::NOTIFICATION_BROWSER_CLOSED, 1);
350 chrome::CloseAllBrowsersAndQuit(); 348 chrome::CloseAllBrowsersAndQuit();
351 chrome::CloseAllBrowsersAndQuit(); 349 chrome::CloseAllBrowsersAndQuit();
352 ASSERT_NO_FATAL_FAILURE(AcceptClose()); 350 ASSERT_NO_FATAL_FAILURE(AcceptClose());
353 close_observer.Wait(); 351 close_observer.Wait();
354 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); 352 EXPECT_TRUE(browser_shutdown::IsTryingToQuit());
355 EXPECT_TRUE(BrowserList::GetInstance()->empty()); 353 EXPECT_TRUE(BrowserList::GetInstance()->empty());
356 } 354 }
357 355
358 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, 356 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest,
359 PRE_TestSessionRestore) { 357 PRE_TestSessionRestore) {
360 ASSERT_TRUE(embedded_test_server()->Start()); 358 ASSERT_TRUE(embedded_test_server()->Start());
361 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 359 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
362 browser(), embedded_test_server()->GetURL("/beforeunload.html"))); 360 browser(), embedded_test_server()->GetURL("/beforeunload.html")));
363 AddBlankTabAndShow(browser()); 361 AddBlankTabAndShow(browser());
364 ASSERT_NO_FATAL_FAILURE( 362 ASSERT_NO_FATAL_FAILURE(
365 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIAboutURL))); 363 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIAboutURL)));
366 DisableHangMonitor(browser()); 364 PrepareForDialog(browser());
367 365
368 RepeatedNotificationObserver cancel_observer( 366 RepeatedNotificationObserver cancel_observer(
369 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); 367 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1);
370 chrome::CloseAllBrowsersAndQuit(); 368 chrome::CloseAllBrowsersAndQuit();
371 ASSERT_NO_FATAL_FAILURE(CancelClose()); 369 ASSERT_NO_FATAL_FAILURE(CancelClose());
372 cancel_observer.Wait(); 370 cancel_observer.Wait();
373 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); 371 EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
374 372
375 browser()->tab_strip_model() 373 browser()->tab_strip_model()
376 ->CloseWebContentsAt(1, TabStripModel::CLOSE_USER_GESTURE); 374 ->CloseWebContentsAt(1, TabStripModel::CLOSE_USER_GESTURE);
(...skipping 27 matching lines...) Expand all
404 402
405 // Test that browser windows are only closed if all browsers are ready to close 403 // Test that browser windows are only closed if all browsers are ready to close
406 // and that all beforeunload dialogs are shown again after a cancel. 404 // and that all beforeunload dialogs are shown again after a cancel.
407 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, TestMultipleWindows) { 405 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, TestMultipleWindows) {
408 ASSERT_TRUE(embedded_test_server()->Start()); 406 ASSERT_TRUE(embedded_test_server()->Start());
409 browsers_.push_back(CreateBrowser(browser()->profile())); 407 browsers_.push_back(CreateBrowser(browser()->profile()));
410 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 408 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
411 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); 409 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html")));
412 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 410 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
413 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); 411 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html")));
414 DisableHangMonitor(browsers_[0]); 412 PrepareForDialog(browsers_[0]);
415 DisableHangMonitor(browsers_[1]); 413 PrepareForDialog(browsers_[1]);
416 414
417 // Cancel shutdown on the first beforeunload event. 415 // Cancel shutdown on the first beforeunload event.
418 { 416 {
419 RepeatedNotificationObserver cancel_observer( 417 RepeatedNotificationObserver cancel_observer(
420 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); 418 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1);
421 chrome::CloseAllBrowsersAndQuit(); 419 chrome::CloseAllBrowsersAndQuit();
422 ASSERT_NO_FATAL_FAILURE(CancelClose()); 420 ASSERT_NO_FATAL_FAILURE(CancelClose());
423 cancel_observer.Wait(); 421 cancel_observer.Wait();
424 } 422 }
425 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); 423 EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
459 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 457 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
460 browsers_[0], embedded_test_server()->GetURL("/beforeunload_hang.html"))); 458 browsers_[0], embedded_test_server()->GetURL("/beforeunload_hang.html")));
461 AddBlankTabAndShow(browsers_[0]); 459 AddBlankTabAndShow(browsers_[0]);
462 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 460 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
463 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); 461 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html")));
464 AddBlankTabAndShow(browsers_[0]); 462 AddBlankTabAndShow(browsers_[0]);
465 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 463 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
466 browsers_[0], embedded_test_server()->GetURL("/beforeunload_hang.html"))); 464 browsers_[0], embedded_test_server()->GetURL("/beforeunload_hang.html")));
467 // Disable the hang monitor in the tab that is not expected to hang, so that 465 // Disable the hang monitor in the tab that is not expected to hang, so that
468 // the dialog is guaranteed to show. 466 // the dialog is guaranteed to show.
469 DisableHangMonitor(browsers_[0]->tab_strip_model()->GetWebContentsAt(1)); 467 PrepareForDialog(browsers_[0]->tab_strip_model()->GetWebContentsAt(1));
470 468
471 RepeatedNotificationObserver cancel_observer( 469 RepeatedNotificationObserver cancel_observer(
472 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); 470 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1);
473 chrome::CloseAllBrowsersAndQuit(); 471 chrome::CloseAllBrowsersAndQuit();
474 ASSERT_NO_FATAL_FAILURE(CancelClose()); 472 ASSERT_NO_FATAL_FAILURE(CancelClose());
475 cancel_observer.Wait(); 473 cancel_observer.Wait();
476 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); 474 EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
477 // All tabs should still be open. 475 // All tabs should still be open.
478 EXPECT_EQ(3, browsers_[0]->tab_strip_model()->count()); 476 EXPECT_EQ(3, browsers_[0]->tab_strip_model()->count());
479 477
(...skipping 15 matching lines...) Expand all
495 browsers_.push_back(CreateBrowser(browser()->profile())); 493 browsers_.push_back(CreateBrowser(browser()->profile()));
496 browsers_.push_back(CreateBrowser(browser()->profile())); 494 browsers_.push_back(CreateBrowser(browser()->profile()));
497 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 495 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
498 browsers_[0], embedded_test_server()->GetURL("/beforeunload_hang.html"))); 496 browsers_[0], embedded_test_server()->GetURL("/beforeunload_hang.html")));
499 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 497 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
500 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); 498 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html")));
501 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 499 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
502 browsers_[2], embedded_test_server()->GetURL("/beforeunload_hang.html"))); 500 browsers_[2], embedded_test_server()->GetURL("/beforeunload_hang.html")));
503 // Disable the hang monitor in the tab that is not expected to hang, so that 501 // Disable the hang monitor in the tab that is not expected to hang, so that
504 // the dialog is guaranteed to show. 502 // the dialog is guaranteed to show.
505 DisableHangMonitor(browsers_[1]); 503 PrepareForDialog(browsers_[1]);
506 504
507 RepeatedNotificationObserver cancel_observer( 505 RepeatedNotificationObserver cancel_observer(
508 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2); 506 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2);
509 chrome::CloseAllBrowsersAndQuit(); 507 chrome::CloseAllBrowsersAndQuit();
510 ASSERT_NO_FATAL_FAILURE(CancelClose()); 508 ASSERT_NO_FATAL_FAILURE(CancelClose());
511 cancel_observer.Wait(); 509 cancel_observer.Wait();
512 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); 510 EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
513 // All windows should still be open. 511 // All windows should still be open.
514 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); 512 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count());
515 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); 513 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count());
(...skipping 24 matching lines...) Expand all
540 if (i) 538 if (i)
541 AddBlankTabAndShow(browsers_[0]); 539 AddBlankTabAndShow(browsers_[0]);
542 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 540 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
543 browsers_[0], 541 browsers_[0],
544 embedded_test_server()->GetURL((i == kResposiveTabIndex) 542 embedded_test_server()->GetURL((i == kResposiveTabIndex)
545 ? "/beforeunload.html" 543 ? "/beforeunload.html"
546 : "/beforeunload_slow.html"))); 544 : "/beforeunload_slow.html")));
547 } 545 }
548 // Disable the hang monitor in the tab that is not expected to hang, so that 546 // Disable the hang monitor in the tab that is not expected to hang, so that
549 // the dialog is guaranteed to show. 547 // the dialog is guaranteed to show.
550 DisableHangMonitor( 548 PrepareForDialog(
551 browsers_[0]->tab_strip_model()->GetWebContentsAt(kResposiveTabIndex)); 549 browsers_[0]->tab_strip_model()->GetWebContentsAt(kResposiveTabIndex));
552 550
553 RepeatedNotificationObserver cancel_observer( 551 RepeatedNotificationObserver cancel_observer(
554 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); 552 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1);
555 chrome::CloseAllBrowsersAndQuit(); 553 chrome::CloseAllBrowsersAndQuit();
556 ASSERT_NO_FATAL_FAILURE(CancelClose()); 554 ASSERT_NO_FATAL_FAILURE(CancelClose());
557 cancel_observer.Wait(); 555 cancel_observer.Wait();
558 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); 556 EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
559 557
560 // All tabs should still be open. 558 // All tabs should still be open.
(...skipping 28 matching lines...) Expand all
589 if (i) 587 if (i)
590 browsers_.push_back(CreateBrowser(browser()->profile())); 588 browsers_.push_back(CreateBrowser(browser()->profile()));
591 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 589 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
592 browsers_[i], 590 browsers_[i],
593 embedded_test_server()->GetURL((i == kResposiveBrowserIndex) 591 embedded_test_server()->GetURL((i == kResposiveBrowserIndex)
594 ? "/beforeunload.html" 592 ? "/beforeunload.html"
595 : "/beforeunload_slow.html"))); 593 : "/beforeunload_slow.html")));
596 } 594 }
597 // Disable the hang monitor in the tab that is not expected to hang, so that 595 // Disable the hang monitor in the tab that is not expected to hang, so that
598 // the dialog is guaranteed to show. 596 // the dialog is guaranteed to show.
599 DisableHangMonitor(browsers_[kResposiveBrowserIndex]); 597 PrepareForDialog(browsers_[kResposiveBrowserIndex]);
600 598
601 RepeatedNotificationObserver cancel_observer( 599 RepeatedNotificationObserver cancel_observer(
602 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, kResposiveBrowserIndex + 1); 600 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, kResposiveBrowserIndex + 1);
603 chrome::CloseAllBrowsersAndQuit(); 601 chrome::CloseAllBrowsersAndQuit();
604 ASSERT_NO_FATAL_FAILURE(CancelClose()); 602 ASSERT_NO_FATAL_FAILURE(CancelClose());
605 cancel_observer.Wait(); 603 cancel_observer.Wait();
606 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); 604 EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
607 605
608 // All windows should still be open. 606 // All windows should still be open.
609 for (int i = 0; i < kBrowserCount; i++) 607 for (int i = 0; i < kBrowserCount; i++)
610 EXPECT_EQ(1, browsers_[i]->tab_strip_model()->count()); 608 EXPECT_EQ(1, browsers_[i]->tab_strip_model()->count());
611 609
612 // Quit, this time accepting close confirmation dialog. 610 // Quit, this time accepting close confirmation dialog.
613 RepeatedNotificationObserver close_observer( 611 RepeatedNotificationObserver close_observer(
614 chrome::NOTIFICATION_BROWSER_CLOSED, kBrowserCount); 612 chrome::NOTIFICATION_BROWSER_CLOSED, kBrowserCount);
615 chrome::CloseAllBrowsersAndQuit(); 613 chrome::CloseAllBrowsersAndQuit();
616 ASSERT_NO_FATAL_FAILURE(AcceptClose()); 614 ASSERT_NO_FATAL_FAILURE(AcceptClose());
617 close_observer.Wait(); 615 close_observer.Wait();
618 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); 616 EXPECT_TRUE(browser_shutdown::IsTryingToQuit());
619 EXPECT_TRUE(BrowserList::GetInstance()->empty()); 617 EXPECT_TRUE(BrowserList::GetInstance()->empty());
620 } 618 }
621 619
622 // Test that a window created during shutdown is closed. 620 // Test that a window created during shutdown is closed.
623 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, 621 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest,
624 TestAddWindowDuringShutdown) { 622 TestAddWindowDuringShutdown) {
625 ASSERT_TRUE(embedded_test_server()->Start()); 623 ASSERT_TRUE(embedded_test_server()->Start());
626 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 624 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
627 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); 625 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html")));
628 DisableHangMonitor(browsers_[0]); 626 PrepareForDialog(browsers_[0]);
629 627
630 RepeatedNotificationObserver close_observer( 628 RepeatedNotificationObserver close_observer(
631 chrome::NOTIFICATION_BROWSER_CLOSED, 2); 629 chrome::NOTIFICATION_BROWSER_CLOSED, 2);
632 chrome::CloseAllBrowsersAndQuit(); 630 chrome::CloseAllBrowsersAndQuit();
633 browsers_.push_back(CreateBrowser(browser()->profile())); 631 browsers_.push_back(CreateBrowser(browser()->profile()));
634 ASSERT_NO_FATAL_FAILURE(AcceptClose()); 632 ASSERT_NO_FATAL_FAILURE(AcceptClose());
635 close_observer.Wait(); 633 close_observer.Wait();
636 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); 634 EXPECT_TRUE(browser_shutdown::IsTryingToQuit());
637 EXPECT_TRUE(BrowserList::GetInstance()->empty()); 635 EXPECT_TRUE(BrowserList::GetInstance()->empty());
638 } 636 }
639 637
640 // Test that a window created during shutdown with a beforeunload handler can 638 // Test that a window created during shutdown with a beforeunload handler can
641 // cancel the shutdown. 639 // cancel the shutdown.
642 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, 640 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest,
643 TestAddWindowWithBeforeUnloadDuringShutdown) { 641 TestAddWindowWithBeforeUnloadDuringShutdown) {
644 ASSERT_TRUE(embedded_test_server()->Start()); 642 ASSERT_TRUE(embedded_test_server()->Start());
645 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 643 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
646 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); 644 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html")));
647 DisableHangMonitor(browsers_[0]); 645 PrepareForDialog(browsers_[0]);
648 646
649 RepeatedNotificationObserver cancel_observer( 647 RepeatedNotificationObserver cancel_observer(
650 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2); 648 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2);
651 chrome::CloseAllBrowsersAndQuit(); 649 chrome::CloseAllBrowsersAndQuit();
652 browsers_.push_back(CreateBrowser(browser()->profile())); 650 browsers_.push_back(CreateBrowser(browser()->profile()));
653 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 651 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
654 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); 652 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html")));
655 DisableHangMonitor(browsers_[1]); 653 PrepareForDialog(browsers_[1]);
656 ASSERT_NO_FATAL_FAILURE(AcceptClose()); 654 ASSERT_NO_FATAL_FAILURE(AcceptClose());
657 ASSERT_NO_FATAL_FAILURE(CancelClose()); 655 ASSERT_NO_FATAL_FAILURE(CancelClose());
658 cancel_observer.Wait(); 656 cancel_observer.Wait();
659 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); 657 EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
660 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); 658 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count());
661 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); 659 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count());
662 660
663 // Allow shutdown for both beforeunload dialogs. 661 // Allow shutdown for both beforeunload dialogs.
664 RepeatedNotificationObserver close_observer( 662 RepeatedNotificationObserver close_observer(
665 chrome::NOTIFICATION_BROWSER_CLOSED, 2); 663 chrome::NOTIFICATION_BROWSER_CLOSED, 2);
666 chrome::CloseAllBrowsersAndQuit(); 664 chrome::CloseAllBrowsersAndQuit();
667 ASSERT_NO_FATAL_FAILURE(AcceptClose()); 665 ASSERT_NO_FATAL_FAILURE(AcceptClose());
668 ASSERT_NO_FATAL_FAILURE(AcceptClose()); 666 ASSERT_NO_FATAL_FAILURE(AcceptClose());
669 close_observer.Wait(); 667 close_observer.Wait();
670 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); 668 EXPECT_TRUE(browser_shutdown::IsTryingToQuit());
671 EXPECT_TRUE(BrowserList::GetInstance()->empty()); 669 EXPECT_TRUE(BrowserList::GetInstance()->empty());
672 } 670 }
673 671
674 // Test that tabs added during shutdown are closed. 672 // Test that tabs added during shutdown are closed.
675 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, 673 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest,
676 TestAddTabDuringShutdown) { 674 TestAddTabDuringShutdown) {
677 ASSERT_TRUE(embedded_test_server()->Start()); 675 ASSERT_TRUE(embedded_test_server()->Start());
678 browsers_.push_back(CreateBrowser(browser()->profile())); 676 browsers_.push_back(CreateBrowser(browser()->profile()));
679 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 677 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
680 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); 678 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html")));
681 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 679 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
682 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); 680 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html")));
683 DisableHangMonitor(browsers_[0]); 681 PrepareForDialog(browsers_[0]);
684 DisableHangMonitor(browsers_[1]); 682 PrepareForDialog(browsers_[1]);
685 683
686 RepeatedNotificationObserver close_observer( 684 RepeatedNotificationObserver close_observer(
687 chrome::NOTIFICATION_BROWSER_CLOSED, 2); 685 chrome::NOTIFICATION_BROWSER_CLOSED, 2);
688 chrome::CloseAllBrowsersAndQuit(); 686 chrome::CloseAllBrowsersAndQuit();
689 ASSERT_NO_FATAL_FAILURE(AcceptClose()); 687 ASSERT_NO_FATAL_FAILURE(AcceptClose());
690 AddBlankTabAndShow(browsers_[0]); 688 AddBlankTabAndShow(browsers_[0]);
691 AddBlankTabAndShow(browsers_[1]); 689 AddBlankTabAndShow(browsers_[1]);
692 ASSERT_NO_FATAL_FAILURE(AcceptClose()); 690 ASSERT_NO_FATAL_FAILURE(AcceptClose());
693 close_observer.Wait(); 691 close_observer.Wait();
694 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); 692 EXPECT_TRUE(browser_shutdown::IsTryingToQuit());
695 EXPECT_TRUE(BrowserList::GetInstance()->empty()); 693 EXPECT_TRUE(BrowserList::GetInstance()->empty());
696 } 694 }
697 695
698 // Test that tabs created during shutdown with beforeunload handlers can cancel 696 // Test that tabs created during shutdown with beforeunload handlers can cancel
699 // the shutdown. 697 // the shutdown.
700 698
701 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, 699 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest,
702 TestAddTabWithBeforeUnloadDuringShutdown) { 700 TestAddTabWithBeforeUnloadDuringShutdown) {
703 ASSERT_TRUE(embedded_test_server()->Start()); 701 ASSERT_TRUE(embedded_test_server()->Start());
704 browsers_.push_back(CreateBrowser(browser()->profile())); 702 browsers_.push_back(CreateBrowser(browser()->profile()));
705 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 703 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
706 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); 704 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html")));
707 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 705 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
708 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); 706 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html")));
709 DisableHangMonitor(browsers_[0]); 707 PrepareForDialog(browsers_[0]);
710 DisableHangMonitor(browsers_[1]); 708 PrepareForDialog(browsers_[1]);
711 709
712 RepeatedNotificationObserver cancel_observer( 710 RepeatedNotificationObserver cancel_observer(
713 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2); 711 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2);
714 chrome::CloseAllBrowsersAndQuit(); 712 chrome::CloseAllBrowsersAndQuit();
715 ASSERT_NO_FATAL_FAILURE(AcceptClose()); 713 ASSERT_NO_FATAL_FAILURE(AcceptClose());
716 AddBlankTabAndShow(browsers_[0]); 714 AddBlankTabAndShow(browsers_[0]);
717 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 715 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
718 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); 716 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html")));
719 AddBlankTabAndShow(browsers_[1]); 717 AddBlankTabAndShow(browsers_[1]);
720 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 718 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
721 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); 719 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html")));
722 DisableHangMonitor(browsers_[0]); 720 PrepareForDialog(browsers_[0]);
723 DisableHangMonitor(browsers_[1]); 721 PrepareForDialog(browsers_[1]);
724 ASSERT_NO_FATAL_FAILURE(AcceptClose()); 722 ASSERT_NO_FATAL_FAILURE(AcceptClose());
725 ASSERT_NO_FATAL_FAILURE(CancelClose()); 723 ASSERT_NO_FATAL_FAILURE(CancelClose());
726 cancel_observer.Wait(); 724 cancel_observer.Wait();
727 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); 725 EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
728 EXPECT_EQ(2, browsers_[0]->tab_strip_model()->count()); 726 EXPECT_EQ(2, browsers_[0]->tab_strip_model()->count());
729 EXPECT_EQ(2, browsers_[1]->tab_strip_model()->count()); 727 EXPECT_EQ(2, browsers_[1]->tab_strip_model()->count());
730 728
731 RepeatedNotificationObserver close_observer( 729 RepeatedNotificationObserver close_observer(
732 chrome::NOTIFICATION_BROWSER_CLOSED, 2); 730 chrome::NOTIFICATION_BROWSER_CLOSED, 2);
733 chrome::CloseAllBrowsersAndQuit(); 731 chrome::CloseAllBrowsersAndQuit();
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
780 ui_test_utils::NavigateToURLWithDisposition( 778 ui_test_utils::NavigateToURLWithDisposition(
781 browser2, embedded_test_server()->GetURL("/title2.html"), 779 browser2, embedded_test_server()->GetURL("/title2.html"),
782 WindowOpenDisposition::NEW_FOREGROUND_TAB, 780 WindowOpenDisposition::NEW_FOREGROUND_TAB,
783 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); 781 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
784 content::WaitForLoadStop(browser2->tab_strip_model()->GetWebContentsAt(1)); 782 content::WaitForLoadStop(browser2->tab_strip_model()->GetWebContentsAt(1));
785 EXPECT_FALSE(browser2->tab_strip_model() 783 EXPECT_FALSE(browser2->tab_strip_model()
786 ->GetWebContentsAt(1) 784 ->GetWebContentsAt(1)
787 ->NeedToFireBeforeUnload()); 785 ->NeedToFireBeforeUnload());
788 EXPECT_EQ(2, browser2->tab_strip_model()->count()); 786 EXPECT_EQ(2, browser2->tab_strip_model()->count());
789 787
790 DisableHangMonitor(browser2); 788 PrepareForDialog(browser2);
791 789
792 // The test. 790 // The test.
793 791
794 TabRestoreServiceChangesObserver restore_observer(browser2->profile()); 792 TabRestoreServiceChangesObserver restore_observer(browser2->profile());
795 content::WindowedNotificationObserver observer( 793 content::WindowedNotificationObserver observer(
796 chrome::NOTIFICATION_BROWSER_CLOSED, 794 chrome::NOTIFICATION_BROWSER_CLOSED,
797 content::NotificationService::AllSources()); 795 content::NotificationService::AllSources());
798 chrome::CloseWindow(browser2); 796 chrome::CloseWindow(browser2);
799 // Just to be sure CloseWindow doesn't have asynchronous tasks 797 // Just to be sure CloseWindow doesn't have asynchronous tasks
800 // that could have an impact. 798 // that could have an impact.
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
844 browser2->tab_strip_model()->GetWebContentsAt(0)->GetURL()); 842 browser2->tab_strip_model()->GetWebContentsAt(0)->GetURL());
845 EXPECT_EQ(embedded_test_server()->GetURL("/title2.html"), 843 EXPECT_EQ(embedded_test_server()->GetURL("/title2.html"),
846 browser2->tab_strip_model()->GetWebContentsAt(1)->GetURL()); 844 browser2->tab_strip_model()->GetWebContentsAt(1)->GetURL());
847 } 845 }
848 846
849 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, 847 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest,
850 TestCloseTabDuringShutdown) { 848 TestCloseTabDuringShutdown) {
851 ASSERT_TRUE(embedded_test_server()->Start()); 849 ASSERT_TRUE(embedded_test_server()->Start());
852 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 850 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
853 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); 851 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html")));
854 DisableHangMonitor(browsers_[0]); 852 PrepareForDialog(browsers_[0]);
855 853
856 RepeatedNotificationObserver cancel_observer( 854 RepeatedNotificationObserver cancel_observer(
857 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); 855 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1);
858 chrome::CloseAllBrowsersAndQuit(); 856 chrome::CloseAllBrowsersAndQuit();
859 857
860 browsers_.push_back(CreateBrowser(browser()->profile())); 858 browsers_.push_back(CreateBrowser(browser()->profile()));
861 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 859 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
862 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); 860 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html")));
863 DisableHangMonitor(browsers_[1]); 861 PrepareForDialog(browsers_[1]);
864 browsers_[1]->tab_strip_model()->CloseAllTabs(); 862 browsers_[1]->tab_strip_model()->CloseAllTabs();
865 ASSERT_NO_FATAL_FAILURE(CancelClose()); 863 ASSERT_NO_FATAL_FAILURE(CancelClose());
866 ASSERT_NO_FATAL_FAILURE(CancelClose()); 864 ASSERT_NO_FATAL_FAILURE(CancelClose());
867 cancel_observer.Wait(); 865 cancel_observer.Wait();
868 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); 866 EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
869 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); 867 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count());
870 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); 868 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count());
871 869
872 RepeatedNotificationObserver close_observer( 870 RepeatedNotificationObserver close_observer(
873 chrome::NOTIFICATION_BROWSER_CLOSED, 2); 871 chrome::NOTIFICATION_BROWSER_CLOSED, 2);
874 chrome::CloseAllBrowsersAndQuit(); 872 chrome::CloseAllBrowsersAndQuit();
875 browsers_[1]->tab_strip_model()->CloseAllTabs(); 873 browsers_[1]->tab_strip_model()->CloseAllTabs();
876 ASSERT_NO_FATAL_FAILURE(AcceptClose()); 874 ASSERT_NO_FATAL_FAILURE(AcceptClose());
877 ASSERT_NO_FATAL_FAILURE(AcceptClose()); 875 ASSERT_NO_FATAL_FAILURE(AcceptClose());
878 876
879 close_observer.Wait(); 877 close_observer.Wait();
880 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); 878 EXPECT_TRUE(browser_shutdown::IsTryingToQuit());
881 EXPECT_TRUE(BrowserList::GetInstance()->empty()); 879 EXPECT_TRUE(BrowserList::GetInstance()->empty());
882 } 880 }
883 881
884 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, 882 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest,
885 TestOpenAndCloseWindowDuringShutdown) { 883 TestOpenAndCloseWindowDuringShutdown) {
886 ASSERT_TRUE(embedded_test_server()->Start()); 884 ASSERT_TRUE(embedded_test_server()->Start());
887 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 885 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
888 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); 886 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html")));
889 DisableHangMonitor(browsers_[0]); 887 PrepareForDialog(browsers_[0]);
890 888
891 RepeatedNotificationObserver cancel_observer( 889 RepeatedNotificationObserver cancel_observer(
892 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2); 890 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2);
893 chrome::CloseAllBrowsersAndQuit(); 891 chrome::CloseAllBrowsersAndQuit();
894 892
895 browsers_.push_back(CreateBrowser(browser()->profile())); 893 browsers_.push_back(CreateBrowser(browser()->profile()));
896 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 894 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
897 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); 895 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html")));
898 DisableHangMonitor(browsers_[1]); 896 PrepareForDialog(browsers_[1]);
899 ASSERT_FALSE(browsers_[1]->ShouldCloseWindow()); 897 ASSERT_FALSE(browsers_[1]->ShouldCloseWindow());
900 ASSERT_NO_FATAL_FAILURE(CancelClose()); 898 ASSERT_NO_FATAL_FAILURE(CancelClose());
901 ASSERT_NO_FATAL_FAILURE(CancelClose()); 899 ASSERT_NO_FATAL_FAILURE(CancelClose());
902 cancel_observer.Wait(); 900 cancel_observer.Wait();
903 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); 901 EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
904 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); 902 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count());
905 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); 903 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count());
906 904
907 RepeatedNotificationObserver close_observer( 905 RepeatedNotificationObserver close_observer(
908 chrome::NOTIFICATION_BROWSER_CLOSED, 2); 906 chrome::NOTIFICATION_BROWSER_CLOSED, 2);
909 chrome::CloseAllBrowsersAndQuit(); 907 chrome::CloseAllBrowsersAndQuit();
910 ASSERT_FALSE(browsers_[1]->ShouldCloseWindow()); 908 ASSERT_FALSE(browsers_[1]->ShouldCloseWindow());
911 ASSERT_NO_FATAL_FAILURE(AcceptClose()); 909 ASSERT_NO_FATAL_FAILURE(AcceptClose());
912 ASSERT_NO_FATAL_FAILURE(AcceptClose()); 910 ASSERT_NO_FATAL_FAILURE(AcceptClose());
913 911
914 close_observer.Wait(); 912 close_observer.Wait();
915 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); 913 EXPECT_TRUE(browser_shutdown::IsTryingToQuit());
916 EXPECT_TRUE(BrowserList::GetInstance()->empty()); 914 EXPECT_TRUE(BrowserList::GetInstance()->empty());
917 } 915 }
918 916
919 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, 917 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest,
920 TestCloseWindowDuringShutdown) { 918 TestCloseWindowDuringShutdown) {
921 ASSERT_TRUE(embedded_test_server()->Start()); 919 ASSERT_TRUE(embedded_test_server()->Start());
922 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 920 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
923 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); 921 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html")));
924 browsers_.push_back(CreateBrowser(browser()->profile())); 922 browsers_.push_back(CreateBrowser(browser()->profile()));
925 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 923 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
926 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); 924 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html")));
927 DisableHangMonitor(browsers_[0]); 925 PrepareForDialog(browsers_[0]);
928 DisableHangMonitor(browsers_[1]); 926 PrepareForDialog(browsers_[1]);
929 927
930 RepeatedNotificationObserver cancel_observer( 928 RepeatedNotificationObserver cancel_observer(
931 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); 929 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1);
932 chrome::CloseAllBrowsersAndQuit(); 930 chrome::CloseAllBrowsersAndQuit();
933 931
934 ASSERT_FALSE(browsers_[0]->ShouldCloseWindow()); 932 ASSERT_FALSE(browsers_[0]->ShouldCloseWindow());
935 ASSERT_NO_FATAL_FAILURE(CancelClose()); 933 ASSERT_NO_FATAL_FAILURE(CancelClose());
936 cancel_observer.Wait(); 934 cancel_observer.Wait();
937 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); 935 EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
938 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); 936 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count());
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after
1217 } 1215 }
1218 1216
1219 // Test shutdown with downloads in progress and beforeunload handlers. 1217 // Test shutdown with downloads in progress and beforeunload handlers.
1220 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerWithDownloadsBrowserTest, 1218 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerWithDownloadsBrowserTest,
1221 TestBeforeUnloadAndDownloads) { 1219 TestBeforeUnloadAndDownloads) {
1222 ASSERT_TRUE(embedded_test_server()->Start()); 1220 ASSERT_TRUE(embedded_test_server()->Start());
1223 SetDownloadPathForProfile(browser()->profile()); 1221 SetDownloadPathForProfile(browser()->profile());
1224 ASSERT_NO_FATAL_FAILURE(CreateStalledDownload(browser())); 1222 ASSERT_NO_FATAL_FAILURE(CreateStalledDownload(browser()));
1225 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 1223 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
1226 browser(), embedded_test_server()->GetURL("/beforeunload.html"))); 1224 browser(), embedded_test_server()->GetURL("/beforeunload.html")));
1227 DisableHangMonitor(browser()); 1225 PrepareForDialog(browser());
1228 1226
1229 content::WindowedNotificationObserver cancel_observer( 1227 content::WindowedNotificationObserver cancel_observer(
1230 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1228 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED,
1231 content::NotificationService::AllSources()); 1229 content::NotificationService::AllSources());
1232 TestBrowserCloseManager::AttemptClose( 1230 TestBrowserCloseManager::AttemptClose(
1233 TestBrowserCloseManager::USER_CHOICE_USER_CANCELS_CLOSE); 1231 TestBrowserCloseManager::USER_CHOICE_USER_CANCELS_CLOSE);
1234 ASSERT_NO_FATAL_FAILURE(AcceptClose()); 1232 ASSERT_NO_FATAL_FAILURE(AcceptClose());
1235 cancel_observer.Wait(); 1233 cancel_observer.Wait();
1236 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); 1234 EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
1237 1235
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
1340 1338
1341 chrome::CloseAllBrowsers(); 1339 chrome::CloseAllBrowsers();
1342 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); 1340 EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
1343 EXPECT_TRUE(BrowserList::GetInstance()->empty()); 1341 EXPECT_TRUE(BrowserList::GetInstance()->empty());
1344 EXPECT_TRUE(IsBackgroundModeSuspended()); 1342 EXPECT_TRUE(IsBackgroundModeSuspended());
1345 } 1343 }
1346 1344
1347 INSTANTIATE_TEST_CASE_P(BrowserCloseManagerWithBackgroundModeBrowserTest, 1345 INSTANTIATE_TEST_CASE_P(BrowserCloseManagerWithBackgroundModeBrowserTest,
1348 BrowserCloseManagerWithBackgroundModeBrowserTest, 1346 BrowserCloseManagerWithBackgroundModeBrowserTest,
1349 testing::Bool()); 1347 testing::Bool());
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698