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

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

Issue 641453003: Add metrics for the number of attached displays. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Comments from isherman. Created 6 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
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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/metrics/chrome_browser_main_extra_parts_metrics.h" 5 #include "chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
11 #include "base/cpu.h" 11 #include "base/cpu.h"
12 #include "base/metrics/histogram.h" 12 #include "base/metrics/histogram.h"
13 #include "base/metrics/sparse_histogram.h" 13 #include "base/metrics/sparse_histogram.h"
14 #include "base/sys_info.h" 14 #include "base/sys_info.h"
15 #include "base/threading/sequenced_worker_pool.h" 15 #include "base/threading/sequenced_worker_pool.h"
16 #include "base/time/time.h" 16 #include "base/time/time.h"
17 #include "chrome/browser/about_flags.h" 17 #include "chrome/browser/about_flags.h"
18 #include "chrome/browser/browser_process.h" 18 #include "chrome/browser/browser_process.h"
19 #include "chrome/browser/chrome_browser_main.h" 19 #include "chrome/browser/chrome_browser_main.h"
20 #include "chrome/browser/mac/bluetooth_utility.h" 20 #include "chrome/browser/mac/bluetooth_utility.h"
21 #include "chrome/browser/pref_service_flags_storage.h" 21 #include "chrome/browser/pref_service_flags_storage.h"
22 #include "chrome/browser/shell_integration.h" 22 #include "chrome/browser/shell_integration.h"
23 #include "content/public/browser/browser_thread.h" 23 #include "content/public/browser/browser_thread.h"
24 #include "ui/base/touch/touch_device.h" 24 #include "ui/base/touch/touch_device.h"
25 #include "ui/base/ui_base_switches.h" 25 #include "ui/base/ui_base_switches.h"
26 #include "ui/events/event_switches.h" 26 #include "ui/events/event_switches.h"
27 #include "ui/gfx/screen.h"
27 28
28 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) 29 #if defined(OS_LINUX) && !defined(OS_CHROMEOS)
29 #include <gnu/libc-version.h> 30 #include <gnu/libc-version.h>
30 31
31 #include "base/version.h" 32 #include "base/version.h"
32 #if defined(USE_X11) 33 #if defined(USE_X11)
33 #include "ui/base/x/x11_util.h" 34 #include "ui/base/x/x11_util.h"
34 #endif 35 #endif
35 #endif // defined(OS_LINUX) && !defined(OS_CHROMEOS) 36 #endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)
36 37
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
214 NOTREACHED(); 215 NOTREACHED();
215 return; 216 return;
216 } 217 }
217 218
218 UMA_HISTOGRAM_ENUMERATION("Touchscreen.TouchEventsEnabled", state, 219 UMA_HISTOGRAM_ENUMERATION("Touchscreen.TouchEventsEnabled", state,
219 UMA_TOUCH_EVENTS_STATE_COUNT); 220 UMA_TOUCH_EVENTS_STATE_COUNT);
220 } 221 }
221 222
222 } // namespace 223 } // namespace
223 224
224 ChromeBrowserMainExtraPartsMetrics::ChromeBrowserMainExtraPartsMetrics() { 225 ChromeBrowserMainExtraPartsMetrics::ChromeBrowserMainExtraPartsMetrics()
226 : display_count_(0), is_screen_observer_(false) {
225 } 227 }
226 228
227 ChromeBrowserMainExtraPartsMetrics::~ChromeBrowserMainExtraPartsMetrics() { 229 ChromeBrowserMainExtraPartsMetrics::~ChromeBrowserMainExtraPartsMetrics() {
230 if (is_screen_observer_)
231 gfx::Screen::GetNativeScreen()->RemoveObserver(this);
228 } 232 }
229 233
230 void ChromeBrowserMainExtraPartsMetrics::PreProfileInit() { 234 void ChromeBrowserMainExtraPartsMetrics::PreProfileInit() {
231 RecordMicroArchitectureStats(); 235 RecordMicroArchitectureStats();
232 } 236 }
233 237
234 void ChromeBrowserMainExtraPartsMetrics::PreBrowserStart() { 238 void ChromeBrowserMainExtraPartsMetrics::PreBrowserStart() {
235 about_flags::PrefServiceFlagsStorage flags_storage_( 239 about_flags::PrefServiceFlagsStorage flags_storage_(
236 g_browser_process->local_state()); 240 g_browser_process->local_state());
237 about_flags::RecordUMAStatistics(&flags_storage_); 241 about_flags::RecordUMAStatistics(&flags_storage_);
(...skipping 10 matching lines...) Expand all
248 252
249 #if defined(OS_MACOSX) && !defined(OS_IOS) 253 #if defined(OS_MACOSX) && !defined(OS_IOS)
250 RecordMacMetrics(); 254 RecordMacMetrics();
251 #endif // defined(OS_MACOSX) && !defined(OS_IOS) 255 #endif // defined(OS_MACOSX) && !defined(OS_IOS)
252 256
253 const int kStartupMetricsGatheringDelaySeconds = 45; 257 const int kStartupMetricsGatheringDelaySeconds = 45;
254 content::BrowserThread::GetBlockingPool()->PostDelayedTask( 258 content::BrowserThread::GetBlockingPool()->PostDelayedTask(
255 FROM_HERE, 259 FROM_HERE,
256 base::Bind(&RecordStartupMetricsOnBlockingPool), 260 base::Bind(&RecordStartupMetricsOnBlockingPool),
257 base::TimeDelta::FromSeconds(kStartupMetricsGatheringDelaySeconds)); 261 base::TimeDelta::FromSeconds(kStartupMetricsGatheringDelaySeconds));
262
263 display_count_ = gfx::Screen::GetNativeScreen()->GetNumDisplays();
264 UMA_HISTOGRAM_COUNTS_100("Hardware.Display.Count.OnStartup", display_count_);
265 gfx::Screen::GetNativeScreen()->AddObserver(this);
266 is_screen_observer_ = true;
267 }
268
269 void ChromeBrowserMainExtraPartsMetrics::OnDisplayAdded(
270 const gfx::Display& new_display) {
271 EmitDisplaysChangedMetric();
272 }
273
274 void ChromeBrowserMainExtraPartsMetrics::OnDisplayRemoved(
275 const gfx::Display& old_display) {
276 EmitDisplaysChangedMetric();
277 }
278
279 void ChromeBrowserMainExtraPartsMetrics::OnDisplayMetricsChanged(
280 const gfx::Display& display,
281 uint32_t changed_metrics) {
282 }
283
284 void ChromeBrowserMainExtraPartsMetrics::EmitDisplaysChangedMetric() {
285 int display_count = gfx::Screen::GetNativeScreen()->GetNumDisplays();
286 if (display_count != display_count_) {
287 display_count_ = display_count;
288 UMA_HISTOGRAM_COUNTS_100("Hardware.Display.Count.OnChange", display_count_);
289 }
258 } 290 }
259 291
260 namespace chrome { 292 namespace chrome {
261 293
262 void AddMetricsExtraParts(ChromeBrowserMainParts* main_parts) { 294 void AddMetricsExtraParts(ChromeBrowserMainParts* main_parts) {
263 main_parts->AddParts(new ChromeBrowserMainExtraPartsMetrics()); 295 main_parts->AddParts(new ChromeBrowserMainExtraPartsMetrics());
264 } 296 }
265 297
266 } // namespace chrome 298 } // namespace chrome
OLDNEW
« no previous file with comments | « chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.h ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698