| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 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 <stddef.h> | 5 #include <stddef.h> |
| 6 | 6 |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "base/base_switches.h" | 9 #include "base/base_switches.h" |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 155 WaitForTabsToLoad(new_browser); | 155 WaitForTabsToLoad(new_browser); |
| 156 | 156 |
| 157 keep_alive.reset(); | 157 keep_alive.reset(); |
| 158 | 158 |
| 159 return new_browser; | 159 return new_browser; |
| 160 } | 160 } |
| 161 | 161 |
| 162 void GoBack(Browser* browser) { | 162 void GoBack(Browser* browser) { |
| 163 content::TestNavigationObserver observer( | 163 content::TestNavigationObserver observer( |
| 164 browser->tab_strip_model()->GetActiveWebContents()); | 164 browser->tab_strip_model()->GetActiveWebContents()); |
| 165 chrome::GoBack(browser, CURRENT_TAB); | 165 chrome::GoBack(browser, WindowOpenDisposition::CURRENT_TAB); |
| 166 observer.Wait(); | 166 observer.Wait(); |
| 167 } | 167 } |
| 168 | 168 |
| 169 void GoForward(Browser* browser) { | 169 void GoForward(Browser* browser) { |
| 170 content::TestNavigationObserver observer( | 170 content::TestNavigationObserver observer( |
| 171 browser->tab_strip_model()->GetActiveWebContents()); | 171 browser->tab_strip_model()->GetActiveWebContents()); |
| 172 chrome::GoForward(browser, CURRENT_TAB); | 172 chrome::GoForward(browser, WindowOpenDisposition::CURRENT_TAB); |
| 173 observer.Wait(); | 173 observer.Wait(); |
| 174 } | 174 } |
| 175 | 175 |
| 176 void AssertOneWindowWithOneTab(Browser* browser) { | 176 void AssertOneWindowWithOneTab(Browser* browser) { |
| 177 ASSERT_EQ(1u, active_browser_list_->size()); | 177 ASSERT_EQ(1u, active_browser_list_->size()); |
| 178 ASSERT_EQ(1, browser->tab_strip_model()->count()); | 178 ASSERT_EQ(1, browser->tab_strip_model()->count()); |
| 179 } | 179 } |
| 180 | 180 |
| 181 int RenderProcessHostCount() { | 181 int RenderProcessHostCount() { |
| 182 content::RenderProcessHost::iterator hosts = | 182 content::RenderProcessHost::iterator hosts = |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 266 "http://google.com/4", | 266 "http://google.com/4", |
| 267 "http://google.com/5", | 267 "http://google.com/5", |
| 268 "http://google.com/6"}; | 268 "http://google.com/6"}; |
| 269 | 269 |
| 270 // Verifies that restored tabs have a root window. This is important | 270 // Verifies that restored tabs have a root window. This is important |
| 271 // otherwise the wrong information is communicated to the renderer. | 271 // otherwise the wrong information is communicated to the renderer. |
| 272 // (http://crbug.com/342672). | 272 // (http://crbug.com/342672). |
| 273 IN_PROC_BROWSER_TEST_F(SessionRestoreTest, RestoredTabsShouldHaveWindow) { | 273 IN_PROC_BROWSER_TEST_F(SessionRestoreTest, RestoredTabsShouldHaveWindow) { |
| 274 // Create tabs. | 274 // Create tabs. |
| 275 ui_test_utils::NavigateToURLWithDisposition( | 275 ui_test_utils::NavigateToURLWithDisposition( |
| 276 browser(), | 276 browser(), GURL(url::kAboutBlankURL), |
| 277 GURL(url::kAboutBlankURL), | 277 WindowOpenDisposition::NEW_FOREGROUND_TAB, |
| 278 NEW_FOREGROUND_TAB, | |
| 279 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); | 278 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); |
| 280 ui_test_utils::NavigateToURLWithDisposition( | 279 ui_test_utils::NavigateToURLWithDisposition( |
| 281 browser(), | 280 browser(), GURL(url::kAboutBlankURL), |
| 282 GURL(url::kAboutBlankURL), | 281 WindowOpenDisposition::NEW_BACKGROUND_TAB, |
| 283 NEW_BACKGROUND_TAB, | |
| 284 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); | 282 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); |
| 285 | 283 |
| 286 // Restart and session restore the tabs. | 284 // Restart and session restore the tabs. |
| 287 Browser* restored = QuitBrowserAndRestore(browser(), 3); | 285 Browser* restored = QuitBrowserAndRestore(browser(), 3); |
| 288 TabStripModel* tab_strip_model = restored->tab_strip_model(); | 286 TabStripModel* tab_strip_model = restored->tab_strip_model(); |
| 289 const int tabs = tab_strip_model->count(); | 287 const int tabs = tab_strip_model->count(); |
| 290 ASSERT_EQ(3, tabs); | 288 ASSERT_EQ(3, tabs); |
| 291 | 289 |
| 292 // Check the restored tabs have a window to get screen info from. | 290 // Check the restored tabs have a window to get screen info from. |
| 293 // On Aura it should also have a root window. | 291 // On Aura it should also have a root window. |
| 294 for (int i = 0; i < tabs; ++i) { | 292 for (int i = 0; i < tabs; ++i) { |
| 295 content::WebContents* contents = tab_strip_model->GetWebContentsAt(i); | 293 content::WebContents* contents = tab_strip_model->GetWebContentsAt(i); |
| 296 EXPECT_TRUE(contents->GetTopLevelNativeWindow()); | 294 EXPECT_TRUE(contents->GetTopLevelNativeWindow()); |
| 297 #if defined(USE_AURA) | 295 #if defined(USE_AURA) |
| 298 EXPECT_TRUE(contents->GetNativeView()->GetRootWindow()); | 296 EXPECT_TRUE(contents->GetNativeView()->GetRootWindow()); |
| 299 #endif | 297 #endif |
| 300 } | 298 } |
| 301 } | 299 } |
| 302 | 300 |
| 303 // Verify that restored tabs have correct disposition. Only one tab should | 301 // Verify that restored tabs have correct disposition. Only one tab should |
| 304 // have "visible" visibility state, the rest should not. | 302 // have "visible" visibility state, the rest should not. |
| 305 // (http://crbug.com/155365 http://crbug.com/118269) | 303 // (http://crbug.com/155365 http://crbug.com/118269) |
| 306 IN_PROC_BROWSER_TEST_F(SessionRestoreTest, | 304 IN_PROC_BROWSER_TEST_F(SessionRestoreTest, |
| 307 RestoredTabsHaveCorrectVisibilityState) { | 305 RestoredTabsHaveCorrectVisibilityState) { |
| 308 // Create tabs. | 306 // Create tabs. |
| 309 GURL test_page(ui_test_utils::GetTestUrl(base::FilePath(), | 307 GURL test_page(ui_test_utils::GetTestUrl(base::FilePath(), |
| 310 base::FilePath(FILE_PATH_LITERAL("tab-restore-visibility.html")))); | 308 base::FilePath(FILE_PATH_LITERAL("tab-restore-visibility.html")))); |
| 311 ui_test_utils::NavigateToURLWithDisposition( | 309 ui_test_utils::NavigateToURLWithDisposition( |
| 312 browser(), test_page, NEW_FOREGROUND_TAB, | 310 browser(), test_page, WindowOpenDisposition::NEW_FOREGROUND_TAB, |
| 313 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); | 311 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); |
| 314 ui_test_utils::NavigateToURLWithDisposition( | 312 ui_test_utils::NavigateToURLWithDisposition( |
| 315 browser(), test_page, NEW_BACKGROUND_TAB, | 313 browser(), test_page, WindowOpenDisposition::NEW_BACKGROUND_TAB, |
| 316 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); | 314 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); |
| 317 | 315 |
| 318 // Restart and session restore the tabs. | 316 // Restart and session restore the tabs. |
| 319 content::DOMMessageQueue message_queue; | 317 content::DOMMessageQueue message_queue; |
| 320 Browser* restored = QuitBrowserAndRestore(browser(), 3); | 318 Browser* restored = QuitBrowserAndRestore(browser(), 3); |
| 321 for (int i = 0; i < 2; ++i) { | 319 for (int i = 0; i < 2; ++i) { |
| 322 std::string message; | 320 std::string message; |
| 323 EXPECT_TRUE(message_queue.WaitForMessage(&message)); | 321 EXPECT_TRUE(message_queue.WaitForMessage(&message)); |
| 324 EXPECT_EQ("\"READY\"", message); | 322 EXPECT_EQ("\"READY\"", message); |
| 325 } | 323 } |
| (...skipping 18 matching lines...) Expand all Loading... |
| 344 } | 342 } |
| 345 } | 343 } |
| 346 } | 344 } |
| 347 | 345 |
| 348 IN_PROC_BROWSER_TEST_F(SessionRestoreTest, RestoredTabsHaveCorrectInitialSize) { | 346 IN_PROC_BROWSER_TEST_F(SessionRestoreTest, RestoredTabsHaveCorrectInitialSize) { |
| 349 // Create tabs. | 347 // Create tabs. |
| 350 GURL test_page(ui_test_utils::GetTestUrl( | 348 GURL test_page(ui_test_utils::GetTestUrl( |
| 351 base::FilePath(), | 349 base::FilePath(), |
| 352 base::FilePath(FILE_PATH_LITERAL("tab-restore-visibility.html")))); | 350 base::FilePath(FILE_PATH_LITERAL("tab-restore-visibility.html")))); |
| 353 ui_test_utils::NavigateToURLWithDisposition( | 351 ui_test_utils::NavigateToURLWithDisposition( |
| 354 browser(), test_page, NEW_FOREGROUND_TAB, | 352 browser(), test_page, WindowOpenDisposition::NEW_FOREGROUND_TAB, |
| 355 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); | 353 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); |
| 356 ui_test_utils::NavigateToURLWithDisposition( | 354 ui_test_utils::NavigateToURLWithDisposition( |
| 357 browser(), test_page, NEW_BACKGROUND_TAB, | 355 browser(), test_page, WindowOpenDisposition::NEW_BACKGROUND_TAB, |
| 358 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); | 356 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); |
| 359 | 357 |
| 360 // Restart and session restore the tabs. | 358 // Restart and session restore the tabs. |
| 361 content::DOMMessageQueue message_queue; | 359 content::DOMMessageQueue message_queue; |
| 362 Browser* restored = QuitBrowserAndRestore(browser(), 3); | 360 Browser* restored = QuitBrowserAndRestore(browser(), 3); |
| 363 for (int i = 0; i < 2; ++i) { | 361 for (int i = 0; i < 2; ++i) { |
| 364 std::string message; | 362 std::string message; |
| 365 EXPECT_TRUE(message_queue.WaitForMessage(&message)); | 363 EXPECT_TRUE(message_queue.WaitForMessage(&message)); |
| 366 EXPECT_EQ("\"READY\"", message); | 364 EXPECT_EQ("\"READY\"", message); |
| 367 } | 365 } |
| (...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 550 // Find the SessionID for entry2. Since the session service was destroyed, | 548 // Find the SessionID for entry2. Since the session service was destroyed, |
| 551 // there is no guarantee that the SessionID for the tab has remained the same. | 549 // there is no guarantee that the SessionID for the tab has remained the same. |
| 552 base::Time timestamp; | 550 base::Time timestamp; |
| 553 int http_status_code = 0; | 551 int http_status_code = 0; |
| 554 for (const auto& tab_ptr : window->tabs) { | 552 for (const auto& tab_ptr : window->tabs) { |
| 555 const sessions::TabRestoreService::Tab& tab = *tab_ptr; | 553 const sessions::TabRestoreService::Tab& tab = *tab_ptr; |
| 556 // If this tab held url2, then restore this single tab. | 554 // If this tab held url2, then restore this single tab. |
| 557 if (tab.navigations[0].virtual_url() == url2) { | 555 if (tab.navigations[0].virtual_url() == url2) { |
| 558 timestamp = tab.navigations[0].timestamp(); | 556 timestamp = tab.navigations[0].timestamp(); |
| 559 http_status_code = tab.navigations[0].http_status_code(); | 557 http_status_code = tab.navigations[0].http_status_code(); |
| 560 std::vector<sessions::LiveTab*> content = | 558 std::vector<sessions::LiveTab*> content = service->RestoreEntryById( |
| 561 service->RestoreEntryById(NULL, tab.id, UNKNOWN); | 559 NULL, tab.id, WindowOpenDisposition::UNKNOWN); |
| 562 ASSERT_EQ(1U, content.size()); | 560 ASSERT_EQ(1U, content.size()); |
| 563 sessions::ContentLiveTab* live_tab = | 561 sessions::ContentLiveTab* live_tab = |
| 564 static_cast<sessions::ContentLiveTab*>(content[0]); | 562 static_cast<sessions::ContentLiveTab*>(content[0]); |
| 565 ASSERT_TRUE(live_tab); | 563 ASSERT_TRUE(live_tab); |
| 566 EXPECT_EQ(url2, live_tab->web_contents()->GetURL()); | 564 EXPECT_EQ(url2, live_tab->web_contents()->GetURL()); |
| 567 break; | 565 break; |
| 568 } | 566 } |
| 569 } | 567 } |
| 570 EXPECT_FALSE(timestamp.is_null()); | 568 EXPECT_FALSE(timestamp.is_null()); |
| 571 EXPECT_EQ(200, http_status_code); | 569 EXPECT_EQ(200, http_status_code); |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 613 browser()->window()->Close(); | 611 browser()->window()->Close(); |
| 614 | 612 |
| 615 // Expect the window to be converted to a tab by the TRS. | 613 // Expect the window to be converted to a tab by the TRS. |
| 616 EXPECT_EQ(1U, service->entries().size()); | 614 EXPECT_EQ(1U, service->entries().size()); |
| 617 ASSERT_EQ(sessions::TabRestoreService::TAB, service->entries().front()->type); | 615 ASSERT_EQ(sessions::TabRestoreService::TAB, service->entries().front()->type); |
| 618 auto* tab = static_cast<const sessions::TabRestoreService::Tab*>( | 616 auto* tab = static_cast<const sessions::TabRestoreService::Tab*>( |
| 619 service->entries().front().get()); | 617 service->entries().front().get()); |
| 620 | 618 |
| 621 // Restore the tab. | 619 // Restore the tab. |
| 622 std::vector<sessions::LiveTab*> content = | 620 std::vector<sessions::LiveTab*> content = |
| 623 service->RestoreEntryById(NULL, tab->id, UNKNOWN); | 621 service->RestoreEntryById(NULL, tab->id, WindowOpenDisposition::UNKNOWN); |
| 624 ASSERT_EQ(1U, content.size()); | 622 ASSERT_EQ(1U, content.size()); |
| 625 ASSERT_TRUE(content[0]); | 623 ASSERT_TRUE(content[0]); |
| 626 EXPECT_EQ(url, static_cast<sessions::ContentLiveTab*>(content[0]) | 624 EXPECT_EQ(url, static_cast<sessions::ContentLiveTab*>(content[0]) |
| 627 ->web_contents() | 625 ->web_contents() |
| 628 ->GetURL()); | 626 ->GetURL()); |
| 629 | 627 |
| 630 // Make sure the restore was successful. | 628 // Make sure the restore was successful. |
| 631 EXPECT_EQ(0U, service->entries().size()); | 629 EXPECT_EQ(0U, service->entries().size()); |
| 632 } | 630 } |
| 633 | 631 |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 707 | 705 |
| 708 ASSERT_EQ(1, browser()->tab_strip_model()->count()); | 706 ASSERT_EQ(1, browser()->tab_strip_model()->count()); |
| 709 | 707 |
| 710 // Restore in the current tab. | 708 // Restore in the current tab. |
| 711 content::WebContents* tab_content = NULL; | 709 content::WebContents* tab_content = NULL; |
| 712 { | 710 { |
| 713 content::WindowedNotificationObserver observer( | 711 content::WindowedNotificationObserver observer( |
| 714 content::NOTIFICATION_LOAD_STOP, | 712 content::NOTIFICATION_LOAD_STOP, |
| 715 content::NotificationService::AllSources()); | 713 content::NotificationService::AllSources()); |
| 716 tab_content = SessionRestore::RestoreForeignSessionTab( | 714 tab_content = SessionRestore::RestoreForeignSessionTab( |
| 717 browser()->tab_strip_model()->GetActiveWebContents(), tab, CURRENT_TAB); | 715 browser()->tab_strip_model()->GetActiveWebContents(), tab, |
| 716 WindowOpenDisposition::CURRENT_TAB); |
| 718 observer.Wait(); | 717 observer.Wait(); |
| 719 } | 718 } |
| 720 ASSERT_EQ(1, browser()->tab_strip_model()->count()); | 719 ASSERT_EQ(1, browser()->tab_strip_model()->count()); |
| 721 content::WebContents* web_contents = | 720 content::WebContents* web_contents = |
| 722 browser()->tab_strip_model()->GetWebContentsAt(0); | 721 browser()->tab_strip_model()->GetWebContentsAt(0); |
| 723 VerifyNavigationEntries(web_contents->GetController(), url1, url2); | 722 VerifyNavigationEntries(web_contents->GetController(), url1, url2); |
| 724 ASSERT_TRUE(web_contents->GetUserAgentOverride().empty()); | 723 ASSERT_TRUE(web_contents->GetUserAgentOverride().empty()); |
| 725 ASSERT_TRUE(tab_content); | 724 ASSERT_TRUE(tab_content); |
| 726 ASSERT_EQ(url2, tab_content->GetURL()); | 725 ASSERT_EQ(url2, tab_content->GetURL()); |
| 727 | 726 |
| 728 // Restore in a new tab. | 727 // Restore in a new tab. |
| 729 tab_content = NULL; | 728 tab_content = NULL; |
| 730 { | 729 { |
| 731 content::WindowedNotificationObserver observer( | 730 content::WindowedNotificationObserver observer( |
| 732 content::NOTIFICATION_LOAD_STOP, | 731 content::NOTIFICATION_LOAD_STOP, |
| 733 content::NotificationService::AllSources()); | 732 content::NotificationService::AllSources()); |
| 734 tab_content = SessionRestore::RestoreForeignSessionTab( | 733 tab_content = SessionRestore::RestoreForeignSessionTab( |
| 735 browser()->tab_strip_model()->GetActiveWebContents(), | 734 browser()->tab_strip_model()->GetActiveWebContents(), tab, |
| 736 tab, NEW_BACKGROUND_TAB); | 735 WindowOpenDisposition::NEW_BACKGROUND_TAB); |
| 737 observer.Wait(); | 736 observer.Wait(); |
| 738 } | 737 } |
| 739 ASSERT_EQ(2, browser()->tab_strip_model()->count()); | 738 ASSERT_EQ(2, browser()->tab_strip_model()->count()); |
| 740 ASSERT_EQ(0, browser()->tab_strip_model()->active_index()); | 739 ASSERT_EQ(0, browser()->tab_strip_model()->active_index()); |
| 741 web_contents = browser()->tab_strip_model()->GetWebContentsAt(1); | 740 web_contents = browser()->tab_strip_model()->GetWebContentsAt(1); |
| 742 VerifyNavigationEntries(web_contents->GetController(), url1, url2); | 741 VerifyNavigationEntries(web_contents->GetController(), url1, url2); |
| 743 ASSERT_TRUE(web_contents->GetUserAgentOverride().empty()); | 742 ASSERT_TRUE(web_contents->GetUserAgentOverride().empty()); |
| 744 ASSERT_TRUE(tab_content); | 743 ASSERT_TRUE(tab_content); |
| 745 ASSERT_EQ(url2, tab_content->GetURL()); | 744 ASSERT_EQ(url2, tab_content->GetURL()); |
| 746 | 745 |
| 747 // Restore in a new window. | 746 // Restore in a new window. |
| 748 Browser* new_browser = NULL; | 747 Browser* new_browser = NULL; |
| 749 tab_content = NULL; | 748 tab_content = NULL; |
| 750 { | 749 { |
| 751 ui_test_utils::BrowserAddedObserver browser_observer; | 750 ui_test_utils::BrowserAddedObserver browser_observer; |
| 752 content::WindowedNotificationObserver observer( | 751 content::WindowedNotificationObserver observer( |
| 753 content::NOTIFICATION_LOAD_STOP, | 752 content::NOTIFICATION_LOAD_STOP, |
| 754 content::NotificationService::AllSources()); | 753 content::NotificationService::AllSources()); |
| 755 tab_content = SessionRestore::RestoreForeignSessionTab( | 754 tab_content = SessionRestore::RestoreForeignSessionTab( |
| 756 browser()->tab_strip_model()->GetActiveWebContents(), tab, NEW_WINDOW); | 755 browser()->tab_strip_model()->GetActiveWebContents(), tab, |
| 756 WindowOpenDisposition::NEW_WINDOW); |
| 757 new_browser = browser_observer.WaitForSingleNewBrowser(); | 757 new_browser = browser_observer.WaitForSingleNewBrowser(); |
| 758 observer.Wait(); | 758 observer.Wait(); |
| 759 } | 759 } |
| 760 | 760 |
| 761 ASSERT_EQ(1, new_browser->tab_strip_model()->count()); | 761 ASSERT_EQ(1, new_browser->tab_strip_model()->count()); |
| 762 web_contents = new_browser->tab_strip_model()->GetWebContentsAt(0); | 762 web_contents = new_browser->tab_strip_model()->GetWebContentsAt(0); |
| 763 VerifyNavigationEntries(web_contents->GetController(), url1, url2); | 763 VerifyNavigationEntries(web_contents->GetController(), url1, url2); |
| 764 ASSERT_TRUE(web_contents->GetUserAgentOverride().empty()); | 764 ASSERT_TRUE(web_contents->GetUserAgentOverride().empty()); |
| 765 ASSERT_TRUE(tab_content); | 765 ASSERT_TRUE(tab_content); |
| 766 ASSERT_EQ(url2, tab_content->GetURL()); | 766 ASSERT_EQ(url2, tab_content->GetURL()); |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 855 new_browser->tab_strip_model()->GetActiveWebContents()->GetURL()); | 855 new_browser->tab_strip_model()->GetActiveWebContents()->GetURL()); |
| 856 GoBack(new_browser); | 856 GoBack(new_browser); |
| 857 ASSERT_EQ(url1_, | 857 ASSERT_EQ(url1_, |
| 858 new_browser->tab_strip_model()->GetActiveWebContents()->GetURL()); | 858 new_browser->tab_strip_model()->GetActiveWebContents()->GetURL()); |
| 859 } | 859 } |
| 860 | 860 |
| 861 IN_PROC_BROWSER_TEST_F(SessionRestoreTest, NoMemoryPressureLoadsAllTabs) { | 861 IN_PROC_BROWSER_TEST_F(SessionRestoreTest, NoMemoryPressureLoadsAllTabs) { |
| 862 // Add several tabs to the browser. Restart the browser and check that all | 862 // Add several tabs to the browser. Restart the browser and check that all |
| 863 // tabs got loaded properly. | 863 // tabs got loaded properly. |
| 864 ui_test_utils::NavigateToURLWithDisposition( | 864 ui_test_utils::NavigateToURLWithDisposition( |
| 865 browser(), | 865 browser(), GURL(url::kAboutBlankURL), |
| 866 GURL(url::kAboutBlankURL), | 866 WindowOpenDisposition::NEW_FOREGROUND_TAB, |
| 867 NEW_FOREGROUND_TAB, | |
| 868 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); | 867 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); |
| 869 ui_test_utils::NavigateToURLWithDisposition( | 868 ui_test_utils::NavigateToURLWithDisposition( |
| 870 browser(), | 869 browser(), GURL(url::kAboutBlankURL), |
| 871 GURL(url::kAboutBlankURL), | 870 WindowOpenDisposition::NEW_FOREGROUND_TAB, |
| 872 NEW_FOREGROUND_TAB, | |
| 873 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); | 871 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); |
| 874 Browser* restored = | 872 Browser* restored = |
| 875 QuitBrowserAndRestoreWithURL(browser(), 1, GURL(), true); | 873 QuitBrowserAndRestoreWithURL(browser(), 1, GURL(), true); |
| 876 TabStripModel* tab_strip_model = restored->tab_strip_model(); | 874 TabStripModel* tab_strip_model = restored->tab_strip_model(); |
| 877 | 875 |
| 878 ASSERT_EQ(1u, active_browser_list_->size()); | 876 ASSERT_EQ(1u, active_browser_list_->size()); |
| 879 | 877 |
| 880 ASSERT_EQ(3, tab_strip_model->count()); | 878 ASSERT_EQ(3, tab_strip_model->count()); |
| 881 // All render widgets should be initialized by now. | 879 // All render widgets should be initialized by now. |
| 882 ASSERT_TRUE( | 880 ASSERT_TRUE( |
| 883 tab_strip_model->GetWebContentsAt(0)->GetRenderWidgetHostView() && | 881 tab_strip_model->GetWebContentsAt(0)->GetRenderWidgetHostView() && |
| 884 tab_strip_model->GetWebContentsAt(1)->GetRenderWidgetHostView() && | 882 tab_strip_model->GetWebContentsAt(1)->GetRenderWidgetHostView() && |
| 885 tab_strip_model->GetWebContentsAt(2)->GetRenderWidgetHostView()); | 883 tab_strip_model->GetWebContentsAt(2)->GetRenderWidgetHostView()); |
| 886 } | 884 } |
| 887 | 885 |
| 888 IN_PROC_BROWSER_TEST_F(SessionRestoreTest, MemoryPressureLoadsNotAllTabs) { | 886 IN_PROC_BROWSER_TEST_F(SessionRestoreTest, MemoryPressureLoadsNotAllTabs) { |
| 889 // Add several tabs to the browser. Restart the browser and check that all | 887 // Add several tabs to the browser. Restart the browser and check that all |
| 890 // tabs got loaded properly. | 888 // tabs got loaded properly. |
| 891 ui_test_utils::NavigateToURLWithDisposition( | 889 ui_test_utils::NavigateToURLWithDisposition( |
| 892 browser(), | 890 browser(), GURL(url::kAboutBlankURL), |
| 893 GURL(url::kAboutBlankURL), | 891 WindowOpenDisposition::NEW_FOREGROUND_TAB, |
| 894 NEW_FOREGROUND_TAB, | |
| 895 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); | 892 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); |
| 896 ui_test_utils::NavigateToURLWithDisposition( | 893 ui_test_utils::NavigateToURLWithDisposition( |
| 897 browser(), | 894 browser(), GURL(url::kAboutBlankURL), |
| 898 GURL(url::kAboutBlankURL), | 895 WindowOpenDisposition::NEW_FOREGROUND_TAB, |
| 899 NEW_FOREGROUND_TAB, | |
| 900 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); | 896 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); |
| 901 // Restore the brwoser, but instead of directly waiting, we issue a critical | 897 // Restore the brwoser, but instead of directly waiting, we issue a critical |
| 902 // memory pressure event and finish then the loading. | 898 // memory pressure event and finish then the loading. |
| 903 Browser* restored = | 899 Browser* restored = |
| 904 QuitBrowserAndRestoreWithURL(browser(), 1, GURL(), false); | 900 QuitBrowserAndRestoreWithURL(browser(), 1, GURL(), false); |
| 905 | 901 |
| 906 TabStripModel* tab_strip_model = restored->tab_strip_model(); | 902 TabStripModel* tab_strip_model = restored->tab_strip_model(); |
| 907 | 903 |
| 908 ASSERT_EQ(1u, active_browser_list_->size()); | 904 ASSERT_EQ(1u, active_browser_list_->size()); |
| 909 | 905 |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1009 GURL go_forward_url("javascript:history.forward();"); | 1005 GURL go_forward_url("javascript:history.forward();"); |
| 1010 ui_test_utils::NavigateToURL(new_browser, go_forward_url); | 1006 ui_test_utils::NavigateToURL(new_browser, go_forward_url); |
| 1011 ASSERT_EQ(url2_, | 1007 ASSERT_EQ(url2_, |
| 1012 new_browser->tab_strip_model()->GetActiveWebContents()->GetURL()); | 1008 new_browser->tab_strip_model()->GetActiveWebContents()->GetURL()); |
| 1013 } | 1009 } |
| 1014 | 1010 |
| 1015 IN_PROC_BROWSER_TEST_F(SessionRestoreTest, TwoTabsSecondSelected) { | 1011 IN_PROC_BROWSER_TEST_F(SessionRestoreTest, TwoTabsSecondSelected) { |
| 1016 ui_test_utils::NavigateToURL(browser(), url1_); | 1012 ui_test_utils::NavigateToURL(browser(), url1_); |
| 1017 | 1013 |
| 1018 ui_test_utils::NavigateToURLWithDisposition( | 1014 ui_test_utils::NavigateToURLWithDisposition( |
| 1019 browser(), url2_, NEW_FOREGROUND_TAB, | 1015 browser(), url2_, WindowOpenDisposition::NEW_FOREGROUND_TAB, |
| 1020 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); | 1016 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); |
| 1021 | 1017 |
| 1022 Browser* new_browser = QuitBrowserAndRestore(browser(), 2); | 1018 Browser* new_browser = QuitBrowserAndRestore(browser(), 2); |
| 1023 | 1019 |
| 1024 ASSERT_EQ(1u, active_browser_list_->size()); | 1020 ASSERT_EQ(1u, active_browser_list_->size()); |
| 1025 ASSERT_EQ(2, new_browser->tab_strip_model()->count()); | 1021 ASSERT_EQ(2, new_browser->tab_strip_model()->count()); |
| 1026 ASSERT_EQ(1, new_browser->tab_strip_model()->active_index()); | 1022 ASSERT_EQ(1, new_browser->tab_strip_model()->active_index()); |
| 1027 ASSERT_EQ(url2_, | 1023 ASSERT_EQ(url2_, |
| 1028 new_browser->tab_strip_model()->GetActiveWebContents()->GetURL()); | 1024 new_browser->tab_strip_model()->GetActiveWebContents()->GetURL()); |
| 1029 | 1025 |
| 1030 ASSERT_EQ(url1_, | 1026 ASSERT_EQ(url1_, |
| 1031 new_browser->tab_strip_model()->GetWebContentsAt(0)->GetURL()); | 1027 new_browser->tab_strip_model()->GetWebContentsAt(0)->GetURL()); |
| 1032 } | 1028 } |
| 1033 | 1029 |
| 1034 // Creates two tabs, closes one, quits and makes sure only one tab is restored. | 1030 // Creates two tabs, closes one, quits and makes sure only one tab is restored. |
| 1035 IN_PROC_BROWSER_TEST_F(SessionRestoreTest, ClosedTabStaysClosed) { | 1031 IN_PROC_BROWSER_TEST_F(SessionRestoreTest, ClosedTabStaysClosed) { |
| 1036 ui_test_utils::NavigateToURL(browser(), url1_); | 1032 ui_test_utils::NavigateToURL(browser(), url1_); |
| 1037 | 1033 |
| 1038 ui_test_utils::NavigateToURLWithDisposition( | 1034 ui_test_utils::NavigateToURLWithDisposition( |
| 1039 browser(), url2_, NEW_FOREGROUND_TAB, | 1035 browser(), url2_, WindowOpenDisposition::NEW_FOREGROUND_TAB, |
| 1040 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); | 1036 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); |
| 1041 chrome::CloseTab(browser()); | 1037 chrome::CloseTab(browser()); |
| 1042 | 1038 |
| 1043 Browser* new_browser = QuitBrowserAndRestore(browser(), 1); | 1039 Browser* new_browser = QuitBrowserAndRestore(browser(), 1); |
| 1044 | 1040 |
| 1045 AssertOneWindowWithOneTab(new_browser); | 1041 AssertOneWindowWithOneTab(new_browser); |
| 1046 ASSERT_EQ(url1_, | 1042 ASSERT_EQ(url1_, |
| 1047 new_browser->tab_strip_model()->GetActiveWebContents()->GetURL()); | 1043 new_browser->tab_strip_model()->GetActiveWebContents()->GetURL()); |
| 1048 } | 1044 } |
| 1049 | 1045 |
| 1050 // Ensures active tab properly restored when tabs before it closed. | 1046 // Ensures active tab properly restored when tabs before it closed. |
| 1051 IN_PROC_BROWSER_TEST_F(SessionRestoreTest, ActiveIndexUpdatedAtClose) { | 1047 IN_PROC_BROWSER_TEST_F(SessionRestoreTest, ActiveIndexUpdatedAtClose) { |
| 1052 ui_test_utils::NavigateToURL(browser(), url1_); | 1048 ui_test_utils::NavigateToURL(browser(), url1_); |
| 1053 ui_test_utils::NavigateToURLWithDisposition( | 1049 ui_test_utils::NavigateToURLWithDisposition( |
| 1054 browser(), url2_, NEW_FOREGROUND_TAB, | 1050 browser(), url2_, WindowOpenDisposition::NEW_FOREGROUND_TAB, |
| 1055 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); | 1051 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); |
| 1056 ui_test_utils::NavigateToURLWithDisposition( | 1052 ui_test_utils::NavigateToURLWithDisposition( |
| 1057 browser(), url3_, NEW_BACKGROUND_TAB, | 1053 browser(), url3_, WindowOpenDisposition::NEW_BACKGROUND_TAB, |
| 1058 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); | 1054 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); |
| 1059 | 1055 |
| 1060 browser()->tab_strip_model()->CloseWebContentsAt( | 1056 browser()->tab_strip_model()->CloseWebContentsAt( |
| 1061 0, | 1057 0, |
| 1062 TabStripModel::CLOSE_CREATE_HISTORICAL_TAB); | 1058 TabStripModel::CLOSE_CREATE_HISTORICAL_TAB); |
| 1063 | 1059 |
| 1064 Browser* new_browser = QuitBrowserAndRestore(browser(), 2); | 1060 Browser* new_browser = QuitBrowserAndRestore(browser(), 2); |
| 1065 | 1061 |
| 1066 ASSERT_EQ(url2_, | 1062 ASSERT_EQ(url2_, |
| 1067 new_browser->tab_strip_model()->GetActiveWebContents()->GetURL()); | 1063 new_browser->tab_strip_model()->GetActiveWebContents()->GetURL()); |
| 1068 ASSERT_EQ(new_browser->tab_strip_model()->active_index(), 0); | 1064 ASSERT_EQ(new_browser->tab_strip_model()->active_index(), 0); |
| 1069 } | 1065 } |
| 1070 | 1066 |
| 1071 // Ensures active tab properly restored when tabs are inserted before it . | 1067 // Ensures active tab properly restored when tabs are inserted before it . |
| 1072 IN_PROC_BROWSER_TEST_F(SessionRestoreTest, ActiveIndexUpdatedAtInsert) { | 1068 IN_PROC_BROWSER_TEST_F(SessionRestoreTest, ActiveIndexUpdatedAtInsert) { |
| 1073 ui_test_utils::NavigateToURL(browser(), url1_); | 1069 ui_test_utils::NavigateToURL(browser(), url1_); |
| 1074 ui_test_utils::NavigateToURLWithDisposition( | 1070 ui_test_utils::NavigateToURLWithDisposition( |
| 1075 browser(), url2_, NEW_BACKGROUND_TAB, | 1071 browser(), url2_, WindowOpenDisposition::NEW_BACKGROUND_TAB, |
| 1076 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); | 1072 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); |
| 1077 | 1073 |
| 1078 chrome::NavigateParams navigate_params(browser(), url3_, | 1074 chrome::NavigateParams navigate_params(browser(), url3_, |
| 1079 ui::PAGE_TRANSITION_TYPED); | 1075 ui::PAGE_TRANSITION_TYPED); |
| 1080 navigate_params.tabstrip_index = 0; | 1076 navigate_params.tabstrip_index = 0; |
| 1081 navigate_params.disposition = NEW_BACKGROUND_TAB; | 1077 navigate_params.disposition = WindowOpenDisposition::NEW_BACKGROUND_TAB; |
| 1082 ui_test_utils::NavigateToURL(&navigate_params); | 1078 ui_test_utils::NavigateToURL(&navigate_params); |
| 1083 | 1079 |
| 1084 Browser* new_browser = QuitBrowserAndRestore(browser(), 3); | 1080 Browser* new_browser = QuitBrowserAndRestore(browser(), 3); |
| 1085 | 1081 |
| 1086 ASSERT_EQ(url1_, | 1082 ASSERT_EQ(url1_, |
| 1087 new_browser->tab_strip_model()->GetActiveWebContents()->GetURL()); | 1083 new_browser->tab_strip_model()->GetActiveWebContents()->GetURL()); |
| 1088 ASSERT_EQ(new_browser->tab_strip_model()->active_index(), 1); | 1084 ASSERT_EQ(new_browser->tab_strip_model()->active_index(), 1); |
| 1089 } | 1085 } |
| 1090 | 1086 |
| 1091 #if !defined(OS_CHROMEOS) && !defined(OS_MACOSX) | 1087 #if !defined(OS_CHROMEOS) && !defined(OS_MACOSX) |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1124 } | 1120 } |
| 1125 | 1121 |
| 1126 #endif // !defined(OS_CHROMEOS) && !defined(OS_MACOSX) | 1122 #endif // !defined(OS_CHROMEOS) && !defined(OS_MACOSX) |
| 1127 | 1123 |
| 1128 // Creates two windows, closes one, restores, make sure only one window open. | 1124 // Creates two windows, closes one, restores, make sure only one window open. |
| 1129 IN_PROC_BROWSER_TEST_F(SessionRestoreTest, TwoWindowsCloseOneRestoreOnlyOne) { | 1125 IN_PROC_BROWSER_TEST_F(SessionRestoreTest, TwoWindowsCloseOneRestoreOnlyOne) { |
| 1130 ui_test_utils::NavigateToURL(browser(), url1_); | 1126 ui_test_utils::NavigateToURL(browser(), url1_); |
| 1131 | 1127 |
| 1132 // Open a second window. | 1128 // Open a second window. |
| 1133 ui_test_utils::NavigateToURLWithDisposition( | 1129 ui_test_utils::NavigateToURLWithDisposition( |
| 1134 browser(), | 1130 browser(), GURL(url::kAboutBlankURL), WindowOpenDisposition::NEW_WINDOW, |
| 1135 GURL(url::kAboutBlankURL), | |
| 1136 NEW_WINDOW, | |
| 1137 ui_test_utils::BROWSER_TEST_WAIT_FOR_BROWSER); | 1131 ui_test_utils::BROWSER_TEST_WAIT_FOR_BROWSER); |
| 1138 | 1132 |
| 1139 ASSERT_EQ(2u, active_browser_list_->size()); | 1133 ASSERT_EQ(2u, active_browser_list_->size()); |
| 1140 | 1134 |
| 1141 // Close it. | 1135 // Close it. |
| 1142 Browser* new_window = active_browser_list_->get(1); | 1136 Browser* new_window = active_browser_list_->get(1); |
| 1143 CloseBrowserSynchronously(new_window); | 1137 CloseBrowserSynchronously(new_window); |
| 1144 | 1138 |
| 1145 // Restart and make sure we have only one window with one tab and the url | 1139 // Restart and make sure we have only one window with one tab and the url |
| 1146 // is url1_. | 1140 // is url1_. |
| (...skipping 12 matching lines...) Expand all Loading... |
| 1159 // as a special case in process-per-site-instance so that it only ever uses one | 1153 // as a special case in process-per-site-instance so that it only ever uses one |
| 1160 // process.) | 1154 // process.) |
| 1161 // | 1155 // |
| 1162 // Flaky: http://code.google.com/p/chromium/issues/detail?id=52022 | 1156 // Flaky: http://code.google.com/p/chromium/issues/detail?id=52022 |
| 1163 // Unfortunately, the fix at http://codereview.chromium.org/6546078 | 1157 // Unfortunately, the fix at http://codereview.chromium.org/6546078 |
| 1164 // breaks NTP background image refreshing, so ThemeSource had to revert to | 1158 // breaks NTP background image refreshing, so ThemeSource had to revert to |
| 1165 // replacing the existing data source. | 1159 // replacing the existing data source. |
| 1166 IN_PROC_BROWSER_TEST_F(SessionRestoreTest, ShareProcessesOnRestore) { | 1160 IN_PROC_BROWSER_TEST_F(SessionRestoreTest, ShareProcessesOnRestore) { |
| 1167 // Create two new tabs. | 1161 // Create two new tabs. |
| 1168 ui_test_utils::NavigateToURLWithDisposition( | 1162 ui_test_utils::NavigateToURLWithDisposition( |
| 1169 browser(), | 1163 browser(), GURL(url::kAboutBlankURL), |
| 1170 GURL(url::kAboutBlankURL), | 1164 WindowOpenDisposition::NEW_FOREGROUND_TAB, |
| 1171 NEW_FOREGROUND_TAB, | |
| 1172 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); | 1165 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); |
| 1173 ui_test_utils::NavigateToURLWithDisposition( | 1166 ui_test_utils::NavigateToURLWithDisposition( |
| 1174 browser(), | 1167 browser(), GURL(url::kAboutBlankURL), |
| 1175 GURL(url::kAboutBlankURL), | 1168 WindowOpenDisposition::NEW_FOREGROUND_TAB, |
| 1176 NEW_FOREGROUND_TAB, | |
| 1177 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); | 1169 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); |
| 1178 | 1170 |
| 1179 int expected_process_count = RenderProcessHostCount(); | 1171 int expected_process_count = RenderProcessHostCount(); |
| 1180 | 1172 |
| 1181 // Restart. | 1173 // Restart. |
| 1182 Browser* new_browser = QuitBrowserAndRestore(browser(), 3); | 1174 Browser* new_browser = QuitBrowserAndRestore(browser(), 3); |
| 1183 | 1175 |
| 1184 ASSERT_EQ(3, new_browser->tab_strip_model()->count()); | 1176 ASSERT_EQ(3, new_browser->tab_strip_model()->count()); |
| 1185 | 1177 |
| 1186 ASSERT_EQ(expected_process_count, RenderProcessHostCount()); | 1178 ASSERT_EQ(expected_process_count, RenderProcessHostCount()); |
| 1187 } | 1179 } |
| 1188 | 1180 |
| 1189 // Test that changing the user agent override will persist it to disk. | 1181 // Test that changing the user agent override will persist it to disk. |
| 1190 IN_PROC_BROWSER_TEST_F(SessionRestoreTest, PersistAndRestoreUserAgentOverride) { | 1182 IN_PROC_BROWSER_TEST_F(SessionRestoreTest, PersistAndRestoreUserAgentOverride) { |
| 1191 // Create a tab with an overridden user agent. | 1183 // Create a tab with an overridden user agent. |
| 1192 ui_test_utils::NavigateToURL(browser(), url1_); | 1184 ui_test_utils::NavigateToURL(browser(), url1_); |
| 1193 ASSERT_EQ(0, browser()->tab_strip_model()->active_index()); | 1185 ASSERT_EQ(0, browser()->tab_strip_model()->active_index()); |
| 1194 browser()->tab_strip_model()->GetWebContentsAt(0)-> | 1186 browser()->tab_strip_model()->GetWebContentsAt(0)-> |
| 1195 SetUserAgentOverride("override"); | 1187 SetUserAgentOverride("override"); |
| 1196 | 1188 |
| 1197 // Create a tab without an overridden user agent. | 1189 // Create a tab without an overridden user agent. |
| 1198 ui_test_utils::NavigateToURLWithDisposition( | 1190 ui_test_utils::NavigateToURLWithDisposition( |
| 1199 browser(), url2_, NEW_FOREGROUND_TAB, | 1191 browser(), url2_, WindowOpenDisposition::NEW_FOREGROUND_TAB, |
| 1200 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); | 1192 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); |
| 1201 ASSERT_EQ(1, browser()->tab_strip_model()->active_index()); | 1193 ASSERT_EQ(1, browser()->tab_strip_model()->active_index()); |
| 1202 | 1194 |
| 1203 // Kill the original browser then open a new one to trigger a restore. | 1195 // Kill the original browser then open a new one to trigger a restore. |
| 1204 Browser* new_browser = QuitBrowserAndRestore(browser(), 1); | 1196 Browser* new_browser = QuitBrowserAndRestore(browser(), 1); |
| 1205 ASSERT_EQ(1u, active_browser_list_->size()); | 1197 ASSERT_EQ(1u, active_browser_list_->size()); |
| 1206 ASSERT_EQ(2, new_browser->tab_strip_model()->count()); | 1198 ASSERT_EQ(2, new_browser->tab_strip_model()->count()); |
| 1207 ASSERT_EQ(1, new_browser->tab_strip_model()->active_index()); | 1199 ASSERT_EQ(1, new_browser->tab_strip_model()->active_index()); |
| 1208 | 1200 |
| 1209 // Confirm that the user agent overrides are properly set. | 1201 // Confirm that the user agent overrides are properly set. |
| 1210 EXPECT_EQ("override", | 1202 EXPECT_EQ("override", |
| 1211 new_browser->tab_strip_model()->GetWebContentsAt(0)-> | 1203 new_browser->tab_strip_model()->GetWebContentsAt(0)-> |
| 1212 GetUserAgentOverride()); | 1204 GetUserAgentOverride()); |
| 1213 EXPECT_EQ("", | 1205 EXPECT_EQ("", |
| 1214 new_browser->tab_strip_model()->GetWebContentsAt(1)-> | 1206 new_browser->tab_strip_model()->GetWebContentsAt(1)-> |
| 1215 GetUserAgentOverride()); | 1207 GetUserAgentOverride()); |
| 1216 } | 1208 } |
| 1217 | 1209 |
| 1218 // Regression test for crbug.com/125958. When restoring a pinned selected tab in | 1210 // Regression test for crbug.com/125958. When restoring a pinned selected tab in |
| 1219 // a setting where there are existing tabs, the selected index computation was | 1211 // a setting where there are existing tabs, the selected index computation was |
| 1220 // wrong, leading to the wrong tab getting selected, DCHECKs firing, and the | 1212 // wrong, leading to the wrong tab getting selected, DCHECKs firing, and the |
| 1221 // pinned tab not getting loaded. | 1213 // pinned tab not getting loaded. |
| 1222 IN_PROC_BROWSER_TEST_F(SessionRestoreTest, RestorePinnedSelectedTab) { | 1214 IN_PROC_BROWSER_TEST_F(SessionRestoreTest, RestorePinnedSelectedTab) { |
| 1223 // Create a pinned tab. | 1215 // Create a pinned tab. |
| 1224 ui_test_utils::NavigateToURL(browser(), url1_); | 1216 ui_test_utils::NavigateToURL(browser(), url1_); |
| 1225 browser()->tab_strip_model()->SetTabPinned(0, true); | 1217 browser()->tab_strip_model()->SetTabPinned(0, true); |
| 1226 ASSERT_EQ(0, browser()->tab_strip_model()->active_index()); | 1218 ASSERT_EQ(0, browser()->tab_strip_model()->active_index()); |
| 1227 // Create a nonpinned tab. | 1219 // Create a nonpinned tab. |
| 1228 ui_test_utils::NavigateToURLWithDisposition( | 1220 ui_test_utils::NavigateToURLWithDisposition( |
| 1229 browser(), url2_, NEW_FOREGROUND_TAB, | 1221 browser(), url2_, WindowOpenDisposition::NEW_FOREGROUND_TAB, |
| 1230 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); | 1222 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); |
| 1231 ASSERT_EQ(1, browser()->tab_strip_model()->active_index()); | 1223 ASSERT_EQ(1, browser()->tab_strip_model()->active_index()); |
| 1232 // Select the pinned tab. | 1224 // Select the pinned tab. |
| 1233 browser()->tab_strip_model()->ActivateTabAt(0, true); | 1225 browser()->tab_strip_model()->ActivateTabAt(0, true); |
| 1234 ASSERT_EQ(0, browser()->tab_strip_model()->active_index()); | 1226 ASSERT_EQ(0, browser()->tab_strip_model()->active_index()); |
| 1235 Profile* profile = browser()->profile(); | 1227 Profile* profile = browser()->profile(); |
| 1236 | 1228 |
| 1237 // This will also initiate a session restore, but we're not interested in it. | 1229 // This will also initiate a session restore, but we're not interested in it. |
| 1238 Browser* new_browser = QuitBrowserAndRestore(browser(), 1); | 1230 Browser* new_browser = QuitBrowserAndRestore(browser(), 1); |
| 1239 ASSERT_EQ(1u, active_browser_list_->size()); | 1231 ASSERT_EQ(1u, active_browser_list_->size()); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 1261 EXPECT_EQ(url2_, | 1253 EXPECT_EQ(url2_, |
| 1262 new_browser->tab_strip_model()->GetWebContentsAt(1)->GetURL()); | 1254 new_browser->tab_strip_model()->GetWebContentsAt(1)->GetURL()); |
| 1263 } | 1255 } |
| 1264 | 1256 |
| 1265 // Regression test for crbug.com/240156. When restoring tabs with a navigation, | 1257 // Regression test for crbug.com/240156. When restoring tabs with a navigation, |
| 1266 // the navigation should take active tab focus. | 1258 // the navigation should take active tab focus. |
| 1267 IN_PROC_BROWSER_TEST_F(SessionRestoreTest, RestoreWithNavigateSelectedTab) { | 1259 IN_PROC_BROWSER_TEST_F(SessionRestoreTest, RestoreWithNavigateSelectedTab) { |
| 1268 // Create 2 tabs. | 1260 // Create 2 tabs. |
| 1269 ui_test_utils::NavigateToURL(browser(), url1_); | 1261 ui_test_utils::NavigateToURL(browser(), url1_); |
| 1270 ui_test_utils::NavigateToURLWithDisposition( | 1262 ui_test_utils::NavigateToURLWithDisposition( |
| 1271 browser(), url2_, NEW_FOREGROUND_TAB, | 1263 browser(), url2_, WindowOpenDisposition::NEW_FOREGROUND_TAB, |
| 1272 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); | 1264 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); |
| 1273 | 1265 |
| 1274 // Restore the session by calling chrome::Navigate(). | 1266 // Restore the session by calling chrome::Navigate(). |
| 1275 Browser* new_browser = | 1267 Browser* new_browser = |
| 1276 QuitBrowserAndRestoreWithURL(browser(), 3, url3_, true); | 1268 QuitBrowserAndRestoreWithURL(browser(), 3, url3_, true); |
| 1277 ASSERT_EQ(1u, active_browser_list_->size()); | 1269 ASSERT_EQ(1u, active_browser_list_->size()); |
| 1278 ASSERT_EQ(3, new_browser->tab_strip_model()->count()); | 1270 ASSERT_EQ(3, new_browser->tab_strip_model()->count()); |
| 1279 // Navigated url should be the active tab. | 1271 // Navigated url should be the active tab. |
| 1280 ASSERT_EQ(url3_, | 1272 ASSERT_EQ(url3_, |
| 1281 new_browser->tab_strip_model()->GetActiveWebContents()->GetURL()); | 1273 new_browser->tab_strip_model()->GetActiveWebContents()->GetURL()); |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1319 EXPECT_EQ(subframe_url.possibly_invalid_spec(), actual_frame_url); | 1311 EXPECT_EQ(subframe_url.possibly_invalid_spec(), actual_frame_url); |
| 1320 } | 1312 } |
| 1321 | 1313 |
| 1322 // Do a clobber restore from the new tab page. This test follows the code path | 1314 // Do a clobber restore from the new tab page. This test follows the code path |
| 1323 // of a crash followed by the user clicking restore from the new tab page. | 1315 // of a crash followed by the user clicking restore from the new tab page. |
| 1324 IN_PROC_BROWSER_TEST_F(SessionRestoreTest, ClobberRestoreTest) { | 1316 IN_PROC_BROWSER_TEST_F(SessionRestoreTest, ClobberRestoreTest) { |
| 1325 // Create 2 tabs. | 1317 // Create 2 tabs. |
| 1326 ui_test_utils::NavigateToURL(browser(), url1_); | 1318 ui_test_utils::NavigateToURL(browser(), url1_); |
| 1327 ASSERT_EQ(0, browser()->tab_strip_model()->active_index()); | 1319 ASSERT_EQ(0, browser()->tab_strip_model()->active_index()); |
| 1328 ui_test_utils::NavigateToURLWithDisposition( | 1320 ui_test_utils::NavigateToURLWithDisposition( |
| 1329 browser(), url2_, NEW_FOREGROUND_TAB, | 1321 browser(), url2_, WindowOpenDisposition::NEW_FOREGROUND_TAB, |
| 1330 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); | 1322 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); |
| 1331 ASSERT_EQ(1, browser()->tab_strip_model()->active_index()); | 1323 ASSERT_EQ(1, browser()->tab_strip_model()->active_index()); |
| 1332 Profile* profile = browser()->profile(); | 1324 Profile* profile = browser()->profile(); |
| 1333 | 1325 |
| 1334 // This will also initiate a session restore, but we're not interested in it. | 1326 // This will also initiate a session restore, but we're not interested in it. |
| 1335 Browser* new_browser = QuitBrowserAndRestore(browser(), 1); | 1327 Browser* new_browser = QuitBrowserAndRestore(browser(), 1); |
| 1336 ASSERT_EQ(1u, active_browser_list_->size()); | 1328 ASSERT_EQ(1u, active_browser_list_->size()); |
| 1337 ASSERT_EQ(2, new_browser->tab_strip_model()->count()); | 1329 ASSERT_EQ(2, new_browser->tab_strip_model()->count()); |
| 1338 ASSERT_EQ(1, new_browser->tab_strip_model()->active_index()); | 1330 ASSERT_EQ(1, new_browser->tab_strip_model()->active_index()); |
| 1339 // Close the first tab. | 1331 // Close the first tab. |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1418 | 1410 |
| 1419 IN_PROC_BROWSER_TEST_F(SmartSessionRestoreTest, PRE_CorrectLoadingOrder) { | 1411 IN_PROC_BROWSER_TEST_F(SmartSessionRestoreTest, PRE_CorrectLoadingOrder) { |
| 1420 Profile* profile = browser()->profile(); | 1412 Profile* profile = browser()->profile(); |
| 1421 | 1413 |
| 1422 const int activation_order[] = {4, 2, 1, 5, 0, 3}; | 1414 const int activation_order[] = {4, 2, 1, 5, 0, 3}; |
| 1423 | 1415 |
| 1424 // Replace the first tab and add the other tabs. | 1416 // Replace the first tab and add the other tabs. |
| 1425 ui_test_utils::NavigateToURL(browser(), GURL(kUrls[0])); | 1417 ui_test_utils::NavigateToURL(browser(), GURL(kUrls[0])); |
| 1426 for (size_t i = 1; i < kExpectedNumTabs; i++) { | 1418 for (size_t i = 1; i < kExpectedNumTabs; i++) { |
| 1427 ui_test_utils::NavigateToURLWithDisposition( | 1419 ui_test_utils::NavigateToURLWithDisposition( |
| 1428 browser(), GURL(kUrls[i]), NEW_FOREGROUND_TAB, | 1420 browser(), GURL(kUrls[i]), WindowOpenDisposition::NEW_FOREGROUND_TAB, |
| 1429 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); | 1421 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); |
| 1430 } | 1422 } |
| 1431 | 1423 |
| 1432 ASSERT_EQ(static_cast<int>(kExpectedNumTabs), | 1424 ASSERT_EQ(static_cast<int>(kExpectedNumTabs), |
| 1433 browser()->tab_strip_model()->count()); | 1425 browser()->tab_strip_model()->count()); |
| 1434 | 1426 |
| 1435 // Activate the tabs one by one following the specified activation order. | 1427 // Activate the tabs one by one following the specified activation order. |
| 1436 for (int i : activation_order) | 1428 for (int i : activation_order) |
| 1437 browser()->tab_strip_model()->ActivateTabAt(i, true); | 1429 browser()->tab_strip_model()->ActivateTabAt(i, true); |
| 1438 | 1430 |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1506 // automatically at the start of the test. | 1498 // automatically at the start of the test. |
| 1507 for (size_t i = 1; i < web_contents().size(); i++) { | 1499 for (size_t i = 1; i < web_contents().size(); i++) { |
| 1508 GURL expected_url = GURL(kUrls[activation_order[kExpectedNumTabs - i]]); | 1500 GURL expected_url = GURL(kUrls[activation_order[kExpectedNumTabs - i]]); |
| 1509 ASSERT_EQ(expected_url, web_contents()[i]->GetLastCommittedURL()); | 1501 ASSERT_EQ(expected_url, web_contents()[i]->GetLastCommittedURL()); |
| 1510 if (i > 0) { | 1502 if (i > 0) { |
| 1511 ASSERT_GT(web_contents()[i - 1]->GetLastActiveTime(), | 1503 ASSERT_GT(web_contents()[i - 1]->GetLastActiveTime(), |
| 1512 web_contents()[i]->GetLastActiveTime()); | 1504 web_contents()[i]->GetLastActiveTime()); |
| 1513 } | 1505 } |
| 1514 } | 1506 } |
| 1515 } | 1507 } |
| OLD | NEW |