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 "chrome/browser/background/background_mode_manager.h" | |
8 #include "chrome/browser/browser_process.h" | 9 #include "chrome/browser/browser_process.h" |
9 #include "chrome/browser/browser_shutdown.h" | 10 #include "chrome/browser/browser_shutdown.h" |
10 #include "chrome/browser/chrome_notification_types.h" | 11 #include "chrome/browser/chrome_notification_types.h" |
11 #include "chrome/browser/lifetime/application_lifetime.h" | 12 #include "chrome/browser/lifetime/application_lifetime.h" |
12 #include "chrome/browser/lifetime/browser_close_manager.h" | 13 #include "chrome/browser/lifetime/browser_close_manager.h" |
13 #include "chrome/browser/net/url_request_mock_util.h" | 14 #include "chrome/browser/net/url_request_mock_util.h" |
14 #include "chrome/browser/prefs/session_startup_pref.h" | 15 #include "chrome/browser/prefs/session_startup_pref.h" |
15 #include "chrome/browser/profiles/profile.h" | 16 #include "chrome/browser/profiles/profile.h" |
16 #include "chrome/browser/profiles/profile_manager.h" | 17 #include "chrome/browser/profiles/profile_manager.h" |
17 #include "chrome/browser/ui/app_modal_dialogs/javascript_app_modal_dialog.h" | 18 #include "chrome/browser/ui/app_modal_dialogs/javascript_app_modal_dialog.h" |
18 #include "chrome/browser/ui/app_modal_dialogs/native_app_modal_dialog.h" | 19 #include "chrome/browser/ui/app_modal_dialogs/native_app_modal_dialog.h" |
19 #include "chrome/browser/ui/browser.h" | 20 #include "chrome/browser/ui/browser.h" |
21 #include "chrome/browser/ui/browser_commands.h" | |
20 #include "chrome/browser/ui/browser_iterator.h" | 22 #include "chrome/browser/ui/browser_iterator.h" |
21 #include "chrome/browser/ui/browser_window.h" | 23 #include "chrome/browser/ui/browser_window.h" |
22 #include "chrome/browser/ui/tabs/tab_strip_model.h" | 24 #include "chrome/browser/ui/tabs/tab_strip_model.h" |
23 #include "chrome/common/chrome_switches.h" | 25 #include "chrome/common/chrome_switches.h" |
24 #include "chrome/common/url_constants.h" | 26 #include "chrome/common/url_constants.h" |
25 #include "chrome/test/base/in_process_browser_test.h" | 27 #include "chrome/test/base/in_process_browser_test.h" |
26 #include "chrome/test/base/ui_test_utils.h" | 28 #include "chrome/test/base/ui_test_utils.h" |
27 #include "content/public/browser/browser_context.h" | 29 #include "content/public/browser/browser_context.h" |
28 #include "content/public/browser/download_item.h" | 30 #include "content/public/browser/download_item.h" |
29 #include "content/public/browser/download_manager.h" | 31 #include "content/public/browser/download_manager.h" |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
119 class TestBrowserCloseManager : public BrowserCloseManager { | 121 class TestBrowserCloseManager : public BrowserCloseManager { |
120 public: | 122 public: |
121 enum UserChoice { | 123 enum UserChoice { |
122 USER_CHOICE_USER_CANCELS_CLOSE, | 124 USER_CHOICE_USER_CANCELS_CLOSE, |
123 USER_CHOICE_USER_ALLOWS_CLOSE, | 125 USER_CHOICE_USER_ALLOWS_CLOSE, |
124 }; | 126 }; |
125 | 127 |
126 static void AttemptClose(UserChoice user_choice) { | 128 static void AttemptClose(UserChoice user_choice) { |
127 scoped_refptr<BrowserCloseManager> browser_close_manager = | 129 scoped_refptr<BrowserCloseManager> browser_close_manager = |
128 new TestBrowserCloseManager(user_choice); | 130 new TestBrowserCloseManager(user_choice); |
131 browser_shutdown::SetTryingToQuit(true); | |
129 browser_close_manager->StartClosingBrowsers(); | 132 browser_close_manager->StartClosingBrowsers(); |
130 } | 133 } |
131 | 134 |
132 protected: | 135 protected: |
133 virtual ~TestBrowserCloseManager() {} | 136 virtual ~TestBrowserCloseManager() {} |
134 | 137 |
135 virtual void ConfirmCloseWithPendingDownloads( | 138 virtual void ConfirmCloseWithPendingDownloads( |
136 int download_count, | 139 int download_count, |
137 const base::Callback<void(bool)>& callback) OVERRIDE { | 140 const base::Callback<void(bool)>& callback) OVERRIDE { |
138 switch (user_choice_) { | 141 switch (user_choice_) { |
(...skipping 10 matching lines...) Expand all Loading... | |
149 | 152 |
150 private: | 153 private: |
151 explicit TestBrowserCloseManager(UserChoice user_choice) | 154 explicit TestBrowserCloseManager(UserChoice user_choice) |
152 : user_choice_(user_choice) {} | 155 : user_choice_(user_choice) {} |
153 | 156 |
154 UserChoice user_choice_; | 157 UserChoice user_choice_; |
155 | 158 |
156 DISALLOW_COPY_AND_ASSIGN(TestBrowserCloseManager); | 159 DISALLOW_COPY_AND_ASSIGN(TestBrowserCloseManager); |
157 }; | 160 }; |
158 | 161 |
162 class FakeBackgroundModeManager : public BackgroundModeManager { | |
163 public: | |
164 FakeBackgroundModeManager() | |
165 : BackgroundModeManager( | |
166 CommandLine::ForCurrentProcess(), | |
167 &g_browser_process->profile_manager()->GetProfileInfoCache()), | |
168 suspended_(false) {} | |
169 | |
170 virtual void SuspendBackgroundMode() OVERRIDE { | |
171 BackgroundModeManager::SuspendBackgroundMode(); | |
172 suspended_ = true; | |
173 } | |
174 | |
175 virtual void ResumeBackgroundMode() OVERRIDE { | |
176 BackgroundModeManager::ResumeBackgroundMode(); | |
177 suspended_ = false; | |
178 } | |
179 | |
180 bool IsBackgroundModeSuspended() { | |
181 return suspended_; | |
182 } | |
183 | |
184 private: | |
185 bool suspended_; | |
186 }; | |
187 | |
159 } // namespace | 188 } // namespace |
160 | 189 |
161 class BrowserCloseManagerBrowserTest | 190 class BrowserCloseManagerBrowserTest |
162 : public InProcessBrowserTest, | 191 : public InProcessBrowserTest, |
163 public testing::WithParamInterface<bool> { | 192 public testing::WithParamInterface<bool> { |
164 protected: | 193 protected: |
165 virtual void SetUpOnMainThread() OVERRIDE { | 194 virtual void SetUpOnMainThread() OVERRIDE { |
166 InProcessBrowserTest::SetUpOnMainThread(); | 195 InProcessBrowserTest::SetUpOnMainThread(); |
167 SessionStartupPref::SetStartupPref( | 196 SessionStartupPref::SetStartupPref( |
168 browser()->profile(), SessionStartupPref(SessionStartupPref::LAST)); | 197 browser()->profile(), SessionStartupPref(SessionStartupPref::LAST)); |
(...skipping 27 matching lines...) Expand all Loading... | |
196 std::vector<Browser*> browsers_; | 225 std::vector<Browser*> browsers_; |
197 AppModalDialogObserver dialogs_; | 226 AppModalDialogObserver dialogs_; |
198 }; | 227 }; |
199 | 228 |
200 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, TestSingleTabShutdown) { | 229 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, TestSingleTabShutdown) { |
201 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); | 230 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); |
202 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 231 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
203 browser(), embedded_test_server()->GetURL("/beforeunload.html"))); | 232 browser(), embedded_test_server()->GetURL("/beforeunload.html"))); |
204 RepeatedNotificationObserver cancel_observer( | 233 RepeatedNotificationObserver cancel_observer( |
205 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); | 234 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); |
206 chrome::CloseAllBrowsers(); | 235 chrome::CloseAllBrowsersAndQuit(); |
207 ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose()); | 236 ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose()); |
208 cancel_observer.Wait(); | 237 cancel_observer.Wait(); |
209 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 238 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
210 EXPECT_EQ(1, browser()->tab_strip_model()->count()); | 239 EXPECT_EQ(1, browser()->tab_strip_model()->count()); |
211 | 240 |
212 RepeatedNotificationObserver close_observer( | 241 RepeatedNotificationObserver close_observer( |
213 chrome::NOTIFICATION_BROWSER_CLOSED, 1); | 242 chrome::NOTIFICATION_BROWSER_CLOSED, 1); |
214 chrome::CloseAllBrowsers(); | 243 chrome::CloseAllBrowsersAndQuit(); |
215 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); | 244 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); |
216 close_observer.Wait(); | 245 close_observer.Wait(); |
217 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 246 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
218 EXPECT_TRUE(chrome::BrowserIterator().done()); | 247 EXPECT_TRUE(chrome::BrowserIterator().done()); |
219 } | 248 } |
220 | 249 |
221 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, | 250 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
222 TestShutdownMoreThanOnce) { | 251 TestShutdownMoreThanOnce) { |
223 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); | 252 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); |
224 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 253 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
225 browser(), embedded_test_server()->GetURL("/beforeunload.html"))); | 254 browser(), embedded_test_server()->GetURL("/beforeunload.html"))); |
226 RepeatedNotificationObserver cancel_observer( | 255 RepeatedNotificationObserver cancel_observer( |
227 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); | 256 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); |
228 chrome::CloseAllBrowsers(); | 257 chrome::CloseAllBrowsersAndQuit(); |
229 chrome::CloseAllBrowsers(); | 258 chrome::CloseAllBrowsersAndQuit(); |
230 ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose()); | 259 ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose()); |
231 cancel_observer.Wait(); | 260 cancel_observer.Wait(); |
232 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 261 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
233 EXPECT_EQ(1, browser()->tab_strip_model()->count()); | 262 EXPECT_EQ(1, browser()->tab_strip_model()->count()); |
234 | 263 |
235 RepeatedNotificationObserver close_observer( | 264 RepeatedNotificationObserver close_observer( |
236 chrome::NOTIFICATION_BROWSER_CLOSED, 1); | 265 chrome::NOTIFICATION_BROWSER_CLOSED, 1); |
237 chrome::CloseAllBrowsers(); | 266 chrome::CloseAllBrowsersAndQuit(); |
238 chrome::CloseAllBrowsers(); | 267 chrome::CloseAllBrowsersAndQuit(); |
239 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); | 268 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); |
240 close_observer.Wait(); | 269 close_observer.Wait(); |
241 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 270 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
242 EXPECT_TRUE(chrome::BrowserIterator().done()); | 271 EXPECT_TRUE(chrome::BrowserIterator().done()); |
243 } | 272 } |
244 | 273 |
245 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, PRE_TestSessionRestore) { | 274 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, PRE_TestSessionRestore) { |
246 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); | 275 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); |
247 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 276 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
248 browser(), embedded_test_server()->GetURL("/beforeunload.html"))); | 277 browser(), embedded_test_server()->GetURL("/beforeunload.html"))); |
249 AddBlankTabAndShow(browser()); | 278 AddBlankTabAndShow(browser()); |
250 ASSERT_NO_FATAL_FAILURE( | 279 ASSERT_NO_FATAL_FAILURE( |
251 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIAboutURL))); | 280 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIAboutURL))); |
252 RepeatedNotificationObserver cancel_observer( | 281 RepeatedNotificationObserver cancel_observer( |
253 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); | 282 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); |
254 chrome::CloseAllBrowsers(); | 283 chrome::CloseAllBrowsersAndQuit(); |
255 ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose()); | 284 ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose()); |
256 cancel_observer.Wait(); | 285 cancel_observer.Wait(); |
257 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 286 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
258 | 287 |
259 browser()->tab_strip_model() | 288 browser()->tab_strip_model() |
260 ->CloseWebContentsAt(1, TabStripModel::CLOSE_USER_GESTURE); | 289 ->CloseWebContentsAt(1, TabStripModel::CLOSE_USER_GESTURE); |
261 content::TestNavigationObserver navigation_observer( | 290 content::TestNavigationObserver navigation_observer( |
262 browser()->tab_strip_model()->GetActiveWebContents(), 1); | 291 browser()->tab_strip_model()->GetActiveWebContents(), 1); |
263 ASSERT_NO_FATAL_FAILURE( | 292 ASSERT_NO_FATAL_FAILURE( |
264 NavigateToURLWithDisposition(browser(), | 293 NavigateToURLWithDisposition(browser(), |
265 GURL(chrome::kChromeUIVersionURL), | 294 GURL(chrome::kChromeUIVersionURL), |
266 CURRENT_TAB, | 295 CURRENT_TAB, |
267 ui_test_utils::BROWSER_TEST_NONE)); | 296 ui_test_utils::BROWSER_TEST_NONE)); |
268 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); | 297 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); |
269 navigation_observer.Wait(); | 298 navigation_observer.Wait(); |
270 | 299 |
271 RepeatedNotificationObserver close_observer( | 300 RepeatedNotificationObserver close_observer( |
272 chrome::NOTIFICATION_BROWSER_CLOSED, 1); | 301 chrome::NOTIFICATION_BROWSER_CLOSED, 1); |
273 chrome::CloseAllBrowsers(); | 302 chrome::CloseAllBrowsersAndQuit(); |
274 close_observer.Wait(); | 303 close_observer.Wait(); |
275 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 304 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
276 EXPECT_TRUE(chrome::BrowserIterator().done()); | 305 EXPECT_TRUE(chrome::BrowserIterator().done()); |
277 } | 306 } |
278 | 307 |
279 // Test that the tab closed after the aborted shutdown attempt is not re-opened | 308 // Test that the tab closed after the aborted shutdown attempt is not re-opened |
280 // when restoring the session. | 309 // when restoring the session. |
281 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, TestSessionRestore) { | 310 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, TestSessionRestore) { |
282 // The testing framework launches Chrome with about:blank as args. | 311 // The testing framework launches Chrome with about:blank as args. |
283 EXPECT_EQ(2, browser()->tab_strip_model()->count()); | 312 EXPECT_EQ(2, browser()->tab_strip_model()->count()); |
(...skipping 10 matching lines...) Expand all Loading... | |
294 browsers_.push_back(CreateBrowser(browser()->profile())); | 323 browsers_.push_back(CreateBrowser(browser()->profile())); |
295 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 324 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
296 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); | 325 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); |
297 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 326 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
298 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); | 327 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); |
299 | 328 |
300 // Cancel shutdown on the first beforeunload event. | 329 // Cancel shutdown on the first beforeunload event. |
301 { | 330 { |
302 RepeatedNotificationObserver cancel_observer( | 331 RepeatedNotificationObserver cancel_observer( |
303 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); | 332 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); |
304 chrome::CloseAllBrowsers(); | 333 chrome::CloseAllBrowsersAndQuit(); |
305 ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose()); | 334 ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose()); |
306 cancel_observer.Wait(); | 335 cancel_observer.Wait(); |
307 } | 336 } |
308 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 337 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
309 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); | 338 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); |
310 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); | 339 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); |
311 | 340 |
312 // Cancel shutdown on the second beforeunload event. | 341 // Cancel shutdown on the second beforeunload event. |
313 { | 342 { |
314 RepeatedNotificationObserver cancel_observer( | 343 RepeatedNotificationObserver cancel_observer( |
315 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2); | 344 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2); |
316 chrome::CloseAllBrowsers(); | 345 chrome::CloseAllBrowsersAndQuit(); |
317 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); | 346 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); |
318 ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose()); | 347 ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose()); |
319 cancel_observer.Wait(); | 348 cancel_observer.Wait(); |
320 } | 349 } |
321 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 350 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
322 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); | 351 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); |
323 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); | 352 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); |
324 | 353 |
325 // Allow shutdown for both beforeunload events. | 354 // Allow shutdown for both beforeunload events. |
326 RepeatedNotificationObserver close_observer( | 355 RepeatedNotificationObserver close_observer( |
327 chrome::NOTIFICATION_BROWSER_CLOSED, 2); | 356 chrome::NOTIFICATION_BROWSER_CLOSED, 2); |
328 chrome::CloseAllBrowsers(); | 357 chrome::CloseAllBrowsersAndQuit(); |
329 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); | 358 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); |
330 close_observer.Wait(); | 359 close_observer.Wait(); |
331 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 360 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
332 EXPECT_TRUE(chrome::BrowserIterator().done()); | 361 EXPECT_TRUE(chrome::BrowserIterator().done()); |
333 } | 362 } |
334 | 363 |
335 // Test that tabs in the same window with a beforeunload event that hangs are | 364 // Test that tabs in the same window with a beforeunload event that hangs are |
336 // treated the same as the user accepting the close, but do not close the tab | 365 // treated the same as the user accepting the close, but do not close the tab |
337 // early. | 366 // early. |
338 // Test is flaky on windows, disabled. See http://crbug.com/276366 | 367 // Test is flaky on windows, disabled. See http://crbug.com/276366 |
(...skipping 11 matching lines...) Expand all Loading... | |
350 browsers_[0], embedded_test_server()->GetURL("/beforeunload_hang.html"))); | 379 browsers_[0], embedded_test_server()->GetURL("/beforeunload_hang.html"))); |
351 AddBlankTabAndShow(browsers_[0]); | 380 AddBlankTabAndShow(browsers_[0]); |
352 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 381 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
353 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); | 382 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); |
354 AddBlankTabAndShow(browsers_[0]); | 383 AddBlankTabAndShow(browsers_[0]); |
355 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 384 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
356 browsers_[0], embedded_test_server()->GetURL("/beforeunload_hang.html"))); | 385 browsers_[0], embedded_test_server()->GetURL("/beforeunload_hang.html"))); |
357 | 386 |
358 RepeatedNotificationObserver cancel_observer( | 387 RepeatedNotificationObserver cancel_observer( |
359 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); | 388 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); |
360 chrome::CloseAllBrowsers(); | 389 chrome::CloseAllBrowsersAndQuit(); |
361 ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose()); | 390 ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose()); |
362 cancel_observer.Wait(); | 391 cancel_observer.Wait(); |
363 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 392 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
364 // All tabs should still be open. | 393 // All tabs should still be open. |
365 EXPECT_EQ(3, browsers_[0]->tab_strip_model()->count()); | 394 EXPECT_EQ(3, browsers_[0]->tab_strip_model()->count()); |
366 | 395 |
367 RepeatedNotificationObserver close_observer( | 396 RepeatedNotificationObserver close_observer( |
368 chrome::NOTIFICATION_BROWSER_CLOSED, 1); | 397 chrome::NOTIFICATION_BROWSER_CLOSED, 1); |
369 chrome::CloseAllBrowsers(); | 398 chrome::CloseAllBrowsersAndQuit(); |
370 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); | 399 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); |
371 close_observer.Wait(); | 400 close_observer.Wait(); |
372 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 401 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
373 EXPECT_TRUE(chrome::BrowserIterator().done()); | 402 EXPECT_TRUE(chrome::BrowserIterator().done()); |
374 } | 403 } |
375 | 404 |
376 // Test that tabs in different windows with a beforeunload event that hangs are | 405 // Test that tabs in different windows with a beforeunload event that hangs are |
377 // treated the same as the user accepting the close, but do not close the tab | 406 // treated the same as the user accepting the close, but do not close the tab |
378 // early. | 407 // early. |
379 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, | 408 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
380 TestHangInBeforeUnloadMultipleWindows) { | 409 TestHangInBeforeUnloadMultipleWindows) { |
381 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); | 410 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); |
382 browsers_.push_back(CreateBrowser(browser()->profile())); | 411 browsers_.push_back(CreateBrowser(browser()->profile())); |
383 browsers_.push_back(CreateBrowser(browser()->profile())); | 412 browsers_.push_back(CreateBrowser(browser()->profile())); |
384 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 413 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
385 browsers_[0], embedded_test_server()->GetURL("/beforeunload_hang.html"))); | 414 browsers_[0], embedded_test_server()->GetURL("/beforeunload_hang.html"))); |
386 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 415 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
387 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); | 416 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); |
388 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 417 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
389 browsers_[2], embedded_test_server()->GetURL("/beforeunload_hang.html"))); | 418 browsers_[2], embedded_test_server()->GetURL("/beforeunload_hang.html"))); |
390 | 419 |
391 RepeatedNotificationObserver cancel_observer( | 420 RepeatedNotificationObserver cancel_observer( |
392 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2); | 421 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2); |
393 chrome::CloseAllBrowsers(); | 422 chrome::CloseAllBrowsersAndQuit(); |
394 ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose()); | 423 ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose()); |
395 cancel_observer.Wait(); | 424 cancel_observer.Wait(); |
396 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 425 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
397 // All windows should still be open. | 426 // All windows should still be open. |
398 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); | 427 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); |
399 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); | 428 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); |
400 EXPECT_EQ(1, browsers_[2]->tab_strip_model()->count()); | 429 EXPECT_EQ(1, browsers_[2]->tab_strip_model()->count()); |
401 | 430 |
402 RepeatedNotificationObserver close_observer( | 431 RepeatedNotificationObserver close_observer( |
403 chrome::NOTIFICATION_BROWSER_CLOSED, 3); | 432 chrome::NOTIFICATION_BROWSER_CLOSED, 3); |
404 chrome::CloseAllBrowsers(); | 433 chrome::CloseAllBrowsersAndQuit(); |
405 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); | 434 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); |
406 close_observer.Wait(); | 435 close_observer.Wait(); |
407 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 436 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
408 EXPECT_TRUE(chrome::BrowserIterator().done()); | 437 EXPECT_TRUE(chrome::BrowserIterator().done()); |
409 } | 438 } |
410 | 439 |
411 // Test that a window created during shutdown is closed. | 440 // Test that a window created during shutdown is closed. |
412 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, | 441 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
413 TestAddWindowDuringShutdown) { | 442 TestAddWindowDuringShutdown) { |
414 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); | 443 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); |
415 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 444 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
416 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); | 445 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); |
417 | 446 |
418 RepeatedNotificationObserver close_observer( | 447 RepeatedNotificationObserver close_observer( |
419 chrome::NOTIFICATION_BROWSER_CLOSED, 2); | 448 chrome::NOTIFICATION_BROWSER_CLOSED, 2); |
420 chrome::CloseAllBrowsers(); | 449 chrome::CloseAllBrowsersAndQuit(); |
421 browsers_.push_back(CreateBrowser(browser()->profile())); | 450 browsers_.push_back(CreateBrowser(browser()->profile())); |
422 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); | 451 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); |
423 close_observer.Wait(); | 452 close_observer.Wait(); |
424 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 453 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
425 EXPECT_TRUE(chrome::BrowserIterator().done()); | 454 EXPECT_TRUE(chrome::BrowserIterator().done()); |
426 } | 455 } |
427 | 456 |
428 // Test that a window created during shutdown with a beforeunload handler can | 457 // Test that a window created during shutdown with a beforeunload handler can |
429 // cancel the shutdown. | 458 // cancel the shutdown. |
430 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, | 459 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
431 TestAddWindowWithBeforeUnloadDuringShutdown) { | 460 TestAddWindowWithBeforeUnloadDuringShutdown) { |
432 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); | 461 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); |
433 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 462 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
434 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); | 463 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); |
435 | 464 |
436 RepeatedNotificationObserver cancel_observer( | 465 RepeatedNotificationObserver cancel_observer( |
437 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2); | 466 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2); |
438 chrome::CloseAllBrowsers(); | 467 chrome::CloseAllBrowsersAndQuit(); |
439 browsers_.push_back(CreateBrowser(browser()->profile())); | 468 browsers_.push_back(CreateBrowser(browser()->profile())); |
440 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 469 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
441 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); | 470 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); |
442 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); | 471 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); |
443 ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose()); | 472 ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose()); |
444 cancel_observer.Wait(); | 473 cancel_observer.Wait(); |
445 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 474 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
446 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); | 475 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); |
447 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); | 476 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); |
448 | 477 |
449 // Allow shutdown for both beforeunload dialogs. | 478 // Allow shutdown for both beforeunload dialogs. |
450 RepeatedNotificationObserver close_observer( | 479 RepeatedNotificationObserver close_observer( |
451 chrome::NOTIFICATION_BROWSER_CLOSED, 2); | 480 chrome::NOTIFICATION_BROWSER_CLOSED, 2); |
452 chrome::CloseAllBrowsers(); | 481 chrome::CloseAllBrowsersAndQuit(); |
453 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); | 482 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); |
454 close_observer.Wait(); | 483 close_observer.Wait(); |
455 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 484 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
456 EXPECT_TRUE(chrome::BrowserIterator().done()); | 485 EXPECT_TRUE(chrome::BrowserIterator().done()); |
457 } | 486 } |
458 | 487 |
459 // Test that tabs added during shutdown are closed. | 488 // Test that tabs added during shutdown are closed. |
460 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, | 489 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
461 TestAddTabDuringShutdown) { | 490 TestAddTabDuringShutdown) { |
462 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); | 491 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); |
463 browsers_.push_back(CreateBrowser(browser()->profile())); | 492 browsers_.push_back(CreateBrowser(browser()->profile())); |
464 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 493 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
465 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); | 494 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); |
466 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 495 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
467 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); | 496 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); |
468 | 497 |
469 RepeatedNotificationObserver close_observer( | 498 RepeatedNotificationObserver close_observer( |
470 chrome::NOTIFICATION_BROWSER_CLOSED, 2); | 499 chrome::NOTIFICATION_BROWSER_CLOSED, 2); |
471 chrome::CloseAllBrowsers(); | 500 chrome::CloseAllBrowsersAndQuit(); |
472 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); | 501 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); |
473 AddBlankTabAndShow(browsers_[0]); | 502 AddBlankTabAndShow(browsers_[0]); |
474 AddBlankTabAndShow(browsers_[1]); | 503 AddBlankTabAndShow(browsers_[1]); |
475 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); | 504 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); |
476 close_observer.Wait(); | 505 close_observer.Wait(); |
477 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 506 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
478 EXPECT_TRUE(chrome::BrowserIterator().done()); | 507 EXPECT_TRUE(chrome::BrowserIterator().done()); |
479 } | 508 } |
480 | 509 |
481 // Test that tabs created during shutdown with beforeunload handlers can cancel | 510 // Test that tabs created during shutdown with beforeunload handlers can cancel |
482 // the shutdown. | 511 // the shutdown. |
483 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, | 512 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
484 TestAddTabWithBeforeUnloadDuringShutdown) { | 513 TestAddTabWithBeforeUnloadDuringShutdown) { |
485 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); | 514 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); |
486 browsers_.push_back(CreateBrowser(browser()->profile())); | 515 browsers_.push_back(CreateBrowser(browser()->profile())); |
487 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 516 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
488 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); | 517 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); |
489 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 518 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
490 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); | 519 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); |
491 RepeatedNotificationObserver cancel_observer( | 520 RepeatedNotificationObserver cancel_observer( |
492 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2); | 521 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2); |
493 chrome::CloseAllBrowsers(); | 522 chrome::CloseAllBrowsersAndQuit(); |
494 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); | 523 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); |
495 AddBlankTabAndShow(browsers_[0]); | 524 AddBlankTabAndShow(browsers_[0]); |
496 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 525 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
497 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); | 526 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); |
498 AddBlankTabAndShow(browsers_[1]); | 527 AddBlankTabAndShow(browsers_[1]); |
499 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 528 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
500 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); | 529 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); |
501 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); | 530 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); |
502 ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose()); | 531 ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose()); |
503 cancel_observer.Wait(); | 532 cancel_observer.Wait(); |
504 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 533 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
505 EXPECT_EQ(2, browsers_[0]->tab_strip_model()->count()); | 534 EXPECT_EQ(2, browsers_[0]->tab_strip_model()->count()); |
506 EXPECT_EQ(2, browsers_[1]->tab_strip_model()->count()); | 535 EXPECT_EQ(2, browsers_[1]->tab_strip_model()->count()); |
507 | 536 |
508 RepeatedNotificationObserver close_observer( | 537 RepeatedNotificationObserver close_observer( |
509 chrome::NOTIFICATION_BROWSER_CLOSED, 2); | 538 chrome::NOTIFICATION_BROWSER_CLOSED, 2); |
510 chrome::CloseAllBrowsers(); | 539 chrome::CloseAllBrowsersAndQuit(); |
511 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); | 540 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); |
512 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); | 541 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); |
513 | 542 |
514 close_observer.Wait(); | 543 close_observer.Wait(); |
515 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 544 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
516 EXPECT_TRUE(chrome::BrowserIterator().done()); | 545 EXPECT_TRUE(chrome::BrowserIterator().done()); |
517 } | 546 } |
518 | 547 |
519 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, | 548 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
520 TestCloseTabDuringShutdown) { | 549 TestCloseTabDuringShutdown) { |
521 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); | 550 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); |
522 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 551 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
523 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); | 552 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); |
524 RepeatedNotificationObserver cancel_observer( | 553 RepeatedNotificationObserver cancel_observer( |
525 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); | 554 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); |
526 chrome::CloseAllBrowsers(); | 555 chrome::CloseAllBrowsersAndQuit(); |
527 | 556 |
528 browsers_.push_back(CreateBrowser(browser()->profile())); | 557 browsers_.push_back(CreateBrowser(browser()->profile())); |
529 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 558 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
530 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); | 559 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); |
531 browsers_[1]->tab_strip_model()->CloseAllTabs(); | 560 browsers_[1]->tab_strip_model()->CloseAllTabs(); |
532 ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose()); | 561 ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose()); |
533 ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose()); | 562 ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose()); |
534 cancel_observer.Wait(); | 563 cancel_observer.Wait(); |
535 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 564 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
536 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); | 565 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); |
537 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); | 566 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); |
538 | 567 |
539 RepeatedNotificationObserver close_observer( | 568 RepeatedNotificationObserver close_observer( |
540 chrome::NOTIFICATION_BROWSER_CLOSED, 2); | 569 chrome::NOTIFICATION_BROWSER_CLOSED, 2); |
541 chrome::CloseAllBrowsers(); | 570 chrome::CloseAllBrowsersAndQuit(); |
542 browsers_[1]->tab_strip_model()->CloseAllTabs(); | 571 browsers_[1]->tab_strip_model()->CloseAllTabs(); |
543 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); | 572 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); |
544 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); | 573 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); |
545 | 574 |
546 close_observer.Wait(); | 575 close_observer.Wait(); |
547 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 576 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
548 EXPECT_TRUE(chrome::BrowserIterator().done()); | 577 EXPECT_TRUE(chrome::BrowserIterator().done()); |
549 } | 578 } |
550 | 579 |
551 // Test is flaky on windows, disabled. See http://crbug.com/276366 | 580 // Test is flaky on windows, disabled. See http://crbug.com/276366 |
552 #if defined(OS_WIN) | 581 #if defined(OS_WIN) |
553 #define MAYBE_TestOpenAndCloseWindowDuringShutdown \ | 582 #define MAYBE_TestOpenAndCloseWindowDuringShutdown \ |
554 DISABLED_TestOpenAndCloseWindowDuringShutdown | 583 DISABLED_TestOpenAndCloseWindowDuringShutdown |
555 #else | 584 #else |
556 #define MAYBE_TestOpenAndCloseWindowDuringShutdown \ | 585 #define MAYBE_TestOpenAndCloseWindowDuringShutdown \ |
557 TestOpenAndCloseWindowDuringShutdown | 586 TestOpenAndCloseWindowDuringShutdown |
558 #endif | 587 #endif |
559 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, | 588 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
560 MAYBE_TestOpenAndCloseWindowDuringShutdown) { | 589 MAYBE_TestOpenAndCloseWindowDuringShutdown) { |
561 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); | 590 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); |
562 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 591 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
563 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); | 592 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); |
564 RepeatedNotificationObserver cancel_observer( | 593 RepeatedNotificationObserver cancel_observer( |
565 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2); | 594 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 2); |
566 chrome::CloseAllBrowsers(); | 595 chrome::CloseAllBrowsersAndQuit(); |
567 | 596 |
568 browsers_.push_back(CreateBrowser(browser()->profile())); | 597 browsers_.push_back(CreateBrowser(browser()->profile())); |
569 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 598 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
570 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); | 599 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); |
571 ASSERT_FALSE(browsers_[1]->ShouldCloseWindow()); | 600 ASSERT_FALSE(browsers_[1]->ShouldCloseWindow()); |
572 ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose()); | 601 ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose()); |
573 ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose()); | 602 ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose()); |
574 cancel_observer.Wait(); | 603 cancel_observer.Wait(); |
575 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 604 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
576 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); | 605 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); |
577 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); | 606 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); |
578 | 607 |
579 RepeatedNotificationObserver close_observer( | 608 RepeatedNotificationObserver close_observer( |
580 chrome::NOTIFICATION_BROWSER_CLOSED, 2); | 609 chrome::NOTIFICATION_BROWSER_CLOSED, 2); |
581 chrome::CloseAllBrowsers(); | 610 chrome::CloseAllBrowsersAndQuit(); |
582 ASSERT_FALSE(browsers_[1]->ShouldCloseWindow()); | 611 ASSERT_FALSE(browsers_[1]->ShouldCloseWindow()); |
583 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); | 612 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); |
584 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); | 613 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); |
585 | 614 |
586 close_observer.Wait(); | 615 close_observer.Wait(); |
587 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 616 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
588 EXPECT_TRUE(chrome::BrowserIterator().done()); | 617 EXPECT_TRUE(chrome::BrowserIterator().done()); |
589 } | 618 } |
590 | 619 |
591 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, | 620 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerBrowserTest, |
592 TestCloseWindowDuringShutdown) { | 621 TestCloseWindowDuringShutdown) { |
593 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); | 622 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); |
594 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 623 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
595 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); | 624 browsers_[0], embedded_test_server()->GetURL("/beforeunload.html"))); |
596 browsers_.push_back(CreateBrowser(browser()->profile())); | 625 browsers_.push_back(CreateBrowser(browser()->profile())); |
597 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( | 626 ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
598 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); | 627 browsers_[1], embedded_test_server()->GetURL("/beforeunload.html"))); |
599 RepeatedNotificationObserver cancel_observer( | 628 RepeatedNotificationObserver cancel_observer( |
600 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); | 629 chrome::NOTIFICATION_BROWSER_CLOSE_CANCELLED, 1); |
601 chrome::CloseAllBrowsers(); | 630 chrome::CloseAllBrowsersAndQuit(); |
602 | 631 |
603 ASSERT_FALSE(browsers_[0]->ShouldCloseWindow()); | 632 ASSERT_FALSE(browsers_[0]->ShouldCloseWindow()); |
604 ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose()); | 633 ASSERT_NO_FATAL_FAILURE(dialogs_.CancelClose()); |
605 cancel_observer.Wait(); | 634 cancel_observer.Wait(); |
606 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | 635 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); |
607 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); | 636 EXPECT_EQ(1, browsers_[0]->tab_strip_model()->count()); |
608 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); | 637 EXPECT_EQ(1, browsers_[1]->tab_strip_model()->count()); |
609 | 638 |
610 RepeatedNotificationObserver close_observer( | 639 RepeatedNotificationObserver close_observer( |
611 chrome::NOTIFICATION_BROWSER_CLOSED, 2); | 640 chrome::NOTIFICATION_BROWSER_CLOSED, 2); |
612 chrome::CloseAllBrowsers(); | 641 chrome::CloseAllBrowsersAndQuit(); |
613 ASSERT_FALSE(browsers_[0]->ShouldCloseWindow()); | 642 ASSERT_FALSE(browsers_[0]->ShouldCloseWindow()); |
614 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); | 643 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); |
615 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); | 644 ASSERT_NO_FATAL_FAILURE(dialogs_.AcceptClose()); |
616 | 645 |
617 close_observer.Wait(); | 646 close_observer.Wait(); |
618 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 647 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
619 EXPECT_TRUE(chrome::BrowserIterator().done()); | 648 EXPECT_TRUE(chrome::BrowserIterator().done()); |
620 } | 649 } |
621 | 650 |
622 // Test shutdown with a download in progress. | 651 // Test shutdown with a download in progress. |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
711 TestBrowserCloseManager::AttemptClose( | 740 TestBrowserCloseManager::AttemptClose( |
712 TestBrowserCloseManager::USER_CHOICE_USER_ALLOWS_CLOSE); | 741 TestBrowserCloseManager::USER_CHOICE_USER_ALLOWS_CLOSE); |
713 close_observer.Wait(); | 742 close_observer.Wait(); |
714 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | 743 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); |
715 EXPECT_TRUE(chrome::BrowserIterator().done()); | 744 EXPECT_TRUE(chrome::BrowserIterator().done()); |
716 } | 745 } |
717 | 746 |
718 INSTANTIATE_TEST_CASE_P(BrowserCloseManagerBrowserTest, | 747 INSTANTIATE_TEST_CASE_P(BrowserCloseManagerBrowserTest, |
719 BrowserCloseManagerBrowserTest, | 748 BrowserCloseManagerBrowserTest, |
720 testing::Bool()); | 749 testing::Bool()); |
750 | |
751 class BrowserCloseManagerWithBackgroundModeBrowserTest | |
752 : public BrowserCloseManagerBrowserTest { | |
753 public: | |
754 virtual void SetUpOnMainThread() OVERRIDE { | |
755 BrowserCloseManagerBrowserTest::SetUpOnMainThread(); | |
756 g_browser_process->set_background_mode_manager_for_test( | |
757 scoped_ptr<BackgroundModeManager>(new FakeBackgroundModeManager)); | |
758 } | |
759 }; | |
760 | |
761 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerWithBackgroundModeBrowserTest, | |
762 CloseAllBrowsersWithBackgroundMode) { | |
763 EXPECT_FALSE(static_cast<FakeBackgroundModeManager*>( | |
764 g_browser_process->background_mode_manager()) | |
765 ->IsBackgroundModeSuspended()); | |
766 Profile* profile = browser()->profile(); | |
767 { | |
768 RepeatedNotificationObserver close_observer( | |
769 chrome::NOTIFICATION_BROWSER_CLOSED, 1); | |
770 chrome::StartKeepAlive(); | |
771 chrome::CloseAllBrowsers(); | |
772 close_observer.Wait(); | |
773 } | |
774 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | |
775 EXPECT_TRUE(chrome::BrowserIterator().done()); | |
776 EXPECT_TRUE(static_cast<FakeBackgroundModeManager*>( | |
benwells
2013/10/21 05:57:22
Nit: factor out this horribleness into IsBackgroun
Sam McNally
2013/10/21 06:45:35
Done.
benwells
2013/10/21 21:12:51
You missed this one.
Sam McNally
2013/10/22 00:16:27
Done.
| |
777 g_browser_process->background_mode_manager()) | |
778 ->IsBackgroundModeSuspended()); | |
779 | |
780 // Background mode should be resumed when a new browser window is opened. | |
781 ui_test_utils::BrowserAddedObserver new_browser_observer; | |
782 chrome::NewEmptyWindow(profile, chrome::HOST_DESKTOP_TYPE_NATIVE); | |
783 new_browser_observer.WaitForSingleNewBrowser(); | |
784 chrome::EndKeepAlive(); | |
785 EXPECT_FALSE(static_cast<FakeBackgroundModeManager*>( | |
786 g_browser_process->background_mode_manager()) | |
787 ->IsBackgroundModeSuspended()); | |
788 RepeatedNotificationObserver close_observer( | |
789 chrome::NOTIFICATION_BROWSER_CLOSED, 1); | |
790 | |
791 // Background mode should not be suspended when quitting. | |
792 chrome::CloseAllBrowsersAndQuit(); | |
793 close_observer.Wait(); | |
794 EXPECT_TRUE(browser_shutdown::IsTryingToQuit()); | |
795 EXPECT_TRUE(chrome::BrowserIterator().done()); | |
796 EXPECT_FALSE(static_cast<FakeBackgroundModeManager*>( | |
797 g_browser_process->background_mode_manager()) | |
798 ->IsBackgroundModeSuspended()); | |
799 | |
800 } | |
801 | |
802 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerWithBackgroundModeBrowserTest, | |
803 CloseSingleBrowserWithBackgroundMode) { | |
804 RepeatedNotificationObserver close_observer( | |
805 chrome::NOTIFICATION_BROWSER_CLOSED, 1); | |
806 EXPECT_FALSE(static_cast<FakeBackgroundModeManager*>( | |
807 g_browser_process->background_mode_manager()) | |
808 ->IsBackgroundModeSuspended()); | |
809 browser()->window()->Close(); | |
810 close_observer.Wait(); | |
811 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | |
812 EXPECT_TRUE(chrome::BrowserIterator().done()); | |
813 EXPECT_FALSE(static_cast<FakeBackgroundModeManager*>( | |
814 g_browser_process->background_mode_manager()) | |
815 ->IsBackgroundModeSuspended()); | |
816 } | |
817 | |
818 IN_PROC_BROWSER_TEST_P(BrowserCloseManagerWithBackgroundModeBrowserTest, | |
819 CloseAllBrowsersWithNoOpenBrowsersWithBackgroundMode) { | |
820 RepeatedNotificationObserver close_observer( | |
821 chrome::NOTIFICATION_BROWSER_CLOSED, 1); | |
822 EXPECT_FALSE(static_cast<FakeBackgroundModeManager*>( | |
823 g_browser_process->background_mode_manager()) | |
824 ->IsBackgroundModeSuspended()); | |
825 chrome::StartKeepAlive(); | |
826 browser()->window()->Close(); | |
827 close_observer.Wait(); | |
828 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | |
829 EXPECT_TRUE(chrome::BrowserIterator().done()); | |
830 EXPECT_FALSE(static_cast<FakeBackgroundModeManager*>( | |
831 g_browser_process->background_mode_manager()) | |
832 ->IsBackgroundModeSuspended()); | |
833 | |
834 chrome::CloseAllBrowsers(); | |
835 EXPECT_FALSE(browser_shutdown::IsTryingToQuit()); | |
836 EXPECT_TRUE(chrome::BrowserIterator().done()); | |
837 EXPECT_TRUE(static_cast<FakeBackgroundModeManager*>( | |
838 g_browser_process->background_mode_manager()) | |
839 ->IsBackgroundModeSuspended()); | |
840 } | |
841 | |
842 INSTANTIATE_TEST_CASE_P(BrowserCloseManagerWithBackgroundModeBrowserTest, | |
843 BrowserCloseManagerWithBackgroundModeBrowserTest, | |
844 testing::Bool()); | |
OLD | NEW |