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

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

Issue 2132603002: [page_load_metrics] Add a NavigationThrottle for richer abort metrics (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: nasko@ nits 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
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.h" 8 #include "base/metrics/histogram.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 20 matching lines...) Expand all
31 "PageLoad.Clients.FromGoogleSearch.PaintTiming." 31 "PageLoad.Clients.FromGoogleSearch.PaintTiming."
32 "NavigationToFirstContentfulPaint"; 32 "NavigationToFirstContentfulPaint";
33 const char kHistogramFromGWSParseStartToFirstContentfulPaint[] = 33 const char kHistogramFromGWSParseStartToFirstContentfulPaint[] =
34 "PageLoad.Clients.FromGoogleSearch.PaintTiming." 34 "PageLoad.Clients.FromGoogleSearch.PaintTiming."
35 "ParseStartToFirstContentfulPaint"; 35 "ParseStartToFirstContentfulPaint";
36 const char kHistogramFromGWSParseDuration[] = 36 const char kHistogramFromGWSParseDuration[] =
37 "PageLoad.Clients.FromGoogleSearch.ParseTiming.ParseDuration"; 37 "PageLoad.Clients.FromGoogleSearch.ParseTiming.ParseDuration";
38 const char kHistogramFromGWSParseStart[] = 38 const char kHistogramFromGWSParseStart[] =
39 "PageLoad.Clients.FromGoogleSearch.ParseTiming.NavigationToParseStart"; 39 "PageLoad.Clients.FromGoogleSearch.ParseTiming.NavigationToParseStart";
40 40
41 const char kHistogramFromGWSAbortUnknownNavigationBeforeCommit[] = 41 const char kHistogramFromGWSAbortNewNavigationBeforeCommit[] =
42 "PageLoad.Clients.FromGoogleSearch.AbortTiming.UnknownNavigation." 42 "PageLoad.Clients.FromGoogleSearch.AbortTiming.NewNavigation.BeforeCommit";
43 "BeforeCommit";
44 const char kHistogramFromGWSAbortNewNavigationBeforePaint[] = 43 const char kHistogramFromGWSAbortNewNavigationBeforePaint[] =
45 "PageLoad.Clients.FromGoogleSearch.AbortTiming.NewNavigation.AfterCommit." 44 "PageLoad.Clients.FromGoogleSearch.AbortTiming.NewNavigation.AfterCommit."
46 "BeforePaint"; 45 "BeforePaint";
47 const char kHistogramFromGWSAbortNewNavigationBeforeInteraction[] = 46 const char kHistogramFromGWSAbortNewNavigationBeforeInteraction[] =
48 "PageLoad.Clients.FromGoogleSearch.AbortTiming.NewNavigation.AfterPaint." 47 "PageLoad.Clients.FromGoogleSearch.AbortTiming.NewNavigation.AfterPaint."
49 "BeforeInteraction"; 48 "BeforeInteraction";
50 const char kHistogramFromGWSAbortStopBeforeCommit[] = 49 const char kHistogramFromGWSAbortStopBeforeCommit[] =
51 "PageLoad.Clients.FromGoogleSearch.AbortTiming.Stop.BeforeCommit"; 50 "PageLoad.Clients.FromGoogleSearch.AbortTiming.Stop.BeforeCommit";
52 const char kHistogramFromGWSAbortStopBeforePaint[] = 51 const char kHistogramFromGWSAbortStopBeforePaint[] =
53 "PageLoad.Clients.FromGoogleSearch.AbortTiming.Stop.AfterCommit." 52 "PageLoad.Clients.FromGoogleSearch.AbortTiming.Stop.AfterCommit."
54 "BeforePaint"; 53 "BeforePaint";
55 const char kHistogramFromGWSAbortStopBeforeInteraction[] = 54 const char kHistogramFromGWSAbortStopBeforeInteraction[] =
56 "PageLoad.Clients.FromGoogleSearch.AbortTiming.Stop.AfterPaint." 55 "PageLoad.Clients.FromGoogleSearch.AbortTiming.Stop.AfterPaint."
57 "BeforeInteraction"; 56 "BeforeInteraction";
58 const char kHistogramFromGWSAbortCloseBeforeCommit[] = 57 const char kHistogramFromGWSAbortCloseBeforeCommit[] =
59 "PageLoad.Clients.FromGoogleSearch.AbortTiming.Close.BeforeCommit"; 58 "PageLoad.Clients.FromGoogleSearch.AbortTiming.Close.BeforeCommit";
60 const char kHistogramFromGWSAbortCloseBeforePaint[] = 59 const char kHistogramFromGWSAbortCloseBeforePaint[] =
61 "PageLoad.Clients.FromGoogleSearch.AbortTiming.Close.AfterCommit." 60 "PageLoad.Clients.FromGoogleSearch.AbortTiming.Close.AfterCommit."
62 "BeforePaint"; 61 "BeforePaint";
63 const char kHistogramFromGWSAbortCloseBeforeInteraction[] = 62 const char kHistogramFromGWSAbortCloseBeforeInteraction[] =
64 "PageLoad.Clients.FromGoogleSearch.AbortTiming.Close.AfterPaint." 63 "PageLoad.Clients.FromGoogleSearch.AbortTiming.Close.AfterPaint."
65 "BeforeInteraction"; 64 "BeforeInteraction";
66 const char kHistogramFromGWSAbortOtherBeforeCommit[] = 65 const char kHistogramFromGWSAbortOtherBeforeCommit[] =
67 "PageLoad.Clients.FromGoogleSearch.AbortTiming.Other.BeforeCommit"; 66 "PageLoad.Clients.FromGoogleSearch.AbortTiming.Other.BeforeCommit";
67 const char kHistogramFromGWSAbortReloadBeforeCommit[] =
68 "PageLoad.Clients.FromGoogleSearch.AbortTiming.Reload.BeforeCommit";
68 const char kHistogramFromGWSAbortReloadBeforePaint[] = 69 const char kHistogramFromGWSAbortReloadBeforePaint[] =
69 "PageLoad.Clients.FromGoogleSearch.AbortTiming.Reload.AfterCommit." 70 "PageLoad.Clients.FromGoogleSearch.AbortTiming.Reload.AfterCommit."
70 "BeforePaint"; 71 "BeforePaint";
71 const char kHistogramFromGWSAbortReloadBeforeInteraction[] = 72 const char kHistogramFromGWSAbortReloadBeforeInteraction[] =
72 "PageLoad.Clients.FromGoogleSearch.AbortTiming.Reload.AfterPaint." 73 "PageLoad.Clients.FromGoogleSearch.AbortTiming.Reload.AfterPaint."
73 "Before1sDelayedInteraction"; 74 "Before1sDelayedInteraction";
75 const char kHistogramFromGWSAbortForwardBackBeforeCommit[] =
76 "PageLoad.Clients.FromGoogleSearch.AbortTiming.ForwardBackNavigation."
77 "BeforeCommit";
74 const char kHistogramFromGWSAbortForwardBackBeforePaint[] = 78 const char kHistogramFromGWSAbortForwardBackBeforePaint[] =
75 "PageLoad.Clients.FromGoogleSearch.AbortTiming.ForwardBackNavigation." 79 "PageLoad.Clients.FromGoogleSearch.AbortTiming.ForwardBackNavigation."
76 "AfterCommit.BeforePaint"; 80 "AfterCommit.BeforePaint";
77 const char kHistogramFromGWSAbortForwardBackBeforeInteraction[] = 81 const char kHistogramFromGWSAbortForwardBackBeforeInteraction[] =
78 "PageLoad.Clients.FromGoogleSearch.AbortTiming.ForwardBackNavigation." 82 "PageLoad.Clients.FromGoogleSearch.AbortTiming.ForwardBackNavigation."
79 "AfterPaint.Before1sDelayedInteraction"; 83 "AfterPaint.Before1sDelayedInteraction";
80 84
81 } // namespace internal 85 } // namespace internal
82 86
83 namespace { 87 namespace {
(...skipping 19 matching lines...) Expand all
103 time_to_abort); 107 time_to_abort);
104 break; 108 break;
105 case UserAbortType::ABORT_FORWARD_BACK: 109 case UserAbortType::ABORT_FORWARD_BACK:
106 PAGE_LOAD_HISTOGRAM( 110 PAGE_LOAD_HISTOGRAM(
107 internal::kHistogramFromGWSAbortForwardBackBeforePaint, 111 internal::kHistogramFromGWSAbortForwardBackBeforePaint,
108 time_to_abort); 112 time_to_abort);
109 break; 113 break;
110 default: 114 default:
111 // These should only be logged for provisional aborts. 115 // These should only be logged for provisional aborts.
112 DCHECK_NE(abort_type, UserAbortType::ABORT_OTHER); 116 DCHECK_NE(abort_type, UserAbortType::ABORT_OTHER);
113 DCHECK_NE(abort_type, UserAbortType::ABORT_UNKNOWN_NAVIGATION);
114 break; 117 break;
115 } 118 }
116 } 119 }
117 120
118 void LogAbortsAfterPaintBeforeInteraction(UserAbortType abort_type, 121 void LogAbortsAfterPaintBeforeInteraction(UserAbortType abort_type,
119 base::TimeDelta time_to_abort) { 122 base::TimeDelta time_to_abort) {
120 switch (abort_type) { 123 switch (abort_type) {
121 case UserAbortType::ABORT_STOP: 124 case UserAbortType::ABORT_STOP:
122 PAGE_LOAD_HISTOGRAM(internal::kHistogramFromGWSAbortStopBeforeInteraction, 125 PAGE_LOAD_HISTOGRAM(internal::kHistogramFromGWSAbortStopBeforeInteraction,
123 time_to_abort); 126 time_to_abort);
(...skipping 14 matching lines...) Expand all
138 time_to_abort); 141 time_to_abort);
139 break; 142 break;
140 case UserAbortType::ABORT_FORWARD_BACK: 143 case UserAbortType::ABORT_FORWARD_BACK:
141 PAGE_LOAD_HISTOGRAM( 144 PAGE_LOAD_HISTOGRAM(
142 internal::kHistogramFromGWSAbortForwardBackBeforeInteraction, 145 internal::kHistogramFromGWSAbortForwardBackBeforeInteraction,
143 time_to_abort); 146 time_to_abort);
144 break; 147 break;
145 default: 148 default:
146 // These should only be logged for provisional aborts. 149 // These should only be logged for provisional aborts.
147 DCHECK_NE(abort_type, UserAbortType::ABORT_OTHER); 150 DCHECK_NE(abort_type, UserAbortType::ABORT_OTHER);
148 DCHECK_NE(abort_type, UserAbortType::ABORT_UNKNOWN_NAVIGATION);
149 break; 151 break;
150 } 152 }
151 } 153 }
152 154
153 void LogProvisionalAborts(UserAbortType abort_type, 155 void LogProvisionalAborts(UserAbortType abort_type,
154 base::TimeDelta time_to_abort) { 156 base::TimeDelta time_to_abort) {
155 switch (abort_type) { 157 switch (abort_type) {
156 case UserAbortType::ABORT_STOP: 158 case UserAbortType::ABORT_STOP:
157 PAGE_LOAD_HISTOGRAM(internal::kHistogramFromGWSAbortStopBeforeCommit, 159 PAGE_LOAD_HISTOGRAM(internal::kHistogramFromGWSAbortStopBeforeCommit,
158 time_to_abort); 160 time_to_abort);
159 break; 161 break;
160 case UserAbortType::ABORT_CLOSE: 162 case UserAbortType::ABORT_CLOSE:
161 PAGE_LOAD_HISTOGRAM(internal::kHistogramFromGWSAbortCloseBeforeCommit, 163 PAGE_LOAD_HISTOGRAM(internal::kHistogramFromGWSAbortCloseBeforeCommit,
162 time_to_abort); 164 time_to_abort);
163 break; 165 break;
164 case UserAbortType::ABORT_UNKNOWN_NAVIGATION:
165 PAGE_LOAD_HISTOGRAM(
166 internal::kHistogramFromGWSAbortUnknownNavigationBeforeCommit,
167 time_to_abort);
168 break;
169 case UserAbortType::ABORT_OTHER: 166 case UserAbortType::ABORT_OTHER:
170 PAGE_LOAD_HISTOGRAM(internal::kHistogramFromGWSAbortOtherBeforeCommit, 167 PAGE_LOAD_HISTOGRAM(internal::kHistogramFromGWSAbortOtherBeforeCommit,
171 time_to_abort); 168 time_to_abort);
172 break; 169 break;
170 case UserAbortType::ABORT_NEW_NAVIGATION:
171 PAGE_LOAD_HISTOGRAM(
172 internal::kHistogramFromGWSAbortNewNavigationBeforeCommit,
173 time_to_abort);
174 break;
175 case UserAbortType::ABORT_RELOAD:
176 PAGE_LOAD_HISTOGRAM(internal::kHistogramFromGWSAbortReloadBeforeCommit,
177 time_to_abort);
178 break;
179 case UserAbortType::ABORT_FORWARD_BACK:
180 PAGE_LOAD_HISTOGRAM(
181 internal::kHistogramFromGWSAbortForwardBackBeforeCommit,
182 time_to_abort);
183 break;
173 default: 184 default:
174 // There are other abort types that could be logged, but they occur in 185 NOTREACHED();
175 // very small amounts that it isn't worth logging.
176 // TODO(csharrison): Once transitions can be acquired before commit, log
177 // the Reload/NewNavigation/ForwardBack variants here.
178 break; 186 break;
179 } 187 }
180 } 188 }
181 189
182 bool WasAbortedInForeground( 190 bool WasAbortedInForeground(
183 UserAbortType abort_type, 191 UserAbortType abort_type,
184 const base::Optional<base::TimeDelta>& time_to_abort, 192 const base::Optional<base::TimeDelta>& time_to_abort,
185 const page_load_metrics::PageLoadExtraInfo& info) { 193 const page_load_metrics::PageLoadExtraInfo& info) {
186 if (!time_to_abort) 194 if (!time_to_abort)
187 return false; 195 return false;
(...skipping 479 matching lines...) Expand 10 before | Expand all | Expand 10 after
667 } 675 }
668 676
669 void FromGWSPageLoadMetricsLogger::OnUserInput( 677 void FromGWSPageLoadMetricsLogger::OnUserInput(
670 const blink::WebInputEvent& event) { 678 const blink::WebInputEvent& event) {
671 if (first_paint_triggered_ && !first_user_interaction_after_paint_) { 679 if (first_paint_triggered_ && !first_user_interaction_after_paint_) {
672 DCHECK(!navigation_start_.is_null()); 680 DCHECK(!navigation_start_.is_null());
673 first_user_interaction_after_paint_ = 681 first_user_interaction_after_paint_ =
674 base::TimeTicks::Now() - navigation_start_; 682 base::TimeTicks::Now() - navigation_start_;
675 } 683 }
676 } 684 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698