Index: content/renderer/render_view_browsertest.cc |
diff --git a/content/renderer/render_view_browsertest.cc b/content/renderer/render_view_browsertest.cc |
index cea7e5ba7d0f063a37596bffef3a4573edc2098d..938e73ee8260f8607f8a89810485fd82ca239e45 100644 |
--- a/content/renderer/render_view_browsertest.cc |
+++ b/content/renderer/render_view_browsertest.cc |
@@ -2310,6 +2310,36 @@ TEST_F(RenderViewImplTest, NavigationStartOverride) { |
EXPECT_LE(late_nav_reported_start, after_navigation); |
} |
+TEST_F(RenderViewImplTest, BrowserNavigationStartSuccessfullyTransmitted) { |
clamy
2015/11/04 13:53:40
Should you also test for a renderer initiated navi
Charlie Harrison
2015/11/04 14:24:52
Yeah probably. Would you like me to write a bunch
clamy
2015/11/04 15:59:09
I think smaller independant test cases are easier
|
+ CommonNavigationParams common_params; |
+ StartNavigationParams start_params; |
+ RequestNavigationParams request_params; |
clamy
2015/11/04 13:53:39
No need to declare this, just use the default cons
Charlie Harrison
2015/11/04 14:24:52
Acknowledged.
|
+ 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>"); |