Index: ui/events/event.cc |
diff --git a/ui/events/event.cc b/ui/events/event.cc |
index 0630356168c2e1efd1638dbb368d585079c6e6da..e391e207f4fce6afc687c3d79875dfb9fa74bf98 100644 |
--- a/ui/events/event.cc |
+++ b/ui/events/event.cc |
@@ -721,6 +721,24 @@ void TouchEvent::FixRotationAngle() { |
//////////////////////////////////////////////////////////////////////////////// |
// PointerEvent |
+bool PointerEvent::CanConvertFrom(const Event& event) { |
+ switch (event.type()) { |
+ case ET_MOUSE_PRESSED: |
+ case ET_MOUSE_DRAGGED: |
+ case ET_MOUSE_MOVED: |
+ case ET_MOUSE_ENTERED: |
+ case ET_MOUSE_EXITED: |
+ case ET_MOUSE_RELEASED: |
+ case ET_TOUCH_PRESSED: |
+ case ET_TOUCH_MOVED: |
+ case ET_TOUCH_RELEASED: |
+ case ET_TOUCH_CANCELLED: |
+ return true; |
+ default: |
+ return false; |
+ } |
+} |
+ |
PointerEvent::PointerEvent(const PointerEvent& pointer_event) |
: LocatedEvent(pointer_event), |
pointer_id_(pointer_event.pointer_id()), |
@@ -730,6 +748,7 @@ PointerEvent::PointerEvent(const MouseEvent& mouse_event) |
: LocatedEvent(mouse_event), |
pointer_id_(kMousePointerId), |
details_(mouse_event.pointer_details()) { |
+ DCHECK(CanConvertFrom(mouse_event)); |
switch (mouse_event.type()) { |
case ET_MOUSE_PRESSED: |
SetType(ET_POINTER_DOWN); |
@@ -761,6 +780,7 @@ PointerEvent::PointerEvent(const TouchEvent& touch_event) |
: LocatedEvent(touch_event), |
pointer_id_(touch_event.touch_id()), |
details_(touch_event.pointer_details()) { |
+ DCHECK(CanConvertFrom(touch_event)); |
switch (touch_event.type()) { |
case ET_TOUCH_PRESSED: |
SetType(ET_POINTER_DOWN); |