Chromium Code Reviews| Index: chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc |
| diff --git a/chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc b/chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc |
| index 3680ad957d6ce1a913d5c6a374e9ab86f5a7d0dd..3454083018c2cfc1d6c1551bb08bc6dd121320a0 100644 |
| --- a/chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc |
| +++ b/chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc |
| @@ -23,6 +23,7 @@ |
| #include "content/public/browser/browser_thread.h" |
| #include "ui/base/touch/touch_device.h" |
| #include "ui/base/ui_base_switches.h" |
| +#include "ui/events/devices/device_data_manager.h" |
| #include "ui/events/event_switches.h" |
| #include "ui/gfx/screen.h" |
| @@ -236,7 +237,6 @@ void RecordTouchEventState() { |
| NOTREACHED(); |
| return; |
| } |
| - |
| UMA_HISTOGRAM_ENUMERATION("Touchscreen.TouchEventsEnabled", state, |
| UMA_TOUCH_EVENTS_STATE_COUNT); |
| } |
| @@ -250,6 +250,9 @@ ChromeBrowserMainExtraPartsMetrics::ChromeBrowserMainExtraPartsMetrics() |
| ChromeBrowserMainExtraPartsMetrics::~ChromeBrowserMainExtraPartsMetrics() { |
| if (is_screen_observer_) |
| gfx::Screen::GetNativeScreen()->RemoveObserver(this); |
| +#if defined(USE_OZONE) || defined(USE_X11) |
| + ui::DeviceDataManager::GetInstance()->RemoveObserver(this); |
| +#endif // defined(USE_OZONE) || defined(USE_X11) |
| } |
| void ChromeBrowserMainExtraPartsMetrics::PreProfileInit() { |
| @@ -269,7 +272,15 @@ void ChromeBrowserMainExtraPartsMetrics::PostBrowserStart() { |
| GetLinuxWindowManager(), |
| UMA_LINUX_WINDOW_MANAGER_COUNT); |
| #endif |
| + |
| +#if defined(USE_OZONE) || defined(USE_X11) |
|
Rick Byers
2015/06/16 14:45:47
Rather than use an #if, couldn't we encapsulate th
bruthig
2015/06/16 15:52:45
Agreed I'm not happy about the 'potential' race co
spang
2015/06/16 15:55:40
A race free way to do it is
if (ui::DeviceDataM
|
| + // The touch event state for X11 and Ozone based event sub-systems are based |
| + // on device scans that happen asynchronously so we attach an observer to |
| + // wait until these scans complete. |
| + ui::DeviceDataManager::GetInstance()->AddObserver(this); |
| +#else |
| RecordTouchEventState(); |
| +#endif // defined(USE_OZONE) || defined(USE_X11) |
| #if defined(OS_MACOSX) && !defined(OS_IOS) |
| RecordMacMetrics(); |
| @@ -311,6 +322,11 @@ void ChromeBrowserMainExtraPartsMetrics::ProfilerFinishedCollectingMetrics() { |
| first_web_contents_profiler_.reset(); |
| } |
| +void ChromeBrowserMainExtraPartsMetrics::OnDeviceListsComplete() { |
| + ui::DeviceDataManager::GetInstance()->RemoveObserver(this); |
| + RecordTouchEventState(); |
| +} |
| + |
| void ChromeBrowserMainExtraPartsMetrics::EmitDisplaysChangedMetric() { |
| int display_count = gfx::Screen::GetNativeScreen()->GetNumDisplays(); |
| if (display_count != display_count_) { |