OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "base/command_line.h" | 5 #include "base/command_line.h" |
6 #include "base/file_path.h" | 6 #include "base/file_path.h" |
7 #include "base/utf_string_conversions.h" | 7 #include "base/utf_string_conversions.h" |
8 #include "chrome/browser/browser_process.h" | 8 #include "chrome/browser/browser_process.h" |
9 #include "chrome/browser/defaults.h" | 9 #include "chrome/browser/defaults.h" |
10 #include "chrome/browser/first_run/first_run.h" | 10 #include "chrome/browser/first_run/first_run.h" |
11 #include "chrome/browser/profiles/profile.h" | 11 #include "chrome/browser/profiles/profile.h" |
12 #include "chrome/browser/profiles/profile_manager.h" | 12 #include "chrome/browser/profiles/profile_manager.h" |
13 #include "chrome/browser/sessions/session_restore.h" | 13 #include "chrome/browser/sessions/session_restore.h" |
14 #include "chrome/browser/sessions/session_service.h" | 14 #include "chrome/browser/sessions/session_service.h" |
15 #include "chrome/browser/sessions/session_service_factory.h" | 15 #include "chrome/browser/sessions/session_service_factory.h" |
16 #include "chrome/browser/sessions/tab_restore_service.h" | 16 #include "chrome/browser/sessions/tab_restore_service.h" |
17 #include "chrome/browser/sessions/tab_restore_service_factory.h" | 17 #include "chrome/browser/sessions/tab_restore_service_factory.h" |
18 #include "chrome/browser/ui/browser.h" | 18 #include "chrome/browser/ui/browser.h" |
19 #include "chrome/browser/ui/browser_commands.h" | 19 #include "chrome/browser/ui/browser_commands.h" |
20 #include "chrome/browser/ui/browser_list.h" | 20 #include "chrome/browser/ui/browser_list.h" |
| 21 #include "chrome/browser/ui/browser_tabstrip.h" |
21 #include "chrome/browser/ui/browser_window.h" | 22 #include "chrome/browser/ui/browser_window.h" |
22 #include "chrome/browser/ui/tabs/tab_strip_model.h" | 23 #include "chrome/browser/ui/tabs/tab_strip_model.h" |
23 #include "chrome/common/chrome_notification_types.h" | 24 #include "chrome/common/chrome_notification_types.h" |
24 #include "chrome/common/chrome_switches.h" | 25 #include "chrome/common/chrome_switches.h" |
25 #include "chrome/common/url_constants.h" | 26 #include "chrome/common/url_constants.h" |
26 #include "chrome/test/base/in_process_browser_test.h" | 27 #include "chrome/test/base/in_process_browser_test.h" |
27 #include "chrome/test/base/ui_test_utils.h" | 28 #include "chrome/test/base/ui_test_utils.h" |
28 #include "content/public/browser/navigation_controller.h" | 29 #include "content/public/browser/navigation_controller.h" |
29 #include "content/public/browser/navigation_entry.h" | 30 #include "content/public/browser/navigation_entry.h" |
30 #include "content/public/browser/notification_service.h" | 31 #include "content/public/browser/notification_service.h" |
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
183 CloseBrowserSynchronously(browser()); | 184 CloseBrowserSynchronously(browser()); |
184 | 185 |
185 // Create a new window, which should open NTP. | 186 // Create a new window, which should open NTP. |
186 ui_test_utils::BrowserAddedObserver browser_added_observer; | 187 ui_test_utils::BrowserAddedObserver browser_added_observer; |
187 chrome::NewWindow(incognito_browser); | 188 chrome::NewWindow(incognito_browser); |
188 Browser* new_browser = browser_added_observer.WaitForSingleNewBrowser(); | 189 Browser* new_browser = browser_added_observer.WaitForSingleNewBrowser(); |
189 | 190 |
190 ASSERT_TRUE(new_browser); | 191 ASSERT_TRUE(new_browser); |
191 EXPECT_EQ(1, new_browser->tab_count()); | 192 EXPECT_EQ(1, new_browser->tab_count()); |
192 EXPECT_EQ(GURL(chrome::kChromeUINewTabURL), | 193 EXPECT_EQ(GURL(chrome::kChromeUINewTabURL), |
193 new_browser->GetWebContentsAt(0)->GetURL()); | 194 chrome::GetWebContentsAt(new_browser, 0)->GetURL()); |
194 } | 195 } |
195 #endif // OS_CHROMEOS | 196 #endif // OS_CHROMEOS |
196 | 197 |
197 #if !defined(OS_CHROMEOS) | 198 #if !defined(OS_CHROMEOS) |
198 // This test does not apply to ChromeOS as it does not do session restore when | 199 // This test does not apply to ChromeOS as it does not do session restore when |
199 // a new window is opened. | 200 // a new window is opened. |
200 | 201 |
201 #if defined(OS_LINUX) && defined(TOOLKIT_VIEWS) | 202 #if defined(OS_LINUX) && defined(TOOLKIT_VIEWS) |
202 // Crashes on Linux Views: http://crbug.com/39476 | 203 // Crashes on Linux Views: http://crbug.com/39476 |
203 #define MAYBE_RestoreOnNewWindowWithNoTabbedBrowsers \ | 204 #define MAYBE_RestoreOnNewWindowWithNoTabbedBrowsers \ |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
237 ui_test_utils::BrowserAddedObserver observer; | 238 ui_test_utils::BrowserAddedObserver observer; |
238 chrome::NewWindow(popup); | 239 chrome::NewWindow(popup); |
239 Browser* new_browser = observer.WaitForSingleNewBrowser(); | 240 Browser* new_browser = observer.WaitForSingleNewBrowser(); |
240 | 241 |
241 ASSERT_TRUE(new_browser != NULL); | 242 ASSERT_TRUE(new_browser != NULL); |
242 | 243 |
243 // The browser should only have one tab. | 244 // The browser should only have one tab. |
244 ASSERT_EQ(1, new_browser->tab_count()); | 245 ASSERT_EQ(1, new_browser->tab_count()); |
245 | 246 |
246 // And the first url should be url. | 247 // And the first url should be url. |
247 EXPECT_EQ(url, new_browser->GetWebContentsAt(0)->GetURL()); | 248 EXPECT_EQ(url, chrome::GetWebContentsAt(new_browser, 0)->GetURL()); |
248 } | 249 } |
249 #endif // !OS_CHROMEOS | 250 #endif // !OS_CHROMEOS |
250 | 251 |
251 IN_PROC_BROWSER_TEST_F(SessionRestoreTest, RestoreIndividualTabFromWindow) { | 252 IN_PROC_BROWSER_TEST_F(SessionRestoreTest, RestoreIndividualTabFromWindow) { |
252 GURL url1(ui_test_utils::GetTestUrl( | 253 GURL url1(ui_test_utils::GetTestUrl( |
253 FilePath(FilePath::kCurrentDirectory), | 254 FilePath(FilePath::kCurrentDirectory), |
254 FilePath(FILE_PATH_LITERAL("title1.html")))); | 255 FilePath(FILE_PATH_LITERAL("title1.html")))); |
255 GURL url2(ui_test_utils::GetTestUrl( | 256 GURL url2(ui_test_utils::GetTestUrl( |
256 FilePath(FilePath::kCurrentDirectory), | 257 FilePath(FilePath::kCurrentDirectory), |
257 FilePath(FILE_PATH_LITERAL("title2.html")))); | 258 FilePath(FILE_PATH_LITERAL("title2.html")))); |
258 GURL url3(ui_test_utils::GetTestUrl( | 259 GURL url3(ui_test_utils::GetTestUrl( |
259 FilePath(FilePath::kCurrentDirectory), | 260 FilePath(FilePath::kCurrentDirectory), |
260 FilePath(FILE_PATH_LITERAL("title3.html")))); | 261 FilePath(FILE_PATH_LITERAL("title3.html")))); |
261 | 262 |
262 // Add and navigate three tabs. | 263 // Add and navigate three tabs. |
263 ui_test_utils::NavigateToURL(browser(), url1); | 264 ui_test_utils::NavigateToURL(browser(), url1); |
264 { | 265 { |
265 ui_test_utils::WindowedNotificationObserver observer( | 266 ui_test_utils::WindowedNotificationObserver observer( |
266 content::NOTIFICATION_LOAD_STOP, | 267 content::NOTIFICATION_LOAD_STOP, |
267 content::NotificationService::AllSources()); | 268 content::NotificationService::AllSources()); |
268 browser()->AddSelectedTabWithURL(url2, content::PAGE_TRANSITION_LINK); | 269 chrome::AddSelectedTabWithURL(browser(), url2, |
| 270 content::PAGE_TRANSITION_LINK); |
269 observer.Wait(); | 271 observer.Wait(); |
270 } | 272 } |
271 { | 273 { |
272 ui_test_utils::WindowedNotificationObserver observer( | 274 ui_test_utils::WindowedNotificationObserver observer( |
273 content::NOTIFICATION_LOAD_STOP, | 275 content::NOTIFICATION_LOAD_STOP, |
274 content::NotificationService::AllSources()); | 276 content::NotificationService::AllSources()); |
275 browser()->AddSelectedTabWithURL(url3, content::PAGE_TRANSITION_LINK); | 277 chrome::AddSelectedTabWithURL(browser(), url3, |
| 278 content::PAGE_TRANSITION_LINK); |
276 observer.Wait(); | 279 observer.Wait(); |
277 } | 280 } |
278 | 281 |
279 TabRestoreService* service = | 282 TabRestoreService* service = |
280 TabRestoreServiceFactory::GetForProfile(browser()->profile()); | 283 TabRestoreServiceFactory::GetForProfile(browser()->profile()); |
281 service->ClearEntries(); | 284 service->ClearEntries(); |
282 | 285 |
283 browser()->window()->Close(); | 286 browser()->window()->Close(); |
284 | 287 |
285 // Expect a window with three tabs. | 288 // Expect a window with three tabs. |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
360 // open. | 363 // open. |
361 CloseBrowserSynchronously(browser()); | 364 CloseBrowserSynchronously(browser()); |
362 | 365 |
363 // Create a new window, which should trigger session restore. | 366 // Create a new window, which should trigger session restore. |
364 ui_test_utils::BrowserAddedObserver browser_added_observer; | 367 ui_test_utils::BrowserAddedObserver browser_added_observer; |
365 chrome::NewWindow(incognito_browser); | 368 chrome::NewWindow(incognito_browser); |
366 Browser* new_browser = browser_added_observer.WaitForSingleNewBrowser(); | 369 Browser* new_browser = browser_added_observer.WaitForSingleNewBrowser(); |
367 | 370 |
368 // The first tab should have 'url' as its url. | 371 // The first tab should have 'url' as its url. |
369 ASSERT_TRUE(new_browser); | 372 ASSERT_TRUE(new_browser); |
370 EXPECT_EQ(url, new_browser->GetWebContentsAt(0)->GetURL()); | 373 EXPECT_EQ(url, chrome::GetWebContentsAt(new_browser, 0)->GetURL()); |
371 } | 374 } |
372 #endif // !OS_CHROMEOS | 375 #endif // !OS_CHROMEOS |
373 | 376 |
374 IN_PROC_BROWSER_TEST_F(SessionRestoreTest, RestoreForeignTab) { | 377 IN_PROC_BROWSER_TEST_F(SessionRestoreTest, RestoreForeignTab) { |
375 GURL url1("http://google.com"); | 378 GURL url1("http://google.com"); |
376 GURL url2("http://google2.com"); | 379 GURL url2("http://google2.com"); |
377 TabNavigation nav1(0, url1, content::Referrer(), ASCIIToUTF16("one"), | 380 TabNavigation nav1(0, url1, content::Referrer(), ASCIIToUTF16("one"), |
378 std::string(), content::PAGE_TRANSITION_TYPED); | 381 std::string(), content::PAGE_TRANSITION_TYPED); |
379 TabNavigation nav2(0, url2, content::Referrer(), ASCIIToUTF16("two"), | 382 TabNavigation nav2(0, url2, content::Referrer(), ASCIIToUTF16("two"), |
380 std::string(), content::PAGE_TRANSITION_TYPED); | 383 std::string(), content::PAGE_TRANSITION_TYPED); |
381 | 384 |
382 // Set up the restore data. | 385 // Set up the restore data. |
383 SessionTab tab; | 386 SessionTab tab; |
384 tab.tab_visual_index = 0; | 387 tab.tab_visual_index = 0; |
385 tab.current_navigation_index = 1; | 388 tab.current_navigation_index = 1; |
386 tab.pinned = false; | 389 tab.pinned = false; |
387 tab.navigations.push_back(nav1); | 390 tab.navigations.push_back(nav1); |
388 tab.navigations.push_back(nav2); | 391 tab.navigations.push_back(nav2); |
389 | 392 |
390 ASSERT_EQ(1, browser()->tab_count()); | 393 ASSERT_EQ(1, browser()->tab_count()); |
391 | 394 |
392 // Restore in the current tab. | 395 // Restore in the current tab. |
393 { | 396 { |
394 ui_test_utils::WindowedNotificationObserver observer( | 397 ui_test_utils::WindowedNotificationObserver observer( |
395 content::NOTIFICATION_LOAD_STOP, | 398 content::NOTIFICATION_LOAD_STOP, |
396 content::NotificationService::AllSources()); | 399 content::NotificationService::AllSources()); |
397 SessionRestore::RestoreForeignSessionTab( | 400 SessionRestore::RestoreForeignSessionTab( |
398 browser()->GetActiveWebContents(), tab, CURRENT_TAB); | 401 chrome::GetActiveWebContents(browser()), tab, CURRENT_TAB); |
399 observer.Wait(); | 402 observer.Wait(); |
400 } | 403 } |
401 ASSERT_EQ(1, browser()->tab_count()); | 404 ASSERT_EQ(1, browser()->tab_count()); |
402 VerifyNavigationEntries( | 405 VerifyNavigationEntries( |
403 browser()->GetWebContentsAt(0)->GetController(), url1, url2); | 406 chrome::GetWebContentsAt(browser(), 0)->GetController(), url1, url2); |
404 | 407 |
405 // Restore in a new tab. | 408 // Restore in a new tab. |
406 { | 409 { |
407 ui_test_utils::WindowedNotificationObserver observer( | 410 ui_test_utils::WindowedNotificationObserver observer( |
408 content::NOTIFICATION_LOAD_STOP, | 411 content::NOTIFICATION_LOAD_STOP, |
409 content::NotificationService::AllSources()); | 412 content::NotificationService::AllSources()); |
410 SessionRestore::RestoreForeignSessionTab( | 413 SessionRestore::RestoreForeignSessionTab( |
411 browser()->GetActiveWebContents(), tab, NEW_BACKGROUND_TAB); | 414 chrome::GetActiveWebContents(browser()), tab, NEW_BACKGROUND_TAB); |
412 observer.Wait(); | 415 observer.Wait(); |
413 } | 416 } |
414 ASSERT_EQ(2, browser()->tab_count()); | 417 ASSERT_EQ(2, browser()->tab_count()); |
415 ASSERT_EQ(0, browser()->active_index()); | 418 ASSERT_EQ(0, browser()->active_index()); |
416 VerifyNavigationEntries( | 419 VerifyNavigationEntries( |
417 browser()->GetWebContentsAt(1)->GetController(), url1, url2); | 420 chrome::GetWebContentsAt(browser(), 1)->GetController(), url1, url2); |
418 | 421 |
419 // Restore in a new window. | 422 // Restore in a new window. |
420 ui_test_utils::BrowserAddedObserver browser_observer; | 423 ui_test_utils::BrowserAddedObserver browser_observer; |
421 SessionRestore::RestoreForeignSessionTab( | 424 SessionRestore::RestoreForeignSessionTab( |
422 browser()->GetActiveWebContents(), tab, NEW_WINDOW); | 425 chrome::GetActiveWebContents(browser()), tab, NEW_WINDOW); |
423 Browser* new_browser = browser_observer.WaitForSingleNewBrowser(); | 426 Browser* new_browser = browser_observer.WaitForSingleNewBrowser(); |
424 | 427 |
425 ASSERT_EQ(1, new_browser->tab_count()); | 428 ASSERT_EQ(1, new_browser->tab_count()); |
426 VerifyNavigationEntries( | 429 VerifyNavigationEntries( |
427 new_browser->GetWebContentsAt(0)->GetController(), url1, url2); | 430 chrome::GetWebContentsAt(new_browser, 0)->GetController(), url1, url2); |
428 } | 431 } |
429 | 432 |
430 IN_PROC_BROWSER_TEST_F(SessionRestoreTest, RestoreForeignSession) { | 433 IN_PROC_BROWSER_TEST_F(SessionRestoreTest, RestoreForeignSession) { |
431 Profile* profile = browser()->profile(); | 434 Profile* profile = browser()->profile(); |
432 | 435 |
433 GURL url1("http://google.com"); | 436 GURL url1("http://google.com"); |
434 GURL url2("http://google2.com"); | 437 GURL url2("http://google2.com"); |
435 TabNavigation nav1(0, url1, content::Referrer(), ASCIIToUTF16("one"), | 438 TabNavigation nav1(0, url1, content::Referrer(), ASCIIToUTF16("one"), |
436 std::string(), content::PAGE_TRANSITION_TYPED); | 439 std::string(), content::PAGE_TRANSITION_TYPED); |
437 TabNavigation nav2(0, url2, content::Referrer(), ASCIIToUTF16("two"), | 440 TabNavigation nav2(0, url2, content::Referrer(), ASCIIToUTF16("two"), |
(...skipping 18 matching lines...) Expand all Loading... |
456 | 459 |
457 session.push_back(static_cast<const SessionWindow*>(&window)); | 460 session.push_back(static_cast<const SessionWindow*>(&window)); |
458 ui_test_utils::BrowserAddedObserver window_observer; | 461 ui_test_utils::BrowserAddedObserver window_observer; |
459 SessionRestore::RestoreForeignSessionWindows( | 462 SessionRestore::RestoreForeignSessionWindows( |
460 profile, session.begin(), session.end()); | 463 profile, session.begin(), session.end()); |
461 Browser* new_browser = window_observer.WaitForSingleNewBrowser(); | 464 Browser* new_browser = window_observer.WaitForSingleNewBrowser(); |
462 ASSERT_TRUE(new_browser); | 465 ASSERT_TRUE(new_browser); |
463 ASSERT_EQ(2u, BrowserList::size()); | 466 ASSERT_EQ(2u, BrowserList::size()); |
464 ASSERT_EQ(2, new_browser->tab_count()); | 467 ASSERT_EQ(2, new_browser->tab_count()); |
465 | 468 |
466 ASSERT_EQ(url1, new_browser->GetWebContentsAt(0)->GetURL()); | 469 ASSERT_EQ(url1, chrome::GetWebContentsAt(new_browser, 0)->GetURL()); |
467 ASSERT_EQ(url2, new_browser->GetWebContentsAt(1)->GetURL()); | 470 ASSERT_EQ(url2, chrome::GetWebContentsAt(new_browser, 1)->GetURL()); |
468 | 471 |
469 // The SessionWindow destructor deletes the tabs, so we have to clear them | 472 // The SessionWindow destructor deletes the tabs, so we have to clear them |
470 // here to avoid a crash. | 473 // here to avoid a crash. |
471 window.tabs.clear(); | 474 window.tabs.clear(); |
472 } | 475 } |
473 | 476 |
474 IN_PROC_BROWSER_TEST_F(SessionRestoreTest, Basic) { | 477 IN_PROC_BROWSER_TEST_F(SessionRestoreTest, Basic) { |
475 ui_test_utils::NavigateToURL(browser(), url1_); | 478 ui_test_utils::NavigateToURL(browser(), url1_); |
476 ui_test_utils::NavigateToURL(browser(), url2_); | 479 ui_test_utils::NavigateToURL(browser(), url2_); |
477 | 480 |
478 Browser* new_browser = QuitBrowserAndRestore(browser(), 1); | 481 Browser* new_browser = QuitBrowserAndRestore(browser(), 1); |
479 ASSERT_EQ(1u, BrowserList::size()); | 482 ASSERT_EQ(1u, BrowserList::size()); |
480 ASSERT_EQ(url2_, new_browser->GetActiveWebContents()->GetURL()); | 483 ASSERT_EQ(url2_, chrome::GetActiveWebContents(new_browser)->GetURL()); |
481 GoBack(new_browser); | 484 GoBack(new_browser); |
482 ASSERT_EQ(url1_, new_browser->GetActiveWebContents()->GetURL()); | 485 ASSERT_EQ(url1_, chrome::GetActiveWebContents(new_browser)->GetURL()); |
483 } | 486 } |
484 | 487 |
485 IN_PROC_BROWSER_TEST_F(SessionRestoreTest, RestoresForwardAndBackwardNavs) { | 488 IN_PROC_BROWSER_TEST_F(SessionRestoreTest, RestoresForwardAndBackwardNavs) { |
486 ui_test_utils::NavigateToURL(browser(), url1_); | 489 ui_test_utils::NavigateToURL(browser(), url1_); |
487 ui_test_utils::NavigateToURL(browser(), url2_); | 490 ui_test_utils::NavigateToURL(browser(), url2_); |
488 ui_test_utils::NavigateToURL(browser(), url3_); | 491 ui_test_utils::NavigateToURL(browser(), url3_); |
489 | 492 |
490 GoBack(browser()); | 493 GoBack(browser()); |
491 Browser* new_browser = QuitBrowserAndRestore(browser(), 1); | 494 Browser* new_browser = QuitBrowserAndRestore(browser(), 1); |
492 ASSERT_EQ(1u, BrowserList::size()); | 495 ASSERT_EQ(1u, BrowserList::size()); |
493 ASSERT_EQ(url2_, new_browser->GetActiveWebContents()->GetURL()); | 496 ASSERT_EQ(url2_, chrome::GetActiveWebContents(new_browser)->GetURL()); |
494 GoForward(new_browser); | 497 GoForward(new_browser); |
495 ASSERT_EQ(url3_, new_browser->GetActiveWebContents()->GetURL()); | 498 ASSERT_EQ(url3_, chrome::GetActiveWebContents(new_browser)->GetURL()); |
496 GoBack(new_browser); | 499 GoBack(new_browser); |
497 ASSERT_EQ(url2_, new_browser->GetActiveWebContents()->GetURL()); | 500 ASSERT_EQ(url2_, chrome::GetActiveWebContents(new_browser)->GetURL()); |
498 | 501 |
499 // Test renderer-initiated back/forward as well. | 502 // Test renderer-initiated back/forward as well. |
500 GURL go_back_url("javascript:history.back();"); | 503 GURL go_back_url("javascript:history.back();"); |
501 ui_test_utils::NavigateToURL(new_browser, go_back_url); | 504 ui_test_utils::NavigateToURL(new_browser, go_back_url); |
502 ASSERT_EQ(url1_, new_browser->GetActiveWebContents()->GetURL()); | 505 ASSERT_EQ(url1_, chrome::GetActiveWebContents(new_browser)->GetURL()); |
503 } | 506 } |
504 | 507 |
505 // Tests that the SiteInstances used for entries in a restored tab's history | 508 // Tests that the SiteInstances used for entries in a restored tab's history |
506 // are given appropriate max page IDs, so that going back to a restored | 509 // are given appropriate max page IDs, so that going back to a restored |
507 // cross-site page and then forward again works. (Bug 1204135) | 510 // cross-site page and then forward again works. (Bug 1204135) |
508 IN_PROC_BROWSER_TEST_F(SessionRestoreTest, | 511 IN_PROC_BROWSER_TEST_F(SessionRestoreTest, |
509 RestoresCrossSiteForwardAndBackwardNavs) { | 512 RestoresCrossSiteForwardAndBackwardNavs) { |
510 ASSERT_TRUE(test_server()->Start()); | 513 ASSERT_TRUE(test_server()->Start()); |
511 | 514 |
512 GURL cross_site_url(test_server()->GetURL("files/title2.html")); | 515 GURL cross_site_url(test_server()->GetURL("files/title2.html")); |
513 | 516 |
514 // Visit URLs on different sites. | 517 // Visit URLs on different sites. |
515 ui_test_utils::NavigateToURL(browser(), url1_); | 518 ui_test_utils::NavigateToURL(browser(), url1_); |
516 ui_test_utils::NavigateToURL(browser(), cross_site_url); | 519 ui_test_utils::NavigateToURL(browser(), cross_site_url); |
517 ui_test_utils::NavigateToURL(browser(), url2_); | 520 ui_test_utils::NavigateToURL(browser(), url2_); |
518 | 521 |
519 GoBack(browser()); | 522 GoBack(browser()); |
520 Browser* new_browser = QuitBrowserAndRestore(browser(), 1); | 523 Browser* new_browser = QuitBrowserAndRestore(browser(), 1); |
521 ASSERT_EQ(1u, BrowserList::size()); | 524 ASSERT_EQ(1u, BrowserList::size()); |
522 ASSERT_EQ(1, new_browser->tab_count()); | 525 ASSERT_EQ(1, new_browser->tab_count()); |
523 | 526 |
524 // Check that back and forward work as expected. | 527 // Check that back and forward work as expected. |
525 ASSERT_EQ(cross_site_url, new_browser->GetActiveWebContents()->GetURL()); | 528 ASSERT_EQ(cross_site_url, |
| 529 chrome::GetActiveWebContents(new_browser)->GetURL()); |
526 | 530 |
527 GoBack(new_browser); | 531 GoBack(new_browser); |
528 ASSERT_EQ(url1_, new_browser->GetActiveWebContents()->GetURL()); | 532 ASSERT_EQ(url1_, chrome::GetActiveWebContents(new_browser)->GetURL()); |
529 | 533 |
530 GoForward(new_browser); | 534 GoForward(new_browser); |
531 ASSERT_EQ(cross_site_url, new_browser->GetActiveWebContents()->GetURL()); | 535 ASSERT_EQ(cross_site_url, |
| 536 chrome::GetActiveWebContents(new_browser)->GetURL()); |
532 | 537 |
533 // Test renderer-initiated back/forward as well. | 538 // Test renderer-initiated back/forward as well. |
534 GURL go_forward_url("javascript:history.forward();"); | 539 GURL go_forward_url("javascript:history.forward();"); |
535 ui_test_utils::NavigateToURL(new_browser, go_forward_url); | 540 ui_test_utils::NavigateToURL(new_browser, go_forward_url); |
536 ASSERT_EQ(url2_, new_browser->GetActiveWebContents()->GetURL()); | 541 ASSERT_EQ(url2_, chrome::GetActiveWebContents(new_browser)->GetURL()); |
537 } | 542 } |
538 | 543 |
539 IN_PROC_BROWSER_TEST_F(SessionRestoreTest, TwoTabsSecondSelected) { | 544 IN_PROC_BROWSER_TEST_F(SessionRestoreTest, TwoTabsSecondSelected) { |
540 ui_test_utils::NavigateToURL(browser(), url1_); | 545 ui_test_utils::NavigateToURL(browser(), url1_); |
541 | 546 |
542 ui_test_utils::NavigateToURLWithDisposition( | 547 ui_test_utils::NavigateToURLWithDisposition( |
543 browser(), url2_, NEW_FOREGROUND_TAB, | 548 browser(), url2_, NEW_FOREGROUND_TAB, |
544 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); | 549 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); |
545 | 550 |
546 Browser* new_browser = QuitBrowserAndRestore(browser(), 2); | 551 Browser* new_browser = QuitBrowserAndRestore(browser(), 2); |
547 | 552 |
548 ASSERT_EQ(1u, BrowserList::size()); | 553 ASSERT_EQ(1u, BrowserList::size()); |
549 ASSERT_EQ(2, new_browser->tab_count()); | 554 ASSERT_EQ(2, new_browser->tab_count()); |
550 ASSERT_EQ(1, new_browser->active_index()); | 555 ASSERT_EQ(1, new_browser->active_index()); |
551 ASSERT_EQ(url2_, new_browser->GetActiveWebContents()->GetURL()); | 556 ASSERT_EQ(url2_, chrome::GetActiveWebContents(new_browser)->GetURL()); |
552 | 557 |
553 ASSERT_EQ(url1_, new_browser->GetWebContentsAt(0)->GetURL()); | 558 ASSERT_EQ(url1_, chrome::GetWebContentsAt(new_browser, 0)->GetURL()); |
554 } | 559 } |
555 | 560 |
556 // Creates two tabs, closes one, quits and makes sure only one tab is restored. | 561 // Creates two tabs, closes one, quits and makes sure only one tab is restored. |
557 IN_PROC_BROWSER_TEST_F(SessionRestoreTest, ClosedTabStaysClosed) { | 562 IN_PROC_BROWSER_TEST_F(SessionRestoreTest, ClosedTabStaysClosed) { |
558 ui_test_utils::NavigateToURL(browser(), url1_); | 563 ui_test_utils::NavigateToURL(browser(), url1_); |
559 | 564 |
560 ui_test_utils::NavigateToURLWithDisposition( | 565 ui_test_utils::NavigateToURLWithDisposition( |
561 browser(), url2_, NEW_FOREGROUND_TAB, | 566 browser(), url2_, NEW_FOREGROUND_TAB, |
562 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); | 567 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); |
563 chrome::CloseTab(browser()); | 568 chrome::CloseTab(browser()); |
564 | 569 |
565 Browser* new_browser = QuitBrowserAndRestore(browser(), 1); | 570 Browser* new_browser = QuitBrowserAndRestore(browser(), 1); |
566 | 571 |
567 AssertOneWindowWithOneTab(new_browser); | 572 AssertOneWindowWithOneTab(new_browser); |
568 ASSERT_EQ(url1_, new_browser->GetActiveWebContents()->GetURL()); | 573 ASSERT_EQ(url1_, chrome::GetActiveWebContents(new_browser)->GetURL()); |
569 } | 574 } |
570 | 575 |
571 // Test to verify that the print preview tab is not restored. | 576 // Test to verify that the print preview tab is not restored. |
572 IN_PROC_BROWSER_TEST_F(SessionRestoreTest, DontRestorePrintPreviewTabTest) { | 577 IN_PROC_BROWSER_TEST_F(SessionRestoreTest, DontRestorePrintPreviewTabTest) { |
573 ui_test_utils::NavigateToURL(browser(), url1_); | 578 ui_test_utils::NavigateToURL(browser(), url1_); |
574 | 579 |
575 // Append the print preview tab. | 580 // Append the print preview tab. |
576 ui_test_utils::NavigateToURLWithDisposition( | 581 ui_test_utils::NavigateToURLWithDisposition( |
577 browser(), GURL(chrome::kChromeUIPrintURL), NEW_FOREGROUND_TAB, | 582 browser(), GURL(chrome::kChromeUIPrintURL), NEW_FOREGROUND_TAB, |
578 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); | 583 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); |
579 | 584 |
580 // Restart and make sure we have only one window with one tab and the url | 585 // Restart and make sure we have only one window with one tab and the url |
581 // is url1_. | 586 // is url1_. |
582 Browser* new_browser = QuitBrowserAndRestore(browser(), 1); | 587 Browser* new_browser = QuitBrowserAndRestore(browser(), 1); |
583 | 588 |
584 AssertOneWindowWithOneTab(new_browser); | 589 AssertOneWindowWithOneTab(new_browser); |
585 ASSERT_EQ(url1_, new_browser->GetActiveWebContents()->GetURL()); | 590 ASSERT_EQ(url1_, chrome::GetActiveWebContents(new_browser)->GetURL()); |
586 } | 591 } |
587 | 592 |
588 // Creates a tabbed browser and popup and makes sure we restore both. | 593 // Creates a tabbed browser and popup and makes sure we restore both. |
589 IN_PROC_BROWSER_TEST_F(SessionRestoreTest, NormalAndPopup) { | 594 IN_PROC_BROWSER_TEST_F(SessionRestoreTest, NormalAndPopup) { |
590 if (!browser_defaults::kRestorePopups) | 595 if (!browser_defaults::kRestorePopups) |
591 return; // Test only applicable if restoring popups. | 596 return; // Test only applicable if restoring popups. |
592 | 597 |
593 ui_test_utils::NavigateToURL(browser(), url1_); | 598 ui_test_utils::NavigateToURL(browser(), url1_); |
594 | 599 |
595 // Make sure we have one window. | 600 // Make sure we have one window. |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
653 ASSERT_EQ(2u, BrowserList::size()); | 658 ASSERT_EQ(2u, BrowserList::size()); |
654 | 659 |
655 // Close the first window. The only window left is the App window. | 660 // Close the first window. The only window left is the App window. |
656 CloseBrowserSynchronously(browser()); | 661 CloseBrowserSynchronously(browser()); |
657 | 662 |
658 // Restore the session, which should bring back the first window with url1_. | 663 // Restore the session, which should bring back the first window with url1_. |
659 Browser* new_browser = QuitBrowserAndRestore(app_window, 1); | 664 Browser* new_browser = QuitBrowserAndRestore(app_window, 1); |
660 | 665 |
661 AssertOneWindowWithOneTab(new_browser); | 666 AssertOneWindowWithOneTab(new_browser); |
662 | 667 |
663 ASSERT_EQ(url1_, new_browser->GetActiveWebContents()->GetURL()); | 668 ASSERT_EQ(url1_, chrome::GetActiveWebContents(new_browser)->GetURL()); |
664 } | 669 } |
665 | 670 |
666 #endif // !defined(OS_CHROMEOS) && !defined(OS_MACOSX) | 671 #endif // !defined(OS_CHROMEOS) && !defined(OS_MACOSX) |
667 | 672 |
668 // Creates two windows, closes one, restores, make sure only one window open. | 673 // Creates two windows, closes one, restores, make sure only one window open. |
669 IN_PROC_BROWSER_TEST_F(SessionRestoreTest, TwoWindowsCloseOneRestoreOnlyOne) { | 674 IN_PROC_BROWSER_TEST_F(SessionRestoreTest, TwoWindowsCloseOneRestoreOnlyOne) { |
670 ui_test_utils::NavigateToURL(browser(), url1_); | 675 ui_test_utils::NavigateToURL(browser(), url1_); |
671 | 676 |
672 // Open a second window. | 677 // Open a second window. |
673 ui_test_utils::NavigateToURLWithDisposition( | 678 ui_test_utils::NavigateToURLWithDisposition( |
674 browser(), GURL(chrome::kAboutBlankURL), NEW_WINDOW, | 679 browser(), GURL(chrome::kAboutBlankURL), NEW_WINDOW, |
675 ui_test_utils::BROWSER_TEST_WAIT_FOR_BROWSER); | 680 ui_test_utils::BROWSER_TEST_WAIT_FOR_BROWSER); |
676 | 681 |
677 ASSERT_EQ(2u, BrowserList::size()); | 682 ASSERT_EQ(2u, BrowserList::size()); |
678 | 683 |
679 // Close it. | 684 // Close it. |
680 Browser* new_window = *(++BrowserList::begin()); | 685 Browser* new_window = *(++BrowserList::begin()); |
681 CloseBrowserSynchronously(new_window); | 686 CloseBrowserSynchronously(new_window); |
682 | 687 |
683 // Restart and make sure we have only one window with one tab and the url | 688 // Restart and make sure we have only one window with one tab and the url |
684 // is url1_. | 689 // is url1_. |
685 Browser* new_browser = QuitBrowserAndRestore(browser(), 1); | 690 Browser* new_browser = QuitBrowserAndRestore(browser(), 1); |
686 | 691 |
687 AssertOneWindowWithOneTab(new_browser); | 692 AssertOneWindowWithOneTab(new_browser); |
688 | 693 |
689 ASSERT_EQ(url1_, new_browser->GetActiveWebContents()->GetURL()); | 694 ASSERT_EQ(url1_, chrome::GetActiveWebContents(new_browser)->GetURL()); |
690 } | 695 } |
691 | 696 |
692 // Make sure after a restore the number of processes matches that of the number | 697 // Make sure after a restore the number of processes matches that of the number |
693 // of processes running before the restore. This creates a new tab so that | 698 // of processes running before the restore. This creates a new tab so that |
694 // we should have two new tabs running. (This test will pass in both | 699 // we should have two new tabs running. (This test will pass in both |
695 // process-per-site and process-per-site-instance, because we treat the new tab | 700 // process-per-site and process-per-site-instance, because we treat the new tab |
696 // as a special case in process-per-site-instance so that it only ever uses one | 701 // as a special case in process-per-site-instance so that it only ever uses one |
697 // process.) | 702 // process.) |
698 // | 703 // |
699 // Flaky: http://code.google.com/p/chromium/issues/detail?id=52022 | 704 // Flaky: http://code.google.com/p/chromium/issues/detail?id=52022 |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
753 | 758 |
754 // Restore the session again, globbering the existing tab. | 759 // Restore the session again, globbering the existing tab. |
755 SessionRestore::RestoreSession( | 760 SessionRestore::RestoreSession( |
756 profile, new_browser, | 761 profile, new_browser, |
757 SessionRestore::CLOBBER_CURRENT_TAB | SessionRestore::SYNCHRONOUS, | 762 SessionRestore::CLOBBER_CURRENT_TAB | SessionRestore::SYNCHRONOUS, |
758 std::vector<GURL>()); | 763 std::vector<GURL>()); |
759 | 764 |
760 // The pinned tab is the selected tab. | 765 // The pinned tab is the selected tab. |
761 ASSERT_EQ(2, new_browser->tab_count()); | 766 ASSERT_EQ(2, new_browser->tab_count()); |
762 EXPECT_EQ(0, new_browser->active_index()); | 767 EXPECT_EQ(0, new_browser->active_index()); |
763 EXPECT_EQ(url1_, new_browser->GetActiveWebContents()->GetURL()); | 768 EXPECT_EQ(url1_, chrome::GetActiveWebContents(new_browser)->GetURL()); |
764 EXPECT_EQ(url2_, new_browser->GetWebContentsAt(1)->GetURL()); | 769 EXPECT_EQ(url2_, chrome::GetWebContentsAt(new_browser, 1)->GetURL()); |
765 } | 770 } |
766 | 771 |
767 IN_PROC_BROWSER_TEST_F(SessionRestoreTest, SessionStorage) { | 772 IN_PROC_BROWSER_TEST_F(SessionRestoreTest, SessionStorage) { |
768 ui_test_utils::NavigateToURL(browser(), url1_); | 773 ui_test_utils::NavigateToURL(browser(), url1_); |
769 const content::NavigationController& controller = | 774 const content::NavigationController& controller = |
770 browser()->GetActiveWebContents()->GetController(); | 775 chrome::GetActiveWebContents(browser())->GetController(); |
771 ASSERT_TRUE(controller.GetSessionStorageNamespace()); | 776 ASSERT_TRUE(controller.GetSessionStorageNamespace()); |
772 std::string session_storage_persistent_id = | 777 std::string session_storage_persistent_id = |
773 controller.GetSessionStorageNamespace()->persistent_id(); | 778 controller.GetSessionStorageNamespace()->persistent_id(); |
774 Browser* new_browser = QuitBrowserAndRestore(browser(), 1); | 779 Browser* new_browser = QuitBrowserAndRestore(browser(), 1); |
775 ASSERT_EQ(1u, BrowserList::size()); | 780 ASSERT_EQ(1u, BrowserList::size()); |
776 ASSERT_EQ(url1_, new_browser->GetActiveWebContents()->GetURL()); | 781 ASSERT_EQ(url1_, chrome::GetActiveWebContents(new_browser)->GetURL()); |
777 const content::NavigationController& new_controller = | 782 const content::NavigationController& new_controller = |
778 new_browser->GetActiveWebContents()->GetController(); | 783 chrome::GetActiveWebContents(new_browser)->GetController(); |
779 ASSERT_TRUE(new_controller.GetSessionStorageNamespace()); | 784 ASSERT_TRUE(new_controller.GetSessionStorageNamespace()); |
780 std::string restored_session_storage_persistent_id = | 785 std::string restored_session_storage_persistent_id = |
781 new_controller.GetSessionStorageNamespace()->persistent_id(); | 786 new_controller.GetSessionStorageNamespace()->persistent_id(); |
782 EXPECT_EQ(session_storage_persistent_id, | 787 EXPECT_EQ(session_storage_persistent_id, |
783 restored_session_storage_persistent_id); | 788 restored_session_storage_persistent_id); |
784 } | 789 } |
OLD | NEW |