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

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

Issue 648833004: Componentize app_modal_dialog (Closed) Base URL: https://chromium.googlesource.com/chromium/src@master
Patch Set: Created 6 years, 2 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
« no previous file with comments | « chrome/browser/extensions/lazy_background_page_apitest.cc ('k') | chrome/browser/ui/BUILD.gn » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 <vector> 5 #include <vector>
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/files/scoped_temp_dir.h" 8 #include "base/files/scoped_temp_dir.h"
9 #include "chrome/browser/background/background_mode_manager.h" 9 #include "chrome/browser/background/background_mode_manager.h"
10 #include "chrome/browser/browser_process.h" 10 #include "chrome/browser/browser_process.h"
11 #include "chrome/browser/browser_shutdown.h" 11 #include "chrome/browser/browser_shutdown.h"
12 #include "chrome/browser/chrome_notification_types.h" 12 #include "chrome/browser/chrome_notification_types.h"
13 #include "chrome/browser/defaults.h" 13 #include "chrome/browser/defaults.h"
14 #include "chrome/browser/download/chrome_download_manager_delegate.h" 14 #include "chrome/browser/download/chrome_download_manager_delegate.h"
15 #include "chrome/browser/download/download_prefs.h" 15 #include "chrome/browser/download/download_prefs.h"
16 #include "chrome/browser/download/download_service.h" 16 #include "chrome/browser/download/download_service.h"
17 #include "chrome/browser/download/download_service_factory.h" 17 #include "chrome/browser/download/download_service_factory.h"
18 #include "chrome/browser/lifetime/application_lifetime.h" 18 #include "chrome/browser/lifetime/application_lifetime.h"
19 #include "chrome/browser/lifetime/browser_close_manager.h" 19 #include "chrome/browser/lifetime/browser_close_manager.h"
20 #include "chrome/browser/net/url_request_mock_util.h" 20 #include "chrome/browser/net/url_request_mock_util.h"
21 #include "chrome/browser/prefs/session_startup_pref.h" 21 #include "chrome/browser/prefs/session_startup_pref.h"
22 #include "chrome/browser/profiles/profile.h" 22 #include "chrome/browser/profiles/profile.h"
23 #include "chrome/browser/profiles/profile_manager.h" 23 #include "chrome/browser/profiles/profile_manager.h"
24 #include "chrome/browser/ui/app_modal_dialogs/javascript_app_modal_dialog.h"
25 #include "chrome/browser/ui/app_modal_dialogs/native_app_modal_dialog.h"
26 #include "chrome/browser/ui/browser.h" 24 #include "chrome/browser/ui/browser.h"
27 #include "chrome/browser/ui/browser_commands.h" 25 #include "chrome/browser/ui/browser_commands.h"
28 #include "chrome/browser/ui/browser_iterator.h" 26 #include "chrome/browser/ui/browser_iterator.h"
29 #include "chrome/browser/ui/browser_window.h" 27 #include "chrome/browser/ui/browser_window.h"
30 #include "chrome/browser/ui/tabs/tab_strip_model.h" 28 #include "chrome/browser/ui/tabs/tab_strip_model.h"
31 #include "chrome/common/chrome_switches.h" 29 #include "chrome/common/chrome_switches.h"
32 #include "chrome/common/url_constants.h" 30 #include "chrome/common/url_constants.h"
33 #include "chrome/test/base/in_process_browser_test.h" 31 #include "chrome/test/base/in_process_browser_test.h"
34 #include "chrome/test/base/ui_test_utils.h" 32 #include "chrome/test/base/ui_test_utils.h"
33 #include "components/app_modal_dialogs/javascript_app_modal_dialog.h"
34 #include "components/app_modal_dialogs/native_app_modal_dialog.h"
35 #include "content/public/browser/browser_context.h" 35 #include "content/public/browser/browser_context.h"
36 #include "content/public/browser/download_item.h" 36 #include "content/public/browser/download_item.h"
37 #include "content/public/browser/download_manager.h" 37 #include "content/public/browser/download_manager.h"
38 #include "content/public/browser/notification_service.h" 38 #include "content/public/browser/notification_service.h"
39 #include "content/public/browser/web_contents.h" 39 #include "content/public/browser/web_contents.h"
40 #include "content/public/test/download_test_observer.h" 40 #include "content/public/test/download_test_observer.h"
41 #include "content/public/test/test_navigation_observer.h" 41 #include "content/public/test/test_navigation_observer.h"
42 #include "content/test/net/url_request_slow_download_job.h" 42 #include "content/test/net/url_request_slow_download_job.h"
43 #include "net/test/embedded_test_server/embedded_test_server.h" 43 #include "net/test/embedded_test_server/embedded_test_server.h"
44 #include "net/test/url_request/url_request_mock_http_job.h" 44 #include "net/test/url_request/url_request_mock_http_job.h"
45 45
46 #if defined(OS_CHROMEOS) 46 #if defined(OS_CHROMEOS)
47 #include "chromeos/chromeos_switches.h" 47 #include "chromeos/chromeos_switches.h"
48 #endif 48 #endif
49 49
50 namespace { 50 namespace {
51 51
52 class AppModalDialogObserver { 52 NativeAppModalDialog* GetNextDialog() {
53 public: 53 AppModalDialog* dialog = ui_test_utils::WaitForAppModalDialog();
54 AppModalDialogObserver() {} 54 EXPECT_TRUE(dialog->IsJavaScriptModalDialog());
55 JavaScriptAppModalDialog* js_dialog =
56 static_cast<JavaScriptAppModalDialog*>(dialog);
57 CHECK(js_dialog->native_dialog());
58 return js_dialog->native_dialog();
59 }
55 60
56 void Start() { 61 void AcceptClose() {
57 observer_.reset(new content::WindowedNotificationObserver( 62 GetNextDialog()->AcceptAppModalDialog();
58 chrome::NOTIFICATION_APP_MODAL_DIALOG_SHOWN, 63 }
59 content::NotificationService::AllSources()));
60 }
61 64
62 void AcceptClose() { 65 void CancelClose() {
63 NativeAppModalDialog* dialog = GetNextDialog(); 66 GetNextDialog()->CancelAppModalDialog();
64 ASSERT_TRUE(dialog); 67 }
65 dialog->AcceptAppModalDialog();
66 }
67
68 void CancelClose() {
69 NativeAppModalDialog* dialog = GetNextDialog();
70 ASSERT_TRUE(dialog);
71 dialog->CancelAppModalDialog();
72 }
73
74 private:
75 NativeAppModalDialog* GetNextDialog() {
76 DCHECK(observer_);
77 observer_->Wait();
78 if (observer_->source() == content::NotificationService::AllSources())
79 return NULL;
80
81 AppModalDialog* dialog =
82 content::Source<AppModalDialog>(observer_->source()).ptr();
83 EXPECT_TRUE(dialog->IsJavaScriptModalDialog());
84 JavaScriptAppModalDialog* js_dialog =
85 static_cast<JavaScriptAppModalDialog*>(dialog);
86 observer_.reset(new content::WindowedNotificationObserver(
87 chrome::NOTIFICATION_APP_MODAL_DIALOG_SHOWN,
88 content::NotificationService::AllSources()));
89 return js_dialog->native_dialog();
90 }
91
92 scoped_ptr<content::WindowedNotificationObserver> observer_;
93
94 DISALLOW_COPY_AND_ASSIGN(AppModalDialogObserver);
95 };
96 68
97 class RepeatedNotificationObserver : public content::NotificationObserver { 69 class RepeatedNotificationObserver : public content::NotificationObserver {
98 public: 70 public:
99 explicit RepeatedNotificationObserver(int type, int count) 71 explicit RepeatedNotificationObserver(int type, int count)
100 : num_outstanding_(count), running_(false) { 72 : num_outstanding_(count), running_(false) {
101 registrar_.Add(this, type, content::NotificationService::AllSources()); 73 registrar_.Add(this, type, content::NotificationService::AllSources());
102 } 74 }
103 75
104 void Observe(int type, 76 void Observe(int type,
105 const content::NotificationSource& source, 77 const content::NotificationSource& source,
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
235 207
236 class BrowserCloseManagerBrowserTest 208 class BrowserCloseManagerBrowserTest
237 : public InProcessBrowserTest, 209 : public InProcessBrowserTest,
238 public testing::WithParamInterface<bool> { 210 public testing::WithParamInterface<bool> {
239 protected: 211 protected:
240 void SetUpOnMainThread() override { 212 void SetUpOnMainThread() override {
241 InProcessBrowserTest::SetUpOnMainThread(); 213 InProcessBrowserTest::SetUpOnMainThread();
242 SessionStartupPref::SetStartupPref( 214 SessionStartupPref::SetStartupPref(
243 browser()->profile(), SessionStartupPref(SessionStartupPref::LAST)); 215 browser()->profile(), SessionStartupPref(SessionStartupPref::LAST));
244 browsers_.push_back(browser()); 216 browsers_.push_back(browser());
245 dialogs_.Start();
246 content::BrowserThread::PostTask( 217 content::BrowserThread::PostTask(
247 content::BrowserThread::IO, 218 content::BrowserThread::IO,
248 FROM_HERE, 219 FROM_HERE,
249 base::Bind(&chrome_browser_net::SetUrlRequestMocksEnabled, true)); 220 base::Bind(&chrome_browser_net::SetUrlRequestMocksEnabled, true));
250 } 221 }
251 222
252 void SetUpCommandLine(CommandLine* command_line) override { 223 void SetUpCommandLine(CommandLine* command_line) override {
253 if (GetParam()) 224 if (GetParam())
254 command_line->AppendSwitch(switches::kEnableFastUnload); 225 command_line->AppendSwitch(switches::kEnableFastUnload);
255 #if defined(OS_CHROMEOS) 226 #if defined(OS_CHROMEOS)
(...skipping 10 matching lines...) Expand all
266 GURL(content::URLRequestSlowDownloadJob::kKnownSizeUrl), 237 GURL(content::URLRequestSlowDownloadJob::kKnownSizeUrl),
267 NEW_BACKGROUND_TAB, 238 NEW_BACKGROUND_TAB,
268 ui_test_utils::BROWSER_TEST_NONE); 239 ui_test_utils::BROWSER_TEST_NONE);
269 observer.WaitForFinished(); 240 observer.WaitForFinished();
270 EXPECT_EQ( 241 EXPECT_EQ(
271 1UL, 242 1UL,
272 observer.NumDownloadsSeenInState(content::DownloadItem::IN_PROGRESS)); 243 observer.NumDownloadsSeenInState(content::DownloadItem::IN_PROGRESS));
273 } 244 }
274 245
275 std::vector<Browser*> browsers_; 246 std::vector<Browser*> browsers_;
276 AppModalDialogObserver dialogs_;
277 }; 247 };
278 248
279 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, TestSingleTabShutdown) { 249 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, TestSingleTabShutdown) {
280 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); 250 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady());
281 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 251 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
282 browser(), embedded_test_server()->GetURL("/beforeunload.html"))); 252 browser(), embedded_test_server()->GetURL("/beforeunload.html")));
283 RepeatedNotificationObserver cancel_observer( 253 RepeatedNotificationObserver cancel_observer(
284 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); 254 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1);
285 chrome::CloseAllBrowsersAndQuit(); 255 chrome::CloseAllBrowsersAndQuit();
286 ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose()); 256 ASSERT_NO_FATAL_FAILURE(CancelClose());
287 cancel_observer.Wait(); 257 cancel_observer.Wait();
288 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); 258 EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
289 EXPECT_EQ(1, browser()->tab_strip_model()->count()); 259 EXPECT_EQ(1, browser()->tab_strip_model()->count());
290 260
291 RepeatedNotificationObserver close_observer( 261 RepeatedNotificationObserver close_observer(
292 chrome::NOTIFICATION_BROWSER_CLOSED, 1); 262 chrome::NOTIFICATION_BROWSER_CLOSED, 1);
293 chrome::CloseAllBrowsersAndQuit(); 263 chrome::CloseAllBrowsersAndQuit();
294 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); 264 ASSERT_NO_FATAL_FAILURE(AcceptClose());
295 close_observer.Wait(); 265 close_observer.Wait();
296 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); 266 EXPECT_TRUE(browser_shutdown::IsTryingToQuit());
297 EXPECT_TRUE(chrome::BrowserIterator().done()); 267 EXPECT_TRUE(chrome::BrowserIterator().done());
298 } 268 }
299 269
300 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, 270 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest,
301 TestShutdownMoreThanOnce) { 271 TestShutdownMoreThanOnce) {
302 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); 272 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady());
303 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 273 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
304 browser(), embedded_test_server()->GetURL("/beforeunload.html"))); 274 browser(), embedded_test_server()->GetURL("/beforeunload.html")));
305 RepeatedNotificationObserver cancel_observer( 275 RepeatedNotificationObserver cancel_observer(
306 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); 276 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1);
307 chrome::CloseAllBrowsersAndQuit(); 277 chrome::CloseAllBrowsersAndQuit();
308 chrome::CloseAllBrowsersAndQuit(); 278 chrome::CloseAllBrowsersAndQuit();
309 ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose()); 279 ASSERT_NO_FATAL_FAILURE(CancelClose());
310 cancel_observer.Wait(); 280 cancel_observer.Wait();
311 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); 281 EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
312 EXPECT_EQ(1, browser()->tab_strip_model()->count()); 282 EXPECT_EQ(1, browser()->tab_strip_model()->count());
313 283
314 RepeatedNotificationObserver close_observer( 284 RepeatedNotificationObserver close_observer(
315 chrome::NOTIFICATION_BROWSER_CLOSED, 1); 285 chrome::NOTIFICATION_BROWSER_CLOSED, 1);
316 chrome::CloseAllBrowsersAndQuit(); 286 chrome::CloseAllBrowsersAndQuit();
317 chrome::CloseAllBrowsersAndQuit(); 287 chrome::CloseAllBrowsersAndQuit();
318 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); 288 ASSERT_NO_FATAL_FAILURE(AcceptClose());
319 close_observer.Wait(); 289 close_observer.Wait();
320 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); 290 EXPECT_TRUE(browser_shutdown::IsTryingToQuit());
321 EXPECT_TRUE(chrome::BrowserIterator().done()); 291 EXPECT_TRUE(chrome::BrowserIterator().done());
322 } 292 }
323 293
324 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, PRE_TestSessionRestore) { 294 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, PRE_TestSessionRestore) {
325 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); 295 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady());
326 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 296 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
327 browser(), embedded_test_server()->GetURL("/beforeunload.html"))); 297 browser(), embedded_test_server()->GetURL("/beforeunload.html")));
328 AddBlankTabAndShow(browser()); 298 AddBlankTabAndShow(browser());
329 ASSERT_NO_FATAL_FAILURE( 299 ASSERT_NO_FATAL_FAILURE(
330 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIAboutURL))); 300 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIAboutURL)));
331 RepeatedNotificationObserver cancel_observer( 301 RepeatedNotificationObserver cancel_observer(
332 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); 302 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1);
333 chrome::CloseAllBrowsersAndQuit(); 303 chrome::CloseAllBrowsersAndQuit();
334 ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose()); 304 ASSERT_NO_FATAL_FAILURE(CancelClose());
335 cancel_observer.Wait(); 305 cancel_observer.Wait();
336 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); 306 EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
337 307
338 browser()->tab_strip_model() 308 browser()->tab_strip_model()
339 ->CloseWebContentsAt(1, TabStripModel::CLOSE_USER_GESTURE); 309 ->CloseWebContentsAt(1, TabStripModel::CLOSE_USER_GESTURE);
340 content::TestNavigationObserver navigation_observer( 310 content::TestNavigationObserver navigation_observer(
341 browser()->tab_strip_model()->GetActiveWebContents(), 1); 311 browser()->tab_strip_model()->GetActiveWebContents(), 1);
342 ASSERT_NO_FATAL_FAILURE( 312 ASSERT_NO_FATAL_FAILURE(
343 NavigateToURLWithDisposition(browser(), 313 NavigateToURLWithDisposition(browser(),
344 GURL(chrome::kChromeUIVersionURL), 314 GURL(chrome::kChromeUIVersionURL),
345 CURRENT_TAB, 315 CURRENT_TAB,
346 ui_test_utils::BROWSER_TEST_NONE)); 316 ui_test_utils::BROWSER_TEST_NONE));
347 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); 317 ASSERT_NO_FATAL_FAILURE(AcceptClose());
348 navigation_observer.Wait(); 318 navigation_observer.Wait();
349 319
350 RepeatedNotificationObserver close_observer( 320 RepeatedNotificationObserver close_observer(
351 chrome::NOTIFICATION_BROWSER_CLOSED, 1); 321 chrome::NOTIFICATION_BROWSER_CLOSED, 1);
352 chrome::CloseAllBrowsersAndQuit(); 322 chrome::CloseAllBrowsersAndQuit();
353 close_observer.Wait(); 323 close_observer.Wait();
354 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); 324 EXPECT_TRUE(browser_shutdown::IsTryingToQuit());
355 EXPECT_TRUE(chrome::BrowserIterator().done()); 325 EXPECT_TRUE(chrome::BrowserIterator().done());
356 } 326 }
357 327
(...skipping 16 matching lines...) Expand all
374 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 344 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
375 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); 345 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html")));
376 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 346 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
377 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); 347 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html")));
378 348
379 // Cancel shutdown on the first beforeunload event. 349 // Cancel shutdown on the first beforeunload event.
380 { 350 {
381 RepeatedNotificationObserver cancel_observer( 351 RepeatedNotificationObserver cancel_observer(
382 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); 352 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1);
383 chrome::CloseAllBrowsersAndQuit(); 353 chrome::CloseAllBrowsersAndQuit();
384 ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose()); 354 ASSERT_NO_FATAL_FAILURE(CancelClose());
385 cancel_observer.Wait(); 355 cancel_observer.Wait();
386 } 356 }
387 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); 357 EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
388 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); 358 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count());
389 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); 359 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count());
390 360
391 // Cancel shutdown on the second beforeunload event. 361 // Cancel shutdown on the second beforeunload event.
392 { 362 {
393 RepeatedNotificationObserver cancel_observer( 363 RepeatedNotificationObserver cancel_observer(
394 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2); 364 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2);
395 chrome::CloseAllBrowsersAndQuit(); 365 chrome::CloseAllBrowsersAndQuit();
396 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); 366 ASSERT_NO_FATAL_FAILURE(AcceptClose());
397 ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose()); 367 ASSERT_NO_FATAL_FAILURE(CancelClose());
398 cancel_observer.Wait(); 368 cancel_observer.Wait();
399 } 369 }
400 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); 370 EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
401 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); 371 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count());
402 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); 372 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count());
403 373
404 // Allow shutdown for both beforeunload events. 374 // Allow shutdown for both beforeunload events.
405 RepeatedNotificationObserver close_observer( 375 RepeatedNotificationObserver close_observer(
406 chrome::NOTIFICATION_BROWSER_CLOSED, 2); 376 chrome::NOTIFICATION_BROWSER_CLOSED, 2);
407 chrome::CloseAllBrowsersAndQuit(); 377 chrome::CloseAllBrowsersAndQuit();
408 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); 378 ASSERT_NO_FATAL_FAILURE(AcceptClose());
409 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); 379 ASSERT_NO_FATAL_FAILURE(AcceptClose());
410 close_observer.Wait(); 380 close_observer.Wait();
411 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); 381 EXPECT_TRUE(browser_shutdown::IsTryingToQuit());
412 EXPECT_TRUE(chrome::BrowserIterator().done()); 382 EXPECT_TRUE(chrome::BrowserIterator().done());
413 } 383 }
414 384
415 // Test that tabs in the same window with a beforeunload event that hangs are 385 // Test that tabs in the same window with a beforeunload event that hangs are
416 // treated the same as the user accepting the close, but do not close the tab 386 // treated the same as the user accepting the close, but do not close the tab
417 // early. 387 // early.
418 // Test is flaky on windows, disabled. See http://crbug.com/276366 388 // Test is flaky on windows, disabled. See http://crbug.com/276366
419 #if defined(OS_WIN) 389 #if defined(OS_WIN)
(...skipping 11 matching lines...) Expand all
431 AddBlankTabAndShow(browsers_[0]); 401 AddBlankTabAndShow(browsers_[0]);
432 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 402 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
433 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); 403 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html")));
434 AddBlankTabAndShow(browsers_[0]); 404 AddBlankTabAndShow(browsers_[0]);
435 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 405 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
436 browsers_[0], embedded_test_server()->GetURL("/beforeunload_hang.html"))); 406 browsers_[0], embedded_test_server()->GetURL("/beforeunload_hang.html")));
437 407
438 RepeatedNotificationObserver cancel_observer( 408 RepeatedNotificationObserver cancel_observer(
439 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); 409 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1);
440 chrome::CloseAllBrowsersAndQuit(); 410 chrome::CloseAllBrowsersAndQuit();
441 ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose()); 411 ASSERT_NO_FATAL_FAILURE(CancelClose());
442 cancel_observer.Wait(); 412 cancel_observer.Wait();
443 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); 413 EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
444 // All tabs should still be open. 414 // All tabs should still be open.
445 EXPECT_EQ(3, browsers_[0]->tab_strip_model()->count()); 415 EXPECT_EQ(3, browsers_[0]->tab_strip_model()->count());
446 416
447 RepeatedNotificationObserver close_observer( 417 RepeatedNotificationObserver close_observer(
448 chrome::NOTIFICATION_BROWSER_CLOSED, 1); 418 chrome::NOTIFICATION_BROWSER_CLOSED, 1);
449 chrome::CloseAllBrowsersAndQuit(); 419 chrome::CloseAllBrowsersAndQuit();
450 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); 420 ASSERT_NO_FATAL_FAILURE(AcceptClose());
451 close_observer.Wait(); 421 close_observer.Wait();
452 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); 422 EXPECT_TRUE(browser_shutdown::IsTryingToQuit());
453 EXPECT_TRUE(chrome::BrowserIterator().done()); 423 EXPECT_TRUE(chrome::BrowserIterator().done());
454 } 424 }
455 425
456 // Test that tabs in different windows with a beforeunload event that hangs are 426 // Test that tabs in different windows with a beforeunload event that hangs are
457 // treated the same as the user accepting the close, but do not close the tab 427 // treated the same as the user accepting the close, but do not close the tab
458 // early. 428 // early.
459 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, 429 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest,
460 TestHangInBeforeUnloadMultipleWindows) { 430 TestHangInBeforeUnloadMultipleWindows) {
461 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); 431 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady());
462 browsers_.push_back(CreateBrowser(browser()->profile())); 432 browsers_.push_back(CreateBrowser(browser()->profile()));
463 browsers_.push_back(CreateBrowser(browser()->profile())); 433 browsers_.push_back(CreateBrowser(browser()->profile()));
464 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 434 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
465 browsers_[0], embedded_test_server()->GetURL("/beforeunload_hang.html"))); 435 browsers_[0], embedded_test_server()->GetURL("/beforeunload_hang.html")));
466 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 436 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
467 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); 437 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html")));
468 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 438 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
469 browsers_[2], embedded_test_server()->GetURL("/beforeunload_hang.html"))); 439 browsers_[2], embedded_test_server()->GetURL("/beforeunload_hang.html")));
470 440
471 RepeatedNotificationObserver cancel_observer( 441 RepeatedNotificationObserver cancel_observer(
472 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2); 442 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2);
473 chrome::CloseAllBrowsersAndQuit(); 443 chrome::CloseAllBrowsersAndQuit();
474 ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose()); 444 ASSERT_NO_FATAL_FAILURE(CancelClose());
475 cancel_observer.Wait(); 445 cancel_observer.Wait();
476 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); 446 EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
477 // All windows should still be open. 447 // All windows should still be open.
478 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); 448 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count());
479 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); 449 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count());
480 EXPECT_EQ(1, browsers_[2]->tab_strip_model()->count()); 450 EXPECT_EQ(1, browsers_[2]->tab_strip_model()->count());
481 451
482 RepeatedNotificationObserver close_observer( 452 RepeatedNotificationObserver close_observer(
483 chrome::NOTIFICATION_BROWSER_CLOSED, 3); 453 chrome::NOTIFICATION_BROWSER_CLOSED, 3);
484 chrome::CloseAllBrowsersAndQuit(); 454 chrome::CloseAllBrowsersAndQuit();
485 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); 455 ASSERT_NO_FATAL_FAILURE(AcceptClose());
486 close_observer.Wait(); 456 close_observer.Wait();
487 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); 457 EXPECT_TRUE(browser_shutdown::IsTryingToQuit());
488 EXPECT_TRUE(chrome::BrowserIterator().done()); 458 EXPECT_TRUE(chrome::BrowserIterator().done());
489 } 459 }
490 460
491 // Test that a window created during shutdown is closed. 461 // Test that a window created during shutdown is closed.
492 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, 462 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest,
493 TestAddWindowDuringShutdown) { 463 TestAddWindowDuringShutdown) {
494 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); 464 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady());
495 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 465 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
496 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); 466 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html")));
497 467
498 RepeatedNotificationObserver close_observer( 468 RepeatedNotificationObserver close_observer(
499 chrome::NOTIFICATION_BROWSER_CLOSED, 2); 469 chrome::NOTIFICATION_BROWSER_CLOSED, 2);
500 chrome::CloseAllBrowsersAndQuit(); 470 chrome::CloseAllBrowsersAndQuit();
501 browsers_.push_back(CreateBrowser(browser()->profile())); 471 browsers_.push_back(CreateBrowser(browser()->profile()));
502 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); 472 ASSERT_NO_FATAL_FAILURE(AcceptClose());
503 close_observer.Wait(); 473 close_observer.Wait();
504 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); 474 EXPECT_TRUE(browser_shutdown::IsTryingToQuit());
505 EXPECT_TRUE(chrome::BrowserIterator().done()); 475 EXPECT_TRUE(chrome::BrowserIterator().done());
506 } 476 }
507 477
508 // Test that a window created during shutdown with a beforeunload handler can 478 // Test that a window created during shutdown with a beforeunload handler can
509 // cancel the shutdown. 479 // cancel the shutdown.
510 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, 480 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest,
511 TestAddWindowWithBeforeUnloadDuringShutdown) { 481 TestAddWindowWithBeforeUnloadDuringShutdown) {
512 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); 482 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady());
513 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 483 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
514 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); 484 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html")));
515 485
516 RepeatedNotificationObserver cancel_observer( 486 RepeatedNotificationObserver cancel_observer(
517 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2); 487 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2);
518 chrome::CloseAllBrowsersAndQuit(); 488 chrome::CloseAllBrowsersAndQuit();
519 browsers_.push_back(CreateBrowser(browser()->profile())); 489 browsers_.push_back(CreateBrowser(browser()->profile()));
520 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 490 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
521 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); 491 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html")));
522 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); 492 ASSERT_NO_FATAL_FAILURE(AcceptClose());
523 ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose()); 493 ASSERT_NO_FATAL_FAILURE(CancelClose());
524 cancel_observer.Wait(); 494 cancel_observer.Wait();
525 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); 495 EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
526 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); 496 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count());
527 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); 497 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count());
528 498
529 // Allow shutdown for both beforeunload dialogs. 499 // Allow shutdown for both beforeunload dialogs.
530 RepeatedNotificationObserver close_observer( 500 RepeatedNotificationObserver close_observer(
531 chrome::NOTIFICATION_BROWSER_CLOSED, 2); 501 chrome::NOTIFICATION_BROWSER_CLOSED, 2);
532 chrome::CloseAllBrowsersAndQuit(); 502 chrome::CloseAllBrowsersAndQuit();
533 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); 503 ASSERT_NO_FATAL_FAILURE(AcceptClose());
534 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); 504 ASSERT_NO_FATAL_FAILURE(AcceptClose());
535 close_observer.Wait(); 505 close_observer.Wait();
536 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); 506 EXPECT_TRUE(browser_shutdown::IsTryingToQuit());
537 EXPECT_TRUE(chrome::BrowserIterator().done()); 507 EXPECT_TRUE(chrome::BrowserIterator().done());
538 } 508 }
539 509
540 // Test that tabs added during shutdown are closed. 510 // Test that tabs added during shutdown are closed.
541 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, 511 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest,
542 TestAddTabDuringShutdown) { 512 TestAddTabDuringShutdown) {
543 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); 513 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady());
544 browsers_.push_back(CreateBrowser(browser()->profile())); 514 browsers_.push_back(CreateBrowser(browser()->profile()));
545 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 515 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
546 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); 516 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html")));
547 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 517 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
548 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); 518 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html")));
549 519
550 RepeatedNotificationObserver close_observer( 520 RepeatedNotificationObserver close_observer(
551 chrome::NOTIFICATION_BROWSER_CLOSED, 2); 521 chrome::NOTIFICATION_BROWSER_CLOSED, 2);
552 chrome::CloseAllBrowsersAndQuit(); 522 chrome::CloseAllBrowsersAndQuit();
553 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); 523 ASSERT_NO_FATAL_FAILURE(AcceptClose());
554 AddBlankTabAndShow(browsers_[0]); 524 AddBlankTabAndShow(browsers_[0]);
555 AddBlankTabAndShow(browsers_[1]); 525 AddBlankTabAndShow(browsers_[1]);
556 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); 526 ASSERT_NO_FATAL_FAILURE(AcceptClose());
557 close_observer.Wait(); 527 close_observer.Wait();
558 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); 528 EXPECT_TRUE(browser_shutdown::IsTryingToQuit());
559 EXPECT_TRUE(chrome::BrowserIterator().done()); 529 EXPECT_TRUE(chrome::BrowserIterator().done());
560 } 530 }
561 531
562 // Test that tabs created during shutdown with beforeunload handlers can cancel 532 // Test that tabs created during shutdown with beforeunload handlers can cancel
563 // the shutdown. 533 // the shutdown.
564 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, 534 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest,
565 TestAddTabWithBeforeUnloadDuringShutdown) { 535 TestAddTabWithBeforeUnloadDuringShutdown) {
566 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); 536 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady());
567 browsers_.push_back(CreateBrowser(browser()->profile())); 537 browsers_.push_back(CreateBrowser(browser()->profile()));
568 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 538 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
569 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); 539 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html")));
570 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 540 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
571 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); 541 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html")));
572 RepeatedNotificationObserver cancel_observer( 542 RepeatedNotificationObserver cancel_observer(
573 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2); 543 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2);
574 chrome::CloseAllBrowsersAndQuit(); 544 chrome::CloseAllBrowsersAndQuit();
575 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); 545 ASSERT_NO_FATAL_FAILURE(AcceptClose());
576 AddBlankTabAndShow(browsers_[0]); 546 AddBlankTabAndShow(browsers_[0]);
577 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 547 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
578 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); 548 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html")));
579 AddBlankTabAndShow(browsers_[1]); 549 AddBlankTabAndShow(browsers_[1]);
580 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 550 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
581 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); 551 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html")));
582 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); 552 ASSERT_NO_FATAL_FAILURE(AcceptClose());
583 ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose()); 553 ASSERT_NO_FATAL_FAILURE(CancelClose());
584 cancel_observer.Wait(); 554 cancel_observer.Wait();
585 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); 555 EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
586 EXPECT_EQ(2, browsers_[0]->tab_strip_model()->count()); 556 EXPECT_EQ(2, browsers_[0]->tab_strip_model()->count());
587 EXPECT_EQ(2, browsers_[1]->tab_strip_model()->count()); 557 EXPECT_EQ(2, browsers_[1]->tab_strip_model()->count());
588 558
589 RepeatedNotificationObserver close_observer( 559 RepeatedNotificationObserver close_observer(
590 chrome::NOTIFICATION_BROWSER_CLOSED, 2); 560 chrome::NOTIFICATION_BROWSER_CLOSED, 2);
591 chrome::CloseAllBrowsersAndQuit(); 561 chrome::CloseAllBrowsersAndQuit();
592 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); 562 ASSERT_NO_FATAL_FAILURE(AcceptClose());
593 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); 563 ASSERT_NO_FATAL_FAILURE(AcceptClose());
594 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); 564 ASSERT_NO_FATAL_FAILURE(AcceptClose());
595 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); 565 ASSERT_NO_FATAL_FAILURE(AcceptClose());
596 566
597 close_observer.Wait(); 567 close_observer.Wait();
598 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); 568 EXPECT_TRUE(browser_shutdown::IsTryingToQuit());
599 EXPECT_TRUE(chrome::BrowserIterator().done()); 569 EXPECT_TRUE(chrome::BrowserIterator().done());
600 } 570 }
601 571
602 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, 572 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest,
603 TestCloseTabDuringShutdown) { 573 TestCloseTabDuringShutdown) {
604 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); 574 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady());
605 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 575 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
606 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); 576 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html")));
607 RepeatedNotificationObserver cancel_observer( 577 RepeatedNotificationObserver cancel_observer(
608 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); 578 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1);
609 chrome::CloseAllBrowsersAndQuit(); 579 chrome::CloseAllBrowsersAndQuit();
610 580
611 browsers_.push_back(CreateBrowser(browser()->profile())); 581 browsers_.push_back(CreateBrowser(browser()->profile()));
612 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 582 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
613 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); 583 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html")));
614 browsers_[1]->tab_strip_model()->CloseAllTabs(); 584 browsers_[1]->tab_strip_model()->CloseAllTabs();
615 ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose()); 585 ASSERT_NO_FATAL_FAILURE(CancelClose());
616 ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose()); 586 ASSERT_NO_FATAL_FAILURE(CancelClose());
617 cancel_observer.Wait(); 587 cancel_observer.Wait();
618 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); 588 EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
619 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); 589 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count());
620 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); 590 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count());
621 591
622 RepeatedNotificationObserver close_observer( 592 RepeatedNotificationObserver close_observer(
623 chrome::NOTIFICATION_BROWSER_CLOSED, 2); 593 chrome::NOTIFICATION_BROWSER_CLOSED, 2);
624 chrome::CloseAllBrowsersAndQuit(); 594 chrome::CloseAllBrowsersAndQuit();
625 browsers_[1]->tab_strip_model()->CloseAllTabs(); 595 browsers_[1]->tab_strip_model()->CloseAllTabs();
626 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); 596 ASSERT_NO_FATAL_FAILURE(AcceptClose());
627 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); 597 ASSERT_NO_FATAL_FAILURE(AcceptClose());
628 598
629 close_observer.Wait(); 599 close_observer.Wait();
630 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); 600 EXPECT_TRUE(browser_shutdown::IsTryingToQuit());
631 EXPECT_TRUE(chrome::BrowserIterator().done()); 601 EXPECT_TRUE(chrome::BrowserIterator().done());
632 } 602 }
633 603
634 // Test is flaky on windows, disabled. See http://crbug.com/276366 604 // Test is flaky on windows, disabled. See http://crbug.com/276366
635 #if defined(OS_WIN) 605 #if defined(OS_WIN)
636 #define MAYBE_TestOpenAndCloseWindowDuringShutdown \ 606 #define MAYBE_TestOpenAndCloseWindowDuringShutdown \
637 DISABLED_TestOpenAndCloseWindowDuringShutdown 607 DISABLED_TestOpenAndCloseWindowDuringShutdown
638 #else 608 #else
639 #define MAYBE_TestOpenAndCloseWindowDuringShutdown \ 609 #define MAYBE_TestOpenAndCloseWindowDuringShutdown \
640 TestOpenAndCloseWindowDuringShutdown 610 TestOpenAndCloseWindowDuringShutdown
641 #endif 611 #endif
642 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, 612 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest,
643 MAYBE_TestOpenAndCloseWindowDuringShutdown) { 613 MAYBE_TestOpenAndCloseWindowDuringShutdown) {
644 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); 614 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady());
645 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 615 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
646 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); 616 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html")));
647 RepeatedNotificationObserver cancel_observer( 617 RepeatedNotificationObserver cancel_observer(
648 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2); 618 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2);
649 chrome::CloseAllBrowsersAndQuit(); 619 chrome::CloseAllBrowsersAndQuit();
650 620
651 browsers_.push_back(CreateBrowser(browser()->profile())); 621 browsers_.push_back(CreateBrowser(browser()->profile()));
652 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 622 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
653 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); 623 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html")));
654 ASSERT_FALSE(browsers_[1]->ShouldCloseWindow()); 624 ASSERT_FALSE(browsers_[1]->ShouldCloseWindow());
655 ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose()); 625 ASSERT_NO_FATAL_FAILURE(CancelClose());
656 ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose()); 626 ASSERT_NO_FATAL_FAILURE(CancelClose());
657 cancel_observer.Wait(); 627 cancel_observer.Wait();
658 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); 628 EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
659 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); 629 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count());
660 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); 630 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count());
661 631
662 RepeatedNotificationObserver close_observer( 632 RepeatedNotificationObserver close_observer(
663 chrome::NOTIFICATION_BROWSER_CLOSED, 2); 633 chrome::NOTIFICATION_BROWSER_CLOSED, 2);
664 chrome::CloseAllBrowsersAndQuit(); 634 chrome::CloseAllBrowsersAndQuit();
665 ASSERT_FALSE(browsers_[1]->ShouldCloseWindow()); 635 ASSERT_FALSE(browsers_[1]->ShouldCloseWindow());
666 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); 636 ASSERT_NO_FATAL_FAILURE(AcceptClose());
667 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); 637 ASSERT_NO_FATAL_FAILURE(AcceptClose());
668 638
669 close_observer.Wait(); 639 close_observer.Wait();
670 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); 640 EXPECT_TRUE(browser_shutdown::IsTryingToQuit());
671 EXPECT_TRUE(chrome::BrowserIterator().done()); 641 EXPECT_TRUE(chrome::BrowserIterator().done());
672 } 642 }
673 643
674 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, 644 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest,
675 TestCloseWindowDuringShutdown) { 645 TestCloseWindowDuringShutdown) {
676 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); 646 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady());
677 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 647 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
678 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); 648 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html")));
679 browsers_.push_back(CreateBrowser(browser()->profile())); 649 browsers_.push_back(CreateBrowser(browser()->profile()));
680 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 650 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
681 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); 651 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html")));
682 RepeatedNotificationObserver cancel_observer( 652 RepeatedNotificationObserver cancel_observer(
683 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); 653 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1);
684 chrome::CloseAllBrowsersAndQuit(); 654 chrome::CloseAllBrowsersAndQuit();
685 655
686 ASSERT_FALSE(browsers_[0]->ShouldCloseWindow()); 656 ASSERT_FALSE(browsers_[0]->ShouldCloseWindow());
687 ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose()); 657 ASSERT_NO_FATAL_FAILURE(CancelClose());
688 cancel_observer.Wait(); 658 cancel_observer.Wait();
689 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); 659 EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
690 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); 660 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count());
691 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); 661 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count());
692 662
693 RepeatedNotificationObserver close_observer( 663 RepeatedNotificationObserver close_observer(
694 chrome::NOTIFICATION_BROWSER_CLOSED, 2); 664 chrome::NOTIFICATION_BROWSER_CLOSED, 2);
695 chrome::CloseAllBrowsersAndQuit(); 665 chrome::CloseAllBrowsersAndQuit();
696 ASSERT_FALSE(browsers_[0]->ShouldCloseWindow()); 666 ASSERT_FALSE(browsers_[0]->ShouldCloseWindow());
697 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); 667 ASSERT_NO_FATAL_FAILURE(AcceptClose());
698 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); 668 ASSERT_NO_FATAL_FAILURE(AcceptClose());
699 669
700 close_observer.Wait(); 670 close_observer.Wait();
701 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); 671 EXPECT_TRUE(browser_shutdown::IsTryingToQuit());
702 EXPECT_TRUE(chrome::BrowserIterator().done()); 672 EXPECT_TRUE(chrome::BrowserIterator().done());
703 } 673 }
704 674
705 INSTANTIATE_TEST_CASE_P(BrowserCloseManagerBrowserTest, 675 INSTANTIATE_TEST_CASE_P(BrowserCloseManagerBrowserTest,
706 BrowserCloseManagerBrowserTest, 676 BrowserCloseManagerBrowserTest,
707 testing::Bool()); 677 testing::Bool());
708 678
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
864 SetDownloadPathForProfile(browser()->profile()); 834 SetDownloadPathForProfile(browser()->profile());
865 ASSERT_NO_FATAL_FAILURE(CreateStalledDownload(browser())); 835 ASSERT_NO_FATAL_FAILURE(CreateStalledDownload(browser()));
866 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( 836 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL(
867 browser(), embedded_test_server()->GetURL("/beforeunload.html"))); 837 browser(), embedded_test_server()->GetURL("/beforeunload.html")));
868 838
869 content::WindowedNotificationObserver cancel_observer( 839 content::WindowedNotificationObserver cancel_observer(
870 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 840 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED,
871 content::NotificationService::AllSources()); 841 content::NotificationService::AllSources());
872 TestBrowserCloseManager::AttemptClose( 842 TestBrowserCloseManager::AttemptClose(
873 TestBrowserCloseManager::USER_CHOICE_USER_CANCELS_CLOSE); 843 TestBrowserCloseManager::USER_CHOICE_USER_CANCELS_CLOSE);
874 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); 844 ASSERT_NO_FATAL_FAILURE(AcceptClose());
875 cancel_observer.Wait(); 845 cancel_observer.Wait();
876 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); 846 EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
877 847
878 RepeatedNotificationObserver close_observer( 848 RepeatedNotificationObserver close_observer(
879 chrome::NOTIFICATION_BROWSER_CLOSED, 1); 849 chrome::NOTIFICATION_BROWSER_CLOSED, 1);
880 TestBrowserCloseManager::AttemptClose( 850 TestBrowserCloseManager::AttemptClose(
881 TestBrowserCloseManager::USER_CHOICE_USER_ALLOWS_CLOSE); 851 TestBrowserCloseManager::USER_CHOICE_USER_ALLOWS_CLOSE);
882 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); 852 ASSERT_NO_FATAL_FAILURE(AcceptClose());
883 close_observer.Wait(); 853 close_observer.Wait();
884 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); 854 EXPECT_TRUE(browser_shutdown::IsTryingToQuit());
885 EXPECT_TRUE(chrome::BrowserIterator().done()); 855 EXPECT_TRUE(chrome::BrowserIterator().done());
886 } 856 }
887 857
888 INSTANTIATE_TEST_CASE_P(BrowserCloseManagerWithDownloadsBrowserTest, 858 INSTANTIATE_TEST_CASE_P(BrowserCloseManagerWithDownloadsBrowserTest,
889 BrowserCloseManagerWithDownloadsBrowserTest, 859 BrowserCloseManagerWithDownloadsBrowserTest,
890 testing::Bool()); 860 testing::Bool());
891 861
892 class BrowserCloseManagerWithBackgroundModeBrowserTest 862 class BrowserCloseManagerWithBackgroundModeBrowserTest
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
976 946
977 chrome::CloseAllBrowsers(); 947 chrome::CloseAllBrowsers();
978 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); 948 EXPECT_FALSE(browser_shutdown::IsTryingToQuit());
979 EXPECT_TRUE(chrome::BrowserIterator().done()); 949 EXPECT_TRUE(chrome::BrowserIterator().done());
980 EXPECT_TRUE(IsBackgroundModeSuspended()); 950 EXPECT_TRUE(IsBackgroundModeSuspended());
981 } 951 }
982 952
983 INSTANTIATE_TEST_CASE_P(BrowserCloseManagerWithBackgroundModeBrowserTest, 953 INSTANTIATE_TEST_CASE_P(BrowserCloseManagerWithBackgroundModeBrowserTest,
984 BrowserCloseManagerWithBackgroundModeBrowserTest, 954 BrowserCloseManagerWithBackgroundModeBrowserTest,
985 testing::Bool()); 955 testing::Bool());
OLDNEW
« no previous file with comments | « chrome/browser/extensions/lazy_background_page_apitest.cc ('k') | chrome/browser/ui/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698