| Index: ui/events/x/events_x_utils.cc | 
| diff --git a/ui/events/x/events_x_utils.cc b/ui/events/x/events_x_utils.cc | 
| index aab272373068313cf5ae95cd5fbb27b34fa12287..54aa6247c8572adc638bdaf0d7ac530c4ef04902 100644 | 
| --- a/ui/events/x/events_x_utils.cc | 
| +++ b/ui/events/x/events_x_utils.cc | 
| @@ -20,6 +20,7 @@ | 
| #include "build/build_config.h" | 
| #include "ui/display/display.h" | 
| #include "ui/display/screen.h" | 
| +#include "ui/events/base_event_utils.h" | 
| #include "ui/events/devices/x11/device_data_manager_x11.h" | 
| #include "ui/events/devices/x11/device_list_cache_x11.h" | 
| #include "ui/events/devices/x11/touch_factory_x11.h" | 
| @@ -312,13 +313,13 @@ int64_t g_rollover_ms = 0; | 
| base::LazyInstance<std::unique_ptr<base::TickClock>>::Leaky g_tick_clock = | 
| LAZY_INSTANCE_INITIALIZER; | 
|  | 
| -// Takes Xlib Time and returns a time delta that is immune to timer rollover. | 
| +// Takes Xlib Time and returns a time ticks that is immune to timer rollover. | 
| // This function is not thread safe as we do not use a lock. | 
| -base::TimeDelta TimeDeltaFromXEventTime(Time timestamp) { | 
| +base::TimeTicks TimeTicksFromXEventTime(Time timestamp) { | 
| int64_t timestamp64 = timestamp; | 
|  | 
| if (!timestamp) | 
| -    return base::TimeDelta(); | 
| +    return base::TimeTicks(); | 
|  | 
| // If this is the first event that we get, assume the time stamp roll-over | 
| // might have happened before the process was started. | 
| @@ -331,7 +332,8 @@ base::TimeDelta TimeDeltaFromXEventTime(Time timestamp) { | 
|  | 
| g_last_seen_timestamp_ms = timestamp64; | 
| if (!had_recent_rollover) | 
| -    return base::TimeDelta::FromMilliseconds(g_rollover_ms + timestamp); | 
| +    return base::TimeTicks() + | 
| +           base::TimeDelta::FromMilliseconds(g_rollover_ms + timestamp); | 
|  | 
| DCHECK(timestamp64 <= UINT32_MAX) | 
| << "X11 Time does not roll over 32 bit, the below logic is likely wrong"; | 
| @@ -348,7 +350,7 @@ base::TimeDelta TimeDeltaFromXEventTime(Time timestamp) { | 
| DCHECK(delta < 60 * 1000 || g_tick_clock.Get() != nullptr) | 
| << "Unexpected X11 event time, now: " << now_ticks | 
| << " event at: " << timestamp; | 
| -  return base::TimeDelta::FromMilliseconds(now_ms - delta); | 
| +  return base::TimeTicks() + base::TimeDelta::FromMilliseconds(now_ms - delta); | 
| } | 
|  | 
| }  // namespace | 
| @@ -525,41 +527,41 @@ int EventFlagsFromXEvent(const XEvent& xev) { | 
| return 0; | 
| } | 
|  | 
| -base::TimeDelta EventTimeFromXEvent(const XEvent& xev) { | 
| +base::TimeTicks EventTimeFromXEvent(const XEvent& xev) { | 
| switch (xev.type) { | 
| case KeyPress: | 
| case KeyRelease: | 
| -      return TimeDeltaFromXEventTime(xev.xkey.time); | 
| +      return TimeTicksFromXEventTime(xev.xkey.time); | 
| case ButtonPress: | 
| case ButtonRelease: | 
| -      return TimeDeltaFromXEventTime(xev.xbutton.time); | 
| +      return TimeTicksFromXEventTime(xev.xbutton.time); | 
| break; | 
| case MotionNotify: | 
| -      return TimeDeltaFromXEventTime(xev.xmotion.time); | 
| +      return TimeTicksFromXEventTime(xev.xmotion.time); | 
| break; | 
| case EnterNotify: | 
| case LeaveNotify: | 
| -      return TimeDeltaFromXEventTime(xev.xcrossing.time); | 
| +      return TimeTicksFromXEventTime(xev.xcrossing.time); | 
| break; | 
| case GenericEvent: { | 
| double start, end; | 
| double touch_timestamp; | 
| if (GetGestureTimes(xev, &start, &end)) { | 
| // If the driver supports gesture times, use them. | 
| -        return base::TimeDelta::FromMicroseconds(end * 1000000); | 
| +        return ui::EventTimeStampFromSeconds(end); | 
| } else if (DeviceDataManagerX11::GetInstance()->GetEventData( | 
| xev, DeviceDataManagerX11::DT_TOUCH_RAW_TIMESTAMP, | 
| &touch_timestamp)) { | 
| -        return base::TimeDelta::FromMicroseconds(touch_timestamp * 1000000); | 
| +        return ui::EventTimeStampFromSeconds(touch_timestamp); | 
| } else { | 
| XIDeviceEvent* xide = static_cast<XIDeviceEvent*>(xev.xcookie.data); | 
| -        return TimeDeltaFromXEventTime(xide->time); | 
| +        return TimeTicksFromXEventTime(xide->time); | 
| } | 
| break; | 
| } | 
| } | 
| NOTREACHED(); | 
| -  return base::TimeDelta(); | 
| +  return base::TimeTicks(); | 
| } | 
|  | 
| gfx::Point EventLocationFromXEvent(const XEvent& xev) { | 
|  |