| 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 |