| 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..827ea25c8108f4d1771217242aeeb5c5d02c46a9 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"
|
|
|
| @@ -250,6 +251,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 +273,18 @@ void ChromeBrowserMainExtraPartsMetrics::PostBrowserStart() {
|
| GetLinuxWindowManager(),
|
| UMA_LINUX_WINDOW_MANAGER_COUNT);
|
| #endif
|
| +
|
| +#if defined(USE_OZONE) || defined(USE_X11)
|
| + // The touch event state for X11 and Ozone based event sub-systems are based
|
| + // on device scans that happen asynchronously. So we may need to attach an
|
| + // observer to wait until these scans complete.
|
| + if (ui::DeviceDataManager::GetInstance()->device_lists_complete())
|
| + OnDeviceListsComplete();
|
| + else
|
| + ui::DeviceDataManager::GetInstance()->AddObserver(this);
|
| +#else
|
| RecordTouchEventState();
|
| +#endif // defined(USE_OZONE) || defined(USE_X11)
|
|
|
| #if defined(OS_MACOSX) && !defined(OS_IOS)
|
| RecordMacMetrics();
|
| @@ -311,6 +326,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_) {
|
|
|