OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/file_util.h" | 5 #include "base/file_util.h" |
6 #include "base/path_service.h" | 6 #include "base/path_service.h" |
7 #include "base/scoped_ptr.h" | 7 #include "base/scoped_ptr.h" |
8 #include "base/stl_util-inl.h" | 8 #include "base/stl_util-inl.h" |
9 #include "base/string_util.h" | 9 #include "base/string_util.h" |
10 #include "base/utf_string_conversions.h" | 10 #include "base/utf_string_conversions.h" |
(...skipping 1787 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1798 | 1798 |
1799 // And there should be a pending entry for url3. | 1799 // And there should be a pending entry for url3. |
1800 ASSERT_TRUE(other_controller.pending_entry()); | 1800 ASSERT_TRUE(other_controller.pending_entry()); |
1801 | 1801 |
1802 EXPECT_EQ(url3, other_controller.pending_entry()->url()); | 1802 EXPECT_EQ(url3, other_controller.pending_entry()->url()); |
1803 | 1803 |
1804 // And the session id should have been copied. | 1804 // And the session id should have been copied. |
1805 EXPECT_EQ(controller().session_id().id(), other_controller.session_id().id()); | 1805 EXPECT_EQ(controller().session_id().id(), other_controller.session_id().id()); |
1806 } | 1806 } |
1807 | 1807 |
1808 // Tests that navigations initiated from the page (with the history object) | |
1809 // work as expected without navigation entries. | |
1810 TEST_F(NavigationControllerTest, HistoryNavigate) { | |
1811 const GURL url1("http://foo1"); | |
1812 const GURL url2("http://foo2"); | |
1813 const GURL url3("http://foo3"); | |
1814 | |
1815 NavigateAndCommit(url1); | |
1816 NavigateAndCommit(url2); | |
1817 NavigateAndCommit(url3); | |
1818 controller().GoBack(); | |
1819 contents()->CommitPendingNavigation(); | |
1820 | |
1821 // Casts the TabContents to a RenderViewHostDelegate::BrowserIntegration so we | |
1822 // can call GoToEntryAtOffset which is private. | |
1823 RenderViewHostDelegate::BrowserIntegration* rvh_delegate = | |
1824 static_cast<RenderViewHostDelegate::BrowserIntegration*>(contents()); | |
1825 | |
1826 // Simulate the page calling history.back(), it should not create a pending | |
1827 // entry. | |
1828 rvh_delegate->GoToEntryAtOffset(-1); | |
1829 EXPECT_EQ(-1, controller().pending_entry_index()); | |
1830 // The actual cross-navigation is suspended until the current RVH tells us | |
1831 // it unloaded, simulate that. | |
1832 contents()->ProceedWithCrossSiteNavigation(); | |
1833 // Also make sure we told the page to navigate. | |
1834 const IPC::Message* message = | |
1835 process()->sink().GetFirstMessageMatching(ViewMsg_Navigate::ID); | |
1836 ASSERT_TRUE(message != NULL); | |
1837 Tuple1<ViewMsg_Navigate_Params> nav_params; | |
1838 ViewMsg_Navigate::Read(message, &nav_params); | |
1839 EXPECT_EQ(url1, nav_params.a.url); | |
1840 process()->sink().ClearMessages(); | |
1841 | |
1842 // Now test history.forward() | |
1843 rvh_delegate->GoToEntryAtOffset(1); | |
1844 EXPECT_EQ(-1, controller().pending_entry_index()); | |
1845 // The actual cross-navigation is suspended until the current RVH tells us | |
1846 // it unloaded, simulate that. | |
1847 contents()->ProceedWithCrossSiteNavigation(); | |
1848 message = process()->sink().GetFirstMessageMatching(ViewMsg_Navigate::ID); | |
1849 ASSERT_TRUE(message != NULL); | |
1850 ViewMsg_Navigate::Read(message, &nav_params); | |
1851 EXPECT_EQ(url3, nav_params.a.url); | |
1852 process()->sink().ClearMessages(); | |
1853 | |
1854 // Make sure an extravagant history.go() doesn't break. | |
1855 rvh_delegate->GoToEntryAtOffset(120); // Out of bounds. | |
1856 EXPECT_EQ(-1, controller().pending_entry_index()); | |
1857 message = process()->sink().GetFirstMessageMatching(ViewMsg_Navigate::ID); | |
1858 EXPECT_TRUE(message == NULL); | |
1859 } | |
1860 | |
1861 /* TODO(brettw) These test pass on my local machine but fail on the XP buildbot | 1808 /* TODO(brettw) These test pass on my local machine but fail on the XP buildbot |
1862 (but not Vista) cleaning up the directory after they run. | 1809 (but not Vista) cleaning up the directory after they run. |
1863 This should be fixed. | 1810 This should be fixed. |
1864 | 1811 |
1865 // A basic test case. Navigates to a single url, and make sure the history | 1812 // A basic test case. Navigates to a single url, and make sure the history |
1866 // db matches. | 1813 // db matches. |
1867 TEST_F(NavigationControllerHistoryTest, Basic) { | 1814 TEST_F(NavigationControllerHistoryTest, Basic) { |
1868 controller().LoadURL(url0, GURL(), PageTransition::LINK); | 1815 controller().LoadURL(url0, GURL(), PageTransition::LINK); |
1869 rvh()->SendNavigate(0, url0); | 1816 rvh()->SendNavigate(0, url0); |
1870 | 1817 |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1933 PageTransition::LINK); | 1880 PageTransition::LINK); |
1934 session_helper_.AssertNavigationEquals(nav, | 1881 session_helper_.AssertNavigationEquals(nav, |
1935 windows_[0]->tabs[0]->navigations[0]); | 1882 windows_[0]->tabs[0]->navigations[0]); |
1936 nav.set_url(url2); | 1883 nav.set_url(url2); |
1937 session_helper_.AssertNavigationEquals(nav, | 1884 session_helper_.AssertNavigationEquals(nav, |
1938 windows_[0]->tabs[0]->navigations[1]); | 1885 windows_[0]->tabs[0]->navigations[1]); |
1939 } | 1886 } |
1940 */ | 1887 */ |
1941 | 1888 |
1942 } // namespace | 1889 } // namespace |
OLD | NEW |