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

Unified Diff: content/renderer/render_frame_impl.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: Conflict Resolution: FrameHostMsg_DidStartProvisionalLoad 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
« no previous file with comments | « content/public/browser/navigation_handle.cc ('k') | content/renderer/render_view_browsertest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/render_frame_impl.cc
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
index 67808f7c0bd71a187e3f060cf5b42505f2992423..f8c5afa3813259675d63cc3326165b50e68b20ef 100644
--- a/content/renderer/render_frame_impl.cc
+++ b/content/renderer/render_frame_impl.cc
@@ -2721,6 +2721,8 @@ void RenderFrameImpl::didStartProvisionalLoad(blink::WebLocalFrame* frame,
// Start time is only set after request time.
document_state->set_start_load_time(Time::Now());
+ NavigationStateImpl* navigation_state = static_cast<NavigationStateImpl*>(
+ document_state->navigation_state());
bool is_top_most = !frame->parent();
if (is_top_most) {
render_view_->set_navigation_gesture(
@@ -2730,16 +2732,19 @@ void RenderFrameImpl::didStartProvisionalLoad(blink::WebLocalFrame* frame,
// Subframe navigations that don't add session history items must be
// marked with AUTO_SUBFRAME. See also didFailProvisionalLoad for how we
// handle loading of error pages.
- static_cast<NavigationStateImpl*>(document_state->navigation_state())
- ->set_transition_type(ui::PAGE_TRANSITION_AUTO_SUBFRAME);
+ navigation_state->set_transition_type(ui::PAGE_TRANSITION_AUTO_SUBFRAME);
}
+ base::TimeTicks navigation_start =
+ navigation_state->common_params().navigation_start;
+ DCHECK(!navigation_start.is_null());
+
FOR_EACH_OBSERVER(RenderViewObserver, render_view_->observers(),
DidStartProvisionalLoad(frame));
FOR_EACH_OBSERVER(RenderFrameObserver, observers_, DidStartProvisionalLoad());
- Send(new FrameHostMsg_DidStartProvisionalLoad(routing_id_,
- ds->request().url()));
+ Send(new FrameHostMsg_DidStartProvisionalLoad(
+ routing_id_, ds->request().url(), navigation_start));
}
void RenderFrameImpl::didReceiveServerRedirectForProvisionalLoad(
@@ -4350,8 +4355,8 @@ void RenderFrameImpl::OnFailedNavigation(
// Inform the browser of the start of the provisional load. This is needed so
// that the load is properly tracked by the WebNavigation API.
- Send(
- new FrameHostMsg_DidStartProvisionalLoad(routing_id_, common_params.url));
+ Send(new FrameHostMsg_DidStartProvisionalLoad(
+ routing_id_, common_params.url, common_params.navigation_start));
// Send the provisional load failure.
blink::WebURLError error =
@@ -4685,6 +4690,14 @@ void RenderFrameImpl::NavigateInternal(
pending_navigation_params_->common_params.navigation_start =
base::TimeTicks();
+ // Unless the load is a WebFrameLoadType::Standard, this should remain
+ // uninitialized. It will be updated when the load type is determined to be
+ // Standard, or after the previous document's unload handler has been
+ // triggered. This occurs in UpdateNavigationState.
+ // TODO(csharrison) See if we can always use the browser timestamp.
+ pending_navigation_params_->common_params.navigation_start =
+ base::TimeTicks();
+
// Create parameters for a standard navigation.
blink::WebFrameLoadType load_type = blink::WebFrameLoadType::Standard;
bool should_load_request = false;
« no previous file with comments | « content/public/browser/navigation_handle.cc ('k') | content/renderer/render_view_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698