Chromium Code Reviews| Index: content/browser/frame_host/navigation_controller_impl_unittest.cc |
| diff --git a/content/browser/frame_host/navigation_controller_impl_unittest.cc b/content/browser/frame_host/navigation_controller_impl_unittest.cc |
| index 53568265e97bb43069f74cc9fa7856a0db393e19..b44a1b0a074387ba554f8ff669f0fe7dbfc2f859 100644 |
| --- a/content/browser/frame_host/navigation_controller_impl_unittest.cc |
| +++ b/content/browser/frame_host/navigation_controller_impl_unittest.cc |
| @@ -706,6 +706,7 @@ TEST_F(NavigationControllerTest, LoadURL_Discarded) { |
| controller.LoadURL( |
| url1, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); |
| EXPECT_EQ(0U, notifications.size()); |
| + main_test_rfh()->PrepareForCommit(); |
| main_test_rfh()->SendNavigate(0, url1); |
| EXPECT_EQ(1U, navigation_entry_committed_counter_); |
| navigation_entry_committed_counter_ = 0; |
| @@ -744,13 +745,14 @@ TEST_F(NavigationControllerTest, LoadURL_NoPending) { |
| const GURL kExistingURL1("http://eh"); |
| controller.LoadURL( |
| kExistingURL1, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); |
| + main_test_rfh()->PrepareForCommit(); |
| main_test_rfh()->SendNavigate(0, kExistingURL1); |
| EXPECT_EQ(1U, navigation_entry_committed_counter_); |
| navigation_entry_committed_counter_ = 0; |
| // Do a new navigation without making a pending one. |
| const GURL kNewURL("http://see"); |
| - main_test_rfh()->SendNavigate(99, kNewURL); |
| + main_test_rfh()->NavigateAndCommitRendererInitiated(99, kNewURL); |
| // There should no longer be any pending entry, and the third navigation we |
| // just made should be committed. |
| @@ -1059,6 +1061,7 @@ TEST_F(NavigationControllerTest, LoadURL_RedirectAbortDoesntShowPendingURL) { |
| const GURL kExistingURL("http://foo/eh"); |
| controller.LoadURL(kExistingURL, content::Referrer(), |
| ui::PAGE_TRANSITION_TYPED, std::string()); |
| + main_test_rfh()->PrepareForCommit(); |
| main_test_rfh()->SendNavigate(1, kExistingURL); |
| EXPECT_EQ(1U, navigation_entry_committed_counter_); |
| navigation_entry_committed_counter_ = 0; |
| @@ -1267,6 +1270,7 @@ TEST_F(NavigationControllerTest, ReloadWithGuest) { |
| const GURL url1("http://foo1"); |
| controller.LoadURL( |
| url1, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); |
| + main_test_rfh()->PrepareForCommit(); |
| main_test_rfh()->SendNavigate(0, url1); |
| ASSERT_TRUE(controller.GetVisibleEntry()); |
| @@ -1361,6 +1365,7 @@ TEST_F(NavigationControllerTest, ResetEntryValuesAfterCommit) { |
| const GURL url0("http://foo/0"); |
| controller.LoadURL( |
| url0, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); |
| + main_test_rfh()->PrepareForCommit(); |
| main_test_rfh()->SendNavigate(0, url0); |
| // Set up the pending entry. |
| @@ -1391,6 +1396,7 @@ TEST_F(NavigationControllerTest, ResetEntryValuesAfterCommit) { |
| EXPECT_TRUE(pending_entry->should_clear_history_list()); |
| // Fake a commit response. |
| + main_test_rfh()->PrepareForCommit(); |
| main_test_rfh()->SendNavigate(1, url1); |
| // Certain values that are only used for pending entries get reset after |
| @@ -1408,24 +1414,26 @@ TEST_F(NavigationControllerTest, ResetEntryValuesAfterCommit) { |
| TEST_F(NavigationControllerTest, RedirectsAreNotResetByCommit) { |
| NavigationControllerImpl& controller = controller_impl(); |
| const GURL url1("http://foo1"); |
| + const GURL url2("http://foo2"); |
| controller.LoadURL( |
| url1, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); |
| // Set up some redirect values. |
| std::vector<GURL> redirects; |
| - redirects.push_back(GURL("http://foo2")); |
| + redirects.push_back(url2); |
| // Set redirects on the pending entry. |
| NavigationEntryImpl* pending_entry = controller.GetPendingEntry(); |
| pending_entry->SetRedirectChain(redirects); |
| EXPECT_EQ(1U, pending_entry->GetRedirectChain().size()); |
| - EXPECT_EQ(GURL("http://foo2"), pending_entry->GetRedirectChain()[0]); |
| + EXPECT_EQ(url2, pending_entry->GetRedirectChain()[0]); |
| // Normal navigation will preserve redirects in the committed entry. |
| + main_test_rfh()->PrepareForCommitWithServerRedirect(url2); |
| main_test_rfh()->SendNavigateWithRedirects(0, url1, redirects); |
| NavigationEntryImpl* committed_entry = controller.GetLastCommittedEntry(); |
| ASSERT_EQ(1U, committed_entry->GetRedirectChain().size()); |
| - EXPECT_EQ(GURL("http://foo2"), committed_entry->GetRedirectChain()[0]); |
| + EXPECT_EQ(url2, committed_entry->GetRedirectChain()[0]); |
| } |
| // Tests what happens when we navigate back successfully |
| @@ -1435,12 +1443,12 @@ TEST_F(NavigationControllerTest, Back) { |
| RegisterForAllNavNotifications(¬ifications, &controller); |
| const GURL url1("http://foo1"); |
| - main_test_rfh()->SendNavigate(0, url1); |
| + main_test_rfh()->NavigateAndCommitRendererInitiated(0, url1); |
| EXPECT_EQ(1U, navigation_entry_committed_counter_); |
| navigation_entry_committed_counter_ = 0; |
| const GURL url2("http://foo2"); |
| - main_test_rfh()->SendNavigate(1, url2); |
| + main_test_rfh()->NavigateAndCommitRendererInitiated(1, url2); |
| EXPECT_EQ(1U, navigation_entry_committed_counter_); |
| navigation_entry_committed_counter_ = 0; |
| @@ -1464,7 +1472,7 @@ TEST_F(NavigationControllerTest, Back) { |
| EXPECT_GE(controller.GetEntryAtIndex(1)->GetTimestamp(), |
| controller.GetEntryAtIndex(0)->GetTimestamp()); |
| - main_test_rfh()->SendNavigate(0, url2); |
| + main_test_rfh()->NavigateAndCommitRendererInitiated(0, url2); |
|
Avi (use Gerrit)
2015/04/17 18:23:13
Is this right? We initiated the GoBack on line 145
|
| EXPECT_EQ(1U, navigation_entry_committed_counter_); |
| navigation_entry_committed_counter_ = 0; |
| @@ -1549,12 +1557,12 @@ TEST_F(NavigationControllerTest, Back_NewPending) { |
| const GURL kUrl3("http://foo3"); |
| // First navigate two places so we have some back history. |
| - main_test_rfh()->SendNavigate(0, kUrl1); |
| + main_test_rfh()->NavigateAndCommitRendererInitiated(0, kUrl1); |
| EXPECT_EQ(1U, navigation_entry_committed_counter_); |
| navigation_entry_committed_counter_ = 0; |
| // controller.LoadURL(kUrl2, ui::PAGE_TRANSITION_TYPED); |
| - main_test_rfh()->SendNavigate(1, kUrl2); |
| + main_test_rfh()->NavigateAndCommitRendererInitiated(1, kUrl2); |
| EXPECT_EQ(1U, navigation_entry_committed_counter_); |
| navigation_entry_committed_counter_ = 0; |
| @@ -1935,7 +1943,7 @@ TEST_F(NavigationControllerTest, NewSubframe) { |
| RegisterForAllNavNotifications(¬ifications, &controller); |
| const GURL url1("http://foo1"); |
| - main_test_rfh()->SendNavigate(0, url1); |
| + main_test_rfh()->NavigateAndCommitRendererInitiated(0, url1); |
| EXPECT_EQ(1U, navigation_entry_committed_counter_); |
| navigation_entry_committed_counter_ = 0; |
| @@ -1977,7 +1985,7 @@ TEST_F(NavigationControllerTest, AutoSubframe) { |
| RegisterForAllNavNotifications(¬ifications, &controller); |
| const GURL url1("http://foo/1"); |
| - main_test_rfh()->SendNavigate(1, url1); |
| + main_test_rfh()->NavigateAndCommitRendererInitiated(1, url1); |
| EXPECT_EQ(1U, navigation_entry_committed_counter_); |
| navigation_entry_committed_counter_ = 0; |
| @@ -2076,7 +2084,7 @@ TEST_F(NavigationControllerTest, BackSubframe) { |
| // Main page. |
| const GURL url1("http://foo1"); |
| - main_test_rfh()->SendNavigate(0, url1); |
| + main_test_rfh()->NavigateAndCommitRendererInitiated(0, url1); |
| EXPECT_EQ(1U, navigation_entry_committed_counter_); |
| navigation_entry_committed_counter_ = 0; |
| @@ -2148,11 +2156,11 @@ TEST_F(NavigationControllerTest, LinkClick) { |
| const GURL url1("http://foo1"); |
| const GURL url2("http://foo2"); |
| - main_test_rfh()->SendNavigate(0, url1); |
| + main_test_rfh()->NavigateAndCommitRendererInitiated(0, url1); |
| EXPECT_EQ(1U, navigation_entry_committed_counter_); |
| navigation_entry_committed_counter_ = 0; |
| - main_test_rfh()->SendNavigate(1, url2); |
| + main_test_rfh()->NavigateAndCommitRendererInitiated(1, url2); |
| EXPECT_EQ(1U, navigation_entry_committed_counter_); |
| navigation_entry_committed_counter_ = 0; |
| @@ -2173,7 +2181,7 @@ TEST_F(NavigationControllerTest, InPage) { |
| // Main page. |
| const GURL url1("http://foo"); |
| - main_test_rfh()->SendNavigate(0, url1); |
| + main_test_rfh()->NavigateAndCommitRendererInitiated(0, url1); |
| EXPECT_EQ(1U, navigation_entry_committed_counter_); |
| navigation_entry_committed_counter_ = 0; |
| @@ -2282,7 +2290,7 @@ TEST_F(NavigationControllerTest, InPage_Replace) { |
| // Main page. |
| const GURL url1("http://foo"); |
| - main_test_rfh()->SendNavigate(0, url1); |
| + main_test_rfh()->NavigateAndCommitRendererInitiated(0, url1); |
| EXPECT_EQ(1U, navigation_entry_committed_counter_); |
| navigation_entry_committed_counter_ = 0; |
| @@ -2323,7 +2331,7 @@ TEST_F(NavigationControllerTest, ClientRedirectAfterInPageNavigation) { |
| // Load an initial page. |
| { |
| const GURL url("http://foo/"); |
| - main_test_rfh()->SendNavigate(0, url); |
| + main_test_rfh()->NavigateAndCommitRendererInitiated(0, url); |
| EXPECT_EQ(1U, navigation_entry_committed_counter_); |
| navigation_entry_committed_counter_ = 0; |
| } |
| @@ -2331,7 +2339,7 @@ TEST_F(NavigationControllerTest, ClientRedirectAfterInPageNavigation) { |
| // Navigate to a new page. |
| { |
| const GURL url("http://foo2/"); |
| - main_test_rfh()->SendNavigate(1, url); |
| + main_test_rfh()->NavigateAndCommitRendererInitiated(1, url); |
| EXPECT_EQ(1U, navigation_entry_committed_counter_); |
| navigation_entry_committed_counter_ = 0; |
| } |
| @@ -2389,6 +2397,7 @@ TEST_F(NavigationControllerTest, ClientRedirectAfterInPageNavigation) { |
| { |
| const GURL url("http://foo2/"); |
| controller.GoBack(); |
| + main_test_rfh()->PrepareForCommit(); |
| main_test_rfh()->SendNavigate(1, url); |
| EXPECT_EQ(1U, navigation_entry_committed_counter_); |
| navigation_entry_committed_counter_ = 0; |
| @@ -2405,6 +2414,8 @@ TEST_F(NavigationControllerTest, PushStateWithoutPreviousEntry) |
| params.url = url; |
| params.page_state = PageState::CreateFromURL(url); |
| params.was_within_same_page = true; |
| + main_test_rfh()->SendRendererInitiatedNavigationRequest(url, false); |
| + main_test_rfh()->PrepareForCommit(); |
| contents()->GetMainFrame()->SendNavigateWithParams(¶ms); |
| // We pass if we don't crash. |
| } |
| @@ -3007,6 +3018,8 @@ TEST_F(NavigationControllerTest, RendererInitiatedPendingEntries) { |
| EXPECT_TRUE(controller.GetPendingEntry()->is_renderer_initiated()); |
| // If the user clicks another link, we should replace the pending entry. |
| + main_test_rfh()->SendRendererInitiatedNavigationRequest(url2, false); |
| + main_test_rfh()->PrepareForCommit(); |
| navigator->DidStartProvisionalLoad(main_test_rfh(), url2, false); |
| EXPECT_EQ(url2, controller.GetPendingEntry()->GetURL()); |
| EXPECT_EQ(url2, controller.GetPendingEntry()->GetVirtualURL()); |
| @@ -3027,11 +3040,11 @@ TEST_F(NavigationControllerTest, RendererInitiatedPendingEntries) { |
| // http://crbug.com/308444. |
| navigator->DidStartProvisionalLoad(main_test_rfh(), url1, false); |
| controller.GetPendingEntry()->set_should_replace_entry(true); |
| + |
| + main_test_rfh()->SendRendererInitiatedNavigationRequest(url2, false); |
| + main_test_rfh()->PrepareForCommit(); |
| navigator->DidStartProvisionalLoad(main_test_rfh(), url2, false); |
| EXPECT_TRUE(controller.GetPendingEntry()->should_replace_entry()); |
| - // TODO(nasko): Until OnNavigate is moved to RenderFrameHost, we need |
| - // to go through the RenderViewHost. The TestRenderViewHost routes navigations |
| - // to the main frame. |
| main_test_rfh()->SendNavigate(0, url2); |
| EXPECT_EQ(url2, controller.GetLastCommittedEntry()->GetURL()); |
| } |
| @@ -3232,6 +3245,7 @@ TEST_F(NavigationControllerTest, DontShowRendererURLInNewTabAfterCommit) { |
| EXPECT_FALSE(contents()->HasAccessedInitialDocument()); |
| // Simulate a commit and then starting a new pending navigation. |
| + main_test_rfh()->PrepareForCommit(); |
| main_test_rfh()->SendNavigate(0, url1); |
| NavigationController::LoadURLParams load_url2_params(url2); |
| load_url2_params.transition_type = ui::PAGE_TRANSITION_LINK; |
| @@ -3262,12 +3276,12 @@ TEST_F(NavigationControllerTest, IsInPageNavigation) { |
| // was the first document in the given frame, but we don't have enough |
| // information to identify that case currently. |
| const GURL blank_url(url::kAboutBlankURL); |
| - main_test_rfh()->SendNavigate(0, blank_url); |
| + main_test_rfh()->NavigateAndCommitRendererInitiated(0, blank_url); |
| EXPECT_TRUE(controller.IsURLInPageNavigation(url, true, |
| main_test_rfh())); |
| // Navigate to URL with no refs. |
| - main_test_rfh()->SendNavigate(0, url); |
| + main_test_rfh()->NavigateAndCommitRendererInitiated(0, url); |
| // Reloading the page is not an in-page navigation. |
| EXPECT_FALSE(controller.IsURLInPageNavigation(url, false, |
| @@ -3280,7 +3294,7 @@ TEST_F(NavigationControllerTest, IsInPageNavigation) { |
| main_test_rfh())); |
| // Navigate to URL with refs. |
| - main_test_rfh()->SendNavigate(1, url_with_ref); |
| + main_test_rfh()->NavigateAndCommitRendererInitiated(1, url_with_ref); |
| // Reloading the page is not an in-page navigation. |
| EXPECT_FALSE(controller.IsURLInPageNavigation(url_with_ref, false, |
| @@ -3318,14 +3332,14 @@ TEST_F(NavigationControllerTest, IsInPageNavigation) { |
| EXPECT_TRUE(prefs.allow_universal_access_from_file_urls); |
| // Allow in page navigation if existing URL is file scheme. |
| const GURL file_url("file:///foo/index.html"); |
| - main_test_rfh()->SendNavigate(0, file_url); |
| + main_test_rfh()->NavigateAndCommitRendererInitiated(0, file_url); |
| EXPECT_EQ(0, rph->bad_msg_count()); |
| EXPECT_TRUE(controller.IsURLInPageNavigation(different_origin_url, true, |
| main_test_rfh())); |
| EXPECT_EQ(0, rph->bad_msg_count()); |
| // Don't honor allow_universal_access_from_file_urls if existing URL is |
| // not file scheme. |
| - main_test_rfh()->SendNavigate(0, url); |
| + main_test_rfh()->NavigateAndCommitRendererInitiated(0, url); |
| EXPECT_FALSE(controller.IsURLInPageNavigation(different_origin_url, true, |
| main_test_rfh())); |
| EXPECT_EQ(1, rph->bad_msg_count()); |
| @@ -3352,7 +3366,7 @@ TEST_F(NavigationControllerTest, SameSubframe) { |
| NavigationControllerImpl& controller = controller_impl(); |
| // Navigate the main frame. |
| const GURL url("http://www.google.com/"); |
| - main_test_rfh()->SendNavigate(0, url); |
| + main_test_rfh()->NavigateAndCommitRendererInitiated(0, url); |
| // We should be at the first navigation entry. |
| EXPECT_EQ(controller.GetEntryCount(), 1); |
| @@ -4243,7 +4257,7 @@ TEST_F(NavigationControllerTest, IsInitialNavigation) { |
| // After commit, it stays false. |
| const GURL url1("http://foo1"); |
| - main_test_rfh()->SendNavigate(0, url1); |
| + main_test_rfh()->NavigateAndCommitRendererInitiated(0, url1); |
| EXPECT_EQ(1U, navigation_entry_committed_counter_); |
| navigation_entry_committed_counter_ = 0; |
| EXPECT_FALSE(controller.IsInitialNavigation()); |
| @@ -4266,7 +4280,7 @@ TEST_F(NavigationControllerTest, ClearFaviconOnRedirect) { |
| TestNotificationTracker notifications; |
| RegisterForAllNavNotifications(¬ifications, &controller); |
| - main_test_rfh()->SendNavigate(0, kPageWithFavicon); |
| + main_test_rfh()->NavigateAndCommitRendererInitiated(0, kPageWithFavicon); |
| EXPECT_EQ(1U, navigation_entry_committed_counter_); |
| navigation_entry_committed_counter_ = 0; |
| @@ -4281,6 +4295,9 @@ TEST_F(NavigationControllerTest, ClearFaviconOnRedirect) { |
| favicon_status.valid = true; |
| EXPECT_FALSE(DoImagesMatch(kDefaultFavicon, entry->GetFavicon().image)); |
| + main_test_rfh()->SendRendererInitiatedNavigationRequest(kPageWithoutFavicon, |
| + false); |
| + main_test_rfh()->PrepareForCommit(); |
| main_test_rfh()->SendNavigateWithTransition( |
| 0, // same page ID. |
| kPageWithoutFavicon, |
| @@ -4306,7 +4323,7 @@ TEST_F(NavigationControllerTest, BackNavigationDoesNotClearFavicon) { |
| TestNotificationTracker notifications; |
| RegisterForAllNavNotifications(¬ifications, &controller); |
| - main_test_rfh()->SendNavigate(0, kUrl1); |
| + main_test_rfh()->NavigateAndCommitRendererInitiated(0, kUrl1); |
| EXPECT_EQ(1U, navigation_entry_committed_counter_); |
| navigation_entry_committed_counter_ = 0; |
| @@ -4320,9 +4337,11 @@ TEST_F(NavigationControllerTest, BackNavigationDoesNotClearFavicon) { |
| favicon_status.valid = true; |
| // Navigate to another page and go back to the original page. |
| - main_test_rfh()->SendNavigate(1, kUrl2); |
| + main_test_rfh()->NavigateAndCommitRendererInitiated(1, kUrl2); |
| EXPECT_EQ(1U, navigation_entry_committed_counter_); |
| navigation_entry_committed_counter_ = 0; |
| + main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl1, false); |
| + main_test_rfh()->PrepareForCommit(); |
| main_test_rfh()->SendNavigateWithTransition( |
| 0, |
| kUrl1, |
| @@ -4426,7 +4445,7 @@ TEST_F(NavigationControllerTest, MAYBE_PurgeScreenshot) { |
| TEST_F(NavigationControllerTest, PushStateUpdatesTitleAndFavicon) { |
| // Navigate. |
| - contents()->GetMainFrame()->SendNavigate(1, GURL("http://foo")); |
| + main_test_rfh()->NavigateAndCommitRendererInitiated(1, GURL("http://foo")); |
| // Set title and favicon. |
| base::string16 title(base::ASCIIToUTF16("Title")); |
| @@ -4438,12 +4457,14 @@ TEST_F(NavigationControllerTest, PushStateUpdatesTitleAndFavicon) { |
| // history.pushState() is called. |
| FrameHostMsg_DidCommitProvisionalLoad_Params params; |
| - GURL url("http://foo#foo"); |
| + GURL kUrl2("http://foo#foo"); |
| params.page_id = 2; |
| - params.url = url; |
| - params.page_state = PageState::CreateFromURL(url); |
| + params.url = kUrl2; |
| + params.page_state = PageState::CreateFromURL(kUrl2); |
| params.was_within_same_page = true; |
| - contents()->GetMainFrame()->SendNavigateWithParams(¶ms); |
| + main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, false); |
| + main_test_rfh()->PrepareForCommit(); |
| + main_test_rfh()->SendNavigateWithParams(¶ms); |
| // The title should immediately be visible on the new NavigationEntry. |
| base::string16 new_title = |
| @@ -4523,6 +4544,8 @@ TEST_F(NavigationControllerTest, PostThenReplaceStateThenReload) { |
| params.was_within_same_page = false; |
| params.is_post = true; |
| params.post_id = 2; |
| + main_test_rfh()->SendRendererInitiatedNavigationRequest(url, false); |
| + main_test_rfh()->PrepareForCommit(); |
| contents()->GetMainFrame()->SendNavigateWithParams(¶ms); |
| // history.replaceState() is called. |
| @@ -4535,6 +4558,8 @@ TEST_F(NavigationControllerTest, PostThenReplaceStateThenReload) { |
| params.was_within_same_page = true; |
| params.is_post = false; |
| params.post_id = -1; |
| + main_test_rfh()->SendRendererInitiatedNavigationRequest(replace_url, false); |
| + main_test_rfh()->PrepareForCommit(); |
| contents()->GetMainFrame()->SendNavigateWithParams(¶ms); |
| // Now reload. replaceState overrides the POST, so we should not show a |