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

Side by Side Diff: chrome/browser/sessions/session_restore_browsertest.cc

Issue 10702029: Move tab functions off Browser into browser_tabstrip and browser_tabrestore. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 8 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/sessions/session_restore.cc ('k') | chrome/browser/sessions/session_service.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (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
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
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
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
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
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
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 }
OLDNEW
« no previous file with comments | « chrome/browser/sessions/session_restore.cc ('k') | chrome/browser/sessions/session_service.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698