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

Side by Side Diff: chrome/browser/page_load_metrics/observers/ukm_page_load_metrics_observer.cc

Issue 2907513003: Record first paint in UKM. (Closed)
Patch Set: Created 3 years, 6 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 unified diff | Download patch
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/page_load_metrics/observers/ukm_page_load_metrics_obser ver.h" 5 #include "chrome/browser/page_load_metrics/observers/ukm_page_load_metrics_obser ver.h"
6 #include "chrome/browser/browser_process.h" 6 #include "chrome/browser/browser_process.h"
7 #include "chrome/browser/net/nqe/ui_network_quality_estimator_service.h" 7 #include "chrome/browser/net/nqe/ui_network_quality_estimator_service.h"
8 #include "chrome/browser/net/nqe/ui_network_quality_estimator_service_factory.h" 8 #include "chrome/browser/net/nqe/ui_network_quality_estimator_service_factory.h"
9 #include "chrome/browser/page_load_metrics/page_load_metrics_util.h" 9 #include "chrome/browser/page_load_metrics/page_load_metrics_util.h"
10 #include "chrome/browser/profiles/profile.h" 10 #include "chrome/browser/profiles/profile.h"
11 #include "components/ukm/public/ukm_entry_builder.h" 11 #include "components/ukm/public/ukm_entry_builder.h"
12 #include "components/ukm/public/ukm_recorder.h" 12 #include "components/ukm/public/ukm_recorder.h"
13 #include "content/public/browser/web_contents.h" 13 #include "content/public/browser/web_contents.h"
14 14
15 namespace internal { 15 namespace internal {
16 16
17 const char kUkmPageLoadEventName[] = "PageLoad"; 17 const char kUkmPageLoadEventName[] = "PageLoad";
18 const char kUkmParseStartName[] = "ParseTiming.NavigationToParseStart"; 18 const char kUkmParseStartName[] = "ParseTiming.NavigationToParseStart";
19 const char kUkmDomContentLoadedName[] = 19 const char kUkmDomContentLoadedName[] =
20 "DocumentTiming.NavigationToDOMContentLoadedEventFired"; 20 "DocumentTiming.NavigationToDOMContentLoadedEventFired";
21 const char kUkmLoadEventName[] = "DocumentTiming.NavigationToLoadEventFired"; 21 const char kUkmLoadEventName[] = "DocumentTiming.NavigationToLoadEventFired";
22 const char kUkmFirstPaintName[] = "PaintTiming.NavigationToFirstPaint";
22 const char kUkmFirstContentfulPaintName[] = 23 const char kUkmFirstContentfulPaintName[] =
23 "PaintTiming.NavigationToFirstContentfulPaint"; 24 "PaintTiming.NavigationToFirstContentfulPaint";
24 const char kUkmFirstMeaningfulPaintName[] = 25 const char kUkmFirstMeaningfulPaintName[] =
25 "Experimental.PaintTiming.NavigationToFirstMeaningfulPaint"; 26 "Experimental.PaintTiming.NavigationToFirstMeaningfulPaint";
26 const char kUkmForegroundDurationName[] = "PageTiming.ForegroundDuration"; 27 const char kUkmForegroundDurationName[] = "PageTiming.ForegroundDuration";
27 const char kUkmFailedProvisionaLoadName[] = 28 const char kUkmFailedProvisionaLoadName[] =
28 "PageTiming.NavigationToFailedProvisionalLoad"; 29 "PageTiming.NavigationToFailedProvisionalLoad";
29 const char kUkmEffectiveConnectionType[] = 30 const char kUkmEffectiveConnectionType[] =
30 "Net.EffectiveConnectionType.OnNavigationStart"; 31 "Net.EffectiveConnectionType.OnNavigationStart";
31 const char kUkmHttpRttEstimate[] = "Net.HttpRttEstimate.OnNavigationStart"; 32 const char kUkmHttpRttEstimate[] = "Net.HttpRttEstimate.OnNavigationStart";
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
158 builder->AddMetric( 159 builder->AddMetric(
159 internal::kUkmDomContentLoadedName, 160 internal::kUkmDomContentLoadedName,
160 timing.document_timing->dom_content_loaded_event_start.value() 161 timing.document_timing->dom_content_loaded_event_start.value()
161 .InMilliseconds()); 162 .InMilliseconds());
162 } 163 }
163 if (timing.document_timing->load_event_start) { 164 if (timing.document_timing->load_event_start) {
164 builder->AddMetric( 165 builder->AddMetric(
165 internal::kUkmLoadEventName, 166 internal::kUkmLoadEventName,
166 timing.document_timing->load_event_start.value().InMilliseconds()); 167 timing.document_timing->load_event_start.value().InMilliseconds());
167 } 168 }
169 if (timing.paint_timing->first_paint) {
170 builder->AddMetric(
171 internal::kUkmFirstPaintName,
172 timing.paint_timing->first_paint.value().InMilliseconds());
173 }
168 if (timing.paint_timing->first_contentful_paint) { 174 if (timing.paint_timing->first_contentful_paint) {
169 builder->AddMetric( 175 builder->AddMetric(
170 internal::kUkmFirstContentfulPaintName, 176 internal::kUkmFirstContentfulPaintName,
171 timing.paint_timing->first_contentful_paint.value().InMilliseconds()); 177 timing.paint_timing->first_contentful_paint.value().InMilliseconds());
172 } 178 }
173 if (timing.paint_timing->first_meaningful_paint) { 179 if (timing.paint_timing->first_meaningful_paint) {
174 builder->AddMetric( 180 builder->AddMetric(
175 internal::kUkmFirstMeaningfulPaintName, 181 internal::kUkmFirstMeaningfulPaintName,
176 timing.paint_timing->first_meaningful_paint.value().InMilliseconds()); 182 timing.paint_timing->first_meaningful_paint.value().InMilliseconds());
177 } 183 }
(...skipping 26 matching lines...) Expand all
204 } 210 }
205 if (transport_rtt_estimate_) { 211 if (transport_rtt_estimate_) {
206 builder->AddMetric( 212 builder->AddMetric(
207 internal::kUkmTransportRttEstimate, 213 internal::kUkmTransportRttEstimate,
208 static_cast<int64_t>(transport_rtt_estimate_.value().InMilliseconds())); 214 static_cast<int64_t>(transport_rtt_estimate_.value().InMilliseconds()));
209 } 215 }
210 // page_transition_ fits in a uint32_t, so we can safely cast to int64_t. 216 // page_transition_ fits in a uint32_t, so we can safely cast to int64_t.
211 builder->AddMetric(internal::kUkmPageTransition, 217 builder->AddMetric(internal::kUkmPageTransition,
212 static_cast<int64_t>(page_transition_)); 218 static_cast<int64_t>(page_transition_));
213 } 219 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698