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 05694a8249c3f0c2ecc54994cf615ad04bab70cd..9b33239d13765ea5424bf889f54956c2bb3d9af6 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 { |
|
nasko
2016/03/11 17:10:06
Can't we use FrameNavigateParamsCapturer which is
Charlie Reis
2016/03/11 20:12:48
That one is defined for a browsertest and spins a
nasko
2016/03/11 20:21:56
Acknowledged.
|
| + 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,10 @@ TEST_F(NavigationControllerTest, Redirect) { |
| params.is_post = false; |
| params.page_state = PageState::CreateFromURL(url2); |
| - LoadCommittedDetails details; |
| + LoadCommittedDetailsObserver observer(contents()); |
|
nasko
2016/03/11 17:10:06
nit: I'd move this closer to the commit it is obse
Charlie Reis
2016/03/11 20:12:48
Done.
|
| - 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 +1904,12 @@ TEST_F(NavigationControllerTest, Redirect) { |
| params.did_create_new_entry = false; |
| 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_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 +1953,10 @@ TEST_F(NavigationControllerTest, PostThenRedirect) { |
| params.is_post = true; |
| params.page_state = PageState::CreateFromURL(url2); |
| - LoadCommittedDetails details; |
| + LoadCommittedDetailsObserver observer(contents()); |
|
nasko
2016/03/11 17:10:06
nit: Same nit as above, closer to the commit it ob
Charlie Reis
2016/03/11 20:12:48
Done.
|
| - 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 +1974,12 @@ TEST_F(NavigationControllerTest, PostThenRedirect) { |
| params.is_post = false; |
| 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_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 +2023,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 +2088,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 +2112,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 +2128,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 +2146,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 +2194,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 +2210,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 +2240,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 +2256,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 +2286,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 +2307,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 +2352,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 +2368,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 +2387,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 +2412,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 +2438,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 +2456,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 +2518,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 +2543,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 +2559,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 +2575,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 +2590,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 +2605,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 +2640,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 +2694,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 +2721,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 +2905,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 +2988,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 +3796,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 +3809,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 +3963,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 +3976,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 +5038,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 +5055,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 +5082,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 +5095,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 +5171,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 +5186,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()); |
| } |