Index: ui/events/event.cc |
diff --git a/ui/events/event.cc b/ui/events/event.cc |
index 7dc7fb1fe25a421227ddaa7a689d4d8a2cac1cd2..9170b0d0222ea56be7dc71543de6f0d728aa987b 100644 |
--- a/ui/events/event.cc |
+++ b/ui/events/event.cc |
@@ -147,7 +147,8 @@ Event::Event(EventType type, base::TimeDelta time_stamp, int flags) |
cancelable_(true), |
target_(NULL), |
phase_(EP_PREDISPATCH), |
- result_(ER_UNHANDLED) { |
+ result_(ER_UNHANDLED), |
+ source_device_id_(ED_UNKNOWN_DEVICE) { |
if (type_ < ET_LAST) |
name_ = EventTypeName(type_); |
} |
@@ -163,7 +164,8 @@ Event::Event(const base::NativeEvent& native_event, |
cancelable_(true), |
target_(NULL), |
phase_(EP_PREDISPATCH), |
- result_(ER_UNHANDLED) { |
+ result_(ER_UNHANDLED), |
+ source_device_id_(ED_UNKNOWN_DEVICE) { |
base::TimeDelta delta = EventTimeForNow() - time_stamp_; |
if (type_ < ET_LAST) |
name_ = EventTypeName(type_); |
@@ -179,6 +181,14 @@ Event::Event(const base::NativeEvent& native_event, |
100, |
base::HistogramBase::kUmaTargetedHistogramFlag); |
counter_for_type->Add(delta.InMicroseconds()); |
+ |
+#if defined(USE_X11) |
+ if (native_event->type == GenericEvent) { |
+ XIDeviceEvent* xiev = |
+ static_cast<XIDeviceEvent*>(native_event->xcookie.data); |
+ source_device_id_ = xiev->deviceid; |
+ } |
+#endif |
} |
Event::Event(const Event& copy) |
@@ -191,7 +201,8 @@ Event::Event(const Event& copy) |
cancelable_(true), |
target_(NULL), |
phase_(EP_PREDISPATCH), |
- result_(ER_UNHANDLED) { |
+ result_(ER_UNHANDLED), |
+ source_device_id_(copy.source_device_id_) { |
if (type_ < ET_LAST) |
name_ = EventTypeName(type_); |
} |
@@ -428,8 +439,7 @@ TouchEvent::TouchEvent(const base::NativeEvent& native_event) |
radius_x_(GetTouchRadiusX(native_event)), |
radius_y_(GetTouchRadiusY(native_event)), |
rotation_angle_(GetTouchAngle(native_event)), |
- force_(GetTouchForce(native_event)), |
- source_device_id_(-1) { |
+ force_(GetTouchForce(native_event)) { |
latency()->AddLatencyNumberWithTimestamp( |
INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, |
0, |
@@ -437,11 +447,6 @@ TouchEvent::TouchEvent(const base::NativeEvent& native_event) |
base::TimeTicks::FromInternalValue(time_stamp().ToInternalValue()), |
1); |
-#if defined(USE_X11) |
- XIDeviceEvent* xiev = static_cast<XIDeviceEvent*>(native_event->xcookie.data); |
- source_device_id_ = xiev->deviceid; |
-#endif |
- |
latency()->AddLatencyNumber(INPUT_EVENT_LATENCY_UI_COMPONENT, 0, 0); |
} |
@@ -454,8 +459,7 @@ TouchEvent::TouchEvent(EventType type, |
radius_x_(0.0f), |
radius_y_(0.0f), |
rotation_angle_(0.0f), |
- force_(0.0f), |
- source_device_id_(-1) { |
+ force_(0.0f) { |
latency()->AddLatencyNumber(INPUT_EVENT_LATENCY_UI_COMPONENT, 0, 0); |
} |
@@ -473,8 +477,7 @@ TouchEvent::TouchEvent(EventType type, |
radius_x_(radius_x), |
radius_y_(radius_y), |
rotation_angle_(angle), |
- force_(force), |
- source_device_id_(-1) { |
+ force_(force) { |
latency()->AddLatencyNumber(INPUT_EVENT_LATENCY_UI_COMPONENT, 0, 0); |
} |
@@ -590,7 +593,10 @@ uint16 KeyEvent::GetCharacter() const { |
return GetCharacterFromKeyCode(key_code_, flags()); |
DCHECK(native_event()->type == KeyPress || |
- native_event()->type == KeyRelease); |
+ native_event()->type == KeyRelease || |
+ (native_event()->type == GenericEvent && |
+ (native_event()->xgeneric.evtype == XI_KeyPress || |
+ native_event()->xgeneric.evtype == XI_KeyRelease))); |
// When a control key is held, prefer ASCII characters to non ASCII |
// characters in order to use it for shortcut keys. GetCharacterFromKeyCode |