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/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 Loading... |
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.PageTiming.NavigationToPageEnd"; |
| 162 const char kHistogramPageTimingFirstPaintToPageEnd[] = |
| 163 "PageLoad.PageTiming.FirstPaintToPageEnd"; |
| 164 |
| 165 const char kHistogramPageTimingFirstBackground[] = |
| 166 "PageLoad.PageTiming.NavigationToFirstBackground"; |
| 167 const char kHistogramPageTimingFirstPaintToFirstBackground[] = |
| 168 "PageLoad.PageTiming.FirstPaintToFirstBackground"; |
| 169 |
160 const char kHistogramLoadTypeParseStartReload[] = | 170 const char kHistogramLoadTypeParseStartReload[] = |
161 "PageLoad.ParseTiming.NavigationToParseStart.LoadType.Reload"; | 171 "PageLoad.ParseTiming.NavigationToParseStart.LoadType.Reload"; |
162 const char kHistogramLoadTypeParseStartForwardBack[] = | 172 const char kHistogramLoadTypeParseStartForwardBack[] = |
163 "PageLoad.ParseTiming.NavigationToParseStart.LoadType." | 173 "PageLoad.ParseTiming.NavigationToParseStart.LoadType." |
164 "ForwardBackNavigation"; | 174 "ForwardBackNavigation"; |
165 const char kHistogramLoadTypeParseStartForwardBackNoStore[] = | 175 const char kHistogramLoadTypeParseStartForwardBackNoStore[] = |
166 "PageLoad.ParseTiming.NavigationToParseStart.LoadType." | 176 "PageLoad.ParseTiming.NavigationToParseStart.LoadType." |
167 "ForwardBackNavigation.NoStore"; | 177 "ForwardBackNavigation.NoStore"; |
168 const char kHistogramLoadTypeParseStartNewNavigation[] = | 178 const char kHistogramLoadTypeParseStartNewNavigation[] = |
169 "PageLoad.ParseTiming.NavigationToParseStart.LoadType.NewNavigation"; | 179 "PageLoad.ParseTiming.NavigationToParseStart.LoadType.NewNavigation"; |
170 | 180 |
171 const char kHistogramFirstForeground[] = | 181 const char kHistogramFirstForeground[] = |
172 "PageLoad.Timing2.NavigationToFirstForeground"; | 182 "PageLoad.PageTiming.NavigationToFirstForeground"; |
173 | 183 |
174 const char kHistogramFailedProvisionalLoad[] = | 184 const char kHistogramFailedProvisionalLoad[] = |
175 "PageLoad.Timing2.NavigationToFailedProvisionalLoad"; | 185 "PageLoad.PageTiming.NavigationToFailedProvisionalLoad"; |
176 | 186 |
177 const char kHistogramForegroundToFirstPaint[] = | 187 const char kHistogramForegroundToFirstPaint[] = |
178 "PageLoad.PaintTiming.ForegroundToFirstPaint"; | 188 "PageLoad.PaintTiming.ForegroundToFirstPaint"; |
179 | 189 |
180 const char kHistogramCacheRequestPercentParseStop[] = | 190 const char kHistogramCacheRequestPercentParseStop[] = |
181 "PageLoad.Experimental.Cache.RequestPercent.ParseStop"; | 191 "PageLoad.Experimental.Cache.RequestPercent.ParseStop"; |
182 const char kHistogramCacheTotalRequestsParseStop[] = | 192 const char kHistogramCacheTotalRequestsParseStop[] = |
183 "PageLoad.Experimental.Cache.TotalRequests.ParseStop"; | 193 "PageLoad.Experimental.Cache.TotalRequests.ParseStop"; |
184 const char kHistogramTotalRequestsParseStop[] = | 194 const char kHistogramTotalRequestsParseStop[] = |
185 "PageLoad.Experimental.TotalRequests.ParseStop"; | 195 "PageLoad.Experimental.TotalRequests.ParseStop"; |
(...skipping 439 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
625 ++num_network_resources_; | 635 ++num_network_resources_; |
626 network_bytes_ += extra_request_info.raw_body_bytes; | 636 network_bytes_ += extra_request_info.raw_body_bytes; |
627 } | 637 } |
628 } | 638 } |
629 | 639 |
630 void CorePageLoadMetricsObserver::RecordTimingHistograms( | 640 void CorePageLoadMetricsObserver::RecordTimingHistograms( |
631 const page_load_metrics::PageLoadTiming& timing, | 641 const page_load_metrics::PageLoadTiming& timing, |
632 const page_load_metrics::PageLoadExtraInfo& info) { | 642 const page_load_metrics::PageLoadExtraInfo& info) { |
633 // Log time to first foreground / time to first background. Log counts that we | 643 // Log time to first foreground / time to first background. Log counts that we |
634 // started a relevant page load in the foreground / background. | 644 // started a relevant page load in the foreground / background. |
635 if (!info.started_in_foreground) { | 645 if (!info.started_in_foreground && info.first_foreground_time) { |
636 if (info.first_foreground_time) | 646 PAGE_LOAD_HISTOGRAM(internal::kHistogramFirstForeground, |
637 PAGE_LOAD_HISTOGRAM(internal::kHistogramFirstForeground, | 647 info.first_foreground_time.value()); |
638 info.first_foreground_time.value()); | |
639 } | 648 } |
640 | 649 |
641 if (timing.first_paint && !timing.first_meaningful_paint) { | 650 if (timing.first_paint && !timing.first_meaningful_paint) { |
642 RecordFirstMeaningfulPaintStatus( | 651 RecordFirstMeaningfulPaintStatus( |
643 timing.first_contentful_paint ? | 652 timing.first_contentful_paint ? |
644 internal::FIRST_MEANINGFUL_PAINT_DID_NOT_REACH_NETWORK_STABLE : | 653 internal::FIRST_MEANINGFUL_PAINT_DID_NOT_REACH_NETWORK_STABLE : |
645 internal::FIRST_MEANINGFUL_PAINT_DID_NOT_REACH_FIRST_CONTENTFUL_PAINT); | 654 internal::FIRST_MEANINGFUL_PAINT_DID_NOT_REACH_FIRST_CONTENTFUL_PAINT); |
646 } | 655 } |
647 | 656 |
648 if (timing.first_paint) { | 657 if (timing.first_paint) { |
(...skipping 12 matching lines...) Expand all Loading... |
661 } | 670 } |
662 if (timing.first_meaningful_paint) { | 671 if (timing.first_meaningful_paint) { |
663 if (first_user_interaction_after_first_paint_.is_null()) { | 672 if (first_user_interaction_after_first_paint_.is_null()) { |
664 PAGE_LOAD_HISTOGRAM(internal::kHistogramFirstMeaningfulPaintNoUserInput, | 673 PAGE_LOAD_HISTOGRAM(internal::kHistogramFirstMeaningfulPaintNoUserInput, |
665 timing.first_meaningful_paint.value()); | 674 timing.first_meaningful_paint.value()); |
666 } else { | 675 } else { |
667 PAGE_LOAD_HISTOGRAM(internal::kHistogramFirstMeaningfulPaintHadUserInput, | 676 PAGE_LOAD_HISTOGRAM(internal::kHistogramFirstMeaningfulPaintHadUserInput, |
668 timing.first_meaningful_paint.value()); | 677 timing.first_meaningful_paint.value()); |
669 } | 678 } |
670 } | 679 } |
| 680 |
| 681 if (!info.started_in_foreground) |
| 682 return; |
| 683 |
| 684 if (info.first_background_time) { |
| 685 PAGE_LOAD_HISTOGRAM(internal::kHistogramPageTimingFirstBackground, |
| 686 info.first_background_time.value()); |
| 687 if (timing.first_paint && |
| 688 timing.first_paint <= info.first_background_time) { |
| 689 PAGE_LOAD_HISTOGRAM( |
| 690 internal::kHistogramPageTimingFirstPaintToFirstBackground, |
| 691 info.first_background_time.value() - timing.first_paint.value()); |
| 692 } |
| 693 } else if (info.page_end_time) { |
| 694 PAGE_LOAD_HISTOGRAM(internal::kHistogramPageTimingPageEnd, |
| 695 info.page_end_time.value()); |
| 696 if (timing.first_paint && timing.first_paint <= info.page_end_time) { |
| 697 PAGE_LOAD_HISTOGRAM( |
| 698 internal::kHistogramPageTimingFirstPaintToPageEnd, |
| 699 info.page_end_time.value() - timing.first_paint.value()); |
| 700 } |
| 701 } |
671 } | 702 } |
672 | 703 |
673 void CorePageLoadMetricsObserver::RecordByteAndResourceHistograms( | 704 void CorePageLoadMetricsObserver::RecordByteAndResourceHistograms( |
674 const page_load_metrics::PageLoadTiming& timing, | 705 const page_load_metrics::PageLoadTiming& timing, |
675 const page_load_metrics::PageLoadExtraInfo& info) { | 706 const page_load_metrics::PageLoadExtraInfo& info) { |
676 DCHECK_GE(network_bytes_, 0); | 707 DCHECK_GE(network_bytes_, 0); |
677 DCHECK_GE(cache_bytes_, 0); | 708 DCHECK_GE(cache_bytes_, 0); |
678 int64_t total_bytes = network_bytes_ + cache_bytes_; | 709 int64_t total_bytes = network_bytes_ + cache_bytes_; |
679 | 710 |
680 PAGE_BYTES_HISTOGRAM(internal::kHistogramNetworkBytes, network_bytes_); | 711 PAGE_BYTES_HISTOGRAM(internal::kHistogramNetworkBytes, network_bytes_); |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
724 std::move(sample)); | 755 std::move(sample)); |
725 } | 756 } |
726 | 757 |
727 // Log the eTLD+1 of sites that did not report first meaningful paint. | 758 // Log the eTLD+1 of sites that did not report first meaningful paint. |
728 if (timing.first_paint && !timing.first_meaningful_paint) { | 759 if (timing.first_paint && !timing.first_meaningful_paint) { |
729 rappor::SampleDomainAndRegistryFromGURL( | 760 rappor::SampleDomainAndRegistryFromGURL( |
730 rappor_service, | 761 rappor_service, |
731 internal::kRapporMetricsNameFirstMeaningfulPaintNotRecorded, info.url); | 762 internal::kRapporMetricsNameFirstMeaningfulPaintNotRecorded, info.url); |
732 } | 763 } |
733 } | 764 } |
OLD | NEW |