| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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/data_reduction_proxy_metric
s_observer.h" | 5 #include "chrome/browser/page_load_metrics/observers/data_reduction_proxy_metric
s_observer.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/optional.h" | 9 #include "base/optional.h" |
| 10 #include "base/time/time.h" | 10 #include "base/time/time.h" |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 66 const char kHistogramDataReductionProxyLoFiOnPrefix[] = | 66 const char kHistogramDataReductionProxyLoFiOnPrefix[] = |
| 67 "PageLoad.Clients.DataReductionProxy.LoFiOn."; | 67 "PageLoad.Clients.DataReductionProxy.LoFiOn."; |
| 68 const char kHistogramDOMContentLoadedEventFiredSuffix[] = | 68 const char kHistogramDOMContentLoadedEventFiredSuffix[] = |
| 69 "DocumentTiming.NavigationToDOMContentLoadedEventFired"; | 69 "DocumentTiming.NavigationToDOMContentLoadedEventFired"; |
| 70 const char kHistogramFirstLayoutSuffix[] = | 70 const char kHistogramFirstLayoutSuffix[] = |
| 71 "DocumentTiming.NavigationToFirstLayout"; | 71 "DocumentTiming.NavigationToFirstLayout"; |
| 72 const char kHistogramLoadEventFiredSuffix[] = | 72 const char kHistogramLoadEventFiredSuffix[] = |
| 73 "DocumentTiming.NavigationToLoadEventFired"; | 73 "DocumentTiming.NavigationToLoadEventFired"; |
| 74 const char kHistogramFirstContentfulPaintSuffix[] = | 74 const char kHistogramFirstContentfulPaintSuffix[] = |
| 75 "PaintTiming.NavigationToFirstContentfulPaint"; | 75 "PaintTiming.NavigationToFirstContentfulPaint"; |
| 76 const char kHistogramFirstMeaningfulPaintSuffix[] = |
| 77 "Experimental.PaintTiming.NavigationToFirstMeaningfulPaint"; |
| 76 const char kHistogramFirstImagePaintSuffix[] = | 78 const char kHistogramFirstImagePaintSuffix[] = |
| 77 "PaintTiming.NavigationToFirstImagePaint"; | 79 "PaintTiming.NavigationToFirstImagePaint"; |
| 78 const char kHistogramFirstPaintSuffix[] = "PaintTiming.NavigationToFirstPaint"; | 80 const char kHistogramFirstPaintSuffix[] = "PaintTiming.NavigationToFirstPaint"; |
| 79 const char kHistogramFirstTextPaintSuffix[] = | 81 const char kHistogramFirstTextPaintSuffix[] = |
| 80 "PaintTiming.NavigationToFirstTextPaint"; | 82 "PaintTiming.NavigationToFirstTextPaint"; |
| 81 const char kHistogramParseStartSuffix[] = "ParseTiming.NavigationToParseStart"; | 83 const char kHistogramParseStartSuffix[] = "ParseTiming.NavigationToParseStart"; |
| 82 const char kHistogramParseBlockedOnScriptLoadSuffix[] = | 84 const char kHistogramParseBlockedOnScriptLoadSuffix[] = |
| 83 "ParseTiming.ParseBlockedOnScriptLoad"; | 85 "ParseTiming.ParseBlockedOnScriptLoad"; |
| 84 const char kHistogramParseDurationSuffix[] = "ParseTiming.ParseDuration"; | 86 const char kHistogramParseDurationSuffix[] = "ParseTiming.ParseDuration"; |
| 85 | 87 |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 133 if (data_reduction_proxy::params::IsIncludedInHoldbackFieldTrial() || | 135 if (data_reduction_proxy::params::IsIncludedInHoldbackFieldTrial() || |
| 134 data_reduction_proxy::params::IsIncludedInTamperDetectionExperiment()) { | 136 data_reduction_proxy::params::IsIncludedInTamperDetectionExperiment()) { |
| 135 return; | 137 return; |
| 136 } | 138 } |
| 137 // Only consider timing events that happened before the first background | 139 // Only consider timing events that happened before the first background |
| 138 // event. | 140 // event. |
| 139 base::Optional<base::TimeDelta> response_start; | 141 base::Optional<base::TimeDelta> response_start; |
| 140 base::Optional<base::TimeDelta> load_event_start; | 142 base::Optional<base::TimeDelta> load_event_start; |
| 141 base::Optional<base::TimeDelta> first_image_paint; | 143 base::Optional<base::TimeDelta> first_image_paint; |
| 142 base::Optional<base::TimeDelta> first_contentful_paint; | 144 base::Optional<base::TimeDelta> first_contentful_paint; |
| 145 base::Optional<base::TimeDelta> experimental_first_meaningful_paint; |
| 143 base::Optional<base::TimeDelta> parse_blocked_on_script_load_duration; | 146 base::Optional<base::TimeDelta> parse_blocked_on_script_load_duration; |
| 144 base::Optional<base::TimeDelta> parse_stop; | 147 base::Optional<base::TimeDelta> parse_stop; |
| 145 if (WasStartedInForegroundOptionalEventInForeground(timing.response_start, | 148 if (WasStartedInForegroundOptionalEventInForeground(timing.response_start, |
| 146 info)) { | 149 info)) { |
| 147 response_start = timing.response_start; | 150 response_start = timing.response_start; |
| 148 } | 151 } |
| 149 if (WasStartedInForegroundOptionalEventInForeground(timing.load_event_start, | 152 if (WasStartedInForegroundOptionalEventInForeground(timing.load_event_start, |
| 150 info)) { | 153 info)) { |
| 151 load_event_start = timing.load_event_start; | 154 load_event_start = timing.load_event_start; |
| 152 } | 155 } |
| 153 if (WasStartedInForegroundOptionalEventInForeground(timing.first_image_paint, | 156 if (WasStartedInForegroundOptionalEventInForeground(timing.first_image_paint, |
| 154 info)) { | 157 info)) { |
| 155 first_image_paint = timing.first_image_paint; | 158 first_image_paint = timing.first_image_paint; |
| 156 } | 159 } |
| 157 if (WasStartedInForegroundOptionalEventInForeground( | 160 if (WasStartedInForegroundOptionalEventInForeground( |
| 158 timing.first_contentful_paint, info)) { | 161 timing.first_contentful_paint, info)) { |
| 159 first_contentful_paint = timing.first_contentful_paint; | 162 first_contentful_paint = timing.first_contentful_paint; |
| 160 } | 163 } |
| 161 if (WasStartedInForegroundOptionalEventInForeground( | 164 if (WasStartedInForegroundOptionalEventInForeground( |
| 165 timing.first_meaningful_paint, info)) { |
| 166 experimental_first_meaningful_paint = timing.first_meaningful_paint; |
| 167 } |
| 168 if (WasStartedInForegroundOptionalEventInForeground( |
| 162 timing.parse_blocked_on_script_load_duration, info)) { | 169 timing.parse_blocked_on_script_load_duration, info)) { |
| 163 parse_blocked_on_script_load_duration = | 170 parse_blocked_on_script_load_duration = |
| 164 timing.parse_blocked_on_script_load_duration; | 171 timing.parse_blocked_on_script_load_duration; |
| 165 } | 172 } |
| 166 if (WasStartedInForegroundOptionalEventInForeground(timing.parse_stop, | 173 if (WasStartedInForegroundOptionalEventInForeground(timing.parse_stop, |
| 167 info)) { | 174 info)) { |
| 168 parse_stop = timing.parse_stop; | 175 parse_stop = timing.parse_stop; |
| 169 } | 176 } |
| 170 | 177 |
| 171 DataReductionProxyPageLoadTiming data_reduction_proxy_timing( | 178 DataReductionProxyPageLoadTiming data_reduction_proxy_timing( |
| 172 timing.navigation_start, response_start, load_event_start, | 179 timing.navigation_start, response_start, load_event_start, |
| 173 first_image_paint, first_contentful_paint, | 180 first_image_paint, first_contentful_paint, |
| 181 experimental_first_meaningful_paint, |
| 174 parse_blocked_on_script_load_duration, parse_stop); | 182 parse_blocked_on_script_load_duration, parse_stop); |
| 175 GetPingbackClient()->SendPingback(*data_, data_reduction_proxy_timing); | 183 GetPingbackClient()->SendPingback(*data_, data_reduction_proxy_timing); |
| 176 } | 184 } |
| 177 | 185 |
| 178 void DataReductionProxyMetricsObserver::OnDomContentLoadedEventStart( | 186 void DataReductionProxyMetricsObserver::OnDomContentLoadedEventStart( |
| 179 const page_load_metrics::PageLoadTiming& timing, | 187 const page_load_metrics::PageLoadTiming& timing, |
| 180 const page_load_metrics::PageLoadExtraInfo& info) { | 188 const page_load_metrics::PageLoadExtraInfo& info) { |
| 181 RECORD_HISTOGRAMS_FOR_SUFFIX( | 189 RECORD_HISTOGRAMS_FOR_SUFFIX( |
| 182 data_, timing.dom_content_loaded_event_start, | 190 data_, timing.dom_content_loaded_event_start, |
| 183 timing.dom_content_loaded_event_start.value(), info, | 191 timing.dom_content_loaded_event_start.value(), info, |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 225 } | 233 } |
| 226 | 234 |
| 227 void DataReductionProxyMetricsObserver::OnFirstContentfulPaint( | 235 void DataReductionProxyMetricsObserver::OnFirstContentfulPaint( |
| 228 const page_load_metrics::PageLoadTiming& timing, | 236 const page_load_metrics::PageLoadTiming& timing, |
| 229 const page_load_metrics::PageLoadExtraInfo& info) { | 237 const page_load_metrics::PageLoadExtraInfo& info) { |
| 230 RECORD_HISTOGRAMS_FOR_SUFFIX(data_, timing.first_contentful_paint, | 238 RECORD_HISTOGRAMS_FOR_SUFFIX(data_, timing.first_contentful_paint, |
| 231 timing.first_contentful_paint.value(), info, | 239 timing.first_contentful_paint.value(), info, |
| 232 internal::kHistogramFirstContentfulPaintSuffix); | 240 internal::kHistogramFirstContentfulPaintSuffix); |
| 233 } | 241 } |
| 234 | 242 |
| 243 void DataReductionProxyMetricsObserver::OnFirstMeaningfulPaint( |
| 244 const page_load_metrics::PageLoadTiming& timing, |
| 245 const page_load_metrics::PageLoadExtraInfo& info) { |
| 246 RECORD_HISTOGRAMS_FOR_SUFFIX(data_, timing.first_meaningful_paint, |
| 247 timing.first_meaningful_paint.value(), info, |
| 248 internal::kHistogramFirstMeaningfulPaintSuffix); |
| 249 } |
| 250 |
| 235 void DataReductionProxyMetricsObserver::OnParseStart( | 251 void DataReductionProxyMetricsObserver::OnParseStart( |
| 236 const page_load_metrics::PageLoadTiming& timing, | 252 const page_load_metrics::PageLoadTiming& timing, |
| 237 const page_load_metrics::PageLoadExtraInfo& info) { | 253 const page_load_metrics::PageLoadExtraInfo& info) { |
| 238 RECORD_HISTOGRAMS_FOR_SUFFIX(data_, timing.parse_start, | 254 RECORD_HISTOGRAMS_FOR_SUFFIX(data_, timing.parse_start, |
| 239 timing.parse_start.value(), info, | 255 timing.parse_start.value(), info, |
| 240 internal::kHistogramParseStartSuffix); | 256 internal::kHistogramParseStartSuffix); |
| 241 } | 257 } |
| 242 | 258 |
| 243 void DataReductionProxyMetricsObserver::OnParseStop( | 259 void DataReductionProxyMetricsObserver::OnParseStop( |
| 244 const page_load_metrics::PageLoadTiming& timing, | 260 const page_load_metrics::PageLoadTiming& timing, |
| (...skipping 10 matching lines...) Expand all Loading... |
| 255 | 271 |
| 256 DataReductionProxyPingbackClient* | 272 DataReductionProxyPingbackClient* |
| 257 DataReductionProxyMetricsObserver::GetPingbackClient() const { | 273 DataReductionProxyMetricsObserver::GetPingbackClient() const { |
| 258 return DataReductionProxyChromeSettingsFactory::GetForBrowserContext( | 274 return DataReductionProxyChromeSettingsFactory::GetForBrowserContext( |
| 259 browser_context_) | 275 browser_context_) |
| 260 ->data_reduction_proxy_service() | 276 ->data_reduction_proxy_service() |
| 261 ->pingback_client(); | 277 ->pingback_client(); |
| 262 } | 278 } |
| 263 | 279 |
| 264 } // namespace data_reduction_proxy | 280 } // namespace data_reduction_proxy |
| OLD | NEW |