| 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 |