Index: content/renderer/render_view_browsertest.cc |
diff --git a/content/renderer/render_view_browsertest.cc b/content/renderer/render_view_browsertest.cc |
index 1c8e44ebc4e9f3d8d15b2ecb8b6bc18fe60d136e..46e70a09845434374afed5856a56f77c1c976fd4 100644 |
--- a/content/renderer/render_view_browsertest.cc |
+++ b/content/renderer/render_view_browsertest.cc |
@@ -639,6 +639,51 @@ TEST_F(RenderViewImplTest, OnNavigationHttpPost) { |
EXPECT_EQ(0, memcmp(raw_data, element.data.data(), length)); |
} |
+// Check that page ID will be initialized in case of navigation |
+// that replaces current entry. |
+TEST_F(RenderViewImplTest, OnBrowserNavigationUpdatePageID) { |
+ // An http url will trigger a resource load so cannot be used here. |
+ CommonNavigationParams common_params; |
+ StartNavigationParams start_params; |
+ RequestNavigationParams request_params; |
+ common_params.url = GURL("data:text/html,<div>Page</div>"); |
+ common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; |
+ common_params.transition = ui::PAGE_TRANSITION_TYPED; |
+ |
+ // Set up params to emulate a browser side navigation |
+ // that should replace current entry. |
+ common_params.should_replace_current_entry = true; |
+ request_params.page_id = -1; |
+ request_params.nav_entry_id = 1; |
+ request_params.current_history_list_length = 1; |
+ |
+ frame()->Navigate(common_params, start_params, request_params); |
+ ProcessPendingMessages(); |
+ |
+ // Page ID should be initialized. |
+ EXPECT_NE(view_page_id(), -1); |
+ |
+ const IPC::Message* frame_navigate_msg = |
+ render_thread_->sink().GetUniqueMessageMatching( |
+ FrameHostMsg_DidCommitProvisionalLoad::ID); |
+ EXPECT_TRUE(frame_navigate_msg); |
+ |
+ FrameHostMsg_DidCommitProvisionalLoad::Param host_nav_params; |
+ FrameHostMsg_DidCommitProvisionalLoad::Read(frame_navigate_msg, |
+ &host_nav_params); |
+ EXPECT_TRUE(base::get<0>(host_nav_params).page_state.IsValid()); |
+ |
+ const IPC::Message* frame_page_id_msg = |
+ render_thread_->sink().GetUniqueMessageMatching( |
+ FrameHostMsg_DidAssignPageId::ID); |
+ EXPECT_TRUE(frame_page_id_msg); |
+ |
+ FrameHostMsg_DidAssignPageId::Param host_page_id_params; |
+ FrameHostMsg_DidAssignPageId::Read(frame_page_id_msg, &host_page_id_params); |
+ |
+ EXPECT_EQ(base::get<0>(host_page_id_params), view_page_id()); |
+} |
+ |
#if defined(OS_ANDROID) |
TEST_F(RenderViewImplTest, OnNavigationLoadDataWithBaseURL) { |
CommonNavigationParams common_params; |