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

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

Issue 2699933003: Generalize abort tracking to page end state tracking (Closed)
Patch Set: fix comment Created 3 years, 10 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 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/core_page_load_metrics_obse rver.h" 5 #include "chrome/browser/page_load_metrics/observers/core_page_load_metrics_obse rver.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
150 const char kHistogramLoadTypeFirstContentfulPaintForwardBack[] = 150 const char kHistogramLoadTypeFirstContentfulPaintForwardBack[] =
151 "PageLoad.PaintTiming.NavigationToFirstContentfulPaint.LoadType." 151 "PageLoad.PaintTiming.NavigationToFirstContentfulPaint.LoadType."
152 "ForwardBackNavigation"; 152 "ForwardBackNavigation";
153 const char kHistogramLoadTypeFirstContentfulPaintForwardBackNoStore[] = 153 const char kHistogramLoadTypeFirstContentfulPaintForwardBackNoStore[] =
154 "PageLoad.PaintTiming.NavigationToFirstContentfulPaint.LoadType." 154 "PageLoad.PaintTiming.NavigationToFirstContentfulPaint.LoadType."
155 "ForwardBackNavigation.NoStore"; 155 "ForwardBackNavigation.NoStore";
156 const char kHistogramLoadTypeFirstContentfulPaintNewNavigation[] = 156 const char kHistogramLoadTypeFirstContentfulPaintNewNavigation[] =
157 "PageLoad.PaintTiming.NavigationToFirstContentfulPaint.LoadType." 157 "PageLoad.PaintTiming.NavigationToFirstContentfulPaint.LoadType."
158 "NewNavigation"; 158 "NewNavigation";
159 159
160 const char kHistogramPageTimingPageEnd[] =
161 "PageLoad.Experimental.PageTiming.NavigationToPageEnd";
162 const char kHistogramPageTimingFirstPaintToPageEnd[] =
163 "PageLoad.Experimental.PageTiming.FirstPaintToPageEnd";
164
165 const char kHistogramPageTimingPageEndNoEndTime[] =
166 "PageLoad.Experimental.PageTiming.NavigationToPageEnd.NoEndTime";
167 const char kHistogramPageTimingFirstPaintToPageEndNoEndTime[] =
168 "PageLoad.Experimental.PageTiming.FirstPaintToPageEnd.NoEndTime";
169
170 const char kHistogramPageTimingFirstBackground[] =
171 "PageLoad.Experimental.PageTiming.NavigationToFirstBackground";
172 const char kHistogramPageTimingFirstPaintToFirstBackground[] =
173 "PageLoad.Experimental.PageTiming.FirstPaintToFirstBackground";
174
160 const char kHistogramLoadTypeParseStartReload[] = 175 const char kHistogramLoadTypeParseStartReload[] =
161 "PageLoad.ParseTiming.NavigationToParseStart.LoadType.Reload"; 176 "PageLoad.ParseTiming.NavigationToParseStart.LoadType.Reload";
162 const char kHistogramLoadTypeParseStartForwardBack[] = 177 const char kHistogramLoadTypeParseStartForwardBack[] =
163 "PageLoad.ParseTiming.NavigationToParseStart.LoadType." 178 "PageLoad.ParseTiming.NavigationToParseStart.LoadType."
164 "ForwardBackNavigation"; 179 "ForwardBackNavigation";
165 const char kHistogramLoadTypeParseStartForwardBackNoStore[] = 180 const char kHistogramLoadTypeParseStartForwardBackNoStore[] =
166 "PageLoad.ParseTiming.NavigationToParseStart.LoadType." 181 "PageLoad.ParseTiming.NavigationToParseStart.LoadType."
167 "ForwardBackNavigation.NoStore"; 182 "ForwardBackNavigation.NoStore";
168 const char kHistogramLoadTypeParseStartNewNavigation[] = 183 const char kHistogramLoadTypeParseStartNewNavigation[] =
169 "PageLoad.ParseTiming.NavigationToParseStart.LoadType.NewNavigation"; 184 "PageLoad.ParseTiming.NavigationToParseStart.LoadType.NewNavigation";
170 185
171 const char kHistogramFirstForeground[] = 186 const char kHistogramFirstForeground[] =
172 "PageLoad.Timing2.NavigationToFirstForeground"; 187 "PageLoad.PageTiming.NavigationToFirstForeground";
173 188
174 const char kHistogramFailedProvisionalLoad[] = 189 const char kHistogramFailedProvisionalLoad[] =
175 "PageLoad.Timing2.NavigationToFailedProvisionalLoad"; 190 "PageLoad.PageTiming.NavigationToFailedProvisionalLoad";
176 191
177 const char kHistogramForegroundToFirstPaint[] = 192 const char kHistogramForegroundToFirstPaint[] =
178 "PageLoad.PaintTiming.ForegroundToFirstPaint"; 193 "PageLoad.PaintTiming.ForegroundToFirstPaint";
179 194
180 const char kHistogramCacheRequestPercentParseStop[] = 195 const char kHistogramCacheRequestPercentParseStop[] =
181 "PageLoad.Experimental.Cache.RequestPercent.ParseStop"; 196 "PageLoad.Experimental.Cache.RequestPercent.ParseStop";
182 const char kHistogramCacheTotalRequestsParseStop[] = 197 const char kHistogramCacheTotalRequestsParseStop[] =
183 "PageLoad.Experimental.Cache.TotalRequests.ParseStop"; 198 "PageLoad.Experimental.Cache.TotalRequests.ParseStop";
184 const char kHistogramTotalRequestsParseStop[] = 199 const char kHistogramTotalRequestsParseStop[] =
185 "PageLoad.Experimental.TotalRequests.ParseStop"; 200 "PageLoad.Experimental.TotalRequests.ParseStop";
(...skipping 439 matching lines...) Expand 10 before | Expand all | Expand 10 after
625 ++num_network_resources_; 640 ++num_network_resources_;
626 network_bytes_ += extra_request_info.raw_body_bytes; 641 network_bytes_ += extra_request_info.raw_body_bytes;
627 } 642 }
628 } 643 }
629 644
630 void CorePageLoadMetricsObserver::RecordTimingHistograms( 645 void CorePageLoadMetricsObserver::RecordTimingHistograms(
631 const page_load_metrics::PageLoadTiming& timing, 646 const page_load_metrics::PageLoadTiming& timing,
632 const page_load_metrics::PageLoadExtraInfo& info) { 647 const page_load_metrics::PageLoadExtraInfo& info) {
633 // Log time to first foreground / time to first background. Log counts that we 648 // Log time to first foreground / time to first background. Log counts that we
634 // started a relevant page load in the foreground / background. 649 // started a relevant page load in the foreground / background.
635 if (!info.started_in_foreground) { 650 if (!info.started_in_foreground && info.first_foreground_time) {
636 if (info.first_foreground_time) 651 PAGE_LOAD_HISTOGRAM(internal::kHistogramFirstForeground,
637 PAGE_LOAD_HISTOGRAM(internal::kHistogramFirstForeground, 652 info.first_foreground_time.value());
638 info.first_foreground_time.value());
639 } 653 }
640 654
641 if (timing.first_paint && !timing.first_meaningful_paint) { 655 if (timing.first_paint && !timing.first_meaningful_paint) {
642 RecordFirstMeaningfulPaintStatus( 656 RecordFirstMeaningfulPaintStatus(
643 timing.first_contentful_paint ? 657 timing.first_contentful_paint ?
644 internal::FIRST_MEANINGFUL_PAINT_DID_NOT_REACH_NETWORK_STABLE : 658 internal::FIRST_MEANINGFUL_PAINT_DID_NOT_REACH_NETWORK_STABLE :
645 internal::FIRST_MEANINGFUL_PAINT_DID_NOT_REACH_FIRST_CONTENTFUL_PAINT); 659 internal::FIRST_MEANINGFUL_PAINT_DID_NOT_REACH_FIRST_CONTENTFUL_PAINT);
646 } 660 }
647 661
648 if (timing.first_paint) { 662 if (timing.first_paint) {
(...skipping 12 matching lines...) Expand all
661 } 675 }
662 if (timing.first_meaningful_paint) { 676 if (timing.first_meaningful_paint) {
663 if (first_user_interaction_after_first_paint_.is_null()) { 677 if (first_user_interaction_after_first_paint_.is_null()) {
664 PAGE_LOAD_HISTOGRAM(internal::kHistogramFirstMeaningfulPaintNoUserInput, 678 PAGE_LOAD_HISTOGRAM(internal::kHistogramFirstMeaningfulPaintNoUserInput,
665 timing.first_meaningful_paint.value()); 679 timing.first_meaningful_paint.value());
666 } else { 680 } else {
667 PAGE_LOAD_HISTOGRAM(internal::kHistogramFirstMeaningfulPaintHadUserInput, 681 PAGE_LOAD_HISTOGRAM(internal::kHistogramFirstMeaningfulPaintHadUserInput,
668 timing.first_meaningful_paint.value()); 682 timing.first_meaningful_paint.value());
669 } 683 }
670 } 684 }
685
686 if (!info.started_in_foreground)
687 return;
688
689 if (info.first_background_time) {
690 PAGE_LOAD_HISTOGRAM(internal::kHistogramPageTimingFirstBackground,
691 info.first_background_time.value());
692 if (timing.first_paint &&
693 timing.first_paint <= info.first_background_time) {
694 PAGE_LOAD_HISTOGRAM(
695 internal::kHistogramPageTimingFirstPaintToFirstBackground,
696 info.first_background_time.value() - timing.first_paint.value());
697 }
698 } else if (info.page_end_time) {
699 PAGE_LOAD_HISTOGRAM(internal::kHistogramPageTimingPageEnd,
700 info.page_end_time.value());
701 if (timing.first_paint && timing.first_paint <= info.page_end_time) {
702 PAGE_LOAD_HISTOGRAM(
703 internal::kHistogramPageTimingFirstPaintToPageEnd,
704 info.page_end_time.value() - timing.first_paint.value());
705 }
706 } else {
707 // If we terminate via FlushMetricsOnAppEnterBackground, we may have neither
708 // a first_background_time nor a page_end_time.
709 base::TimeDelta end_time = base::TimeTicks::Now() - navigation_start_;
710 PAGE_LOAD_HISTOGRAM(internal::kHistogramPageTimingPageEndNoEndTime,
711 end_time);
712 if (timing.first_paint && timing.first_paint <= end_time) {
713 PAGE_LOAD_HISTOGRAM(
714 internal::kHistogramPageTimingFirstPaintToPageEndNoEndTime,
715 end_time - timing.first_paint.value());
716 }
717 }
671 } 718 }
672 719
673 void CorePageLoadMetricsObserver::RecordByteAndResourceHistograms( 720 void CorePageLoadMetricsObserver::RecordByteAndResourceHistograms(
674 const page_load_metrics::PageLoadTiming& timing, 721 const page_load_metrics::PageLoadTiming& timing,
675 const page_load_metrics::PageLoadExtraInfo& info) { 722 const page_load_metrics::PageLoadExtraInfo& info) {
676 DCHECK_GE(network_bytes_, 0); 723 DCHECK_GE(network_bytes_, 0);
677 DCHECK_GE(cache_bytes_, 0); 724 DCHECK_GE(cache_bytes_, 0);
678 int64_t total_bytes = network_bytes_ + cache_bytes_; 725 int64_t total_bytes = network_bytes_ + cache_bytes_;
679 726
680 PAGE_BYTES_HISTOGRAM(internal::kHistogramNetworkBytes, network_bytes_); 727 PAGE_BYTES_HISTOGRAM(internal::kHistogramNetworkBytes, network_bytes_);
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
724 std::move(sample)); 771 std::move(sample));
725 } 772 }
726 773
727 // Log the eTLD+1 of sites that did not report first meaningful paint. 774 // Log the eTLD+1 of sites that did not report first meaningful paint.
728 if (timing.first_paint && !timing.first_meaningful_paint) { 775 if (timing.first_paint && !timing.first_meaningful_paint) {
729 rappor::SampleDomainAndRegistryFromGURL( 776 rappor::SampleDomainAndRegistryFromGURL(
730 rappor_service, 777 rappor_service,
731 internal::kRapporMetricsNameFirstMeaningfulPaintNotRecorded, info.url); 778 internal::kRapporMetricsNameFirstMeaningfulPaintNotRecorded, info.url);
732 } 779 }
733 } 780 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698