Index: content/renderer/render_view_browsertest.cc |
diff --git a/content/renderer/render_view_browsertest.cc b/content/renderer/render_view_browsertest.cc |
index 47a4ef6c7c567d4f3d640c5a936f42e8d53bebf0..938e73ee8260f8607f8a89810485fd82ca239e45 100644 |
--- a/content/renderer/render_view_browsertest.cc |
+++ b/content/renderer/render_view_browsertest.cc |
@@ -1911,12 +1911,11 @@ TEST_F(RenderViewImplTest, NavigateSubframe) { |
common_params.url = GURL("data:text/html,world"); |
common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; |
common_params.transition = ui::PAGE_TRANSITION_TYPED; |
+ common_params.navigation_start = base::TimeTicks::FromInternalValue(1); |
request_params.current_history_list_length = 1; |
request_params.current_history_list_offset = 0; |
request_params.pending_history_list_offset = 1; |
request_params.page_id = -1; |
- request_params.browser_navigation_start = |
- base::TimeTicks::FromInternalValue(1); |
TestRenderFrame* subframe = |
static_cast<TestRenderFrame*>(RenderFrameImpl::FromWebFrame( |
@@ -2277,9 +2276,8 @@ TEST_F(RenderViewImplTest, NavigationStartOverride) { |
early_common_params.url = GURL("data:text/html,<div>Page</div>"); |
early_common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; |
early_common_params.transition = ui::PAGE_TRANSITION_TYPED; |
+ early_common_params.navigation_start = base::TimeTicks::FromInternalValue(1); |
early_start_params.is_post = true; |
- early_request_params.browser_navigation_start = |
- base::TimeTicks::FromInternalValue(1); |
frame()->Navigate(early_common_params, early_start_params, |
early_request_params); |
@@ -2298,9 +2296,9 @@ TEST_F(RenderViewImplTest, NavigationStartOverride) { |
late_common_params.url = GURL("data:text/html,<div>Another page</div>"); |
late_common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; |
late_common_params.transition = ui::PAGE_TRANSITION_TYPED; |
- late_start_params.is_post = true; |
- late_request_params.browser_navigation_start = |
+ late_common_params.navigation_start = |
base::TimeTicks::Now() + base::TimeDelta::FromDays(42); |
+ late_start_params.is_post = true; |
frame()->Navigate(late_common_params, late_start_params, late_request_params); |
ProcessPendingMessages(); |
@@ -2312,6 +2310,36 @@ TEST_F(RenderViewImplTest, NavigationStartOverride) { |
EXPECT_LE(late_nav_reported_start, after_navigation); |
} |
+TEST_F(RenderViewImplTest, BrowserNavigationStartSuccessfullyTransmitted) { |
+ 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; |
+ start_params.is_post = true; |
+ |
+ // Data munching to simulate what we do in blink: convert navigation_start to |
+ // a double for DocumentLoadTiming, then back to a TimeTicks to send back to |
+ // the browser in FrameHostMsg_DidStartProvisionalLoadForFrame. |
+ double navigation_start_seconds = |
+ (common_params.navigation_start - base::TimeTicks()).InSecondsF(); |
+ base::TimeTicks adjusted_navigation_start = |
+ base::TimeTicks::FromInternalValue(navigation_start_seconds * |
+ base::Time::kMicrosecondsPerSecond); |
+ |
+ frame()->Navigate(common_params, start_params, request_params); |
+ ProcessPendingMessages(); |
+ |
+ const IPC::Message* frame_navigate_msg = |
+ render_thread_->sink().GetUniqueMessageMatching( |
+ FrameHostMsg_DidStartProvisionalLoadForFrame::ID); |
+ FrameHostMsg_DidStartProvisionalLoadForFrame::Param host_nav_params; |
+ FrameHostMsg_DidStartProvisionalLoadForFrame::Read(frame_navigate_msg, |
+ &host_nav_params); |
+ EXPECT_EQ(base::get<1>(host_nav_params), adjusted_navigation_start); |
+} |
+ |
TEST_F(RenderViewImplTest, PreferredSizeZoomed) { |
LoadHTML("<body style='margin:0;'><div style='display:inline-block; " |
"width:400px; height:400px;'/></body>"); |