Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3034)

Unified Diff: content/renderer/render_view_browsertest.cc

Issue 1427633004: Send navigation_start to the browser in DidStartProvisionalLoad IPC (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@navigation_start_renderer
Patch Set: Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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>");

Powered by Google App Engine
This is Rietveld 408576698