OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/from_gws_page_load_metrics_
observer.h" | 5 #include "chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_
observer.h" |
6 #include <string> | 6 #include <string> |
7 | 7 |
8 #include "base/metrics/histogram_macros.h" | 8 #include "base/metrics/histogram_macros.h" |
9 #include "base/strings/string_util.h" | 9 #include "base/strings/string_util.h" |
10 #include "chrome/browser/page_load_metrics/page_load_metrics_util.h" | 10 #include "chrome/browser/page_load_metrics/page_load_metrics_util.h" |
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
220 PAGE_LOAD_HISTOGRAM( | 220 PAGE_LOAD_HISTOGRAM( |
221 internal::kHistogramFromGWSAbortBackgroundBeforeCommit, | 221 internal::kHistogramFromGWSAbortBackgroundBeforeCommit, |
222 abort_info.time_to_abort); | 222 abort_info.time_to_abort); |
223 break; | 223 break; |
224 default: | 224 default: |
225 NOTREACHED(); | 225 NOTREACHED(); |
226 break; | 226 break; |
227 } | 227 } |
228 } | 228 } |
229 | 229 |
230 void LogForegroundDurations(const page_load_metrics::PageLoadTiming& timing, | 230 void LogForegroundDurations( |
231 const page_load_metrics::PageLoadExtraInfo& info, | 231 const page_load_metrics::mojom::PageLoadTiming& timing, |
232 base::TimeTicks app_background_time) { | 232 const page_load_metrics::PageLoadExtraInfo& info, |
| 233 base::TimeTicks app_background_time) { |
233 base::Optional<base::TimeDelta> foreground_duration = | 234 base::Optional<base::TimeDelta> foreground_duration = |
234 GetInitialForegroundDuration(info, app_background_time); | 235 GetInitialForegroundDuration(info, app_background_time); |
235 if (!foreground_duration) | 236 if (!foreground_duration) |
236 return; | 237 return; |
237 | 238 |
238 if (info.did_commit) { | 239 if (info.did_commit) { |
239 PAGE_LOAD_LONG_HISTOGRAM(internal::kHistogramFromGWSForegroundDuration, | 240 PAGE_LOAD_LONG_HISTOGRAM(internal::kHistogramFromGWSForegroundDuration, |
240 foreground_duration.value()); | 241 foreground_duration.value()); |
241 if (timing.paint_timing.first_paint && | 242 if (timing.paint_timing->first_paint && |
242 timing.paint_timing.first_paint < foreground_duration) { | 243 timing.paint_timing->first_paint < foreground_duration) { |
243 PAGE_LOAD_LONG_HISTOGRAM( | 244 PAGE_LOAD_LONG_HISTOGRAM( |
244 internal::kHistogramFromGWSForegroundDurationAfterPaint, | 245 internal::kHistogramFromGWSForegroundDurationAfterPaint, |
245 foreground_duration.value() - | 246 foreground_duration.value() - |
246 timing.paint_timing.first_paint.value()); | 247 timing.paint_timing->first_paint.value()); |
247 PAGE_LOAD_LONG_HISTOGRAM( | 248 PAGE_LOAD_LONG_HISTOGRAM( |
248 internal::kHistogramFromGWSForegroundDurationWithPaint, | 249 internal::kHistogramFromGWSForegroundDurationWithPaint, |
249 foreground_duration.value()); | 250 foreground_duration.value()); |
250 } else { | 251 } else { |
251 PAGE_LOAD_LONG_HISTOGRAM( | 252 PAGE_LOAD_LONG_HISTOGRAM( |
252 internal::kHistogramFromGWSForegroundDurationWithoutPaint, | 253 internal::kHistogramFromGWSForegroundDurationWithoutPaint, |
253 foreground_duration.value()); | 254 foreground_duration.value()); |
254 } | 255 } |
255 } else { | 256 } else { |
256 PAGE_LOAD_LONG_HISTOGRAM( | 257 PAGE_LOAD_LONG_HISTOGRAM( |
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
472 ui::PAGE_TRANSITION_LINK) && | 473 ui::PAGE_TRANSITION_LINK) && |
473 ui::PageTransitionIsNewNavigation( | 474 ui::PageTransitionIsNewNavigation( |
474 navigation_handle->GetPageTransition())); | 475 navigation_handle->GetPageTransition())); |
475 | 476 |
476 logger_.SetNavigationStart(navigation_handle->NavigationStart()); | 477 logger_.SetNavigationStart(navigation_handle->NavigationStart()); |
477 return CONTINUE_OBSERVING; | 478 return CONTINUE_OBSERVING; |
478 } | 479 } |
479 | 480 |
480 page_load_metrics::PageLoadMetricsObserver::ObservePolicy | 481 page_load_metrics::PageLoadMetricsObserver::ObservePolicy |
481 FromGWSPageLoadMetricsObserver::FlushMetricsOnAppEnterBackground( | 482 FromGWSPageLoadMetricsObserver::FlushMetricsOnAppEnterBackground( |
482 const page_load_metrics::PageLoadTiming& timing, | 483 const page_load_metrics::mojom::PageLoadTiming& timing, |
483 const page_load_metrics::PageLoadExtraInfo& extra_info) { | 484 const page_load_metrics::PageLoadExtraInfo& extra_info) { |
484 logger_.FlushMetricsOnAppEnterBackground(timing, extra_info); | 485 logger_.FlushMetricsOnAppEnterBackground(timing, extra_info); |
485 return STOP_OBSERVING; | 486 return STOP_OBSERVING; |
486 } | 487 } |
487 | 488 |
488 void FromGWSPageLoadMetricsObserver::OnDomContentLoadedEventStart( | 489 void FromGWSPageLoadMetricsObserver::OnDomContentLoadedEventStart( |
489 const page_load_metrics::PageLoadTiming& timing, | 490 const page_load_metrics::mojom::PageLoadTiming& timing, |
490 const page_load_metrics::PageLoadExtraInfo& extra_info) { | 491 const page_load_metrics::PageLoadExtraInfo& extra_info) { |
491 logger_.OnDomContentLoadedEventStart(timing, extra_info); | 492 logger_.OnDomContentLoadedEventStart(timing, extra_info); |
492 } | 493 } |
493 | 494 |
494 void FromGWSPageLoadMetricsObserver::OnLoadEventStart( | 495 void FromGWSPageLoadMetricsObserver::OnLoadEventStart( |
495 const page_load_metrics::PageLoadTiming& timing, | 496 const page_load_metrics::mojom::PageLoadTiming& timing, |
496 const page_load_metrics::PageLoadExtraInfo& extra_info) { | 497 const page_load_metrics::PageLoadExtraInfo& extra_info) { |
497 logger_.OnLoadEventStart(timing, extra_info); | 498 logger_.OnLoadEventStart(timing, extra_info); |
498 } | 499 } |
499 | 500 |
500 void FromGWSPageLoadMetricsObserver::OnFirstPaintInPage( | 501 void FromGWSPageLoadMetricsObserver::OnFirstPaintInPage( |
501 const page_load_metrics::PageLoadTiming& timing, | 502 const page_load_metrics::mojom::PageLoadTiming& timing, |
502 const page_load_metrics::PageLoadExtraInfo& extra_info) { | 503 const page_load_metrics::PageLoadExtraInfo& extra_info) { |
503 logger_.OnFirstPaintInPage(timing, extra_info); | 504 logger_.OnFirstPaintInPage(timing, extra_info); |
504 } | 505 } |
505 | 506 |
506 void FromGWSPageLoadMetricsObserver::OnFirstTextPaintInPage( | 507 void FromGWSPageLoadMetricsObserver::OnFirstTextPaintInPage( |
507 const page_load_metrics::PageLoadTiming& timing, | 508 const page_load_metrics::mojom::PageLoadTiming& timing, |
508 const page_load_metrics::PageLoadExtraInfo& extra_info) { | 509 const page_load_metrics::PageLoadExtraInfo& extra_info) { |
509 logger_.OnFirstTextPaintInPage(timing, extra_info); | 510 logger_.OnFirstTextPaintInPage(timing, extra_info); |
510 } | 511 } |
511 | 512 |
512 void FromGWSPageLoadMetricsObserver::OnFirstImagePaintInPage( | 513 void FromGWSPageLoadMetricsObserver::OnFirstImagePaintInPage( |
513 const page_load_metrics::PageLoadTiming& timing, | 514 const page_load_metrics::mojom::PageLoadTiming& timing, |
514 const page_load_metrics::PageLoadExtraInfo& extra_info) { | 515 const page_load_metrics::PageLoadExtraInfo& extra_info) { |
515 logger_.OnFirstImagePaintInPage(timing, extra_info); | 516 logger_.OnFirstImagePaintInPage(timing, extra_info); |
516 } | 517 } |
517 | 518 |
518 void FromGWSPageLoadMetricsObserver::OnFirstContentfulPaintInPage( | 519 void FromGWSPageLoadMetricsObserver::OnFirstContentfulPaintInPage( |
519 const page_load_metrics::PageLoadTiming& timing, | 520 const page_load_metrics::mojom::PageLoadTiming& timing, |
520 const page_load_metrics::PageLoadExtraInfo& extra_info) { | 521 const page_load_metrics::PageLoadExtraInfo& extra_info) { |
521 logger_.OnFirstContentfulPaintInPage(timing, extra_info); | 522 logger_.OnFirstContentfulPaintInPage(timing, extra_info); |
522 } | 523 } |
523 | 524 |
524 void FromGWSPageLoadMetricsObserver::OnParseStart( | 525 void FromGWSPageLoadMetricsObserver::OnParseStart( |
525 const page_load_metrics::PageLoadTiming& timing, | 526 const page_load_metrics::mojom::PageLoadTiming& timing, |
526 const page_load_metrics::PageLoadExtraInfo& extra_info) { | 527 const page_load_metrics::PageLoadExtraInfo& extra_info) { |
527 logger_.OnParseStart(timing, extra_info); | 528 logger_.OnParseStart(timing, extra_info); |
528 } | 529 } |
529 | 530 |
530 void FromGWSPageLoadMetricsObserver::OnParseStop( | 531 void FromGWSPageLoadMetricsObserver::OnParseStop( |
531 const page_load_metrics::PageLoadTiming& timing, | 532 const page_load_metrics::mojom::PageLoadTiming& timing, |
532 const page_load_metrics::PageLoadExtraInfo& extra_info) { | 533 const page_load_metrics::PageLoadExtraInfo& extra_info) { |
533 logger_.OnParseStop(timing, extra_info); | 534 logger_.OnParseStop(timing, extra_info); |
534 } | 535 } |
535 | 536 |
536 void FromGWSPageLoadMetricsObserver::OnComplete( | 537 void FromGWSPageLoadMetricsObserver::OnComplete( |
537 const page_load_metrics::PageLoadTiming& timing, | 538 const page_load_metrics::mojom::PageLoadTiming& timing, |
538 const page_load_metrics::PageLoadExtraInfo& extra_info) { | 539 const page_load_metrics::PageLoadExtraInfo& extra_info) { |
539 logger_.OnComplete(timing, extra_info); | 540 logger_.OnComplete(timing, extra_info); |
540 } | 541 } |
541 | 542 |
542 void FromGWSPageLoadMetricsObserver::OnFailedProvisionalLoad( | 543 void FromGWSPageLoadMetricsObserver::OnFailedProvisionalLoad( |
543 const page_load_metrics::FailedProvisionalLoadInfo& failed_load_info, | 544 const page_load_metrics::FailedProvisionalLoadInfo& failed_load_info, |
544 const page_load_metrics::PageLoadExtraInfo& extra_info) { | 545 const page_load_metrics::PageLoadExtraInfo& extra_info) { |
545 logger_.OnFailedProvisionalLoad(failed_load_info, extra_info); | 546 logger_.OnFailedProvisionalLoad(failed_load_info, extra_info); |
546 } | 547 } |
547 | 548 |
548 void FromGWSPageLoadMetricsObserver::OnUserInput( | 549 void FromGWSPageLoadMetricsObserver::OnUserInput( |
549 const blink::WebInputEvent& event) { | 550 const blink::WebInputEvent& event) { |
550 logger_.OnUserInput(event); | 551 logger_.OnUserInput(event); |
551 } | 552 } |
552 | 553 |
553 void FromGWSPageLoadMetricsLogger::OnComplete( | 554 void FromGWSPageLoadMetricsLogger::OnComplete( |
554 const page_load_metrics::PageLoadTiming& timing, | 555 const page_load_metrics::mojom::PageLoadTiming& timing, |
555 const page_load_metrics::PageLoadExtraInfo& extra_info) { | 556 const page_load_metrics::PageLoadExtraInfo& extra_info) { |
556 if (!ShouldLogPostCommitMetrics(extra_info.url)) | 557 if (!ShouldLogPostCommitMetrics(extra_info.url)) |
557 return; | 558 return; |
558 | 559 |
559 page_load_metrics::PageAbortInfo abort_info = GetPageAbortInfo(extra_info); | 560 page_load_metrics::PageAbortInfo abort_info = GetPageAbortInfo(extra_info); |
560 if (!WasAbortedInForeground(extra_info, abort_info)) | 561 if (!WasAbortedInForeground(extra_info, abort_info)) |
561 return; | 562 return; |
562 | 563 |
563 // If we did not receive any timing IPCs from the render process, we can't | 564 // If we did not receive any timing IPCs from the render process, we can't |
564 // know for certain if the page was truly aborted before paint, or if the | 565 // know for certain if the page was truly aborted before paint, or if the |
565 // abort happened before we received the IPC from the render process. Thus, we | 566 // abort happened before we received the IPC from the render process. Thus, we |
566 // do not log aborts for these page loads. Tracked page loads that receive no | 567 // do not log aborts for these page loads. Tracked page loads that receive no |
567 // timing IPCs are tracked via the ERR_NO_IPCS_RECEIVED error code in the | 568 // timing IPCs are tracked via the ERR_NO_IPCS_RECEIVED error code in the |
568 // PageLoad.Events.InternalError histogram, so we can keep track of how often | 569 // PageLoad.Events.InternalError histogram, so we can keep track of how often |
569 // this happens. | 570 // this happens. |
570 if (timing.IsEmpty()) | 571 if (page_load_metrics::IsEmpty(timing)) |
571 return; | 572 return; |
572 | 573 |
573 if (!timing.paint_timing.first_paint || | 574 if (!timing.paint_timing->first_paint || |
574 timing.paint_timing.first_paint >= abort_info.time_to_abort) { | 575 timing.paint_timing->first_paint >= abort_info.time_to_abort) { |
575 LogCommittedAbortsBeforePaint(abort_info.reason, abort_info.time_to_abort); | 576 LogCommittedAbortsBeforePaint(abort_info.reason, abort_info.time_to_abort); |
576 } else if (WasAbortedBeforeInteraction(abort_info, | 577 } else if (WasAbortedBeforeInteraction(abort_info, |
577 first_user_interaction_after_paint_)) { | 578 first_user_interaction_after_paint_)) { |
578 LogAbortsAfterPaintBeforeInteraction(abort_info); | 579 LogAbortsAfterPaintBeforeInteraction(abort_info); |
579 } | 580 } |
580 | 581 |
581 LogForegroundDurations(timing, extra_info, base::TimeTicks()); | 582 LogForegroundDurations(timing, extra_info, base::TimeTicks()); |
582 } | 583 } |
583 | 584 |
584 void FromGWSPageLoadMetricsLogger::OnFailedProvisionalLoad( | 585 void FromGWSPageLoadMetricsLogger::OnFailedProvisionalLoad( |
585 const page_load_metrics::FailedProvisionalLoadInfo& failed_load_info, | 586 const page_load_metrics::FailedProvisionalLoadInfo& failed_load_info, |
586 const page_load_metrics::PageLoadExtraInfo& extra_info) { | 587 const page_load_metrics::PageLoadExtraInfo& extra_info) { |
587 if (!ShouldLogFailedProvisionalLoadMetrics()) | 588 if (!ShouldLogFailedProvisionalLoadMetrics()) |
588 return; | 589 return; |
589 | 590 |
590 page_load_metrics::PageAbortInfo abort_info = GetPageAbortInfo(extra_info); | 591 page_load_metrics::PageAbortInfo abort_info = GetPageAbortInfo(extra_info); |
591 if (!WasAbortedInForeground(extra_info, abort_info)) | 592 if (!WasAbortedInForeground(extra_info, abort_info)) |
592 return; | 593 return; |
593 | 594 |
594 LogProvisionalAborts(abort_info); | 595 LogProvisionalAborts(abort_info); |
595 | 596 |
596 LogForegroundDurations(page_load_metrics::PageLoadTiming(), extra_info, | 597 LogForegroundDurations(page_load_metrics::mojom::PageLoadTiming(), extra_info, |
597 base::TimeTicks()); | 598 base::TimeTicks()); |
598 } | 599 } |
599 | 600 |
600 bool FromGWSPageLoadMetricsLogger::ShouldLogFailedProvisionalLoadMetrics() { | 601 bool FromGWSPageLoadMetricsLogger::ShouldLogFailedProvisionalLoadMetrics() { |
601 // See comment in ShouldLogPostCommitMetrics above the call to | 602 // See comment in ShouldLogPostCommitMetrics above the call to |
602 // IsGoogleSearchHostname for more info on this if test. | 603 // IsGoogleSearchHostname for more info on this if test. |
603 if (provisional_url_has_search_hostname_) | 604 if (provisional_url_has_search_hostname_) |
604 return false; | 605 return false; |
605 | 606 |
606 return previously_committed_url_is_search_results_ || | 607 return previously_committed_url_is_search_results_ || |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
641 bool FromGWSPageLoadMetricsLogger::ShouldLogForegroundEventAfterCommit( | 642 bool FromGWSPageLoadMetricsLogger::ShouldLogForegroundEventAfterCommit( |
642 const base::Optional<base::TimeDelta>& event, | 643 const base::Optional<base::TimeDelta>& event, |
643 const page_load_metrics::PageLoadExtraInfo& info) { | 644 const page_load_metrics::PageLoadExtraInfo& info) { |
644 DCHECK(info.did_commit) | 645 DCHECK(info.did_commit) |
645 << "ShouldLogForegroundEventAfterCommit called without committed URL."; | 646 << "ShouldLogForegroundEventAfterCommit called without committed URL."; |
646 return ShouldLogPostCommitMetrics(info.url) && | 647 return ShouldLogPostCommitMetrics(info.url) && |
647 WasStartedInForegroundOptionalEventInForeground(event, info); | 648 WasStartedInForegroundOptionalEventInForeground(event, info); |
648 } | 649 } |
649 | 650 |
650 void FromGWSPageLoadMetricsLogger::OnDomContentLoadedEventStart( | 651 void FromGWSPageLoadMetricsLogger::OnDomContentLoadedEventStart( |
651 const page_load_metrics::PageLoadTiming& timing, | 652 const page_load_metrics::mojom::PageLoadTiming& timing, |
652 const page_load_metrics::PageLoadExtraInfo& extra_info) { | 653 const page_load_metrics::PageLoadExtraInfo& extra_info) { |
653 if (ShouldLogForegroundEventAfterCommit( | 654 if (ShouldLogForegroundEventAfterCommit( |
654 timing.document_timing.dom_content_loaded_event_start, extra_info)) { | 655 timing.document_timing->dom_content_loaded_event_start, extra_info)) { |
655 PAGE_LOAD_HISTOGRAM( | 656 PAGE_LOAD_HISTOGRAM( |
656 internal::kHistogramFromGWSDomContentLoaded, | 657 internal::kHistogramFromGWSDomContentLoaded, |
657 timing.document_timing.dom_content_loaded_event_start.value()); | 658 timing.document_timing->dom_content_loaded_event_start.value()); |
658 } | 659 } |
659 } | 660 } |
660 | 661 |
661 void FromGWSPageLoadMetricsLogger::OnLoadEventStart( | 662 void FromGWSPageLoadMetricsLogger::OnLoadEventStart( |
662 const page_load_metrics::PageLoadTiming& timing, | 663 const page_load_metrics::mojom::PageLoadTiming& timing, |
663 const page_load_metrics::PageLoadExtraInfo& extra_info) { | 664 const page_load_metrics::PageLoadExtraInfo& extra_info) { |
664 if (ShouldLogForegroundEventAfterCommit( | 665 if (ShouldLogForegroundEventAfterCommit( |
665 timing.document_timing.load_event_start, extra_info)) { | 666 timing.document_timing->load_event_start, extra_info)) { |
666 PAGE_LOAD_HISTOGRAM(internal::kHistogramFromGWSLoad, | 667 PAGE_LOAD_HISTOGRAM(internal::kHistogramFromGWSLoad, |
667 timing.document_timing.load_event_start.value()); | 668 timing.document_timing->load_event_start.value()); |
668 } | 669 } |
669 } | 670 } |
670 | 671 |
671 void FromGWSPageLoadMetricsLogger::OnFirstPaintInPage( | 672 void FromGWSPageLoadMetricsLogger::OnFirstPaintInPage( |
672 const page_load_metrics::PageLoadTiming& timing, | 673 const page_load_metrics::mojom::PageLoadTiming& timing, |
673 const page_load_metrics::PageLoadExtraInfo& extra_info) { | 674 const page_load_metrics::PageLoadExtraInfo& extra_info) { |
674 if (ShouldLogForegroundEventAfterCommit(timing.paint_timing.first_paint, | 675 if (ShouldLogForegroundEventAfterCommit(timing.paint_timing->first_paint, |
675 extra_info)) { | 676 extra_info)) { |
676 PAGE_LOAD_HISTOGRAM(internal::kHistogramFromGWSFirstPaint, | 677 PAGE_LOAD_HISTOGRAM(internal::kHistogramFromGWSFirstPaint, |
677 timing.paint_timing.first_paint.value()); | 678 timing.paint_timing->first_paint.value()); |
678 } | 679 } |
679 first_paint_triggered_ = true; | 680 first_paint_triggered_ = true; |
680 } | 681 } |
681 | 682 |
682 void FromGWSPageLoadMetricsLogger::OnFirstTextPaintInPage( | 683 void FromGWSPageLoadMetricsLogger::OnFirstTextPaintInPage( |
683 const page_load_metrics::PageLoadTiming& timing, | 684 const page_load_metrics::mojom::PageLoadTiming& timing, |
684 const page_load_metrics::PageLoadExtraInfo& extra_info) { | 685 const page_load_metrics::PageLoadExtraInfo& extra_info) { |
685 if (ShouldLogForegroundEventAfterCommit(timing.paint_timing.first_text_paint, | 686 if (ShouldLogForegroundEventAfterCommit(timing.paint_timing->first_text_paint, |
686 extra_info)) { | 687 extra_info)) { |
687 PAGE_LOAD_HISTOGRAM(internal::kHistogramFromGWSFirstTextPaint, | 688 PAGE_LOAD_HISTOGRAM(internal::kHistogramFromGWSFirstTextPaint, |
688 timing.paint_timing.first_text_paint.value()); | 689 timing.paint_timing->first_text_paint.value()); |
689 } | 690 } |
690 } | 691 } |
691 | 692 |
692 void FromGWSPageLoadMetricsLogger::OnFirstImagePaintInPage( | 693 void FromGWSPageLoadMetricsLogger::OnFirstImagePaintInPage( |
693 const page_load_metrics::PageLoadTiming& timing, | 694 const page_load_metrics::mojom::PageLoadTiming& timing, |
694 const page_load_metrics::PageLoadExtraInfo& extra_info) { | 695 const page_load_metrics::PageLoadExtraInfo& extra_info) { |
695 if (ShouldLogForegroundEventAfterCommit(timing.paint_timing.first_image_paint, | 696 if (ShouldLogForegroundEventAfterCommit( |
696 extra_info)) { | 697 timing.paint_timing->first_image_paint, extra_info)) { |
697 PAGE_LOAD_HISTOGRAM(internal::kHistogramFromGWSFirstImagePaint, | 698 PAGE_LOAD_HISTOGRAM(internal::kHistogramFromGWSFirstImagePaint, |
698 timing.paint_timing.first_image_paint.value()); | 699 timing.paint_timing->first_image_paint.value()); |
699 } | 700 } |
700 } | 701 } |
701 | 702 |
702 void FromGWSPageLoadMetricsLogger::OnFirstContentfulPaintInPage( | 703 void FromGWSPageLoadMetricsLogger::OnFirstContentfulPaintInPage( |
703 const page_load_metrics::PageLoadTiming& timing, | 704 const page_load_metrics::mojom::PageLoadTiming& timing, |
704 const page_load_metrics::PageLoadExtraInfo& extra_info) { | 705 const page_load_metrics::PageLoadExtraInfo& extra_info) { |
705 if (ShouldLogForegroundEventAfterCommit( | 706 if (ShouldLogForegroundEventAfterCommit( |
706 timing.paint_timing.first_contentful_paint, extra_info)) { | 707 timing.paint_timing->first_contentful_paint, extra_info)) { |
707 PAGE_LOAD_HISTOGRAM(internal::kHistogramFromGWSFirstContentfulPaint, | 708 PAGE_LOAD_HISTOGRAM(internal::kHistogramFromGWSFirstContentfulPaint, |
708 timing.paint_timing.first_contentful_paint.value()); | 709 timing.paint_timing->first_contentful_paint.value()); |
709 | 710 |
710 // If we have a foreground paint, we should have a foreground parse start, | 711 // If we have a foreground paint, we should have a foreground parse start, |
711 // since paints can't happen until after parsing starts. | 712 // since paints can't happen until after parsing starts. |
712 DCHECK(WasStartedInForegroundOptionalEventInForeground( | 713 DCHECK(WasStartedInForegroundOptionalEventInForeground( |
713 timing.parse_timing.parse_start, extra_info)); | 714 timing.parse_timing->parse_start, extra_info)); |
714 PAGE_LOAD_HISTOGRAM( | 715 PAGE_LOAD_HISTOGRAM( |
715 internal::kHistogramFromGWSParseStartToFirstContentfulPaint, | 716 internal::kHistogramFromGWSParseStartToFirstContentfulPaint, |
716 timing.paint_timing.first_contentful_paint.value() - | 717 timing.paint_timing->first_contentful_paint.value() - |
717 timing.parse_timing.parse_start.value()); | 718 timing.parse_timing->parse_start.value()); |
718 } | 719 } |
719 } | 720 } |
720 | 721 |
721 void FromGWSPageLoadMetricsLogger::OnParseStart( | 722 void FromGWSPageLoadMetricsLogger::OnParseStart( |
722 const page_load_metrics::PageLoadTiming& timing, | 723 const page_load_metrics::mojom::PageLoadTiming& timing, |
723 const page_load_metrics::PageLoadExtraInfo& extra_info) { | 724 const page_load_metrics::PageLoadExtraInfo& extra_info) { |
724 if (ShouldLogForegroundEventAfterCommit(timing.parse_timing.parse_start, | 725 if (ShouldLogForegroundEventAfterCommit(timing.parse_timing->parse_start, |
725 extra_info)) { | 726 extra_info)) { |
726 PAGE_LOAD_HISTOGRAM(internal::kHistogramFromGWSParseStart, | 727 PAGE_LOAD_HISTOGRAM(internal::kHistogramFromGWSParseStart, |
727 timing.parse_timing.parse_start.value()); | 728 timing.parse_timing->parse_start.value()); |
728 } | 729 } |
729 } | 730 } |
730 | 731 |
731 void FromGWSPageLoadMetricsLogger::OnParseStop( | 732 void FromGWSPageLoadMetricsLogger::OnParseStop( |
732 const page_load_metrics::PageLoadTiming& timing, | 733 const page_load_metrics::mojom::PageLoadTiming& timing, |
733 const page_load_metrics::PageLoadExtraInfo& extra_info) { | 734 const page_load_metrics::PageLoadExtraInfo& extra_info) { |
734 if (ShouldLogForegroundEventAfterCommit(timing.parse_timing.parse_stop, | 735 if (ShouldLogForegroundEventAfterCommit(timing.parse_timing->parse_stop, |
735 extra_info)) { | 736 extra_info)) { |
736 PAGE_LOAD_HISTOGRAM(internal::kHistogramFromGWSParseDuration, | 737 PAGE_LOAD_HISTOGRAM(internal::kHistogramFromGWSParseDuration, |
737 timing.parse_timing.parse_stop.value() - | 738 timing.parse_timing->parse_stop.value() - |
738 timing.parse_timing.parse_start.value()); | 739 timing.parse_timing->parse_start.value()); |
739 } | 740 } |
740 } | 741 } |
741 | 742 |
742 void FromGWSPageLoadMetricsLogger::OnUserInput( | 743 void FromGWSPageLoadMetricsLogger::OnUserInput( |
743 const blink::WebInputEvent& event) { | 744 const blink::WebInputEvent& event) { |
744 if (first_paint_triggered_ && !first_user_interaction_after_paint_) { | 745 if (first_paint_triggered_ && !first_user_interaction_after_paint_) { |
745 DCHECK(!navigation_start_.is_null()); | 746 DCHECK(!navigation_start_.is_null()); |
746 first_user_interaction_after_paint_ = | 747 first_user_interaction_after_paint_ = |
747 base::TimeTicks::Now() - navigation_start_; | 748 base::TimeTicks::Now() - navigation_start_; |
748 } | 749 } |
749 } | 750 } |
750 | 751 |
751 void FromGWSPageLoadMetricsLogger::FlushMetricsOnAppEnterBackground( | 752 void FromGWSPageLoadMetricsLogger::FlushMetricsOnAppEnterBackground( |
752 const page_load_metrics::PageLoadTiming& timing, | 753 const page_load_metrics::mojom::PageLoadTiming& timing, |
753 const page_load_metrics::PageLoadExtraInfo& extra_info) { | 754 const page_load_metrics::PageLoadExtraInfo& extra_info) { |
754 LogForegroundDurations(timing, extra_info, base::TimeTicks::Now()); | 755 LogForegroundDurations(timing, extra_info, base::TimeTicks::Now()); |
755 } | 756 } |
OLD | NEW |