OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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()); |
OLD | NEW |