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

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

Issue 2245213002: Add PageLoad.* metrics for Offline Previews (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: typo Created 4 years, 4 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
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "chrome/browser/page_load_metrics/observers/previews_page_load_metrics_ observer.h"
6
7 #include <string>
8
9 #include "base/optional.h"
10 #include "base/time/time.h"
11 #include "chrome/browser/page_load_metrics/page_load_metrics_util.h"
12 #include "chrome/common/features.h"
13 #include "chrome/common/page_load_metrics/page_load_timing.h"
14 #include "content/public/browser/navigation_handle.h"
15 #include "content/public/browser/web_contents.h"
16
17 #if BUILDFLAG(ANDROID_JAVA_UI)
18 #include "chrome/browser/android/offline_pages/offline_page_tab_helper.h"
19 #endif // BUILDFLAG(ANDROID_JAVA_UI)
20
21 namespace previews {
22
23 namespace internal {
24
25 const char kHistogramOfflinePreviewsPrefix[] =
Charlie Harrison 2016/08/19 20:00:22 Performing string appends at runtime for these met
RyanSturm 2016/08/19 20:21:27 Done. In the future, we'll add other previews, so
26 "PageLoad.Clients.Previews.OfflinePages.";
27 const char kHistogramDOMContentLoadedEventFiredSuffix[] =
28 "DocumentTiming.NavigationToDOMContentLoadedEventFired";
29 const char kHistogramFirstLayoutSuffix[] =
30 "DocumentTiming.NavigationToFirstLayout";
31 const char kHistogramLoadEventFiredSuffix[] =
32 "DocumentTiming.NavigationToLoadEventFired";
33 const char kHistogramFirstContentfulPaintSuffix[] =
34 "PaintTiming.NavigationToFirstContentfulPaint";
35 const char kHistogramFirstImagePaintSuffix[] =
36 "PaintTiming.NavigationToFirstImagePaint";
37 const char kHistogramFirstPaintSuffix[] = "PaintTiming.NavigationToFirstPaint";
38 const char kHistogramFirstTextPaintSuffix[] =
39 "PaintTiming.NavigationToFirstTextPaint";
40 const char kHistogramParseStartSuffix[] = "ParseTiming.NavigationToParseStart";
41
42 } // namespace internal
43
44 PreviewsPageLoadMetricsObserver::PreviewsPageLoadMetricsObserver()
45 : is_offline_preview_(false) {}
46
47 PreviewsPageLoadMetricsObserver::~PreviewsPageLoadMetricsObserver() {}
48
49 void PreviewsPageLoadMetricsObserver::OnCommit(
50 content::NavigationHandle* navigation_handle) {
51 is_offline_preview_ = IsOfflinePreview(navigation_handle->GetWebContents());
52 }
53
54 void PreviewsPageLoadMetricsObserver::OnDomContentLoadedEventStart(
55 const page_load_metrics::PageLoadTiming& timing,
56 const page_load_metrics::PageLoadExtraInfo& info) {
57 if (!is_offline_preview_ ||
58 !WasStartedInForegroundOptionalEventInForeground(
59 timing.dom_content_loaded_event_start, info)) {
60 return;
61 }
62 PAGE_LOAD_HISTOGRAM(
63 std::string(internal::kHistogramOfflinePreviewsPrefix)
64 .append(internal::kHistogramDOMContentLoadedEventFiredSuffix),
65 timing.dom_content_loaded_event_start.value());
66 }
67
68 void PreviewsPageLoadMetricsObserver::OnLoadEventStart(
69 const page_load_metrics::PageLoadTiming& timing,
70 const page_load_metrics::PageLoadExtraInfo& info) {
71 if (!is_offline_preview_ ||
72 !WasStartedInForegroundOptionalEventInForeground(
73 timing.dom_content_loaded_event_start, info)) {
74 return;
75 }
76 PAGE_LOAD_HISTOGRAM(std::string(internal::kHistogramOfflinePreviewsPrefix)
77 .append(internal::kHistogramLoadEventFiredSuffix),
78 timing.load_event_start.value());
79 }
80
81 void PreviewsPageLoadMetricsObserver::OnFirstLayout(
82 const page_load_metrics::PageLoadTiming& timing,
83 const page_load_metrics::PageLoadExtraInfo& info) {
84 if (!is_offline_preview_ ||
85 !WasStartedInForegroundOptionalEventInForeground(
86 timing.dom_content_loaded_event_start, info)) {
87 return;
88 }
89 PAGE_LOAD_HISTOGRAM(std::string(internal::kHistogramOfflinePreviewsPrefix)
90 .append(internal::kHistogramFirstLayoutSuffix),
91 timing.first_layout.value());
92 }
93
94 void PreviewsPageLoadMetricsObserver::OnFirstPaint(
95 const page_load_metrics::PageLoadTiming& timing,
96 const page_load_metrics::PageLoadExtraInfo& info) {
97 if (!is_offline_preview_ ||
98 !WasStartedInForegroundOptionalEventInForeground(
99 timing.dom_content_loaded_event_start, info)) {
100 return;
101 }
102 PAGE_LOAD_HISTOGRAM(std::string(internal::kHistogramOfflinePreviewsPrefix)
103 .append(internal::kHistogramFirstPaintSuffix),
104 timing.first_paint.value());
105 }
106
107 void PreviewsPageLoadMetricsObserver::OnFirstTextPaint(
108 const page_load_metrics::PageLoadTiming& timing,
109 const page_load_metrics::PageLoadExtraInfo& info) {
110 if (!is_offline_preview_ ||
111 !WasStartedInForegroundOptionalEventInForeground(
112 timing.dom_content_loaded_event_start, info)) {
113 return;
114 }
115 PAGE_LOAD_HISTOGRAM(std::string(internal::kHistogramOfflinePreviewsPrefix)
116 .append(internal::kHistogramFirstTextPaintSuffix),
117 timing.first_text_paint.value());
118 }
119
120 void PreviewsPageLoadMetricsObserver::OnFirstImagePaint(
121 const page_load_metrics::PageLoadTiming& timing,
122 const page_load_metrics::PageLoadExtraInfo& info) {
123 if (!is_offline_preview_ ||
124 !WasStartedInForegroundOptionalEventInForeground(
125 timing.dom_content_loaded_event_start, info)) {
126 return;
127 }
128 PAGE_LOAD_HISTOGRAM(std::string(internal::kHistogramOfflinePreviewsPrefix)
129 .append(internal::kHistogramFirstImagePaintSuffix),
130 timing.first_image_paint.value());
131 }
132
133 void PreviewsPageLoadMetricsObserver::OnFirstContentfulPaint(
134 const page_load_metrics::PageLoadTiming& timing,
135 const page_load_metrics::PageLoadExtraInfo& info) {
136 if (!is_offline_preview_ ||
137 !WasStartedInForegroundOptionalEventInForeground(
138 timing.dom_content_loaded_event_start, info)) {
139 return;
140 }
141 PAGE_LOAD_HISTOGRAM(
142 std::string(internal::kHistogramOfflinePreviewsPrefix)
143 .append(internal::kHistogramFirstContentfulPaintSuffix),
144 timing.first_contentful_paint.value());
145 }
146
147 void PreviewsPageLoadMetricsObserver::OnParseStart(
148 const page_load_metrics::PageLoadTiming& timing,
149 const page_load_metrics::PageLoadExtraInfo& info) {
150 if (!is_offline_preview_ ||
151 !WasStartedInForegroundOptionalEventInForeground(
152 timing.dom_content_loaded_event_start, info)) {
153 return;
154 }
155 PAGE_LOAD_HISTOGRAM(std::string(internal::kHistogramOfflinePreviewsPrefix)
156 .append(internal::kHistogramParseStartSuffix),
157 timing.parse_start.value());
158 }
159
160 bool PreviewsPageLoadMetricsObserver::IsOfflinePreview(
161 content::WebContents* web_contents) const {
162 #if BUILDFLAG(ANDROID_JAVA_UI)
163 offline_pages::OfflinePageTabHelper* tab_helper =
164 offline_pages::OfflinePageTabHelper::FromWebContents(web_contents);
165 return tab_helper && tab_helper->is_offline_preview();
166 #else
167 return false;
168 #endif // BUILDFLAG(ANDROID_JAVA_UI)
169 }
170
171 } // namespace previews
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698