Index: content/browser/frame_host/navigator_impl.h |
diff --git a/content/browser/frame_host/navigator_impl.h b/content/browser/frame_host/navigator_impl.h |
index dc0644d96348967a45dfbf0f2c24ed6b38328786..29091bac4a67a72187c94e55dc1afe924fb5bc94 100644 |
--- a/content/browser/frame_host/navigator_impl.h |
+++ b/content/browser/frame_host/navigator_impl.h |
@@ -81,9 +81,28 @@ class CONTENT_EXPORT NavigatorImpl : public Navigator { |
const NavigationBeforeCommitInfo& info) OVERRIDE; |
virtual void LogResourceRequestTime( |
base::TimeTicks timestamp, const GURL& url) OVERRIDE; |
+ virtual void LogBeforeUnloadTime( |
+ const base::TimeTicks& renderer_before_unload_start_time, |
+ const base::TimeTicks& renderer_before_unload_end_time) OVERRIDE; |
virtual void CancelNavigation(FrameTreeNode* frame_tree_node) OVERRIDE; |
private: |
+ // Holds data used to track browser side navigation metrics. |
+ class NavigationMetricsData { |
nasko
2014/10/08 17:10:42
Don't nest classes like this for non-class specifi
carlosk
2014/10/09 16:53:45
So I kinda followed what's described here:
http:/
clamy
2014/10/09 19:02:32
Normally you are not supposed to change some class
carlosk
2014/10/10 10:00:03
Acknowledged.
I'll also ask in chromium-dev askin
|
+ public: |
+ NavigationMetricsData() {} |
+ NavigationMetricsData(base::TimeTicks start_time, GURL url); |
+ ~NavigationMetricsData() {} |
+ |
+ void Reset(); |
+ bool IsTracking(); |
+ |
+ base::TimeTicks start_time_; |
+ GURL url_; |
+ base::TimeTicks url_job_start_time_; |
+ base::TimeDelta before_unload_delay_; |
+ }; |
+ |
friend class NavigatorTest; |
virtual ~NavigatorImpl(); |
@@ -108,6 +127,11 @@ class CONTENT_EXPORT NavigatorImpl : public Navigator { |
NavigationController::ReloadType reload_type, |
base::TimeTicks navigation_start); |
+ void RecordNavigationMetrics( |
+ const LoadCommittedDetails& details, |
+ const FrameHostMsg_DidCommitProvisionalLoad_Params& params, |
+ SiteInstance* site_instance); |
+ |
// The NavigationController that will keep track of session history for all |
// RenderFrameHost objects using this NavigatorImpl. |
// TODO(nasko): Move ownership of the NavigationController from |
@@ -118,9 +142,7 @@ class CONTENT_EXPORT NavigatorImpl : public Navigator { |
// events. Can be NULL in tests. |
NavigatorDelegate* delegate_; |
- // The start time and URL for latest navigation request, used for feeding a |
- // few histograms under the Navigation group. |
- Tuple2<base::TimeTicks, GURL> navigation_start_time_and_url; |
+ NavigatorImpl::NavigationMetricsData navigation_data; |
// PlzNavigate: used to track the various ongoing NavigationRequests in the |
// different FrameTreeNodes, based on the frame_tree_node_id. |