| 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..01213705810c5fef43f5cdfc593ae9a5736d9897 100644
|
| --- a/content/browser/frame_host/navigation_controller_impl_unittest.cc
|
| +++ b/content/browser/frame_host/navigation_controller_impl_unittest.cc
|
| @@ -21,6 +21,7 @@
|
| #include "content/browser/frame_host/frame_navigation_entry.h"
|
| #include "content/browser/frame_host/navigation_entry_impl.h"
|
| #include "content/browser/frame_host/navigation_entry_screenshot_manager.h"
|
| +#include "content/browser/frame_host/navigation_handle_impl.h"
|
| #include "content/browser/frame_host/navigation_request.h"
|
| #include "content/browser/frame_host/navigator.h"
|
| #include "content/browser/frame_host/navigator_impl.h"
|
| @@ -295,6 +296,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) {
|
| @@ -1864,10 +1884,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(¶ms);
|
| EXPECT_EQ(1U, navigation_entry_committed_counter_);
|
| navigation_entry_committed_counter_ = 0;
|
|
|
| @@ -1884,12 +1902,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(¶ms);
|
| 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 +1952,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(¶ms);
|
| EXPECT_EQ(1U, navigation_entry_committed_counter_);
|
| navigation_entry_committed_counter_ = 0;
|
|
|
| @@ -1954,12 +1971,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(¶ms);
|
| 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 +2021,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(¶ms);
|
| 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 +2086,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(¶ms);
|
| + EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, observer.details().type);
|
| }
|
|
|
| // Tests navigation via link click within a subframe. A new navigation entry
|
| @@ -2093,8 +2110,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 +2126,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(¶ms);
|
| EXPECT_EQ(0U, notifications.size());
|
| }
|
|
|
| @@ -2127,18 +2144,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(¶ms);
|
| 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 +2192,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 +2208,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(¶ms);
|
| EXPECT_EQ(0U, notifications.size());
|
| }
|
|
|
| @@ -2220,8 +2238,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 +2254,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(¶ms);
|
| EXPECT_EQ(0U, notifications.size());
|
| }
|
|
|
| @@ -2266,12 +2284,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 +2305,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(¶ms);
|
| EXPECT_EQ(0U, notifications.size());
|
| }
|
|
|
| @@ -2331,8 +2350,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 +2366,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(¶ms);
|
| EXPECT_EQ(0U, notifications.size());
|
| }
|
|
|
| @@ -2366,8 +2385,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(¶ms);
|
| NavigationEntryImpl* entry2 = controller.GetLastCommittedEntry();
|
| EXPECT_EQ(1U, navigation_entry_committed_counter_);
|
| navigation_entry_committed_counter_ = 0;
|
| @@ -2391,7 +2410,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(¶ms);
|
| EXPECT_EQ(1U, navigation_entry_committed_counter_);
|
| navigation_entry_committed_counter_ = 0;
|
| NavigationEntryImpl* entry3 = controller.GetLastCommittedEntry();
|
| @@ -2416,7 +2436,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(¶ms);
|
| EXPECT_EQ(1U, navigation_entry_committed_counter_);
|
| navigation_entry_committed_counter_ = 0;
|
| EXPECT_EQ(entry2, controller.GetLastCommittedEntry());
|
| @@ -2433,7 +2454,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(¶ms);
|
| EXPECT_EQ(1U, navigation_entry_committed_counter_);
|
| navigation_entry_committed_counter_ = 0;
|
| EXPECT_EQ(entry1, controller.GetLastCommittedEntry());
|
| @@ -2494,14 +2516,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 +2541,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(¶ms);
|
| 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 +2557,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 +2573,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 +2588,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 +2603,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(¶ms);
|
| 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 +2638,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(¶ms);
|
| 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 +2692,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(¶ms);
|
| 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 +2719,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(¶ms);
|
| 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 +2903,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(¶ms);
|
|
|
| // 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 +2986,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(¶ms);
|
|
|
| // There should be no pending entry and one committed one.
|
| EXPECT_EQ(1, our_controller.GetEntryCount());
|
| @@ -3770,8 +3794,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 +3807,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(¶ms);
|
|
|
| // Nothing should have changed.
|
| EXPECT_EQ(controller.GetEntryCount(), 1);
|
| @@ -3937,8 +3961,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 +3974,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(¶ms);
|
|
|
| // The notification should have updated the last committed one, and not
|
| // the pending load.
|
| @@ -5012,6 +5036,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 +5053,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(¶ms);
|
| 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(¶ms);
|
| 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 +5080,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(¶ms);
|
| 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 +5093,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(¶ms);
|
| EXPECT_EQ(PAGE_TYPE_ERROR,
|
| controller_impl().GetLastCommittedEntry()->GetPageType());
|
| - EXPECT_TRUE(details.is_in_page);
|
| + EXPECT_TRUE(observer.details().is_in_page);
|
| }
|
| }
|
|
|
| @@ -5139,6 +5169,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 +5184,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(¶ms);
|
|
|
| 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());
|
| }
|
|
|