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

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

Issue 2806863003: [Page Load Metrics] Structure PageLoadTiming. (Closed)
Patch Set: rebase Created 3 years, 8 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 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/metrics/histogram_macros.h" 9 #include "base/metrics/histogram_macros.h"
10 #include "base/optional.h" 10 #include "base/optional.h"
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after
286 base::Optional<base::TimeDelta> load_event_start; 286 base::Optional<base::TimeDelta> load_event_start;
287 base::Optional<base::TimeDelta> first_image_paint; 287 base::Optional<base::TimeDelta> first_image_paint;
288 base::Optional<base::TimeDelta> first_contentful_paint; 288 base::Optional<base::TimeDelta> first_contentful_paint;
289 base::Optional<base::TimeDelta> experimental_first_meaningful_paint; 289 base::Optional<base::TimeDelta> experimental_first_meaningful_paint;
290 base::Optional<base::TimeDelta> parse_blocked_on_script_load_duration; 290 base::Optional<base::TimeDelta> parse_blocked_on_script_load_duration;
291 base::Optional<base::TimeDelta> parse_stop; 291 base::Optional<base::TimeDelta> parse_stop;
292 if (WasStartedInForegroundOptionalEventInForeground(timing.response_start, 292 if (WasStartedInForegroundOptionalEventInForeground(timing.response_start,
293 info)) { 293 info)) {
294 response_start = timing.response_start; 294 response_start = timing.response_start;
295 } 295 }
296 if (WasStartedInForegroundOptionalEventInForeground(timing.load_event_start, 296 if (WasStartedInForegroundOptionalEventInForeground(
297 info)) { 297 timing.document_timing.load_event_start, info)) {
298 load_event_start = timing.load_event_start; 298 load_event_start = timing.document_timing.load_event_start;
299 }
300 if (WasStartedInForegroundOptionalEventInForeground(timing.first_image_paint,
301 info)) {
302 first_image_paint = timing.first_image_paint;
303 } 299 }
304 if (WasStartedInForegroundOptionalEventInForeground( 300 if (WasStartedInForegroundOptionalEventInForeground(
305 timing.first_contentful_paint, info)) { 301 timing.paint_timing.first_image_paint, info)) {
306 first_contentful_paint = timing.first_contentful_paint; 302 first_image_paint = timing.paint_timing.first_image_paint;
307 } 303 }
308 if (WasStartedInForegroundOptionalEventInForeground( 304 if (WasStartedInForegroundOptionalEventInForeground(
309 timing.first_meaningful_paint, info)) { 305 timing.paint_timing.first_contentful_paint, info)) {
310 experimental_first_meaningful_paint = timing.first_meaningful_paint; 306 first_contentful_paint = timing.paint_timing.first_contentful_paint;
311 } 307 }
312 if (WasStartedInForegroundOptionalEventInForeground( 308 if (WasStartedInForegroundOptionalEventInForeground(
313 timing.parse_blocked_on_script_load_duration, info)) { 309 timing.paint_timing.first_meaningful_paint, info)) {
310 experimental_first_meaningful_paint =
311 timing.paint_timing.first_meaningful_paint;
312 }
313 if (WasStartedInForegroundOptionalEventInForeground(
314 timing.parse_timing.parse_blocked_on_script_load_duration, info)) {
314 parse_blocked_on_script_load_duration = 315 parse_blocked_on_script_load_duration =
315 timing.parse_blocked_on_script_load_duration; 316 timing.parse_timing.parse_blocked_on_script_load_duration;
316 } 317 }
317 if (WasStartedInForegroundOptionalEventInForeground(timing.parse_stop, 318 if (WasStartedInForegroundOptionalEventInForeground(
318 info)) { 319 timing.parse_timing.parse_stop, info)) {
319 parse_stop = timing.parse_stop; 320 parse_stop = timing.parse_timing.parse_stop;
320 } 321 }
321 322
322 DataReductionProxyPageLoadTiming data_reduction_proxy_timing( 323 DataReductionProxyPageLoadTiming data_reduction_proxy_timing(
323 timing.navigation_start, response_start, load_event_start, 324 timing.navigation_start, response_start, load_event_start,
324 first_image_paint, first_contentful_paint, 325 first_image_paint, first_contentful_paint,
325 experimental_first_meaningful_paint, 326 experimental_first_meaningful_paint,
326 parse_blocked_on_script_load_duration, parse_stop, network_bytes_, 327 parse_blocked_on_script_load_duration, parse_stop, network_bytes_,
327 original_network_bytes_); 328 original_network_bytes_);
328 GetPingbackClient()->SendPingback(*data_, data_reduction_proxy_timing); 329 GetPingbackClient()->SendPingback(*data_, data_reduction_proxy_timing);
329 } 330 }
330 331
331 void DataReductionProxyMetricsObserver::OnDomContentLoadedEventStart( 332 void DataReductionProxyMetricsObserver::OnDomContentLoadedEventStart(
332 const page_load_metrics::PageLoadTiming& timing, 333 const page_load_metrics::PageLoadTiming& timing,
333 const page_load_metrics::PageLoadExtraInfo& info) { 334 const page_load_metrics::PageLoadExtraInfo& info) {
334 RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX( 335 RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX(
335 info, data_, timing.dom_content_loaded_event_start, 336 info, data_, timing.document_timing.dom_content_loaded_event_start,
336 internal::kHistogramDOMContentLoadedEventFiredSuffix); 337 internal::kHistogramDOMContentLoadedEventFiredSuffix);
337 } 338 }
338 339
339 void DataReductionProxyMetricsObserver::OnLoadEventStart( 340 void DataReductionProxyMetricsObserver::OnLoadEventStart(
340 const page_load_metrics::PageLoadTiming& timing, 341 const page_load_metrics::PageLoadTiming& timing,
341 const page_load_metrics::PageLoadExtraInfo& info) { 342 const page_load_metrics::PageLoadExtraInfo& info) {
342 RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX( 343 RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX(
343 info, data_, timing.load_event_start, 344 info, data_, timing.document_timing.load_event_start,
344 internal::kHistogramLoadEventFiredSuffix); 345 internal::kHistogramLoadEventFiredSuffix);
345 } 346 }
346 347
347 void DataReductionProxyMetricsObserver::OnFirstLayout( 348 void DataReductionProxyMetricsObserver::OnFirstLayout(
348 const page_load_metrics::PageLoadTiming& timing, 349 const page_load_metrics::PageLoadTiming& timing,
349 const page_load_metrics::PageLoadExtraInfo& info) { 350 const page_load_metrics::PageLoadExtraInfo& info) {
350 RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX( 351 RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX(
351 info, data_, timing.first_layout, internal::kHistogramFirstLayoutSuffix); 352 info, data_, timing.document_timing.first_layout,
353 internal::kHistogramFirstLayoutSuffix);
352 } 354 }
353 355
354 void DataReductionProxyMetricsObserver::OnFirstPaint( 356 void DataReductionProxyMetricsObserver::OnFirstPaint(
355 const page_load_metrics::PageLoadTiming& timing, 357 const page_load_metrics::PageLoadTiming& timing,
356 const page_load_metrics::PageLoadExtraInfo& info) { 358 const page_load_metrics::PageLoadExtraInfo& info) {
357 RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX(info, data_, timing.first_paint, 359 RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX(info, data_,
360 timing.paint_timing.first_paint,
358 internal::kHistogramFirstPaintSuffix); 361 internal::kHistogramFirstPaintSuffix);
359 } 362 }
360 363
361 void DataReductionProxyMetricsObserver::OnFirstTextPaint( 364 void DataReductionProxyMetricsObserver::OnFirstTextPaint(
362 const page_load_metrics::PageLoadTiming& timing, 365 const page_load_metrics::PageLoadTiming& timing,
363 const page_load_metrics::PageLoadExtraInfo& info) { 366 const page_load_metrics::PageLoadExtraInfo& info) {
364 RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX( 367 RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX(
365 info, data_, timing.first_text_paint, 368 info, data_, timing.paint_timing.first_text_paint,
366 internal::kHistogramFirstTextPaintSuffix); 369 internal::kHistogramFirstTextPaintSuffix);
367 } 370 }
368 371
369 void DataReductionProxyMetricsObserver::OnFirstImagePaint( 372 void DataReductionProxyMetricsObserver::OnFirstImagePaint(
370 const page_load_metrics::PageLoadTiming& timing, 373 const page_load_metrics::PageLoadTiming& timing,
371 const page_load_metrics::PageLoadExtraInfo& info) { 374 const page_load_metrics::PageLoadExtraInfo& info) {
372 RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX( 375 RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX(
373 info, data_, timing.first_image_paint, 376 info, data_, timing.paint_timing.first_image_paint,
374 internal::kHistogramFirstImagePaintSuffix); 377 internal::kHistogramFirstImagePaintSuffix);
375 } 378 }
376 379
377 void DataReductionProxyMetricsObserver::OnFirstContentfulPaint( 380 void DataReductionProxyMetricsObserver::OnFirstContentfulPaint(
378 const page_load_metrics::PageLoadTiming& timing, 381 const page_load_metrics::PageLoadTiming& timing,
379 const page_load_metrics::PageLoadExtraInfo& info) { 382 const page_load_metrics::PageLoadExtraInfo& info) {
380 RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX( 383 RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX(
381 info, data_, timing.first_contentful_paint, 384 info, data_, timing.paint_timing.first_contentful_paint,
382 internal::kHistogramFirstContentfulPaintSuffix); 385 internal::kHistogramFirstContentfulPaintSuffix);
383 } 386 }
384 387
385 void DataReductionProxyMetricsObserver::OnFirstMeaningfulPaint( 388 void DataReductionProxyMetricsObserver::OnFirstMeaningfulPaint(
386 const page_load_metrics::PageLoadTiming& timing, 389 const page_load_metrics::PageLoadTiming& timing,
387 const page_load_metrics::PageLoadExtraInfo& info) { 390 const page_load_metrics::PageLoadExtraInfo& info) {
388 RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX( 391 RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX(
389 info, data_, timing.first_meaningful_paint, 392 info, data_, timing.paint_timing.first_meaningful_paint,
390 internal::kHistogramFirstMeaningfulPaintSuffix); 393 internal::kHistogramFirstMeaningfulPaintSuffix);
391 } 394 }
392 395
393 void DataReductionProxyMetricsObserver::OnParseStart( 396 void DataReductionProxyMetricsObserver::OnParseStart(
394 const page_load_metrics::PageLoadTiming& timing, 397 const page_load_metrics::PageLoadTiming& timing,
395 const page_load_metrics::PageLoadExtraInfo& info) { 398 const page_load_metrics::PageLoadExtraInfo& info) {
396 RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX(info, data_, timing.parse_start, 399 RECORD_FOREGROUND_HISTOGRAMS_FOR_SUFFIX(info, data_,
400 timing.parse_timing.parse_start,
397 internal::kHistogramParseStartSuffix); 401 internal::kHistogramParseStartSuffix);
398 } 402 }
399 403
400 void DataReductionProxyMetricsObserver::OnParseStop( 404 void DataReductionProxyMetricsObserver::OnParseStop(
401 const page_load_metrics::PageLoadTiming& timing, 405 const page_load_metrics::PageLoadTiming& timing,
402 const page_load_metrics::PageLoadExtraInfo& info) { 406 const page_load_metrics::PageLoadExtraInfo& info) {
403 if (!WasStartedInForegroundOptionalEventInForeground(timing.parse_stop, info)) 407 if (!WasStartedInForegroundOptionalEventInForeground(
408 timing.parse_timing.parse_stop, info))
404 return; 409 return;
405 410
406 base::TimeDelta parse_duration = 411 base::TimeDelta parse_duration = timing.parse_timing.parse_stop.value() -
407 timing.parse_stop.value() - timing.parse_start.value(); 412 timing.parse_timing.parse_start.value();
408 RECORD_HISTOGRAMS_FOR_SUFFIX(data_, parse_duration, 413 RECORD_HISTOGRAMS_FOR_SUFFIX(data_, parse_duration,
409 internal::kHistogramParseDurationSuffix); 414 internal::kHistogramParseDurationSuffix);
410 RECORD_HISTOGRAMS_FOR_SUFFIX( 415 RECORD_HISTOGRAMS_FOR_SUFFIX(
411 data_, timing.parse_blocked_on_script_load_duration.value(), 416 data_, timing.parse_timing.parse_blocked_on_script_load_duration.value(),
412 internal::kHistogramParseBlockedOnScriptLoadSuffix); 417 internal::kHistogramParseBlockedOnScriptLoadSuffix);
413 } 418 }
414 419
415 void DataReductionProxyMetricsObserver::OnLoadedResource( 420 void DataReductionProxyMetricsObserver::OnLoadedResource(
416 const page_load_metrics::ExtraRequestInfo& extra_request_info) { 421 const page_load_metrics::ExtraRequestInfo& extra_request_info) {
417 if (extra_request_info.was_cached) 422 if (extra_request_info.was_cached)
418 return; 423 return;
419 original_network_bytes_ += extra_request_info.original_network_content_length; 424 original_network_bytes_ += extra_request_info.original_network_content_length;
420 network_bytes_ += extra_request_info.raw_body_bytes; 425 network_bytes_ += extra_request_info.raw_body_bytes;
421 num_network_resources_++; 426 num_network_resources_++;
422 if (!extra_request_info.data_reduction_proxy_used) 427 if (!extra_request_info.data_reduction_proxy_used)
423 return; 428 return;
424 num_data_reduction_proxy_resources_++; 429 num_data_reduction_proxy_resources_++;
425 network_bytes_proxied_ += extra_request_info.raw_body_bytes; 430 network_bytes_proxied_ += extra_request_info.raw_body_bytes;
426 } 431 }
427 432
428 DataReductionProxyPingbackClient* 433 DataReductionProxyPingbackClient*
429 DataReductionProxyMetricsObserver::GetPingbackClient() const { 434 DataReductionProxyMetricsObserver::GetPingbackClient() const {
430 return DataReductionProxyChromeSettingsFactory::GetForBrowserContext( 435 return DataReductionProxyChromeSettingsFactory::GetForBrowserContext(
431 browser_context_) 436 browser_context_)
432 ->data_reduction_proxy_service() 437 ->data_reduction_proxy_service()
433 ->pingback_client(); 438 ->pingback_client();
434 } 439 }
435 440
436 } // namespace data_reduction_proxy 441 } // namespace data_reduction_proxy
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698