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

Unified Diff: content/browser/frame_host/navigation_controller_impl_unittest.cc

Issue 1777903003: Ensure the NavigationHandle's nav entry ID is updated during transfers. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Move fix to another CL (now cleanup only) Created 4 years, 9 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 side-by-side diff with in-line comments
Download patch
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 05694a8249c3f0c2ecc54994cf615ad04bab70cd..3692b4b08284ede88f56f33bcbd833465065c958 100644
--- a/content/browser/frame_host/navigation_controller_impl_unittest.cc
+++ b/content/browser/frame_host/navigation_controller_impl_unittest.cc
@@ -295,6 +295,25 @@ class TestWebContentsDelegate : public WebContentsDelegate {
int repost_form_warning_count_;
};
+// Observer that records the LoadCommittedDetails from the most recent commit.
+class LoadCommittedDetailsObserver : public WebContentsObserver {
+ public:
+ // Observes navigation for the specified |web_contents|.
+ explicit LoadCommittedDetailsObserver(WebContents* web_contents)
+ : WebContentsObserver(web_contents) {}
+
+ const LoadCommittedDetails& details() { return details_; }
+
+ private:
+ void DidNavigateAnyFrame(RenderFrameHost* render_frame_host,
+ const LoadCommittedDetails& details,
+ const FrameNavigateParams& params) override {
+ details_ = details;
+ }
+
+ LoadCommittedDetails details_;
+};
+
// -----------------------------------------------------------------------------
TEST_F(NavigationControllerTest, Defaults) {
@@ -408,23 +427,23 @@ TEST_F(NavigationControllerTest, DontDiscardWrongPendingEntry) {
// message, creating the NavigationHandle.
controller.LoadURL(url_1, Referrer(), ui::PAGE_TRANSITION_TYPED,
std::string());
- EXPECT_EQ(controller.GetVisibleEntry()->GetURL(), url_1);
+ EXPECT_EQ(url_1, controller.GetVisibleEntry()->GetURL());
Charlie Reis 2016/03/14 18:48:50 I also included changes to this test to list the e
main_test_rfh()->SimulateNavigationStart(url_1);
- EXPECT_EQ(controller.GetVisibleEntry()->GetURL(), url_1);
+ EXPECT_EQ(url_1, controller.GetVisibleEntry()->GetURL());
// Navigate to url_2, aborting url_1 before the DidStartProvisionalLoad
// message is received for url_2. Do not discard the pending entry for url_2
// here.
controller.LoadURL(url_2, Referrer(), ui::PAGE_TRANSITION_TYPED,
std::string());
- EXPECT_EQ(controller.GetVisibleEntry()->GetURL(), url_2);
+ EXPECT_EQ(url_2, controller.GetVisibleEntry()->GetURL());
main_test_rfh()->SimulateNavigationError(url_1, net::ERR_ABORTED);
- EXPECT_EQ(controller.GetVisibleEntry()->GetURL(), url_2);
+ EXPECT_EQ(url_2, controller.GetVisibleEntry()->GetURL());
// Get the DidStartProvisionalLoad message for url_2.
main_test_rfh()->SimulateNavigationStart(url_2);
- EXPECT_EQ(controller.GetVisibleEntry()->GetURL(), url_2);
+ EXPECT_EQ(url_2, controller.GetVisibleEntry()->GetURL());
}
TEST_F(NavigationControllerTest, LoadURL) {
@@ -1864,10 +1883,8 @@ TEST_F(NavigationControllerTest, Redirect) {
params.is_post = false;
params.page_state = PageState::CreateFromURL(url2);
- LoadCommittedDetails details;
-
- EXPECT_TRUE(controller.RendererDidNavigate(main_test_rfh(), params,
- &details));
+ main_test_rfh()->PrepareForCommit();
+ main_test_rfh()->SendNavigateWithParams(&params);
EXPECT_EQ(1U, navigation_entry_committed_counter_);
navigation_entry_committed_counter_ = 0;
@@ -1884,12 +1901,13 @@ TEST_F(NavigationControllerTest, Redirect) {
params.did_create_new_entry = false;
EXPECT_EQ(0U, notifications.size());
- EXPECT_TRUE(controller.RendererDidNavigate(main_test_rfh(), params,
- &details));
+ LoadCommittedDetailsObserver observer(contents());
+ main_test_rfh()->PrepareForCommit();
+ main_test_rfh()->SendNavigateWithParams(&params);
EXPECT_EQ(1U, navigation_entry_committed_counter_);
navigation_entry_committed_counter_ = 0;
- EXPECT_TRUE(details.type == NAVIGATION_TYPE_SAME_PAGE);
+ EXPECT_EQ(NAVIGATION_TYPE_SAME_PAGE, observer.details().type);
EXPECT_EQ(controller.GetEntryCount(), 1);
EXPECT_EQ(controller.GetLastCommittedEntryIndex(), 0);
EXPECT_TRUE(controller.GetLastCommittedEntry());
@@ -1933,10 +1951,8 @@ TEST_F(NavigationControllerTest, PostThenRedirect) {
params.is_post = true;
params.page_state = PageState::CreateFromURL(url2);
- LoadCommittedDetails details;
-
- EXPECT_TRUE(controller.RendererDidNavigate(main_test_rfh(), params,
- &details));
+ main_test_rfh()->PrepareForCommit();
+ main_test_rfh()->SendNavigateWithParams(&params);
EXPECT_EQ(1U, navigation_entry_committed_counter_);
navigation_entry_committed_counter_ = 0;
@@ -1954,12 +1970,13 @@ TEST_F(NavigationControllerTest, PostThenRedirect) {
params.is_post = false;
EXPECT_EQ(0U, notifications.size());
- EXPECT_TRUE(controller.RendererDidNavigate(main_test_rfh(), params,
- &details));
+ LoadCommittedDetailsObserver observer(contents());
+ main_test_rfh()->PrepareForCommit();
+ main_test_rfh()->SendNavigateWithParams(&params);
EXPECT_EQ(1U, navigation_entry_committed_counter_);
navigation_entry_committed_counter_ = 0;
- EXPECT_TRUE(details.type == NAVIGATION_TYPE_SAME_PAGE);
+ EXPECT_EQ(NAVIGATION_TYPE_SAME_PAGE, observer.details().type);
EXPECT_EQ(controller.GetEntryCount(), 1);
EXPECT_EQ(controller.GetLastCommittedEntryIndex(), 0);
EXPECT_TRUE(controller.GetLastCommittedEntry());
@@ -2003,15 +2020,15 @@ TEST_F(NavigationControllerTest, ImmediateRedirect) {
params.is_post = false;
params.page_state = PageState::CreateFromURL(url2);
- LoadCommittedDetails details;
+ LoadCommittedDetailsObserver observer(contents());
EXPECT_EQ(0U, notifications.size());
- EXPECT_TRUE(controller.RendererDidNavigate(main_test_rfh(), params,
- &details));
+ main_test_rfh()->PrepareForCommit();
+ main_test_rfh()->SendNavigateWithParams(&params);
EXPECT_EQ(1U, navigation_entry_committed_counter_);
navigation_entry_committed_counter_ = 0;
- EXPECT_TRUE(details.type == NAVIGATION_TYPE_NEW_PAGE);
+ EXPECT_EQ(NAVIGATION_TYPE_NEW_PAGE, observer.details().type);
EXPECT_EQ(controller.GetEntryCount(), 1);
EXPECT_EQ(controller.GetLastCommittedEntryIndex(), 0);
EXPECT_TRUE(controller.GetLastCommittedEntry());
@@ -2068,12 +2085,11 @@ TEST_F(NavigationControllerTest,
params.transition = ui::PAGE_TRANSITION_TYPED;
params.page_state = PageState::CreateFromURL(url1);
- LoadCommittedDetails details;
+ LoadCommittedDetailsObserver observer(contents());
main_test_rfh()->PrepareForCommit();
- EXPECT_TRUE(controller.RendererDidNavigate(main_test_rfh(), params,
- &details));
- EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, details.type);
+ main_test_rfh()->SendNavigateWithParams(&params);
+ EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, observer.details().type);
}
// Tests navigation via link click within a subframe. A new navigation entry
@@ -2093,8 +2109,8 @@ TEST_F(NavigationControllerTest, NewSubframe) {
process()->GetNextRoutingID(), blink::WebTreeScopeType::Document,
std::string(), "uniqueName0", blink::WebSandboxFlags::None,
blink::WebFrameOwnerProperties());
- RenderFrameHostImpl* subframe =
- contents()->GetFrameTree()->root()->child_at(0)->current_frame_host();
+ TestRenderFrameHost* subframe = static_cast<TestRenderFrameHost*>(
+ contents()->GetFrameTree()->root()->child_at(0)->current_frame_host());
const GURL subframe_url("http://foo1/subframe");
{
FrameHostMsg_DidCommitProvisionalLoad_Params params;
@@ -2109,8 +2125,8 @@ TEST_F(NavigationControllerTest, NewSubframe) {
params.page_state = PageState::CreateFromURL(subframe_url);
// Navigating should do nothing.
- LoadCommittedDetails details;
- EXPECT_FALSE(controller.RendererDidNavigate(subframe, params, &details));
+ subframe->PrepareForCommit();
+ subframe->SendNavigateWithParams(&params);
EXPECT_EQ(0U, notifications.size());
}
@@ -2127,18 +2143,19 @@ TEST_F(NavigationControllerTest, NewSubframe) {
params.is_post = false;
params.page_state = PageState::CreateFromURL(url2);
- LoadCommittedDetails details;
- EXPECT_TRUE(controller.RendererDidNavigate(subframe, params, &details));
+ LoadCommittedDetailsObserver observer(contents());
+ subframe->PrepareForCommit();
+ subframe->SendNavigateWithParams(&params);
EXPECT_EQ(1U, navigation_entry_committed_counter_);
navigation_entry_committed_counter_ = 0;
- EXPECT_EQ(url1, details.previous_url);
- EXPECT_FALSE(details.is_in_page);
- EXPECT_FALSE(details.is_main_frame);
+ EXPECT_EQ(url1, observer.details().previous_url);
+ EXPECT_FALSE(observer.details().is_in_page);
+ EXPECT_FALSE(observer.details().is_main_frame);
// The new entry should be appended.
NavigationEntryImpl* entry = controller.GetLastCommittedEntry();
EXPECT_EQ(2, controller.GetEntryCount());
- EXPECT_EQ(entry, details.entry);
+ EXPECT_EQ(entry, observer.details().entry);
// New entry should refer to the new page, but the old URL (entries only
// reflect the toplevel URL).
@@ -2174,8 +2191,8 @@ TEST_F(NavigationControllerTest, AutoSubframe) {
process()->GetNextRoutingID(), blink::WebTreeScopeType::Document,
std::string(), "uniqueName0", blink::WebSandboxFlags::None,
blink::WebFrameOwnerProperties());
- RenderFrameHostImpl* subframe =
- contents()->GetFrameTree()->root()->child_at(0)->current_frame_host();
+ TestRenderFrameHost* subframe = static_cast<TestRenderFrameHost*>(
+ contents()->GetFrameTree()->root()->child_at(0)->current_frame_host());
const GURL url2("http://foo/2");
{
FrameHostMsg_DidCommitProvisionalLoad_Params params;
@@ -2190,8 +2207,8 @@ TEST_F(NavigationControllerTest, AutoSubframe) {
params.page_state = PageState::CreateFromURL(url2);
// Navigating should do nothing.
- LoadCommittedDetails details;
- EXPECT_FALSE(controller.RendererDidNavigate(subframe, params, &details));
+ subframe->PrepareForCommit();
+ subframe->SendNavigateWithParams(&params);
EXPECT_EQ(0U, notifications.size());
}
@@ -2220,8 +2237,8 @@ TEST_F(NavigationControllerTest, AutoSubframe) {
process()->GetNextRoutingID(), blink::WebTreeScopeType::Document,
std::string(), "uniqueName1", blink::WebSandboxFlags::None,
blink::WebFrameOwnerProperties());
- RenderFrameHostImpl* subframe2 =
- contents()->GetFrameTree()->root()->child_at(1)->current_frame_host();
+ TestRenderFrameHost* subframe2 = static_cast<TestRenderFrameHost*>(
+ contents()->GetFrameTree()->root()->child_at(1)->current_frame_host());
const GURL url3("http://foo/3");
{
FrameHostMsg_DidCommitProvisionalLoad_Params params;
@@ -2236,8 +2253,8 @@ TEST_F(NavigationControllerTest, AutoSubframe) {
params.page_state = PageState::CreateFromURL(url3);
// Navigating should do nothing.
- LoadCommittedDetails details;
- EXPECT_FALSE(controller.RendererDidNavigate(subframe2, params, &details));
+ subframe2->PrepareForCommit();
+ subframe2->SendNavigateWithParams(&params);
EXPECT_EQ(0U, notifications.size());
}
@@ -2266,12 +2283,13 @@ TEST_F(NavigationControllerTest, AutoSubframe) {
blink::WebTreeScopeType::Document, std::string(),
"uniqueName2", blink::WebSandboxFlags::None,
blink::WebFrameOwnerProperties());
- RenderFrameHostImpl* subframe3 = contents()
- ->GetFrameTree()
- ->root()
- ->child_at(0)
- ->child_at(0)
- ->current_frame_host();
+ TestRenderFrameHost* subframe3 =
+ static_cast<TestRenderFrameHost*>(contents()
+ ->GetFrameTree()
+ ->root()
+ ->child_at(0)
+ ->child_at(0)
+ ->current_frame_host());
const GURL url4("http://foo/4");
{
FrameHostMsg_DidCommitProvisionalLoad_Params params;
@@ -2286,8 +2304,8 @@ TEST_F(NavigationControllerTest, AutoSubframe) {
params.page_state = PageState::CreateFromURL(url4);
// Navigating should do nothing.
- LoadCommittedDetails details;
- EXPECT_FALSE(controller.RendererDidNavigate(subframe3, params, &details));
+ subframe3->PrepareForCommit();
+ subframe3->SendNavigateWithParams(&params);
EXPECT_EQ(0U, notifications.size());
}
@@ -2331,8 +2349,8 @@ TEST_F(NavigationControllerTest, BackSubframe) {
process()->GetNextRoutingID(), blink::WebTreeScopeType::Document,
std::string(), "uniqueName0", blink::WebSandboxFlags::None,
blink::WebFrameOwnerProperties());
- RenderFrameHostImpl* subframe =
- contents()->GetFrameTree()->root()->child_at(0)->current_frame_host();
+ TestRenderFrameHost* subframe = static_cast<TestRenderFrameHost*>(
+ contents()->GetFrameTree()->root()->child_at(0)->current_frame_host());
const GURL subframe_url("http://foo1/subframe");
{
FrameHostMsg_DidCommitProvisionalLoad_Params params;
@@ -2347,8 +2365,8 @@ TEST_F(NavigationControllerTest, BackSubframe) {
params.page_state = PageState::CreateFromURL(subframe_url);
// Navigating should do nothing.
- LoadCommittedDetails details;
- EXPECT_FALSE(controller.RendererDidNavigate(subframe, params, &details));
+ subframe->PrepareForCommit();
+ subframe->SendNavigateWithParams(&params);
EXPECT_EQ(0U, notifications.size());
}
@@ -2366,8 +2384,8 @@ TEST_F(NavigationControllerTest, BackSubframe) {
params.page_state = PageState::CreateFromURL(url2);
// This should generate a new entry.
- LoadCommittedDetails details;
- EXPECT_TRUE(controller.RendererDidNavigate(subframe, params, &details));
+ subframe->PrepareForCommit();
+ subframe->SendNavigateWithParams(&params);
NavigationEntryImpl* entry2 = controller.GetLastCommittedEntry();
EXPECT_EQ(1U, navigation_entry_committed_counter_);
navigation_entry_committed_counter_ = 0;
@@ -2391,7 +2409,8 @@ TEST_F(NavigationControllerTest, BackSubframe) {
params.url = url3;
params.transition = ui::PAGE_TRANSITION_MANUAL_SUBFRAME;
params.page_state = PageState::CreateFromURL(url3);
- EXPECT_TRUE(controller.RendererDidNavigate(subframe, params, &details));
+ subframe->PrepareForCommit();
+ subframe->SendNavigateWithParams(&params);
EXPECT_EQ(1U, navigation_entry_committed_counter_);
navigation_entry_committed_counter_ = 0;
NavigationEntryImpl* entry3 = controller.GetLastCommittedEntry();
@@ -2416,7 +2435,8 @@ TEST_F(NavigationControllerTest, BackSubframe) {
params.url = url2;
params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME;
params.page_state = PageState::CreateFromURL(url2);
- EXPECT_TRUE(controller.RendererDidNavigate(subframe, params, &details));
+ subframe->PrepareForCommit();
+ subframe->SendNavigateWithParams(&params);
EXPECT_EQ(1U, navigation_entry_committed_counter_);
navigation_entry_committed_counter_ = 0;
EXPECT_EQ(entry2, controller.GetLastCommittedEntry());
@@ -2433,7 +2453,8 @@ TEST_F(NavigationControllerTest, BackSubframe) {
params.url = subframe_url;
params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME;
params.page_state = PageState::CreateFromURL(subframe_url);
- EXPECT_TRUE(controller.RendererDidNavigate(subframe, params, &details));
+ subframe->PrepareForCommit();
+ subframe->SendNavigateWithParams(&params);
EXPECT_EQ(1U, navigation_entry_committed_counter_);
navigation_entry_committed_counter_ = 0;
EXPECT_EQ(entry1, controller.GetLastCommittedEntry());
@@ -2494,14 +2515,14 @@ TEST_F(NavigationControllerTest, InPage) {
self_params.page_state = PageState::CreateFromURL(url1);
self_params.was_within_same_page = true;
- LoadCommittedDetails details;
- EXPECT_TRUE(controller.RendererDidNavigate(main_test_rfh(), self_params,
- &details));
+ LoadCommittedDetailsObserver observer(contents());
+ main_test_rfh()->PrepareForCommit();
+ main_test_rfh()->SendNavigateWithParams(&self_params);
NavigationEntry* entry1 = controller.GetLastCommittedEntry();
EXPECT_EQ(1U, navigation_entry_committed_counter_);
navigation_entry_committed_counter_ = 0;
- EXPECT_TRUE(details.is_in_page);
- EXPECT_TRUE(details.did_replace_entry);
+ EXPECT_TRUE(observer.details().is_in_page);
+ EXPECT_TRUE(observer.details().did_replace_entry);
EXPECT_EQ(1, controller.GetEntryCount());
// Fragment navigation to a new page_id.
@@ -2519,13 +2540,13 @@ TEST_F(NavigationControllerTest, InPage) {
params.was_within_same_page = true;
// This should generate a new entry.
- EXPECT_TRUE(controller.RendererDidNavigate(main_test_rfh(), params,
- &details));
+ main_test_rfh()->PrepareForCommit();
+ main_test_rfh()->SendNavigateWithParams(&params);
NavigationEntry* entry2 = controller.GetLastCommittedEntry();
EXPECT_EQ(1U, navigation_entry_committed_counter_);
navigation_entry_committed_counter_ = 0;
- EXPECT_TRUE(details.is_in_page);
- EXPECT_FALSE(details.did_replace_entry);
+ EXPECT_TRUE(observer.details().is_in_page);
+ EXPECT_FALSE(observer.details().did_replace_entry);
EXPECT_EQ(2, controller.GetEntryCount());
// Go back one.
@@ -2535,11 +2556,11 @@ TEST_F(NavigationControllerTest, InPage) {
back_params.page_id = 0;
back_params.nav_entry_id = entry1->GetUniqueID();
back_params.did_create_new_entry = false;
- EXPECT_TRUE(controller.RendererDidNavigate(main_test_rfh(), back_params,
- &details));
+ main_test_rfh()->PrepareForCommit();
+ main_test_rfh()->SendNavigateWithParams(&back_params);
EXPECT_EQ(1U, navigation_entry_committed_counter_);
navigation_entry_committed_counter_ = 0;
- EXPECT_TRUE(details.is_in_page);
+ EXPECT_TRUE(observer.details().is_in_page);
EXPECT_EQ(2, controller.GetEntryCount());
EXPECT_EQ(0, controller.GetCurrentEntryIndex());
EXPECT_EQ(back_params.url, controller.GetVisibleEntry()->GetURL());
@@ -2551,11 +2572,11 @@ TEST_F(NavigationControllerTest, InPage) {
forward_params.page_id = 1;
forward_params.nav_entry_id = entry2->GetUniqueID();
forward_params.did_create_new_entry = false;
- EXPECT_TRUE(controller.RendererDidNavigate(main_test_rfh(), forward_params,
- &details));
+ main_test_rfh()->PrepareForCommit();
+ main_test_rfh()->SendNavigateWithParams(&forward_params);
EXPECT_EQ(1U, navigation_entry_committed_counter_);
navigation_entry_committed_counter_ = 0;
- EXPECT_TRUE(details.is_in_page);
+ EXPECT_TRUE(observer.details().is_in_page);
EXPECT_EQ(2, controller.GetEntryCount());
EXPECT_EQ(1, controller.GetCurrentEntryIndex());
EXPECT_EQ(forward_params.url,
@@ -2566,11 +2587,11 @@ TEST_F(NavigationControllerTest, InPage) {
// one identified by an existing page ID. This would result in the second URL
// losing the reference fragment when you navigate away from it and then back.
controller.GoBack();
- EXPECT_TRUE(controller.RendererDidNavigate(main_test_rfh(), back_params,
- &details));
+ main_test_rfh()->PrepareForCommit();
+ main_test_rfh()->SendNavigateWithParams(&back_params);
controller.GoForward();
- EXPECT_TRUE(controller.RendererDidNavigate(main_test_rfh(), forward_params,
- &details));
+ main_test_rfh()->PrepareForCommit();
+ main_test_rfh()->SendNavigateWithParams(&forward_params);
EXPECT_EQ(forward_params.url,
controller.GetVisibleEntry()->GetURL());
@@ -2581,11 +2602,11 @@ TEST_F(NavigationControllerTest, InPage) {
params.did_create_new_entry = true;
params.url = url3;
navigation_entry_committed_counter_ = 0;
- EXPECT_TRUE(controller.RendererDidNavigate(main_test_rfh(), params,
- &details));
+ main_test_rfh()->PrepareForCommit();
+ main_test_rfh()->SendNavigateWithParams(&params);
EXPECT_EQ(1U, navigation_entry_committed_counter_);
navigation_entry_committed_counter_ = 0;
- EXPECT_FALSE(details.is_in_page);
+ EXPECT_FALSE(observer.details().is_in_page);
EXPECT_EQ(3, controller.GetEntryCount());
EXPECT_EQ(2, controller.GetCurrentEntryIndex());
}
@@ -2616,13 +2637,13 @@ TEST_F(NavigationControllerTest, InPage_Replace) {
params.was_within_same_page = true;
// This should NOT generate a new entry, nor prune the list.
- LoadCommittedDetails details;
- EXPECT_TRUE(controller.RendererDidNavigate(main_test_rfh(), params,
- &details));
+ LoadCommittedDetailsObserver observer(contents());
+ main_test_rfh()->PrepareForCommit();
+ main_test_rfh()->SendNavigateWithParams(&params);
EXPECT_EQ(1U, navigation_entry_committed_counter_);
navigation_entry_committed_counter_ = 0;
- EXPECT_TRUE(details.is_in_page);
- EXPECT_TRUE(details.did_replace_entry);
+ EXPECT_TRUE(observer.details().is_in_page);
+ EXPECT_TRUE(observer.details().did_replace_entry);
EXPECT_EQ(1, controller.GetEntryCount());
}
@@ -2670,13 +2691,13 @@ TEST_F(NavigationControllerTest, ClientRedirectAfterInPageNavigation) {
params.was_within_same_page = true;
// This should NOT generate a new entry, nor prune the list.
- LoadCommittedDetails details;
- EXPECT_TRUE(controller.RendererDidNavigate(main_test_rfh(), params,
- &details));
+ LoadCommittedDetailsObserver observer(contents());
+ main_test_rfh()->PrepareForCommit();
+ main_test_rfh()->SendNavigateWithParams(&params);
EXPECT_EQ(1U, navigation_entry_committed_counter_);
navigation_entry_committed_counter_ = 0;
- EXPECT_TRUE(details.is_in_page);
- EXPECT_TRUE(details.did_replace_entry);
+ EXPECT_TRUE(observer.details().is_in_page);
+ EXPECT_TRUE(observer.details().did_replace_entry);
EXPECT_EQ(2, controller.GetEntryCount());
}
@@ -2697,12 +2718,12 @@ TEST_F(NavigationControllerTest, ClientRedirectAfterInPageNavigation) {
params.page_state = PageState::CreateFromURL(url);
// This SHOULD generate a new entry.
- LoadCommittedDetails details;
- EXPECT_TRUE(controller.RendererDidNavigate(main_test_rfh(), params,
- &details));
+ LoadCommittedDetailsObserver observer(contents());
+ main_test_rfh()->PrepareForCommit();
+ main_test_rfh()->SendNavigateWithParams(&params);
EXPECT_EQ(1U, navigation_entry_committed_counter_);
navigation_entry_committed_counter_ = 0;
- EXPECT_FALSE(details.is_in_page);
+ EXPECT_FALSE(observer.details().is_in_page);
EXPECT_EQ(3, controller.GetEntryCount());
}
@@ -2881,9 +2902,10 @@ TEST_F(NavigationControllerTest, RestoreNavigate) {
params.gesture = NavigationGestureUser;
params.is_post = false;
params.page_state = PageState::CreateFromURL(url);
- LoadCommittedDetails details;
- our_controller.RendererDidNavigate(our_contents->GetMainFrame(), params,
- &details);
+ TestRenderFrameHost* main_rfh =
+ static_cast<TestRenderFrameHost*>(our_contents->GetMainFrame());
+ main_rfh->PrepareForCommit();
+ main_rfh->SendNavigateWithParams(&params);
// There should be no longer any pending entry and one committed one. This
// means that we were able to locate the entry, assign its site instance, and
@@ -2963,9 +2985,10 @@ TEST_F(NavigationControllerTest, RestoreNavigateAfterFailure) {
params.gesture = NavigationGestureUser;
params.is_post = false;
params.page_state = PageState::CreateFromURL(url);
- LoadCommittedDetails details;
- our_controller.RendererDidNavigate(our_contents->GetMainFrame(), params,
- &details);
+ TestRenderFrameHost* main_rfh =
+ static_cast<TestRenderFrameHost*>(our_contents->GetMainFrame());
+ main_rfh->PrepareForCommit();
+ main_rfh->SendNavigateWithParams(&params);
// There should be no pending entry and one committed one.
EXPECT_EQ(1, our_controller.GetEntryCount());
@@ -3770,8 +3793,8 @@ TEST_F(NavigationControllerTest, SameSubframe) {
process()->GetNextRoutingID(), blink::WebTreeScopeType::Document,
std::string(), "uniqueName0", blink::WebSandboxFlags::None,
blink::WebFrameOwnerProperties());
- RenderFrameHostImpl* subframe =
- contents()->GetFrameTree()->root()->child_at(0)->current_frame_host();
+ TestRenderFrameHost* subframe = static_cast<TestRenderFrameHost*>(
+ contents()->GetFrameTree()->root()->child_at(0)->current_frame_host());
const GURL subframe_url("http://www.google.com/#");
FrameHostMsg_DidCommitProvisionalLoad_Params params;
params.page_id = 0;
@@ -3783,8 +3806,8 @@ TEST_F(NavigationControllerTest, SameSubframe) {
params.gesture = NavigationGestureAuto;
params.is_post = false;
params.page_state = PageState::CreateFromURL(subframe_url);
- LoadCommittedDetails details;
- EXPECT_FALSE(controller.RendererDidNavigate(subframe, params, &details));
+ subframe->PrepareForCommit();
+ subframe->SendNavigateWithParams(&params);
// Nothing should have changed.
EXPECT_EQ(controller.GetEntryCount(), 1);
@@ -3937,8 +3960,8 @@ TEST_F(NavigationControllerTest, SubframeWhilePending) {
process()->GetNextRoutingID(), blink::WebTreeScopeType::Document,
std::string(), "uniqueName0", blink::WebSandboxFlags::None,
blink::WebFrameOwnerProperties());
- RenderFrameHostImpl* subframe =
- contents()->GetFrameTree()->root()->child_at(0)->current_frame_host();
+ TestRenderFrameHost* subframe = static_cast<TestRenderFrameHost*>(
+ contents()->GetFrameTree()->root()->child_at(0)->current_frame_host());
const GURL url1_sub("http://foo/subframe");
FrameHostMsg_DidCommitProvisionalLoad_Params params;
params.page_id = controller.GetLastCommittedEntry()->GetPageID();
@@ -3950,10 +3973,10 @@ TEST_F(NavigationControllerTest, SubframeWhilePending) {
params.gesture = NavigationGestureAuto;
params.is_post = false;
params.page_state = PageState::CreateFromURL(url1_sub);
- LoadCommittedDetails details;
// This should return false meaning that nothing was actually updated.
- EXPECT_FALSE(controller.RendererDidNavigate(subframe, params, &details));
+ subframe->PrepareForCommit();
+ subframe->SendNavigateWithParams(&params);
// The notification should have updated the last committed one, and not
// the pending load.
@@ -5012,6 +5035,8 @@ TEST_F(NavigationControllerTest, PostThenReplaceStateThenReload) {
TEST_F(NavigationControllerTest, UnreachableURLGivesErrorPage) {
GURL url("http://foo");
+ controller().LoadURL(url, Referrer(), ui::PAGE_TRANSITION_TYPED,
+ std::string());
FrameHostMsg_DidCommitProvisionalLoad_Params params;
params.page_id = 1;
params.nav_entry_id = 0;
@@ -5027,21 +5052,23 @@ TEST_F(NavigationControllerTest, UnreachableURLGivesErrorPage) {
// Navigate to new page.
{
- LoadCommittedDetails details;
- controller_impl().RendererDidNavigate(main_test_rfh(), params, &details);
+ LoadCommittedDetailsObserver observer(contents());
+ main_test_rfh()->PrepareForCommit();
+ main_test_rfh()->SendNavigateWithParams(&params);
EXPECT_EQ(PAGE_TYPE_ERROR,
controller_impl().GetLastCommittedEntry()->GetPageType());
- EXPECT_EQ(NAVIGATION_TYPE_NEW_PAGE, details.type);
+ EXPECT_EQ(NAVIGATION_TYPE_NEW_PAGE, observer.details().type);
}
// Navigate to existing page.
{
params.did_create_new_entry = false;
- LoadCommittedDetails details;
- controller_impl().RendererDidNavigate(main_test_rfh(), params, &details);
+ LoadCommittedDetailsObserver observer(contents());
+ main_test_rfh()->PrepareForCommit();
+ main_test_rfh()->SendNavigateWithParams(&params);
EXPECT_EQ(PAGE_TYPE_ERROR,
controller_impl().GetLastCommittedEntry()->GetPageType());
- EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, details.type);
+ EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, observer.details().type);
}
// Navigate to same page.
@@ -5052,11 +5079,12 @@ TEST_F(NavigationControllerTest, UnreachableURLGivesErrorPage) {
params.nav_entry_id = controller_impl().GetPendingEntry()->GetUniqueID();
params.transition = ui::PAGE_TRANSITION_TYPED;
{
- LoadCommittedDetails details;
- controller_impl().RendererDidNavigate(main_test_rfh(), params, &details);
+ LoadCommittedDetailsObserver observer(contents());
+ main_test_rfh()->PrepareForCommit();
+ main_test_rfh()->SendNavigateWithParams(&params);
EXPECT_EQ(PAGE_TYPE_ERROR,
controller_impl().GetLastCommittedEntry()->GetPageType());
- EXPECT_EQ(NAVIGATION_TYPE_SAME_PAGE, details.type);
+ EXPECT_EQ(NAVIGATION_TYPE_SAME_PAGE, observer.details().type);
}
// Navigate in page.
@@ -5064,11 +5092,12 @@ TEST_F(NavigationControllerTest, UnreachableURLGivesErrorPage) {
params.transition = ui::PAGE_TRANSITION_LINK;
params.was_within_same_page = true;
{
- LoadCommittedDetails details;
- controller_impl().RendererDidNavigate(main_test_rfh(), params, &details);
+ LoadCommittedDetailsObserver observer(contents());
+ main_test_rfh()->PrepareForCommit();
+ main_test_rfh()->SendNavigateWithParams(&params);
EXPECT_EQ(PAGE_TYPE_ERROR,
controller_impl().GetLastCommittedEntry()->GetPageType());
- EXPECT_TRUE(details.is_in_page);
+ EXPECT_TRUE(observer.details().is_in_page);
}
}
@@ -5139,6 +5168,8 @@ TEST_F(NavigationControllerTest, StaleNavigationsResurrected) {
// killed.
TEST_F(NavigationControllerTest, RendererNavigateBogusSecurityInfo) {
GURL url("http://foo.test");
+ controller().LoadURL(url, Referrer(), ui::PAGE_TRANSITION_TYPED,
+ std::string());
FrameHostMsg_DidCommitProvisionalLoad_Params params;
params.page_id = 0;
params.nav_entry_id = 0;
@@ -5152,22 +5183,26 @@ TEST_F(NavigationControllerTest, RendererNavigateBogusSecurityInfo) {
params.was_within_same_page = false;
params.security_info = "bogus security info!";
- LoadCommittedDetails details;
+ LoadCommittedDetailsObserver observer(contents());
EXPECT_EQ(0, main_test_rfh()->GetProcess()->bad_msg_count());
- EXPECT_TRUE(
- controller_impl().RendererDidNavigate(main_test_rfh(), params, &details));
+ main_test_rfh()->PrepareForCommit();
+ main_test_rfh()->SendNavigateWithParams(&params);
SSLStatus default_ssl_status;
EXPECT_EQ(default_ssl_status.security_style,
- details.ssl_status.security_style);
- EXPECT_EQ(default_ssl_status.cert_id, details.ssl_status.cert_id);
- EXPECT_EQ(default_ssl_status.cert_status, details.ssl_status.cert_status);
- EXPECT_EQ(default_ssl_status.security_bits, details.ssl_status.security_bits);
+ observer.details().ssl_status.security_style);
+ EXPECT_EQ(default_ssl_status.cert_id, observer.details().ssl_status.cert_id);
+ EXPECT_EQ(default_ssl_status.cert_status,
+ observer.details().ssl_status.cert_status);
+ EXPECT_EQ(default_ssl_status.security_bits,
+ observer.details().ssl_status.security_bits);
EXPECT_EQ(default_ssl_status.connection_status,
- details.ssl_status.connection_status);
+ observer.details().ssl_status.connection_status);
EXPECT_EQ(default_ssl_status.content_status,
- details.ssl_status.content_status);
- EXPECT_EQ(0u, details.ssl_status.signed_certificate_timestamp_ids.size());
+ observer.details().ssl_status.content_status);
+ EXPECT_EQ(
+ 0u,
+ observer.details().ssl_status.signed_certificate_timestamp_ids.size());
EXPECT_EQ(1, main_test_rfh()->GetProcess()->bad_msg_count());
}
« no previous file with comments | « content/browser/frame_host/navigation_controller_impl.cc ('k') | content/browser/frame_host/navigation_handle_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698