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

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: Added logging.h include to device_data_manager_test_api_stub.cc. Created 5 years, 5 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"
(...skipping 21 matching lines...) Expand all
32 32
33 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) 33 #if defined(OS_LINUX) && !defined(OS_CHROMEOS)
34 #include <gnu/libc-version.h> 34 #include <gnu/libc-version.h>
35 35
36 #include "base/version.h" 36 #include "base/version.h"
37 #if defined(USE_X11) 37 #if defined(USE_X11)
38 #include "ui/base/x/x11_util.h" 38 #include "ui/base/x/x11_util.h"
39 #endif 39 #endif
40 #endif // defined(OS_LINUX) && !defined(OS_CHROMEOS) 40 #endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)
41 41
42 #if defined(USE_OZONE) || defined(USE_X11)
43 #include "ui/events/devices/device_data_manager.h"
44 #include "ui/events/devices/input_device_event_observer.h"
45 #endif // defined(USE_OZONE) || defined(USE_X11)
46
42 #if defined(OS_WIN) 47 #if defined(OS_WIN)
43 #include "chrome/installer/util/google_update_settings.h" 48 #include "chrome/installer/util/google_update_settings.h"
44 #endif // defined(OS_WIN) 49 #endif // defined(OS_WIN)
45 50
46 namespace { 51 namespace {
47 52
48 enum UMALinuxGlibcVersion { 53 enum UMALinuxGlibcVersion {
49 UMA_LINUX_GLIBC_NOT_PARSEABLE, 54 UMA_LINUX_GLIBC_NOT_PARSEABLE,
50 UMA_LINUX_GLIBC_UNKNOWN, 55 UMA_LINUX_GLIBC_UNKNOWN,
51 UMA_LINUX_GLIBC_2_11, 56 UMA_LINUX_GLIBC_2_11,
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after
240 state = UMA_TOUCH_EVENTS_DISABLED; 245 state = UMA_TOUCH_EVENTS_DISABLED;
241 } else { 246 } else {
242 NOTREACHED(); 247 NOTREACHED();
243 return; 248 return;
244 } 249 }
245 250
246 UMA_HISTOGRAM_ENUMERATION("Touchscreen.TouchEventsEnabled", state, 251 UMA_HISTOGRAM_ENUMERATION("Touchscreen.TouchEventsEnabled", state,
247 UMA_TOUCH_EVENTS_STATE_COUNT); 252 UMA_TOUCH_EVENTS_STATE_COUNT);
248 } 253 }
249 254
255 #if defined(USE_OZONE) || defined(USE_X11)
256
257 // Asynchronously records the touch event state when the ui::DeviceDataManager
258 // completes a device scan.
259 class AsynchronousTouchEventStateRecorder
260 : public ui::InputDeviceEventObserver {
261 public:
262 AsynchronousTouchEventStateRecorder();
263 ~AsynchronousTouchEventStateRecorder() override;
264
265 // ui::InputDeviceEventObserver overrides.
266 void OnDeviceListsComplete() override;
267
268 private:
269 DISALLOW_COPY_AND_ASSIGN(AsynchronousTouchEventStateRecorder);
270 };
271
272 AsynchronousTouchEventStateRecorder::AsynchronousTouchEventStateRecorder() {
273 ui::DeviceDataManager::GetInstance()->AddObserver(this);
274 }
275
276 AsynchronousTouchEventStateRecorder::~AsynchronousTouchEventStateRecorder() {
277 ui::DeviceDataManager::GetInstance()->RemoveObserver(this);
278 }
279
280 void AsynchronousTouchEventStateRecorder::OnDeviceListsComplete() {
281 ui::DeviceDataManager::GetInstance()->RemoveObserver(this);
282 RecordTouchEventState();
283 }
284
285 #endif // defined(USE_OZONE) || defined(USE_X11)
286
250 } // namespace 287 } // namespace
251 288
252 ChromeBrowserMainExtraPartsMetrics::ChromeBrowserMainExtraPartsMetrics() 289 ChromeBrowserMainExtraPartsMetrics::ChromeBrowserMainExtraPartsMetrics()
253 : display_count_(0), is_screen_observer_(false) { 290 : display_count_(0), is_screen_observer_(false) {
254 } 291 }
255 292
256 ChromeBrowserMainExtraPartsMetrics::~ChromeBrowserMainExtraPartsMetrics() { 293 ChromeBrowserMainExtraPartsMetrics::~ChromeBrowserMainExtraPartsMetrics() {
257 if (is_screen_observer_) 294 if (is_screen_observer_)
258 gfx::Screen::GetNativeScreen()->RemoveObserver(this); 295 gfx::Screen::GetNativeScreen()->RemoveObserver(this);
259 } 296 }
260 297
261 void ChromeBrowserMainExtraPartsMetrics::PreProfileInit() { 298 void ChromeBrowserMainExtraPartsMetrics::PreProfileInit() {
262 RecordMicroArchitectureStats(); 299 RecordMicroArchitectureStats();
263 } 300 }
264 301
265 void ChromeBrowserMainExtraPartsMetrics::PreBrowserStart() { 302 void ChromeBrowserMainExtraPartsMetrics::PreBrowserStart() {
266 about_flags::PrefServiceFlagsStorage flags_storage_( 303 about_flags::PrefServiceFlagsStorage flags_storage_(
267 g_browser_process->local_state()); 304 g_browser_process->local_state());
268 about_flags::RecordUMAStatistics(&flags_storage_); 305 about_flags::RecordUMAStatistics(&flags_storage_);
269 } 306 }
270 307
271 void ChromeBrowserMainExtraPartsMetrics::PostBrowserStart() { 308 void ChromeBrowserMainExtraPartsMetrics::PostBrowserStart() {
272 RecordLinuxGlibcVersion(); 309 RecordLinuxGlibcVersion();
273 #if defined(USE_X11) && !defined(OS_CHROMEOS) 310 #if defined(USE_X11) && !defined(OS_CHROMEOS)
274 UMA_HISTOGRAM_ENUMERATION("Linux.WindowManager", 311 UMA_HISTOGRAM_ENUMERATION("Linux.WindowManager",
275 GetLinuxWindowManager(), 312 GetLinuxWindowManager(),
276 UMA_LINUX_WINDOW_MANAGER_COUNT); 313 UMA_LINUX_WINDOW_MANAGER_COUNT);
277 #endif 314 #endif
315
316 #if defined(USE_OZONE) || defined(USE_X11)
317 // The touch event state for X11 and Ozone based event sub-systems are based
318 // on device scans that happen asynchronously. So we may need to attach an
319 // observer to wait until these scans complete.
320 if (ui::DeviceDataManager::GetInstance()->device_lists_complete()) {
321 RecordTouchEventState();
322 } else {
323 input_device_event_observer_.reset(
324 new AsynchronousTouchEventStateRecorder());
325 }
326 #else
278 RecordTouchEventState(); 327 RecordTouchEventState();
328 #endif // defined(USE_OZONE) || defined(USE_X11)
279 329
280 #if defined(OS_MACOSX) && !defined(OS_IOS) 330 #if defined(OS_MACOSX) && !defined(OS_IOS)
281 RecordMacMetrics(); 331 RecordMacMetrics();
282 #endif // defined(OS_MACOSX) && !defined(OS_IOS) 332 #endif // defined(OS_MACOSX) && !defined(OS_IOS)
283 333
284 const int kStartupMetricsGatheringDelaySeconds = 45; 334 const int kStartupMetricsGatheringDelaySeconds = 45;
285 content::BrowserThread::GetBlockingPool()->PostDelayedTask( 335 content::BrowserThread::GetBlockingPool()->PostDelayedTask(
286 FROM_HERE, 336 FROM_HERE,
287 base::Bind(&RecordStartupMetricsOnBlockingPool), 337 base::Bind(&RecordStartupMetricsOnBlockingPool),
288 base::TimeDelta::FromSeconds(kStartupMetricsGatheringDelaySeconds)); 338 base::TimeDelta::FromSeconds(kStartupMetricsGatheringDelaySeconds));
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
325 } 375 }
326 } 376 }
327 377
328 namespace chrome { 378 namespace chrome {
329 379
330 void AddMetricsExtraParts(ChromeBrowserMainParts* main_parts) { 380 void AddMetricsExtraParts(ChromeBrowserMainParts* main_parts) {
331 main_parts->AddParts(new ChromeBrowserMainExtraPartsMetrics()); 381 main_parts->AddParts(new ChromeBrowserMainExtraPartsMetrics());
332 } 382 }
333 383
334 } // namespace chrome 384 } // namespace chrome
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698