| Index: content/renderer/render_view_browsertest.cc
|
| diff --git a/content/renderer/render_view_browsertest.cc b/content/renderer/render_view_browsertest.cc
|
| index 87e517d44db788111cca26c814e3177179a61baa..63953e78acad61ee7c714b144fcec7aadceb06c8 100644
|
| --- a/content/renderer/render_view_browsertest.cc
|
| +++ b/content/renderer/render_view_browsertest.cc
|
| @@ -363,7 +363,7 @@ TEST_F(RenderViewImplTest, OnNavigationHttpPost) {
|
| nav_params.common_params.url = GURL("data:text/html,<div>Page</div>");
|
| nav_params.common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
|
| nav_params.common_params.transition = ui::PAGE_TRANSITION_TYPED;
|
| - nav_params.page_id = -1;
|
| + nav_params.history_params.page_id = -1;
|
| nav_params.is_post = true;
|
| nav_params.commit_params.browser_navigation_start =
|
| base::TimeTicks::FromInternalValue(1);
|
| @@ -571,10 +571,10 @@ TEST_F(RenderViewImplTest, SendSwapOutACK) {
|
| nav_params.common_params.url = GURL("data:text/html,<div>Page B</div>");
|
| nav_params.common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
|
| nav_params.common_params.transition = ui::PAGE_TRANSITION_TYPED;
|
| - nav_params.current_history_list_length = 1;
|
| - nav_params.current_history_list_offset = 0;
|
| - nav_params.pending_history_list_offset = 1;
|
| - nav_params.page_id = -1;
|
| + nav_params.history_params.current_history_list_length = 1;
|
| + nav_params.history_params.current_history_list_offset = 0;
|
| + nav_params.history_params.pending_history_list_offset = 1;
|
| + nav_params.history_params.page_id = -1;
|
| nav_params.commit_params.browser_navigation_start =
|
| base::TimeTicks::FromInternalValue(1);
|
| frame()->OnNavigate(nav_params);
|
| @@ -609,14 +609,17 @@ TEST_F(RenderViewImplTest, ReloadWhileSwappedOut) {
|
| FrameMsg_Navigate_Params params_A;
|
| params_A.common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
|
| params_A.common_params.transition = ui::PAGE_TRANSITION_FORWARD_BACK;
|
| - params_A.current_history_list_length = 2;
|
| - params_A.current_history_list_offset = 1;
|
| - params_A.pending_history_list_offset = 0;
|
| - params_A.page_id = 1;
|
| - params_A.commit_params.page_state = state_A;
|
| + params_A.history_params.current_history_list_length = 2;
|
| + params_A.history_params.current_history_list_offset = 1;
|
| + params_A.history_params.pending_history_list_offset = 0;
|
| + params_A.history_params.page_id = 1;
|
| + params_A.history_params.page_state = state_A;
|
| params_A.commit_params.browser_navigation_start =
|
| base::TimeTicks::FromInternalValue(1);
|
| frame()->OnNavigate(params_A);
|
| + EXPECT_EQ(1, view()->historyBackListCount());
|
| + EXPECT_EQ(2, view()->historyBackListCount() +
|
| + view()->historyForwardListCount() + 1);
|
| ProcessPendingMessages();
|
|
|
| // Respond to a swap out request.
|
| @@ -637,11 +640,11 @@ TEST_F(RenderViewImplTest, ReloadWhileSwappedOut) {
|
| nav_params.common_params.url = GURL("data:text/html,<div>Page A</div>");
|
| nav_params.common_params.navigation_type = FrameMsg_Navigate_Type::RELOAD;
|
| nav_params.common_params.transition = ui::PAGE_TRANSITION_RELOAD;
|
| - nav_params.current_history_list_length = 2;
|
| - nav_params.current_history_list_offset = 0;
|
| - nav_params.pending_history_list_offset = 0;
|
| - nav_params.page_id = 1;
|
| - nav_params.commit_params.page_state = state_A;
|
| + nav_params.history_params.current_history_list_length = 2;
|
| + nav_params.history_params.current_history_list_offset = 0;
|
| + nav_params.history_params.pending_history_list_offset = 0;
|
| + nav_params.history_params.page_id = 1;
|
| + nav_params.history_params.page_state = state_A;
|
| nav_params.commit_params.browser_navigation_start =
|
| base::TimeTicks::FromInternalValue(1);
|
| frame()->OnNavigate(nav_params);
|
| @@ -756,11 +759,11 @@ TEST_F(RenderViewImplTest, DISABLED_LastCommittedUpdateState) {
|
| FrameMsg_Navigate_Params params_C;
|
| params_C.common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
|
| params_C.common_params.transition = ui::PAGE_TRANSITION_FORWARD_BACK;
|
| - params_C.current_history_list_length = 4;
|
| - params_C.current_history_list_offset = 3;
|
| - params_C.pending_history_list_offset = 2;
|
| - params_C.page_id = 3;
|
| - params_C.commit_params.page_state = state_C;
|
| + params_C.history_params.current_history_list_length = 4;
|
| + params_C.history_params.current_history_list_offset = 3;
|
| + params_C.history_params.pending_history_list_offset = 2;
|
| + params_C.history_params.page_id = 3;
|
| + params_C.history_params.page_state = state_C;
|
| params_C.commit_params.browser_navigation_start =
|
| base::TimeTicks::FromInternalValue(1);
|
| frame()->OnNavigate(params_C);
|
| @@ -775,11 +778,11 @@ TEST_F(RenderViewImplTest, DISABLED_LastCommittedUpdateState) {
|
| FrameMsg_Navigate_Params params_B;
|
| params_B.common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
|
| params_B.common_params.transition = ui::PAGE_TRANSITION_FORWARD_BACK;
|
| - params_B.current_history_list_length = 4;
|
| - params_B.current_history_list_offset = 2;
|
| - params_B.pending_history_list_offset = 1;
|
| - params_B.page_id = 2;
|
| - params_B.commit_params.page_state = state_B;
|
| + params_B.history_params.current_history_list_length = 4;
|
| + params_B.history_params.current_history_list_offset = 2;
|
| + params_B.history_params.pending_history_list_offset = 1;
|
| + params_B.history_params.page_id = 2;
|
| + params_B.history_params.page_state = state_B;
|
| params_B.commit_params.browser_navigation_start =
|
| base::TimeTicks::FromInternalValue(1);
|
| frame()->OnNavigate(params_B);
|
| @@ -788,11 +791,11 @@ TEST_F(RenderViewImplTest, DISABLED_LastCommittedUpdateState) {
|
| FrameMsg_Navigate_Params params;
|
| params.common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
|
| params.common_params.transition = ui::PAGE_TRANSITION_FORWARD_BACK;
|
| - params_B.current_history_list_length = 4;
|
| - params_B.current_history_list_offset = 2;
|
| - params_B.pending_history_list_offset = 0;
|
| - params.page_id = 1;
|
| - params.commit_params.page_state = state_A;
|
| + params.history_params.current_history_list_length = 4;
|
| + params.history_params.current_history_list_offset = 2;
|
| + params.history_params.pending_history_list_offset = 0;
|
| + params.history_params.page_id = 1;
|
| + params.history_params.page_state = state_A;
|
| params.commit_params.browser_navigation_start =
|
| base::TimeTicks::FromInternalValue(1);
|
| frame()->OnNavigate(params);
|
| @@ -841,11 +844,11 @@ TEST_F(RenderViewImplTest, StaleNavigationsIgnored) {
|
| FrameMsg_Navigate_Params params_A;
|
| params_A.common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
|
| params_A.common_params.transition = ui::PAGE_TRANSITION_FORWARD_BACK;
|
| - params_A.current_history_list_length = 2;
|
| - params_A.current_history_list_offset = 1;
|
| - params_A.pending_history_list_offset = 0;
|
| - params_A.page_id = 1;
|
| - params_A.commit_params.page_state = state_A;
|
| + params_A.history_params.current_history_list_length = 2;
|
| + params_A.history_params.current_history_list_offset = 1;
|
| + params_A.history_params.pending_history_list_offset = 0;
|
| + params_A.history_params.page_id = 1;
|
| + params_A.history_params.page_state = state_A;
|
| params_A.commit_params.browser_navigation_start =
|
| base::TimeTicks::FromInternalValue(1);
|
| frame()->OnNavigate(params_A);
|
| @@ -861,11 +864,11 @@ TEST_F(RenderViewImplTest, StaleNavigationsIgnored) {
|
| FrameMsg_Navigate_Params params_B;
|
| params_B.common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
|
| params_B.common_params.transition = ui::PAGE_TRANSITION_FORWARD_BACK;
|
| - params_B.current_history_list_length = 2;
|
| - params_B.current_history_list_offset = 0;
|
| - params_B.pending_history_list_offset = 1;
|
| - params_B.page_id = 2;
|
| - params_B.commit_params.page_state =
|
| + params_B.history_params.current_history_list_length = 2;
|
| + params_B.history_params.current_history_list_offset = 0;
|
| + params_B.history_params.pending_history_list_offset = 1;
|
| + params_B.history_params.page_id = 2;
|
| + params_B.history_params.page_state =
|
| state_A; // Doesn't matter, just has to be present.
|
| params_B.commit_params.browser_navigation_start =
|
| base::TimeTicks::FromInternalValue(1);
|
| @@ -1582,7 +1585,7 @@ TEST_F(RenderViewImplTest, DISABLED_DidFailProvisionalLoadWithErrorForError) {
|
| // Start a load that will reach provisional state synchronously,
|
| // but won't complete synchronously.
|
| FrameMsg_Navigate_Params params;
|
| - params.page_id = -1;
|
| + params.history_params.page_id = -1;
|
| params.common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
|
| params.common_params.url = GURL("data:text/html,test data");
|
| params.commit_params.browser_navigation_start =
|
| @@ -1606,7 +1609,7 @@ TEST_F(RenderViewImplTest, DidFailProvisionalLoadWithErrorForCancellation) {
|
| // Start a load that will reach provisional state synchronously,
|
| // but won't complete synchronously.
|
| FrameMsg_Navigate_Params params;
|
| - params.page_id = -1;
|
| + params.history_params.page_id = -1;
|
| params.common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
|
| params.common_params.url = GURL("data:text/html,test data");
|
| params.commit_params.browser_navigation_start =
|
| @@ -1802,7 +1805,7 @@ TEST_F(RenderViewImplTest, ZoomLimit) {
|
| const double kMaxZoomLevel = ZoomFactorToZoomLevel(kMaximumZoomFactor);
|
|
|
| FrameMsg_Navigate_Params params;
|
| - params.page_id = -1;
|
| + params.history_params.page_id = -1;
|
| params.common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
|
| params.commit_params.browser_navigation_start =
|
| base::TimeTicks::FromInternalValue(1);
|
| @@ -1885,10 +1888,10 @@ TEST_F(RenderViewImplTest, NavigateFrame) {
|
| nav_params.common_params.url = GURL("data:text/html,world");
|
| nav_params.common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
|
| nav_params.common_params.transition = ui::PAGE_TRANSITION_TYPED;
|
| - nav_params.current_history_list_length = 1;
|
| - nav_params.current_history_list_offset = 0;
|
| - nav_params.pending_history_list_offset = 1;
|
| - nav_params.page_id = -1;
|
| + nav_params.history_params.current_history_list_length = 1;
|
| + nav_params.history_params.current_history_list_offset = 0;
|
| + nav_params.history_params.pending_history_list_offset = 1;
|
| + nav_params.history_params.page_id = -1;
|
| nav_params.frame_to_navigate = "frame";
|
| nav_params.commit_params.browser_navigation_start =
|
| base::TimeTicks::FromInternalValue(1);
|
| @@ -2007,7 +2010,7 @@ TEST_F(SuppressErrorPageTest, MAYBE_Suppresses) {
|
| // Start a load that will reach provisional state synchronously,
|
| // but won't complete synchronously.
|
| FrameMsg_Navigate_Params params;
|
| - params.page_id = -1;
|
| + params.history_params.page_id = -1;
|
| params.common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
|
| params.common_params.url = GURL("data:text/html,test data");
|
| params.commit_params.browser_navigation_start =
|
| @@ -2038,7 +2041,7 @@ TEST_F(SuppressErrorPageTest, MAYBE_DoesNotSuppress) {
|
| // Start a load that will reach provisional state synchronously,
|
| // but won't complete synchronously.
|
| FrameMsg_Navigate_Params params;
|
| - params.page_id = -1;
|
| + params.history_params.page_id = -1;
|
| params.common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
|
| params.common_params.url = GURL("data:text/html,test data");
|
| params.commit_params.browser_navigation_start =
|
| @@ -2247,7 +2250,7 @@ TEST_F(RenderViewImplTest, NavigationStartOverride) {
|
| early_nav_params.common_params.navigation_type =
|
| FrameMsg_Navigate_Type::NORMAL;
|
| early_nav_params.common_params.transition = ui::PAGE_TRANSITION_TYPED;
|
| - early_nav_params.page_id = -1;
|
| + early_nav_params.history_params.page_id = -1;
|
| early_nav_params.is_post = true;
|
| early_nav_params.commit_params.browser_navigation_start =
|
| base::TimeTicks::FromInternalValue(1);
|
| @@ -2268,7 +2271,7 @@ TEST_F(RenderViewImplTest, NavigationStartOverride) {
|
| late_nav_params.common_params.navigation_type =
|
| FrameMsg_Navigate_Type::NORMAL;
|
| late_nav_params.common_params.transition = ui::PAGE_TRANSITION_TYPED;
|
| - late_nav_params.page_id = -1;
|
| + late_nav_params.history_params.page_id = -1;
|
| late_nav_params.is_post = true;
|
| late_nav_params.commit_params.browser_navigation_start =
|
| base::TimeTicks::Now() + base::TimeDelta::FromDays(42);
|
| @@ -2297,4 +2300,29 @@ TEST_F(RenderViewImplTest, PreferredSizeZoomed) {
|
| EXPECT_EQ(gfx::Size(800, 800), size);
|
| }
|
|
|
| +// Ensure the RenderViewImpl history list is properly updated when starting a
|
| +// new browser-initiated navigation.
|
| +TEST_F(RenderViewImplTest, HistoryIsProperlyUpdatedOnNavigation) {
|
| + EXPECT_EQ(0, view()->historyBackListCount());
|
| + EXPECT_EQ(0, view()->historyBackListCount() +
|
| + view()->historyForwardListCount() + 1);
|
| +
|
| + // Receive a Navigate message with history parameters.
|
| + FrameMsg_Navigate_Params params;
|
| + params.common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
|
| + params.common_params.transition = ui::PAGE_TRANSITION_LINK;
|
| + params.history_params.current_history_list_length = 2;
|
| + params.history_params.current_history_list_offset = 1;
|
| + params.history_params.pending_history_list_offset = 2;
|
| + params.history_params.page_id = -1;
|
| + params.commit_params.browser_navigation_start =
|
| + base::TimeTicks::FromInternalValue(1);
|
| + frame()->OnNavigate(params);
|
| +
|
| + // The history list in RenderView should have been updated.
|
| + EXPECT_EQ(1, view()->historyBackListCount());
|
| + EXPECT_EQ(2, view()->historyBackListCount() +
|
| + view()->historyForwardListCount() + 1);
|
| +}
|
| +
|
| } // namespace content
|
|
|