Chromium Code Reviews| Index: content/browser/frame_host/navigator_impl_unittest.cc |
| diff --git a/content/browser/frame_host/navigator_impl_unittest.cc b/content/browser/frame_host/navigator_impl_unittest.cc |
| index d5b9da663184bb623d161a1f03a422a56ba09fd9..389c3a104be7b9c00c29c2180a49b94bc2f4a01a 100644 |
| --- a/content/browser/frame_host/navigator_impl_unittest.cc |
| +++ b/content/browser/frame_host/navigator_impl_unittest.cc |
| @@ -47,26 +47,41 @@ class NavigatorTestWithBrowserSideNavigation |
| } |
| void RequestNavigation(FrameTreeNode* node, const GURL& url) { |
| - RequestNavigationWithParameters(node, url, Referrer(), |
| - ui::PAGE_TRANSITION_LINK, |
| + NavigationEntryImpl* entry = NavigationEntryImpl::FromNavigationEntry( |
| + NavigationController::CreateNavigationEntry( |
| + url, |
| + Referrer(), |
| + ui::PAGE_TRANSITION_LINK, |
| + false, |
| + std::string(), |
| + controller().GetBrowserContext())); |
| + |
| + RequestNavigationWithParameters(entry, node, url, |
| NavigationController::NO_RELOAD); |
| } |
| + void RequestReloadNavigation( |
| + FrameTreeNode* node, |
| + const GURL& url, |
| + NavigationController::ReloadType reload_type) { |
| + NavigationEntryImpl* entry = NavigationEntryImpl::FromNavigationEntry( |
| + controller().GetLastCommittedEntry()); |
| + RequestNavigationWithParameters(entry, node, url, reload_type); |
| + } |
| + |
| void RequestNavigationWithParameters( |
| + NavigationEntryImpl* entry, |
| FrameTreeNode* node, |
| const GURL& url, |
| - const Referrer& referrer, |
| - ui::PageTransition transition_type, |
| NavigationController::ReloadType reload_type) { |
| - scoped_ptr<NavigationEntryImpl> entry( |
| - NavigationEntryImpl::FromNavigationEntry( |
| - NavigationController::CreateNavigationEntry( |
| - url, |
| - referrer, |
| - transition_type, |
| - false, |
| - std::string(), |
| - controller().GetBrowserContext()))); |
| + // In ordinary code, NavigatorImpl::RequestNavigation is called from |
| + // NavigatorImpl::NavigateToEntry which must be called only with the pending |
| + // entry (and thus is only called by NavigatorImpl::NavigateToPendingEntry). |
| + // Therefore, if we are calling directly into RequestNavigation, we must |
| + // satisfy that constraint. |
| + NavigationControllerImpl& navigation_controller_impl = |
| + static_cast<NavigationControllerImpl&>(controller()); |
| + navigation_controller_impl.SetPendingEntry(entry); |
| static_cast<NavigatorImpl*>(node->navigator())->RequestNavigation( |
|
clamy
2015/03/19 12:18:04
What I had in mind is to replace this call to Navi
|
| node, *entry, reload_type, base::TimeTicks::Now()); |
| } |
| @@ -184,7 +199,7 @@ TEST_F(NavigatorTestWithBrowserSideNavigation, |
| EXPECT_EQ(NavigationRequest::RESPONSE_STARTED, request->state()); |
| // Commit the navigation. |
| - main_test_rfh()->SendNavigate(0, kUrl2); |
| + main_test_rfh()->SendNavigate(1, kUrl2); |
| EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, main_test_rfh()->rfh_state()); |
| EXPECT_EQ(SiteInstanceImpl::GetSiteForURL(browser_context(), kUrl2), |
| main_test_rfh()->GetSiteInstance()->GetSiteURL()); |
| @@ -229,7 +244,7 @@ TEST_F(NavigatorTestWithBrowserSideNavigation, |
| EXPECT_EQ(NavigationRequest::RESPONSE_STARTED, request->state()); |
| // Commit the navigation. |
| - main_test_rfh()->SendNavigate(0, kUrl2); |
| + main_test_rfh()->SendNavigate(1, kUrl2); |
| EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, main_test_rfh()->rfh_state()); |
| EXPECT_EQ(kUrl2, contents()->GetLastCommittedURL()); |
| EXPECT_FALSE(GetNavigationRequestForFrameTreeNode(node)); |
| @@ -613,7 +628,7 @@ TEST_F(NavigatorTestWithBrowserSideNavigation, |
| EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh())); |
| // Commit the navigation. |
| - main_test_rfh()->SendNavigate(0, kUrl2); |
| + main_test_rfh()->SendNavigate(1, kUrl2); |
| // Confirm that the commit corresponds to the new request. |
| ASSERT_TRUE(main_test_rfh()); |
| @@ -661,7 +676,7 @@ TEST_F(NavigatorTestWithBrowserSideNavigation, |
| EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh())); |
| // Commit the navigation. |
| - main_test_rfh()->SendNavigate(0, kUrl1); |
| + main_test_rfh()->SendNavigate(1, kUrl1); |
| EXPECT_EQ(kUrl1, contents()->GetLastCommittedURL()); |
| } |
| @@ -757,7 +772,7 @@ TEST_F(NavigatorTestWithBrowserSideNavigation, |
| EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh())); |
| // Commit the navigation. |
| - main_test_rfh()->SendNavigate(0, kUrl2); |
| + main_test_rfh()->SendNavigate(1, kUrl2); |
| EXPECT_EQ(kUrl2, contents()->GetLastCommittedURL()); |
| // The SiteInstance did not change. |
| @@ -772,9 +787,7 @@ TEST_F(NavigatorTestWithBrowserSideNavigation, Reload) { |
| contents()->NavigateAndCommit(kUrl); |
| FrameTreeNode* node = main_test_rfh()->frame_tree_node(); |
| - RequestNavigationWithParameters(node, kUrl, Referrer(), |
| - ui::PAGE_TRANSITION_LINK, |
| - NavigationController::RELOAD); |
| + RequestReloadNavigation(node, kUrl, NavigationController::RELOAD); |
| // A NavigationRequest should have been generated. |
| NavigationRequest* main_request = GetNavigationRequestForFrameTreeNode(node); |
| ASSERT_TRUE(main_request != NULL); |
| @@ -787,9 +800,8 @@ TEST_F(NavigatorTestWithBrowserSideNavigation, Reload) { |
| EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
| // Now do a shift+reload. |
| - RequestNavigationWithParameters(node, kUrl, Referrer(), |
| - ui::PAGE_TRANSITION_LINK, |
| - NavigationController::RELOAD_IGNORING_CACHE); |
| + RequestReloadNavigation( |
| + node, kUrl, NavigationController::RELOAD_IGNORING_CACHE); |
| // A NavigationRequest should have been generated. |
| main_request = GetNavigationRequestForFrameTreeNode(node); |
| ASSERT_TRUE(main_request != NULL); |