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

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

Issue 2005663002: Make unload tests stable. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 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 24 matching lines...) Expand all
35 #include "chrome/common/chrome_switches.h" 35 #include "chrome/common/chrome_switches.h"
36 #include "chrome/common/url_constants.h" 36 #include "chrome/common/url_constants.h"
37 #include "chrome/test/base/in_process_browser_test.h" 37 #include "chrome/test/base/in_process_browser_test.h"
38 #include "chrome/test/base/ui_test_utils.h" 38 #include "chrome/test/base/ui_test_utils.h"
39 #include "components/app_modal/javascript_app_modal_dialog.h" 39 #include "components/app_modal/javascript_app_modal_dialog.h"
40 #include "components/app_modal/native_app_modal_dialog.h" 40 #include "components/app_modal/native_app_modal_dialog.h"
41 #include "content/public/browser/browser_context.h" 41 #include "content/public/browser/browser_context.h"
42 #include "content/public/browser/download_item.h" 42 #include "content/public/browser/download_item.h"
43 #include "content/public/browser/download_manager.h" 43 #include "content/public/browser/download_manager.h"
44 #include "content/public/browser/notification_service.h" 44 #include "content/public/browser/notification_service.h"
45 #include "content/public/browser/render_view_host.h"
46 #include "content/public/browser/render_widget_host.h"
45 #include "content/public/browser/web_contents.h" 47 #include "content/public/browser/web_contents.h"
46 #include "content/public/test/download_test_observer.h" 48 #include "content/public/test/download_test_observer.h"
47 #include "content/public/test/test_navigation_observer.h" 49 #include "content/public/test/test_navigation_observer.h"
48 #include "net/test/embedded_test_server/embedded_test_server.h" 50 #include "net/test/embedded_test_server/embedded_test_server.h"
49 #include "net/test/url_request/url_request_mock_http_job.h" 51 #include "net/test/url_request/url_request_mock_http_job.h"
50 #include "net/test/url_request/url_request_slow_download_job.h" 52 #include "net/test/url_request/url_request_slow_download_job.h"
51 53
52 #if defined(OS_CHROMEOS) 54 #if defined(OS_CHROMEOS)
53 #include "chromeos/chromeos_switches.h" 55 #include "chromeos/chromeos_switches.h"
54 #endif 56 #endif
55 57
56 namespace { 58 namespace {
57 59
58 app_modal::NativeAppModalDialog* GetNextDialog() { 60 app_modal::NativeAppModalDialog* GetNextDialog() {
59 app_modal::AppModalDialog* dialog = ui_test_utils::WaitForAppModalDialog(); 61 app_modal::AppModalDialog* dialog = ui_test_utils::WaitForAppModalDialog();
60 EXPECT_TRUE(dialog->IsJavaScriptModalDialog()); 62 EXPECT_TRUE(dialog->IsJavaScriptModalDialog());
61 app_modal::JavaScriptAppModalDialog* js_dialog = 63 app_modal::JavaScriptAppModalDialog* js_dialog =
62 static_cast<app_modal::JavaScriptAppModalDialog*>(dialog); 64 static_cast<app_modal::JavaScriptAppModalDialog*>(dialog);
63 CHECK(js_dialog->native_dialog()); 65 CHECK(js_dialog->native_dialog());
64 return js_dialog->native_dialog(); 66 return js_dialog->native_dialog();
65 } 67 }
66 68
67 void AcceptClose() { 69 void AcceptClose() {
Charlie Reis 2016/05/23 17:03:29 Please add comments to these saying that they requ
68 GetNextDialog()->AcceptAppModalDialog(); 70 GetNextDialog()->AcceptAppModalDialog();
69 } 71 }
70 72
71 void CancelClose() { 73 void CancelClose() {
72 GetNextDialog()->CancelAppModalDialog(); 74 GetNextDialog()->CancelAppModalDialog();
73 } 75 }
74 76
75 class RepeatedNotificationObserver : public content::NotificationObserver { 77 class RepeatedNotificationObserver : public content::NotificationObserver {
76 public: 78 public:
77 explicit RepeatedNotificationObserver(int type, int count) 79 explicit RepeatedNotificationObserver(int type, int count)
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
242 browser, 244 browser,
243 GURL(net::URLRequestSlowDownloadJob::kKnownSizeUrl), 245 GURL(net::URLRequestSlowDownloadJob::kKnownSizeUrl),
244 NEW_BACKGROUND_TAB, 246 NEW_BACKGROUND_TAB,
245 ui_test_utils::BROWSER_TEST_NONE); 247 ui_test_utils::BROWSER_TEST_NONE);
246 observer.WaitForFinished(); 248 observer.WaitForFinished();
247 EXPECT_EQ( 249 EXPECT_EQ(
248 1UL, 250 1UL,
249 observer.NumDownloadsSeenInState(content::DownloadItem::IN_PROGRESS)); 251 observer.NumDownloadsSeenInState(content::DownloadItem::IN_PROGRESS));
250 } 252 }
251 253
254 // Makes sure that hang monitor will not trigger RendererUnresponsive
255 // for that web content.
Charlie Reis 2016/05/23 17:03:30 Please mention that this must be called before any
256 void DisableHangMonitor(content::WebContents* web_contents) {
257 web_contents->GetRenderViewHost()->GetWidget()->DisableHangMonitorForTest();
258 }
259
260 void DisableHangMonitor(Browser* browser) {
261 for (int i = 0; i < browser->tab_strip_model()->count(); i++)
262 DisableHangMonitor(browser->tab_strip_model()->GetWebContentsAt(i));
263 }
264
252 std::vector<Browser*> browsers_; 265 std::vector<Browser*> browsers_;
253 }; 266 };
254 267
255 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, TestSingleTabShutdown) { 268 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, TestSingleTabShutdown) {
256 ASSERT_TRUE(embedded_test_server()->Start()); 269 ASSERT_TRUE(embedded_test_server()->Start());
257 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 270 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
258 browser(), embedded_test_server()->GetURL("/beforeunload.html"))); 271 browser(), embedded_test_server()->GetURL("/beforeunload.html")));
272 DisableHangMonitor(browser());
273
259 RepeatedNotificationObserver cancel_observer( 274 RepeatedNotificationObserver cancel_observer(
260 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); 275 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1);
261 chrome::CloseAllBrowsersAndQuit(); 276 chrome::CloseAllBrowsersAndQuit();
262 ASSERT_NO_FATAL_FAILURE(CancelClose()); 277 ASSERT_NO_FATAL_FAILURE(CancelClose());
263 cancel_observer.Wait(); 278 cancel_observer.Wait();
264 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); 279 EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
265 EXPECT_EQ(1, browser()->tab_strip_model()->count()); 280 EXPECT_EQ(1, browser()->tab_strip_model()->count());
266 281
267 RepeatedNotificationObserver close_observer( 282 RepeatedNotificationObserver close_observer(
268 chrome::NOTIFICATION_BROWSER_CLOSED, 1); 283 chrome::NOTIFICATION_BROWSER_CLOSED, 1);
269 chrome::CloseAllBrowsersAndQuit(); 284 chrome::CloseAllBrowsersAndQuit();
270 ASSERT_NO_FATAL_FAILURE(AcceptClose()); 285 ASSERT_NO_FATAL_FAILURE(AcceptClose());
271 close_observer.Wait(); 286 close_observer.Wait();
272 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); 287 EXPECT_TRUE(browser_shutdown::IsTryingToQuit());
273 EXPECT_TRUE(BrowserList::GetInstance()->empty()); 288 EXPECT_TRUE(BrowserList::GetInstance()->empty());
274 } 289 }
275 290
276 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, 291 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest,
277 TestShutdownMoreThanOnce) { 292 TestShutdownMoreThanOnce) {
278 ASSERT_TRUE(embedded_test_server()->Start()); 293 ASSERT_TRUE(embedded_test_server()->Start());
279 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 294 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
280 browser(), embedded_test_server()->GetURL("/beforeunload.html"))); 295 browser(), embedded_test_server()->GetURL("/beforeunload.html")));
296 DisableHangMonitor(browser());
297
281 RepeatedNotificationObserver cancel_observer( 298 RepeatedNotificationObserver cancel_observer(
282 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); 299 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1);
283 chrome::CloseAllBrowsersAndQuit(); 300 chrome::CloseAllBrowsersAndQuit();
284 chrome::CloseAllBrowsersAndQuit(); 301 chrome::CloseAllBrowsersAndQuit();
285 ASSERT_NO_FATAL_FAILURE(CancelClose()); 302 ASSERT_NO_FATAL_FAILURE(CancelClose());
286 cancel_observer.Wait(); 303 cancel_observer.Wait();
287 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); 304 EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
288 EXPECT_EQ(1, browser()->tab_strip_model()->count()); 305 EXPECT_EQ(1, browser()->tab_strip_model()->count());
289 306
290 RepeatedNotificationObserver close_observer( 307 RepeatedNotificationObserver close_observer(
291 chrome::NOTIFICATION_BROWSER_CLOSED, 1); 308 chrome::NOTIFICATION_BROWSER_CLOSED, 1);
292 chrome::CloseAllBrowsersAndQuit(); 309 chrome::CloseAllBrowsersAndQuit();
293 chrome::CloseAllBrowsersAndQuit(); 310 chrome::CloseAllBrowsersAndQuit();
294 ASSERT_NO_FATAL_FAILURE(AcceptClose()); 311 ASSERT_NO_FATAL_FAILURE(AcceptClose());
295 close_observer.Wait(); 312 close_observer.Wait();
296 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); 313 EXPECT_TRUE(browser_shutdown::IsTryingToQuit());
297 EXPECT_TRUE(BrowserList::GetInstance()->empty()); 314 EXPECT_TRUE(BrowserList::GetInstance()->empty());
298 } 315 }
299 316
300 // Test is flaky on Mac. http://crbug.com/517687
301 #if defined(OS_MACOSX)
302 #define MAYBE_PRE_TestSessionRestore DISABLED_PRE_TestSessionRestore
303 #else
304 #define MAYBE_PRE_TestSessionRestore DISABLED_PRE_TestSessionRestore
305 #endif
306 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, 317 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest,
307 MAYBE_PRE_TestSessionRestore) { 318 PRE_TestSessionRestore) {
308 ASSERT_TRUE(embedded_test_server()->Start()); 319 ASSERT_TRUE(embedded_test_server()->Start());
309 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 320 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
310 browser(), embedded_test_server()->GetURL("/beforeunload.html"))); 321 browser(), embedded_test_server()->GetURL("/beforeunload.html")));
311 AddBlankTabAndShow(browser()); 322 AddBlankTabAndShow(browser());
312 ASSERT_NO_FATAL_FAILURE( 323 ASSERT_NO_FATAL_FAILURE(
313 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIAboutURL))); 324 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIAboutURL)));
325 DisableHangMonitor(browser());
326
314 RepeatedNotificationObserver cancel_observer( 327 RepeatedNotificationObserver cancel_observer(
315 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); 328 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1);
316 chrome::CloseAllBrowsersAndQuit(); 329 chrome::CloseAllBrowsersAndQuit();
317 ASSERT_NO_FATAL_FAILURE(CancelClose()); 330 ASSERT_NO_FATAL_FAILURE(CancelClose());
318 cancel_observer.Wait(); 331 cancel_observer.Wait();
319 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); 332 EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
320 333
321 browser()->tab_strip_model() 334 browser()->tab_strip_model()
322 ->CloseWebContentsAt(1, TabStripModel::CLOSE_USER_GESTURE); 335 ->CloseWebContentsAt(1, TabStripModel::CLOSE_USER_GESTURE);
323 content::TestNavigationObserver navigation_observer( 336 content::TestNavigationObserver navigation_observer(
324 browser()->tab_strip_model()->GetActiveWebContents(), 1); 337 browser()->tab_strip_model()->GetActiveWebContents(), 1);
325 ASSERT_NO_FATAL_FAILURE( 338 ASSERT_NO_FATAL_FAILURE(
326 NavigateToURLWithDisposition(browser(), 339 NavigateToURLWithDisposition(browser(),
327 GURL(chrome::kChromeUIVersionURL), 340 GURL(chrome::kChromeUIVersionURL),
328 CURRENT_TAB, 341 CURRENT_TAB,
329 ui_test_utils::BROWSER_TEST_NONE)); 342 ui_test_utils::BROWSER_TEST_NONE));
330 ASSERT_NO_FATAL_FAILURE(AcceptClose()); 343 ASSERT_NO_FATAL_FAILURE(AcceptClose());
331 navigation_observer.Wait(); 344 navigation_observer.Wait();
332 345
333 RepeatedNotificationObserver close_observer( 346 RepeatedNotificationObserver close_observer(
334 chrome::NOTIFICATION_BROWSER_CLOSED, 1); 347 chrome::NOTIFICATION_BROWSER_CLOSED, 1);
335 chrome::CloseAllBrowsersAndQuit(); 348 chrome::CloseAllBrowsersAndQuit();
336 close_observer.Wait(); 349 close_observer.Wait();
337 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); 350 EXPECT_TRUE(browser_shutdown::IsTryingToQuit());
338 EXPECT_TRUE(BrowserList::GetInstance()->empty()); 351 EXPECT_TRUE(BrowserList::GetInstance()->empty());
339 } 352 }
340 353
341 // Test that the tab closed after the aborted shutdown attempt is not re-opened 354 // Test that the tab closed after the aborted shutdown attempt is not re-opened
342 // when restoring the session. 355 // when restoring the session.
343 // Test is flaky on Mac. http://crbug.com/517687
344 #if defined(OS_MACOSX)
345 #define MAYBE_TestSessionRestore DISABLED_TestSessionRestore
346 #else
347 #define MAYBE_TestSessionRestore DISABLED_TestSessionRestore
348 #endif
349 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, 356 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest,
350 MAYBE_TestSessionRestore) { 357 TestSessionRestore) {
351 // The testing framework launches Chrome with about:blank as args. 358 // The testing framework launches Chrome with about:blank as args.
352 EXPECT_EQ(2, browser()->tab_strip_model()->count()); 359 EXPECT_EQ(2, browser()->tab_strip_model()->count());
353 EXPECT_EQ(GURL(chrome::kChromeUIVersionURL), 360 EXPECT_EQ(GURL(chrome::kChromeUIVersionURL),
354 browser()->tab_strip_model()->GetWebContentsAt(0)->GetURL()); 361 browser()->tab_strip_model()->GetWebContentsAt(0)->GetURL());
355 EXPECT_EQ(GURL("about:blank"), 362 EXPECT_EQ(GURL("about:blank"),
356 browser()->tab_strip_model()->GetWebContentsAt(1)->GetURL()); 363 browser()->tab_strip_model()->GetWebContentsAt(1)->GetURL());
357 } 364 }
358 365
359 // Test that browser windows are only closed if all browsers are ready to close 366 // Test that browser windows are only closed if all browsers are ready to close
360 // and that all beforeunload dialogs are shown again after a cancel. 367 // and that all beforeunload dialogs are shown again after a cancel.
361 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, TestMultipleWindows) { 368 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, TestMultipleWindows) {
362 ASSERT_TRUE(embedded_test_server()->Start()); 369 ASSERT_TRUE(embedded_test_server()->Start());
363 browsers_.push_back(CreateBrowser(browser()->profile())); 370 browsers_.push_back(CreateBrowser(browser()->profile()));
364 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 371 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
365 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); 372 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html")));
366 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 373 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
367 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); 374 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html")));
375 DisableHangMonitor(browsers_[0]);
376 DisableHangMonitor(browsers_[1]);
368 377
369 // Cancel shutdown on the first beforeunload event. 378 // Cancel shutdown on the first beforeunload event.
370 { 379 {
371 RepeatedNotificationObserver cancel_observer( 380 RepeatedNotificationObserver cancel_observer(
372 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); 381 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1);
373 chrome::CloseAllBrowsersAndQuit(); 382 chrome::CloseAllBrowsersAndQuit();
374 ASSERT_NO_FATAL_FAILURE(CancelClose()); 383 ASSERT_NO_FATAL_FAILURE(CancelClose());
375 cancel_observer.Wait(); 384 cancel_observer.Wait();
376 } 385 }
377 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); 386 EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
(...skipping 20 matching lines...) Expand all
398 ASSERT_NO_FATAL_FAILURE(AcceptClose()); 407 ASSERT_NO_FATAL_FAILURE(AcceptClose());
399 ASSERT_NO_FATAL_FAILURE(AcceptClose()); 408 ASSERT_NO_FATAL_FAILURE(AcceptClose());
400 close_observer.Wait(); 409 close_observer.Wait();
401 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); 410 EXPECT_TRUE(browser_shutdown::IsTryingToQuit());
402 EXPECT_TRUE(BrowserList::GetInstance()->empty()); 411 EXPECT_TRUE(BrowserList::GetInstance()->empty());
403 } 412 }
404 413
405 // Test that tabs in the same window with a beforeunload event that hangs are 414 // Test that tabs in the same window with a beforeunload event that hangs are
406 // treated the same as the user accepting the close, but do not close the tab 415 // treated the same as the user accepting the close, but do not close the tab
407 // early. 416 // early.
408 // Test is flaky on windows, disabled. See http://crbug.com/276366
409 // Test is flaky on Mac. See http://crbug.com/517687.
410 #if defined(OS_WIN) || defined(OS_MACOSX)
411 #define MAYBE_TestHangInBeforeUnloadMultipleTabs \
412 DISABLED_TestHangInBeforeUnloadMultipleTabs
413 #else
414 #define MAYBE_TestHangInBeforeUnloadMultipleTabs \
415 TestHangInBeforeUnloadMultipleTabs
416 #endif
417 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, 417 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest,
418 MAYBE_TestHangInBeforeUnloadMultipleTabs) { 418 TestHangInBeforeUnloadMultipleTabs) {
419 ASSERT_TRUE(embedded_test_server()->Start()); 419 ASSERT_TRUE(embedded_test_server()->Start());
420 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 420 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
421 browsers_[0], embedded_test_server()->GetURL("/beforeunload_hang.html"))); 421 browsers_[0], embedded_test_server()->GetURL("/beforeunload_hang.html")));
422 AddBlankTabAndShow(browsers_[0]); 422 AddBlankTabAndShow(browsers_[0]);
423 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 423 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
424 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); 424 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html")));
425 DisableHangMonitor(browsers_[0]->tab_strip_model()->GetWebContentsAt(1));
Charlie Reis 2016/05/23 17:03:30 nit: Move this line after this block of NavigateTo
425 AddBlankTabAndShow(browsers_[0]); 426 AddBlankTabAndShow(browsers_[0]);
426 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 427 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
427 browsers_[0], embedded_test_server()->GetURL("/beforeunload_hang.html"))); 428 browsers_[0], embedded_test_server()->GetURL("/beforeunload_hang.html")));
428 429
429 RepeatedNotificationObserver cancel_observer( 430 RepeatedNotificationObserver cancel_observer(
430 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); 431 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1);
431 chrome::CloseAllBrowsersAndQuit(); 432 chrome::CloseAllBrowsersAndQuit();
432 ASSERT_NO_FATAL_FAILURE(CancelClose()); 433 ASSERT_NO_FATAL_FAILURE(CancelClose());
433 cancel_observer.Wait(); 434 cancel_observer.Wait();
434 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); 435 EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
(...skipping 14 matching lines...) Expand all
449 // early. 450 // early.
450 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, 451 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest,
451 TestHangInBeforeUnloadMultipleWindows) { 452 TestHangInBeforeUnloadMultipleWindows) {
452 ASSERT_TRUE(embedded_test_server()->Start()); 453 ASSERT_TRUE(embedded_test_server()->Start());
453 browsers_.push_back(CreateBrowser(browser()->profile())); 454 browsers_.push_back(CreateBrowser(browser()->profile()));
454 browsers_.push_back(CreateBrowser(browser()->profile())); 455 browsers_.push_back(CreateBrowser(browser()->profile()));
455 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 456 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
456 browsers_[0], embedded_test_server()->GetURL("/beforeunload_hang.html"))); 457 browsers_[0], embedded_test_server()->GetURL("/beforeunload_hang.html")));
457 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 458 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
458 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); 459 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html")));
460 DisableHangMonitor(browsers_[1]);
Charlie Reis 2016/05/23 17:03:29 Same as above.
459 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 461 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
460 browsers_[2], embedded_test_server()->GetURL("/beforeunload_hang.html"))); 462 browsers_[2], embedded_test_server()->GetURL("/beforeunload_hang.html")));
461 463
462 RepeatedNotificationObserver cancel_observer( 464 RepeatedNotificationObserver cancel_observer(
463 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2); 465 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2);
464 chrome::CloseAllBrowsersAndQuit(); 466 chrome::CloseAllBrowsersAndQuit();
465 ASSERT_NO_FATAL_FAILURE(CancelClose()); 467 ASSERT_NO_FATAL_FAILURE(CancelClose());
466 cancel_observer.Wait(); 468 cancel_observer.Wait();
467 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); 469 EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
468 // All windows should still be open. 470 // All windows should still be open.
469 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); 471 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count());
470 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); 472 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count());
471 EXPECT_EQ(1, browsers_[2]->tab_strip_model()->count()); 473 EXPECT_EQ(1, browsers_[2]->tab_strip_model()->count());
472 474
473 RepeatedNotificationObserver close_observer( 475 RepeatedNotificationObserver close_observer(
474 chrome::NOTIFICATION_BROWSER_CLOSED, 3); 476 chrome::NOTIFICATION_BROWSER_CLOSED, 3);
475 chrome::CloseAllBrowsersAndQuit(); 477 chrome::CloseAllBrowsersAndQuit();
476 ASSERT_NO_FATAL_FAILURE(AcceptClose()); 478 ASSERT_NO_FATAL_FAILURE(AcceptClose());
477 close_observer.Wait(); 479 close_observer.Wait();
478 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); 480 EXPECT_TRUE(browser_shutdown::IsTryingToQuit());
479 EXPECT_TRUE(BrowserList::GetInstance()->empty()); 481 EXPECT_TRUE(BrowserList::GetInstance()->empty());
480 } 482 }
481 483
482 // Test that a window created during shutdown is closed. 484 // Test that a window created during shutdown is closed.
483 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, 485 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest,
484 TestAddWindowDuringShutdown) { 486 TestAddWindowDuringShutdown) {
485 ASSERT_TRUE(embedded_test_server()->Start()); 487 ASSERT_TRUE(embedded_test_server()->Start());
486 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 488 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
487 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); 489 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html")));
490 DisableHangMonitor(browsers_[0]);
488 491
489 RepeatedNotificationObserver close_observer( 492 RepeatedNotificationObserver close_observer(
490 chrome::NOTIFICATION_BROWSER_CLOSED, 2); 493 chrome::NOTIFICATION_BROWSER_CLOSED, 2);
491 chrome::CloseAllBrowsersAndQuit(); 494 chrome::CloseAllBrowsersAndQuit();
492 browsers_.push_back(CreateBrowser(browser()->profile())); 495 browsers_.push_back(CreateBrowser(browser()->profile()));
493 ASSERT_NO_FATAL_FAILURE(AcceptClose()); 496 ASSERT_NO_FATAL_FAILURE(AcceptClose());
494 close_observer.Wait(); 497 close_observer.Wait();
495 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); 498 EXPECT_TRUE(browser_shutdown::IsTryingToQuit());
496 EXPECT_TRUE(BrowserList::GetInstance()->empty()); 499 EXPECT_TRUE(BrowserList::GetInstance()->empty());
497 } 500 }
498 501
499 // Test that a window created during shutdown with a beforeunload handler can 502 // Test that a window created during shutdown with a beforeunload handler can
500 // cancel the shutdown. 503 // cancel the shutdown.
501 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, 504 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest,
502 TestAddWindowWithBeforeUnloadDuringShutdown) { 505 TestAddWindowWithBeforeUnloadDuringShutdown) {
503 ASSERT_TRUE(embedded_test_server()->Start()); 506 ASSERT_TRUE(embedded_test_server()->Start());
504 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 507 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
505 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); 508 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html")));
509 DisableHangMonitor(browsers_[0]);
506 510
507 RepeatedNotificationObserver cancel_observer( 511 RepeatedNotificationObserver cancel_observer(
508 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2); 512 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2);
509 chrome::CloseAllBrowsersAndQuit(); 513 chrome::CloseAllBrowsersAndQuit();
510 browsers_.push_back(CreateBrowser(browser()->profile())); 514 browsers_.push_back(CreateBrowser(browser()->profile()));
511 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 515 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
512 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); 516 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html")));
517 DisableHangMonitor(browsers_[1]);
513 ASSERT_NO_FATAL_FAILURE(AcceptClose()); 518 ASSERT_NO_FATAL_FAILURE(AcceptClose());
514 ASSERT_NO_FATAL_FAILURE(CancelClose()); 519 ASSERT_NO_FATAL_FAILURE(CancelClose());
515 cancel_observer.Wait(); 520 cancel_observer.Wait();
516 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); 521 EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
517 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); 522 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count());
518 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); 523 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count());
519 524
520 // Allow shutdown for both beforeunload dialogs. 525 // Allow shutdown for both beforeunload dialogs.
521 RepeatedNotificationObserver close_observer( 526 RepeatedNotificationObserver close_observer(
522 chrome::NOTIFICATION_BROWSER_CLOSED, 2); 527 chrome::NOTIFICATION_BROWSER_CLOSED, 2);
523 chrome::CloseAllBrowsersAndQuit(); 528 chrome::CloseAllBrowsersAndQuit();
524 ASSERT_NO_FATAL_FAILURE(AcceptClose()); 529 ASSERT_NO_FATAL_FAILURE(AcceptClose());
525 ASSERT_NO_FATAL_FAILURE(AcceptClose()); 530 ASSERT_NO_FATAL_FAILURE(AcceptClose());
526 close_observer.Wait(); 531 close_observer.Wait();
527 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); 532 EXPECT_TRUE(browser_shutdown::IsTryingToQuit());
528 EXPECT_TRUE(BrowserList::GetInstance()->empty()); 533 EXPECT_TRUE(BrowserList::GetInstance()->empty());
529 } 534 }
530 535
531 // Test that tabs added during shutdown are closed. 536 // Test that tabs added during shutdown are closed.
532 // Disabled for being flaky tests: crbug.com/519646
533 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, 537 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest,
534 DISABLED_TestAddTabDuringShutdown) { 538 TestAddTabDuringShutdown) {
535 ASSERT_TRUE(embedded_test_server()->Start()); 539 ASSERT_TRUE(embedded_test_server()->Start());
536 browsers_.push_back(CreateBrowser(browser()->profile())); 540 browsers_.push_back(CreateBrowser(browser()->profile()));
537 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 541 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
538 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); 542 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html")));
539 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 543 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
540 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); 544 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html")));
545 DisableHangMonitor(browsers_[0]);
546 DisableHangMonitor(browsers_[1]);
541 547
542 RepeatedNotificationObserver close_observer( 548 RepeatedNotificationObserver close_observer(
543 chrome::NOTIFICATION_BROWSER_CLOSED, 2); 549 chrome::NOTIFICATION_BROWSER_CLOSED, 2);
544 chrome::CloseAllBrowsersAndQuit(); 550 chrome::CloseAllBrowsersAndQuit();
545 ASSERT_NO_FATAL_FAILURE(AcceptClose()); 551 ASSERT_NO_FATAL_FAILURE(AcceptClose());
546 AddBlankTabAndShow(browsers_[0]); 552 AddBlankTabAndShow(browsers_[0]);
547 AddBlankTabAndShow(browsers_[1]); 553 AddBlankTabAndShow(browsers_[1]);
548 ASSERT_NO_FATAL_FAILURE(AcceptClose()); 554 ASSERT_NO_FATAL_FAILURE(AcceptClose());
549 close_observer.Wait(); 555 close_observer.Wait();
550 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); 556 EXPECT_TRUE(browser_shutdown::IsTryingToQuit());
551 EXPECT_TRUE(BrowserList::GetInstance()->empty()); 557 EXPECT_TRUE(BrowserList::GetInstance()->empty());
552 } 558 }
553 559
554 // Test that tabs created during shutdown with beforeunload handlers can cancel 560 // Test that tabs created during shutdown with beforeunload handlers can cancel
555 // the shutdown. 561 // the shutdown.
556 // Disabled for being flaky tests: crbug.com/519646 562
557 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, 563 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest,
558 DISABLED_TestAddTabWithBeforeUnloadDuringShutdown) { 564 TestAddTabWithBeforeUnloadDuringShutdown) {
559 ASSERT_TRUE(embedded_test_server()->Start()); 565 ASSERT_TRUE(embedded_test_server()->Start());
560 browsers_.push_back(CreateBrowser(browser()->profile())); 566 browsers_.push_back(CreateBrowser(browser()->profile()));
561 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 567 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
562 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); 568 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html")));
563 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 569 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
564 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); 570 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html")));
571 DisableHangMonitor(browsers_[0]);
572 DisableHangMonitor(browsers_[1]);
573
565 RepeatedNotificationObserver cancel_observer( 574 RepeatedNotificationObserver cancel_observer(
566 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2); 575 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2);
567 chrome::CloseAllBrowsersAndQuit(); 576 chrome::CloseAllBrowsersAndQuit();
568 ASSERT_NO_FATAL_FAILURE(AcceptClose()); 577 ASSERT_NO_FATAL_FAILURE(AcceptClose());
569 AddBlankTabAndShow(browsers_[0]); 578 AddBlankTabAndShow(browsers_[0]);
570 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 579 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
571 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); 580 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html")));
572 AddBlankTabAndShow(browsers_[1]); 581 AddBlankTabAndShow(browsers_[1]);
573 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 582 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
574 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); 583 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html")));
584 DisableHangMonitor(browsers_[0]);
585 DisableHangMonitor(browsers_[1]);
575 ASSERT_NO_FATAL_FAILURE(AcceptClose()); 586 ASSERT_NO_FATAL_FAILURE(AcceptClose());
576 ASSERT_NO_FATAL_FAILURE(CancelClose()); 587 ASSERT_NO_FATAL_FAILURE(CancelClose());
577 cancel_observer.Wait(); 588 cancel_observer.Wait();
578 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); 589 EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
579 EXPECT_EQ(2, browsers_[0]->tab_strip_model()->count()); 590 EXPECT_EQ(2, browsers_[0]->tab_strip_model()->count());
580 EXPECT_EQ(2, browsers_[1]->tab_strip_model()->count()); 591 EXPECT_EQ(2, browsers_[1]->tab_strip_model()->count());
581
Charlie Reis 2016/05/23 17:03:29 nit: Let's leave this blank line, just to make the
582 RepeatedNotificationObserver close_observer( 592 RepeatedNotificationObserver close_observer(
583 chrome::NOTIFICATION_BROWSER_CLOSED, 2); 593 chrome::NOTIFICATION_BROWSER_CLOSED, 2);
584 chrome::CloseAllBrowsersAndQuit(); 594 chrome::CloseAllBrowsersAndQuit();
585 ASSERT_NO_FATAL_FAILURE(AcceptClose()); 595 ASSERT_NO_FATAL_FAILURE(AcceptClose());
586 ASSERT_NO_FATAL_FAILURE(AcceptClose()); 596 ASSERT_NO_FATAL_FAILURE(AcceptClose());
587 ASSERT_NO_FATAL_FAILURE(AcceptClose()); 597 ASSERT_NO_FATAL_FAILURE(AcceptClose());
588 ASSERT_NO_FATAL_FAILURE(AcceptClose()); 598 ASSERT_NO_FATAL_FAILURE(AcceptClose());
589 599
590 close_observer.Wait(); 600 close_observer.Wait();
591 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); 601 EXPECT_TRUE(browser_shutdown::IsTryingToQuit());
592 EXPECT_TRUE(BrowserList::GetInstance()->empty()); 602 EXPECT_TRUE(BrowserList::GetInstance()->empty());
593 } 603 }
594 604
595 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, 605 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest,
596 TestCloseTabDuringShutdown) { 606 TestCloseTabDuringShutdown) {
597 ASSERT_TRUE(embedded_test_server()->Start()); 607 ASSERT_TRUE(embedded_test_server()->Start());
598 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 608 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
599 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); 609 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html")));
610 DisableHangMonitor(browsers_[0]);
611
600 RepeatedNotificationObserver cancel_observer( 612 RepeatedNotificationObserver cancel_observer(
601 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); 613 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1);
602 chrome::CloseAllBrowsersAndQuit(); 614 chrome::CloseAllBrowsersAndQuit();
603 615
604 browsers_.push_back(CreateBrowser(browser()->profile())); 616 browsers_.push_back(CreateBrowser(browser()->profile()));
605 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 617 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
606 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); 618 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html")));
619 DisableHangMonitor(browsers_[1]);
607 browsers_[1]->tab_strip_model()->CloseAllTabs(); 620 browsers_[1]->tab_strip_model()->CloseAllTabs();
608 ASSERT_NO_FATAL_FAILURE(CancelClose()); 621 ASSERT_NO_FATAL_FAILURE(CancelClose());
609 ASSERT_NO_FATAL_FAILURE(CancelClose()); 622 ASSERT_NO_FATAL_FAILURE(CancelClose());
610 cancel_observer.Wait(); 623 cancel_observer.Wait();
611 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); 624 EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
612 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); 625 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count());
613 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); 626 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count());
614 627
615 RepeatedNotificationObserver close_observer( 628 RepeatedNotificationObserver close_observer(
616 chrome::NOTIFICATION_BROWSER_CLOSED, 2); 629 chrome::NOTIFICATION_BROWSER_CLOSED, 2);
617 chrome::CloseAllBrowsersAndQuit(); 630 chrome::CloseAllBrowsersAndQuit();
618 browsers_[1]->tab_strip_model()->CloseAllTabs(); 631 browsers_[1]->tab_strip_model()->CloseAllTabs();
619 ASSERT_NO_FATAL_FAILURE(AcceptClose()); 632 ASSERT_NO_FATAL_FAILURE(AcceptClose());
620 ASSERT_NO_FATAL_FAILURE(AcceptClose()); 633 ASSERT_NO_FATAL_FAILURE(AcceptClose());
621 634
622 close_observer.Wait(); 635 close_observer.Wait();
623 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); 636 EXPECT_TRUE(browser_shutdown::IsTryingToQuit());
624 EXPECT_TRUE(BrowserList::GetInstance()->empty()); 637 EXPECT_TRUE(BrowserList::GetInstance()->empty());
625 } 638 }
626 639
627 // Test is flaky on Windows and Mac. See http://crbug.com/276366.
628 #if defined(OS_WIN) || defined(OS_MACOSX)
629 #define MAYBE_TestOpenAndCloseWindowDuringShutdown \
630 DISABLED_TestOpenAndCloseWindowDuringShutdown
631 #else
632 #define MAYBE_TestOpenAndCloseWindowDuringShutdown \
633 TestOpenAndCloseWindowDuringShutdown
634 #endif
635 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, 640 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest,
636 MAYBE_TestOpenAndCloseWindowDuringShutdown) { 641 TestOpenAndCloseWindowDuringShutdown) {
637 ASSERT_TRUE(embedded_test_server()->Start()); 642 ASSERT_TRUE(embedded_test_server()->Start());
638 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 643 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
639 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); 644 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html")));
645 DisableHangMonitor(browsers_[0]);
646
640 RepeatedNotificationObserver cancel_observer( 647 RepeatedNotificationObserver cancel_observer(
641 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2); 648 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2);
642 chrome::CloseAllBrowsersAndQuit(); 649 chrome::CloseAllBrowsersAndQuit();
643 650
644 browsers_.push_back(CreateBrowser(browser()->profile())); 651 browsers_.push_back(CreateBrowser(browser()->profile()));
645 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 652 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
646 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); 653 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html")));
654 DisableHangMonitor(browsers_[1]);
647 ASSERT_FALSE(browsers_[1]->ShouldCloseWindow()); 655 ASSERT_FALSE(browsers_[1]->ShouldCloseWindow());
648 ASSERT_NO_FATAL_FAILURE(CancelClose()); 656 ASSERT_NO_FATAL_FAILURE(CancelClose());
649 ASSERT_NO_FATAL_FAILURE(CancelClose()); 657 ASSERT_NO_FATAL_FAILURE(CancelClose());
650 cancel_observer.Wait(); 658 cancel_observer.Wait();
651 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); 659 EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
652 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); 660 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count());
653 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); 661 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count());
654 662
655 RepeatedNotificationObserver close_observer( 663 RepeatedNotificationObserver close_observer(
656 chrome::NOTIFICATION_BROWSER_CLOSED, 2); 664 chrome::NOTIFICATION_BROWSER_CLOSED, 2);
657 chrome::CloseAllBrowsersAndQuit(); 665 chrome::CloseAllBrowsersAndQuit();
658 ASSERT_FALSE(browsers_[1]->ShouldCloseWindow()); 666 ASSERT_FALSE(browsers_[1]->ShouldCloseWindow());
659 ASSERT_NO_FATAL_FAILURE(AcceptClose()); 667 ASSERT_NO_FATAL_FAILURE(AcceptClose());
660 ASSERT_NO_FATAL_FAILURE(AcceptClose()); 668 ASSERT_NO_FATAL_FAILURE(AcceptClose());
661 669
662 close_observer.Wait(); 670 close_observer.Wait();
663 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); 671 EXPECT_TRUE(browser_shutdown::IsTryingToQuit());
664 EXPECT_TRUE(BrowserList::GetInstance()->empty()); 672 EXPECT_TRUE(BrowserList::GetInstance()->empty());
665 } 673 }
666 674
667 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, 675 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest,
668 TestCloseWindowDuringShutdown) { 676 TestCloseWindowDuringShutdown) {
669 ASSERT_TRUE(embedded_test_server()->Start()); 677 ASSERT_TRUE(embedded_test_server()->Start());
670 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 678 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
671 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); 679 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html")));
672 browsers_.push_back(CreateBrowser(browser()->profile())); 680 browsers_.push_back(CreateBrowser(browser()->profile()));
673 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 681 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
674 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); 682 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html")));
683 DisableHangMonitor(browsers_[0]);
684 DisableHangMonitor(browsers_[1]);
685
675 RepeatedNotificationObserver cancel_observer( 686 RepeatedNotificationObserver cancel_observer(
676 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); 687 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1);
677 chrome::CloseAllBrowsersAndQuit(); 688 chrome::CloseAllBrowsersAndQuit();
678 689
679 ASSERT_FALSE(browsers_[0]->ShouldCloseWindow()); 690 ASSERT_FALSE(browsers_[0]->ShouldCloseWindow());
680 ASSERT_NO_FATAL_FAILURE(CancelClose()); 691 ASSERT_NO_FATAL_FAILURE(CancelClose());
681 cancel_observer.Wait(); 692 cancel_observer.Wait();
682 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); 693 EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
683 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); 694 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count());
684 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); 695 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count());
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after
903 close_observer.Wait(); 914 close_observer.Wait();
904 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); 915 EXPECT_TRUE(browser_shutdown::IsTryingToQuit());
905 EXPECT_TRUE(BrowserList::GetInstance()->empty()); 916 EXPECT_TRUE(BrowserList::GetInstance()->empty());
906 if (browser_defaults::kBrowserAliveWithNoWindows) 917 if (browser_defaults::kBrowserAliveWithNoWindows)
907 EXPECT_EQ(1, DownloadService::NonMaliciousDownloadCountAllProfiles()); 918 EXPECT_EQ(1, DownloadService::NonMaliciousDownloadCountAllProfiles());
908 else 919 else
909 EXPECT_EQ(0, DownloadService::NonMaliciousDownloadCountAllProfiles()); 920 EXPECT_EQ(0, DownloadService::NonMaliciousDownloadCountAllProfiles());
910 } 921 }
911 922
912 // Test shutdown with downloads in progress and beforeunload handlers. 923 // Test shutdown with downloads in progress and beforeunload handlers.
913 // Disabled, see http://crbug.com/315754.
914 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerWithDownloadsBrowserTest, 924 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerWithDownloadsBrowserTest,
915 DISABLED_TestBeforeUnloadAndDownloads) { 925 TestBeforeUnloadAndDownloads) {
916 ASSERT_TRUE(embedded_test_server()->Start()); 926 ASSERT_TRUE(embedded_test_server()->Start());
917 SetDownloadPathForProfile(browser()->profile()); 927 SetDownloadPathForProfile(browser()->profile());
918 ASSERT_NO_FATAL_FAILURE(CreateStalledDownload(browser())); 928 ASSERT_NO_FATAL_FAILURE(CreateStalledDownload(browser()));
919 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 929 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
920 browser(), embedded_test_server()->GetURL("/beforeunload.html"))); 930 browser(), embedded_test_server()->GetURL("/beforeunload.html")));
931 DisableHangMonitor(browser());
921 932
922 content::WindowedNotificationObserver cancel_observer( 933 content::WindowedNotificationObserver cancel_observer(
923 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 934 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED,
924 content::NotificationService::AllSources()); 935 content::NotificationService::AllSources());
925 TestBrowserCloseManager::AttemptClose( 936 TestBrowserCloseManager::AttemptClose(
926 TestBrowserCloseManager::USER_CHOICE_USER_CANCELS_CLOSE); 937 TestBrowserCloseManager::USER_CHOICE_USER_CANCELS_CLOSE);
927 ASSERT_NO_FATAL_FAILURE(AcceptClose()); 938 ASSERT_NO_FATAL_FAILURE(AcceptClose());
928 cancel_observer.Wait(); 939 cancel_observer.Wait();
929 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); 940 EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
930 941
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
1033 1044
1034 chrome::CloseAllBrowsers(); 1045 chrome::CloseAllBrowsers();
1035 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); 1046 EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
1036 EXPECT_TRUE(BrowserList::GetInstance()->empty()); 1047 EXPECT_TRUE(BrowserList::GetInstance()->empty());
1037 EXPECT_TRUE(IsBackgroundModeSuspended()); 1048 EXPECT_TRUE(IsBackgroundModeSuspended());
1038 } 1049 }
1039 1050
1040 INSTANTIATE_TEST_CASE_P(BrowserCloseManagerWithBackgroundModeBrowserTest, 1051 INSTANTIATE_TEST_CASE_P(BrowserCloseManagerWithBackgroundModeBrowserTest,
1041 BrowserCloseManagerWithBackgroundModeBrowserTest, 1052 BrowserCloseManagerWithBackgroundModeBrowserTest,
1042 testing::Bool()); 1053 testing::Bool());
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698