| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "ui/events/event_utils.h" | 5 #include "ui/events/event_utils.h" |
| 6 | 6 |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "base/metrics/histogram.h" | 9 #include "base/metrics/histogram.h" |
| 10 #include "ui/display/display.h" | 10 #include "ui/display/display.h" |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 54 default: | 54 default: |
| 55 break; | 55 break; |
| 56 } | 56 } |
| 57 return event; | 57 return event; |
| 58 } | 58 } |
| 59 | 59 |
| 60 int RegisterCustomEventType() { | 60 int RegisterCustomEventType() { |
| 61 return ++g_custom_event_types; | 61 return ++g_custom_event_types; |
| 62 } | 62 } |
| 63 | 63 |
| 64 base::TimeTicks EventTimeForNow() { | 64 void ValidateEventTimeClock(base::TimeTicks* timestamp) { |
| 65 return base::TimeTicks::Now(); | 65 // Restrict this validation to DCHECK builds except when using X11 which is |
| 66 // known to provide bogus timestamps that require correction (crbug.com/611950). |
| 67 #if defined(USE_X11) || DCHECK_IS_ON() |
| 68 if (base::debug::BeingDebugged()) |
| 69 return; |
| 70 |
| 71 base::TimeTicks now = EventTimeForNow(); |
| 72 int64_t delta = (now - *timestamp).InMilliseconds(); |
| 73 if (delta < 0 || delta > 60 * 1000) { |
| 74 UMA_HISTOGRAM_BOOLEAN("Event.TimestampHasValidTimebase", false); |
| 75 #if defined(USE_X11) |
| 76 *timestamp = now; |
| 77 #else |
| 78 NOTREACHED() << "Unexpected event timestamp, now:" << now |
| 79 << " event timestamp:" << *timestamp; |
| 80 #endif |
| 81 } |
| 82 |
| 83 UMA_HISTOGRAM_BOOLEAN("Event.TimestampHasValidTimebase", true); |
| 84 #endif |
| 66 } | 85 } |
| 67 | 86 |
| 68 bool ShouldDefaultToNaturalScroll() { | 87 bool ShouldDefaultToNaturalScroll() { |
| 69 return GetInternalDisplayTouchSupport() == | 88 return GetInternalDisplayTouchSupport() == |
| 70 display::Display::TOUCH_SUPPORT_AVAILABLE; | 89 display::Display::TOUCH_SUPPORT_AVAILABLE; |
| 71 } | 90 } |
| 72 | 91 |
| 73 display::Display::TouchSupport GetInternalDisplayTouchSupport() { | 92 display::Display::TouchSupport GetInternalDisplayTouchSupport() { |
| 74 display::Screen* screen = display::Screen::GetScreen(); | 93 display::Screen* screen = display::Screen::GetScreen(); |
| 75 // No screen in some unit tests. | 94 // No screen in some unit tests. |
| (...skipping 30 matching lines...) Expand all Loading... |
| 106 case ET_TOUCH_RELEASED: | 125 case ET_TOUCH_RELEASED: |
| 107 UMA_HISTOGRAM_CUSTOM_COUNTS("Event.Latency.OS.TOUCH_RELEASED", | 126 UMA_HISTOGRAM_CUSTOM_COUNTS("Event.Latency.OS.TOUCH_RELEASED", |
| 108 delta.InMicroseconds(), 1, 1000000, 50); | 127 delta.InMicroseconds(), 1, 1000000, 50); |
| 109 return; | 128 return; |
| 110 default: | 129 default: |
| 111 return; | 130 return; |
| 112 } | 131 } |
| 113 } | 132 } |
| 114 | 133 |
| 115 } // namespace ui | 134 } // namespace ui |
| OLD | NEW |