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

Side by Side Diff: chrome/browser/metrics/first_web_contents_profiler.cc

Issue 1450913003: Remove v1 of Startup.FirstWebContents.* stats deprecated in M48. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@e2_better_ownership_model_firstwebcontentsprofiler
Patch Set: Created 5 years, 1 month 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
« no previous file with comments | « no previous file | components/startup_metric_utils/browser/startup_metric_utils.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 #if !defined(OS_ANDROID) 5 #if !defined(OS_ANDROID)
6 6
7 #include "chrome/browser/metrics/first_web_contents_profiler.h" 7 #include "chrome/browser/metrics/first_web_contents_profiler.h"
8 8
9 #include <string> 9 #include <string>
10 10
(...skipping 23 matching lines...) Expand all
34 } 34 }
35 } 35 }
36 } 36 }
37 37
38 FirstWebContentsProfiler::FirstWebContentsProfiler( 38 FirstWebContentsProfiler::FirstWebContentsProfiler(
39 content::WebContents* web_contents) 39 content::WebContents* web_contents)
40 : content::WebContentsObserver(web_contents), 40 : content::WebContentsObserver(web_contents),
41 collected_paint_metric_(false), 41 collected_paint_metric_(false),
42 collected_load_metric_(false), 42 collected_load_metric_(false),
43 collected_main_navigation_start_metric_(false), 43 collected_main_navigation_start_metric_(false),
44 collected_main_navigation_finished_metric_(false), 44 collected_main_navigation_finished_metric_(false) {}
45 finished_(false) {}
46 45
47 void FirstWebContentsProfiler::DidFirstVisuallyNonEmptyPaint() { 46 void FirstWebContentsProfiler::DidFirstVisuallyNonEmptyPaint() {
48 if (collected_paint_metric_) 47 if (collected_paint_metric_)
49 return; 48 return;
50 if (startup_metric_utils::WasNonBrowserUIDisplayed()) { 49 if (startup_metric_utils::WasNonBrowserUIDisplayed()) {
51 FinishedCollectingMetrics(FinishReason::ABANDON_BLOCKING_UI); 50 FinishedCollectingMetrics(FinishReason::ABANDON_BLOCKING_UI);
52 return; 51 return;
53 } 52 }
54 53
55 collected_paint_metric_ = true; 54 collected_paint_metric_ = true;
56 const base::TimeTicks now = base::TimeTicks::Now(); 55 startup_metric_utils::RecordFirstWebContentsNonEmptyPaint(
57 // Record the old metric unconditionally. 56 base::TimeTicks::Now());
58 startup_metric_utils::RecordDeprecatedFirstWebContentsNonEmptyPaint(now);
59 if (!finished_)
60 startup_metric_utils::RecordFirstWebContentsNonEmptyPaint(now);
61 57
62 metrics::TrackingSynchronizer::OnProfilingPhaseCompleted( 58 metrics::TrackingSynchronizer::OnProfilingPhaseCompleted(
63 metrics::ProfilerEventProto::EVENT_FIRST_NONEMPTY_PAINT); 59 metrics::ProfilerEventProto::EVENT_FIRST_NONEMPTY_PAINT);
64 60
65 if (IsFinishedCollectingMetrics()) 61 if (IsFinishedCollectingMetrics())
66 FinishedCollectingMetrics(FinishReason::DONE); 62 FinishedCollectingMetrics(FinishReason::DONE);
67 } 63 }
68 64
69 void FirstWebContentsProfiler::DocumentOnLoadCompletedInMainFrame() { 65 void FirstWebContentsProfiler::DocumentOnLoadCompletedInMainFrame() {
70 if (collected_load_metric_) 66 if (collected_load_metric_)
71 return; 67 return;
72 if (startup_metric_utils::WasNonBrowserUIDisplayed()) { 68 if (startup_metric_utils::WasNonBrowserUIDisplayed()) {
73 FinishedCollectingMetrics(FinishReason::ABANDON_BLOCKING_UI); 69 FinishedCollectingMetrics(FinishReason::ABANDON_BLOCKING_UI);
74 return; 70 return;
75 } 71 }
76 72
77 collected_load_metric_ = true; 73 collected_load_metric_ = true;
78 const base::TimeTicks now = base::TimeTicks::Now(); 74 startup_metric_utils::RecordFirstWebContentsMainFrameLoad(
79 // Record the old metric unconditionally. 75 base::TimeTicks::Now());
80 startup_metric_utils::RecordDeprecatedFirstWebContentsMainFrameLoad(now);
81 if (!finished_)
82 startup_metric_utils::RecordFirstWebContentsMainFrameLoad(now);
83 76
84 if (IsFinishedCollectingMetrics()) 77 if (IsFinishedCollectingMetrics())
85 FinishedCollectingMetrics(FinishReason::DONE); 78 FinishedCollectingMetrics(FinishReason::DONE);
86 } 79 }
87 80
88 void FirstWebContentsProfiler::DidStartNavigation( 81 void FirstWebContentsProfiler::DidStartNavigation(
89 content::NavigationHandle* navigation_handle) { 82 content::NavigationHandle* navigation_handle) {
90 if (collected_main_navigation_start_metric_) 83 if (collected_main_navigation_start_metric_)
91 return; 84 return;
92 if (startup_metric_utils::WasNonBrowserUIDisplayed()) { 85 if (startup_metric_utils::WasNonBrowserUIDisplayed()) {
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 void FirstWebContentsProfiler::WebContentsDestroyed() { 140 void FirstWebContentsProfiler::WebContentsDestroyed() {
148 FinishedCollectingMetrics(FinishReason::ABANDON_CONTENT_DESTROYED); 141 FinishedCollectingMetrics(FinishReason::ABANDON_CONTENT_DESTROYED);
149 } 142 }
150 143
151 bool FirstWebContentsProfiler::IsFinishedCollectingMetrics() { 144 bool FirstWebContentsProfiler::IsFinishedCollectingMetrics() {
152 return collected_paint_metric_ && collected_load_metric_; 145 return collected_paint_metric_ && collected_load_metric_;
153 } 146 }
154 147
155 void FirstWebContentsProfiler::FinishedCollectingMetrics( 148 void FirstWebContentsProfiler::FinishedCollectingMetrics(
156 FinishReason finish_reason) { 149 FinishReason finish_reason) {
157 if (!finished_) { 150 UMA_HISTOGRAM_ENUMERATION("Startup.FirstWebContents.FinishReason",
158 UMA_HISTOGRAM_ENUMERATION("Startup.FirstWebContents.FinishReason", 151 finish_reason, FinishReason::ENUM_MAX);
152 if (!collected_paint_metric_) {
153 UMA_HISTOGRAM_ENUMERATION("Startup.FirstWebContents.FinishReason_NoPaint",
159 finish_reason, FinishReason::ENUM_MAX); 154 finish_reason, FinishReason::ENUM_MAX);
160 if (!collected_paint_metric_) { 155 }
161 UMA_HISTOGRAM_ENUMERATION("Startup.FirstWebContents.FinishReason_NoPaint", 156 if (!collected_load_metric_) {
162 finish_reason, FinishReason::ENUM_MAX); 157 UMA_HISTOGRAM_ENUMERATION("Startup.FirstWebContents.FinishReason_NoLoad",
163 } 158 finish_reason, FinishReason::ENUM_MAX);
164 if (!collected_load_metric_) {
165 UMA_HISTOGRAM_ENUMERATION("Startup.FirstWebContents.FinishReason_NoLoad",
166 finish_reason, FinishReason::ENUM_MAX);
167 }
168 finished_ = true;
169 } 159 }
170 160
171 // Continue recording deprecated v1 stats (see |finished_|) except in 161 delete this;
172 // scenarios where stats collection was already being abandonned previously.
173 // TODO(gab): Delete right away when getting rid of |finished_|.
174 if (IsFinishedCollectingMetrics() ||
175 finish_reason == FinishReason::ABANDON_CONTENT_DESTROYED ||
176 finish_reason == FinishReason::ABANDON_BLOCKING_UI) {
177 delete this;
178 }
179 } 162 }
180 163
181 #endif // !defined(OS_ANDROID) 164 #endif // !defined(OS_ANDROID)
OLDNEW
« no previous file with comments | « no previous file | components/startup_metric_utils/browser/startup_metric_utils.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698