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

Unified Diff: content/browser/frame_host/navigator_impl.cc

Issue 339573003: NavigationTiming: set navigationStart for navigations in new tabs. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Update browsertests. Created 6 years, 5 months 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 | « no previous file | content/browser/frame_host/render_frame_host_impl.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/frame_host/navigator_impl.cc
diff --git a/content/browser/frame_host/navigator_impl.cc b/content/browser/frame_host/navigator_impl.cc
index 13523f616f25988393f71c01462759e50479af33..cbfe68572da0be12bfa3d1d5ea73ef2396c804e1 100644
--- a/content/browser/frame_host/navigator_impl.cc
+++ b/content/browser/frame_host/navigator_impl.cc
@@ -5,6 +5,7 @@
#include "content/browser/frame_host/navigator_impl.h"
#include "base/command_line.h"
+#include "base/time/time.h"
#include "content/browser/frame_host/frame_tree.h"
#include "content/browser/frame_host/frame_tree_node.h"
#include "content/browser/frame_host/navigation_controller_impl.h"
@@ -64,6 +65,7 @@ FrameMsg_Navigate_Type::Value GetNavigationType(
void MakeNavigateParams(const NavigationEntryImpl& entry,
const NavigationControllerImpl& controller,
NavigationController::ReloadType reload_type,
+ base::TimeTicks navigation_start,
FrameMsg_Navigate_Params* params) {
params->page_id = entry.GetPageID();
params->should_clear_history_list = entry.should_clear_history_list();
@@ -91,6 +93,9 @@ void MakeNavigateParams(const NavigationEntryImpl& entry,
params->page_state = entry.GetPageState();
params->navigation_type =
GetNavigationType(controller.GetBrowserContext(), entry, reload_type);
+ // This is used by the old performance infrastructure to set up DocumentState
+ // associated with the RenderView.
+ // TODO(ppi): make it go away.
params->request_time = base::Time::Now();
params->extra_headers = entry.extra_headers();
params->transferred_request_child_id =
@@ -118,6 +123,7 @@ void MakeNavigateParams(const NavigationEntryImpl& entry,
params->can_load_local_resources = entry.GetCanLoadLocalResources();
params->frame_to_navigate = entry.GetFrameToNavigate();
+ params->browser_navigation_start = navigation_start;
}
RenderFrameHostManager* GetRenderManager(RenderFrameHostImpl* rfh) {
@@ -322,6 +328,12 @@ bool NavigatorImpl::NavigateToEntry(
return false;
}
+ // This will be used to set the Navigation Timing API navigationStart
+ // parameter for browser navigations in new tabs (intents, tabs opened through
+ // "Open link in new tab"). We need to keep it above RFHM::Navigate() call to
+ // capture the time needed for the RenderFrameHost initialization.
+ base::TimeTicks navigation_start = base::TimeTicks::Now();
+
RenderFrameHostManager* manager =
render_frame_host->frame_tree_node()->render_manager();
RenderFrameHostImpl* dest_render_frame_host = manager->Navigate(entry);
@@ -349,12 +361,16 @@ bool NavigatorImpl::NavigateToEntry(
if (delegate_)
delegate_->AboutToNavigateRenderFrame(dest_render_frame_host);
- // Used for page load time metrics.
+ // WebContents uses this to fill LoadNotificationDetails when the load
+ // completes, so that PerformanceMonitor that listens to the notification can
+ // record the load time. PerformanceMonitor is no longer maintained.
+ // TODO(ppi): make this go away.
current_load_start_ = base::TimeTicks::Now();
// Navigate in the desired RenderFrameHost.
FrameMsg_Navigate_Params navigate_params;
- MakeNavigateParams(entry, *controller_, reload_type, &navigate_params);
+ MakeNavigateParams(entry, *controller_, reload_type, navigation_start,
+ &navigate_params);
dest_render_frame_host->Navigate(navigate_params);
// Make sure no code called via RFH::Navigate clears the pending entry.
« no previous file with comments | « no previous file | content/browser/frame_host/render_frame_host_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698