| // Copyright 2015 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef UI_EVENTS_BASE_EVENT_UTILS_H_ |
| #define UI_EVENTS_BASE_EVENT_UTILS_H_ |
| |
| #include <stdint.h> |
| |
| #include "base/time/tick_clock.h" |
| #include "ui/events/events_base_export.h" |
| |
| namespace base { |
| class TimeTicks; |
| } |
| |
| // Common functions to be used for all platforms. |
| namespace ui { |
| |
| // Generate an unique identifier for events. |
| EVENTS_BASE_EXPORT uint32_t GetNextTouchEventId(); |
| |
| // Checks if |flags| contains system key modifiers. |
| EVENTS_BASE_EXPORT bool IsSystemKeyModifier(int flags); |
| |
| // Create a timestamp based on the current time. |
| EVENTS_BASE_EXPORT base::TimeTicks EventTimeForNow(); |
| |
| // Overrides the clock used by EventTimeForNow for testing. |
| // This doesn't take the ownership of the clock. |
| EVENTS_BASE_EXPORT void SetEventTickClockForTesting( |
| const base::TickClock* tick_clock); |
| |
| // Converts an event timestamp ticks to seconds (floating point representation). |
| // WARNING: This should only be used when interfacing with platform code that |
| // does not use base::Time* types. |
| EVENTS_BASE_EXPORT double EventTimeStampToSeconds(base::TimeTicks time_stamp); |
| |
| // Converts an event timestamp in seconds to TimeTicks. |
| // WARNING: This should only be used when interfacing with platform code that |
| // does not use base::Time* types. |
| EVENTS_BASE_EXPORT base::TimeTicks EventTimeStampFromSeconds( |
| double time_stamp_seconds); |
| |
| // Returns false if an event timestamp is clearly bogus given that the event |
| // was generated a short time before |now|. Some fraction of devices, across |
| // all platforms provide bogus event timestamps. See |
| // https://crbug.com/650338#c1. |
| EVENTS_BASE_EXPORT bool IsValidTimebase(base::TimeTicks now, |
| base::TimeTicks timestamp); |
| |
| // Ensures that the event timestamp values are coming from the same underlying |
| // monotonic clock as base::TimeTicks::Now() and if it is not then falls |
| // back to using the current ticks for event timestamp. |
| EVENTS_BASE_EXPORT void ValidateEventTimeClock(base::TimeTicks* timestamp); |
| |
| } // namespace ui |
| |
| #endif // UI_EVENTS_BASE_EVENT_UTILS_H_ |