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

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

Issue 1182303005: Fixed the Touchscreen.TouchEventsEnabled histogram to record the correct values on X11 and Ozone ba… (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Updated comment in ChromeBrowserMainExtraPartsMetrics::PostBrowserStart(). Created 5 years, 6 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 (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/devices/device_data_manager.h"
26 #include "ui/events/event_switches.h" 27 #include "ui/events/event_switches.h"
27 #include "ui/gfx/screen.h" 28 #include "ui/gfx/screen.h"
28 29
29 #if defined(OS_ANDROID) && defined(__arm__) 30 #if defined(OS_ANDROID) && defined(__arm__)
30 #include <cpu-features.h> 31 #include <cpu-features.h>
31 #endif // defined(OS_ANDROID) && defined(__arm__) 32 #endif // defined(OS_ANDROID) && defined(__arm__)
32 33
33 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) 34 #if defined(OS_LINUX) && !defined(OS_CHROMEOS)
34 #include <gnu/libc-version.h> 35 #include <gnu/libc-version.h>
35 36
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
228 touch_enabled_switch == switches::kTouchEventsEnabled) { 229 touch_enabled_switch == switches::kTouchEventsEnabled) {
229 state = UMA_TOUCH_EVENTS_ENABLED; 230 state = UMA_TOUCH_EVENTS_ENABLED;
230 } else if (touch_enabled_switch == switches::kTouchEventsAuto) { 231 } else if (touch_enabled_switch == switches::kTouchEventsAuto) {
231 state = ui::IsTouchDevicePresent() ? 232 state = ui::IsTouchDevicePresent() ?
232 UMA_TOUCH_EVENTS_AUTO_ENABLED : UMA_TOUCH_EVENTS_AUTO_DISABLED; 233 UMA_TOUCH_EVENTS_AUTO_ENABLED : UMA_TOUCH_EVENTS_AUTO_DISABLED;
233 } else if (touch_enabled_switch == switches::kTouchEventsDisabled) { 234 } else if (touch_enabled_switch == switches::kTouchEventsDisabled) {
234 state = UMA_TOUCH_EVENTS_DISABLED; 235 state = UMA_TOUCH_EVENTS_DISABLED;
235 } else { 236 } else {
236 NOTREACHED(); 237 NOTREACHED();
237 return; 238 return;
238 } 239 }
Ilya Sherman 2015/06/24 23:46:50 nit: Please revert the change to this line (i.e. r
bruthig 2015/06/25 17:26:52 Done.
239
240 UMA_HISTOGRAM_ENUMERATION("Touchscreen.TouchEventsEnabled", state, 240 UMA_HISTOGRAM_ENUMERATION("Touchscreen.TouchEventsEnabled", state,
241 UMA_TOUCH_EVENTS_STATE_COUNT); 241 UMA_TOUCH_EVENTS_STATE_COUNT);
242 } 242 }
243 243
244 } // namespace 244 } // namespace
245 245
246 ChromeBrowserMainExtraPartsMetrics::ChromeBrowserMainExtraPartsMetrics() 246 ChromeBrowserMainExtraPartsMetrics::ChromeBrowserMainExtraPartsMetrics()
247 : display_count_(0), is_screen_observer_(false) { 247 : display_count_(0), is_screen_observer_(false) {
248 } 248 }
249 249
250 ChromeBrowserMainExtraPartsMetrics::~ChromeBrowserMainExtraPartsMetrics() { 250 ChromeBrowserMainExtraPartsMetrics::~ChromeBrowserMainExtraPartsMetrics() {
251 if (is_screen_observer_) 251 if (is_screen_observer_)
252 gfx::Screen::GetNativeScreen()->RemoveObserver(this); 252 gfx::Screen::GetNativeScreen()->RemoveObserver(this);
253 #if defined(USE_OZONE) || defined(USE_X11)
254 ui::DeviceDataManager::GetInstance()->RemoveObserver(this);
Ilya Sherman 2015/06/24 23:46:50 Is it safe to call RemoveObserver() even if |this|
bruthig 2015/06/25 17:26:51 That path is executed by the tests so I assume it
255 #endif // defined(USE_OZONE) || defined(USE_X11)
253 } 256 }
254 257
255 void ChromeBrowserMainExtraPartsMetrics::PreProfileInit() { 258 void ChromeBrowserMainExtraPartsMetrics::PreProfileInit() {
256 RecordMicroArchitectureStats(); 259 RecordMicroArchitectureStats();
257 } 260 }
258 261
259 void ChromeBrowserMainExtraPartsMetrics::PreBrowserStart() { 262 void ChromeBrowserMainExtraPartsMetrics::PreBrowserStart() {
260 about_flags::PrefServiceFlagsStorage flags_storage_( 263 about_flags::PrefServiceFlagsStorage flags_storage_(
261 g_browser_process->local_state()); 264 g_browser_process->local_state());
262 about_flags::RecordUMAStatistics(&flags_storage_); 265 about_flags::RecordUMAStatistics(&flags_storage_);
263 } 266 }
264 267
265 void ChromeBrowserMainExtraPartsMetrics::PostBrowserStart() { 268 void ChromeBrowserMainExtraPartsMetrics::PostBrowserStart() {
266 RecordLinuxGlibcVersion(); 269 RecordLinuxGlibcVersion();
267 #if defined(USE_X11) && !defined(OS_CHROMEOS) 270 #if defined(USE_X11) && !defined(OS_CHROMEOS)
268 UMA_HISTOGRAM_ENUMERATION("Linux.WindowManager", 271 UMA_HISTOGRAM_ENUMERATION("Linux.WindowManager",
269 GetLinuxWindowManager(), 272 GetLinuxWindowManager(),
270 UMA_LINUX_WINDOW_MANAGER_COUNT); 273 UMA_LINUX_WINDOW_MANAGER_COUNT);
271 #endif 274 #endif
275
276 #if defined(USE_OZONE) || defined(USE_X11)
277 // The touch event state for X11 and Ozone based event sub-systems are based
278 // on device scans that happen asynchronously. So we may need to attach an
279 // observer to wait until these scans complete.
280 if (ui::DeviceDataManager::GetInstance()->device_lists_complete())
281 OnDeviceListsComplete();
282 else
283 ui::DeviceDataManager::GetInstance()->AddObserver(this);
284 #else
272 RecordTouchEventState(); 285 RecordTouchEventState();
286 #endif // defined(USE_OZONE) || defined(USE_X11)
273 287
274 #if defined(OS_MACOSX) && !defined(OS_IOS) 288 #if defined(OS_MACOSX) && !defined(OS_IOS)
275 RecordMacMetrics(); 289 RecordMacMetrics();
276 #endif // defined(OS_MACOSX) && !defined(OS_IOS) 290 #endif // defined(OS_MACOSX) && !defined(OS_IOS)
277 291
278 const int kStartupMetricsGatheringDelaySeconds = 45; 292 const int kStartupMetricsGatheringDelaySeconds = 45;
279 content::BrowserThread::GetBlockingPool()->PostDelayedTask( 293 content::BrowserThread::GetBlockingPool()->PostDelayedTask(
280 FROM_HERE, 294 FROM_HERE,
281 base::Bind(&RecordStartupMetricsOnBlockingPool), 295 base::Bind(&RecordStartupMetricsOnBlockingPool),
282 base::TimeDelta::FromSeconds(kStartupMetricsGatheringDelaySeconds)); 296 base::TimeDelta::FromSeconds(kStartupMetricsGatheringDelaySeconds));
(...skipping 21 matching lines...) Expand all
304 318
305 void ChromeBrowserMainExtraPartsMetrics::OnDisplayMetricsChanged( 319 void ChromeBrowserMainExtraPartsMetrics::OnDisplayMetricsChanged(
306 const gfx::Display& display, 320 const gfx::Display& display,
307 uint32_t changed_metrics) { 321 uint32_t changed_metrics) {
308 } 322 }
309 323
310 void ChromeBrowserMainExtraPartsMetrics::ProfilerFinishedCollectingMetrics() { 324 void ChromeBrowserMainExtraPartsMetrics::ProfilerFinishedCollectingMetrics() {
311 first_web_contents_profiler_.reset(); 325 first_web_contents_profiler_.reset();
312 } 326 }
313 327
328 void ChromeBrowserMainExtraPartsMetrics::OnDeviceListsComplete() {
329 ui::DeviceDataManager::GetInstance()->RemoveObserver(this);
330 RecordTouchEventState();
331 }
332
314 void ChromeBrowserMainExtraPartsMetrics::EmitDisplaysChangedMetric() { 333 void ChromeBrowserMainExtraPartsMetrics::EmitDisplaysChangedMetric() {
315 int display_count = gfx::Screen::GetNativeScreen()->GetNumDisplays(); 334 int display_count = gfx::Screen::GetNativeScreen()->GetNumDisplays();
316 if (display_count != display_count_) { 335 if (display_count != display_count_) {
317 display_count_ = display_count; 336 display_count_ = display_count;
318 UMA_HISTOGRAM_COUNTS_100("Hardware.Display.Count.OnChange", display_count_); 337 UMA_HISTOGRAM_COUNTS_100("Hardware.Display.Count.OnChange", display_count_);
319 } 338 }
320 } 339 }
321 340
322 namespace chrome { 341 namespace chrome {
323 342
324 void AddMetricsExtraParts(ChromeBrowserMainParts* main_parts) { 343 void AddMetricsExtraParts(ChromeBrowserMainParts* main_parts) {
325 main_parts->AddParts(new ChromeBrowserMainExtraPartsMetrics()); 344 main_parts->AddParts(new ChromeBrowserMainExtraPartsMetrics());
326 } 345 }
327 346
328 } // namespace chrome 347 } // namespace chrome
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698