Index: ui/events/event_utils.cc |
diff --git a/ui/events/event_utils.cc b/ui/events/event_utils.cc |
index e5a319e10f15bf0daab6633f98588eb86fd0b272..e4b384a47442200a13e29deb7aefadd74ba297a4 100644 |
--- a/ui/events/event_utils.cc |
+++ b/ui/events/event_utils.cc |
@@ -16,6 +16,53 @@ namespace { |
int g_custom_event_types = ET_LAST; |
} // namespace |
+scoped_ptr<Event> EventFromNative(const base::NativeEvent& native_event) { |
+ scoped_ptr<Event> event; |
+ EventType type = EventTypeFromNative(native_event); |
+ switch(type) { |
+ case ET_KEY_PRESSED: |
+ case ET_KEY_RELEASED: |
+ event.reset(new KeyEvent(native_event, false)); |
+ break; |
+ |
+ case ET_TRANSLATED_KEY_PRESS: |
+ case ET_TRANSLATED_KEY_RELEASE: |
+ // These should not be generated by native events. |
+ NOTREACHED(); |
+ break; |
+ |
+ case ET_MOUSE_PRESSED: |
+ case ET_MOUSE_DRAGGED: |
+ case ET_MOUSE_RELEASED: |
+ case ET_MOUSE_MOVED: |
+ case ET_MOUSE_ENTERED: |
+ case ET_MOUSE_EXITED: |
+ event.reset(new MouseEvent(native_event)); |
+ break; |
+ |
+ case ET_MOUSEWHEEL: |
+ event.reset(new MouseWheelEvent(native_event)); |
+ break; |
+ |
+ case ET_SCROLL_FLING_START: |
+ case ET_SCROLL_FLING_CANCEL: |
+ case ET_SCROLL: |
+ event.reset(new ScrollEvent(native_event)); |
+ break; |
+ |
+ case ET_TOUCH_RELEASED: |
+ case ET_TOUCH_PRESSED: |
+ case ET_TOUCH_MOVED: |
+ case ET_TOUCH_CANCELLED: |
+ event.reset(new TouchEvent(native_event)); |
+ break; |
+ |
+ default: |
+ break; |
+ } |
+ return event.Pass(); |
+} |
+ |
int RegisterCustomEventType() { |
return ++g_custom_event_types; |
} |