Index: mojo/services/public/cpp/input_events/lib/input_events_type_converters.cc |
diff --git a/mojo/services/public/cpp/input_events/lib/input_events_type_converters.cc b/mojo/services/public/cpp/input_events/lib/input_events_type_converters.cc |
index dbd8f70848ffc28ea54efbcbafbf87b4039f1339..cff22d45f3d342ba704be09816f4c3985f7346f9 100644 |
--- a/mojo/services/public/cpp/input_events/lib/input_events_type_converters.cc |
+++ b/mojo/services/public/cpp/input_events/lib/input_events_type_converters.cc |
@@ -5,16 +5,95 @@ |
#include "mojo/services/public/cpp/input_events/input_events_type_converters.h" |
#include "mojo/services/public/cpp/geometry/geometry_type_converters.h" |
+#include "mojo/services/public/interfaces/input_events/input_events.mojom.h" |
#include "ui/events/keycodes/keyboard_codes.h" |
namespace mojo { |
+COMPILE_ASSERT(static_cast<int32>(EVENT_FLAGS_NONE) == |
+ static_cast<int32>(ui::EF_NONE), |
+ event_flags_should_match); |
+COMPILE_ASSERT(static_cast<int32>(EVENT_FLAGS_CAPS_LOCK_DOWN) == |
+ static_cast<int32>(ui::EF_CAPS_LOCK_DOWN), |
+ event_flags_should_match); |
+COMPILE_ASSERT(static_cast<int32>(EVENT_FLAGS_SHIFT_DOWN) == |
+ static_cast<int32>(ui::EF_SHIFT_DOWN), |
+ event_flags_should_match); |
+COMPILE_ASSERT(static_cast<int32>(EVENT_FLAGS_CONTROL_DOWN) == |
+ static_cast<int32>(ui::EF_CONTROL_DOWN), |
+ event_flags_should_match); |
+COMPILE_ASSERT(static_cast<int32>(EVENT_FLAGS_ALT_DOWN) == |
+ static_cast<int32>(ui::EF_ALT_DOWN), |
+ event_flags_should_match); |
+COMPILE_ASSERT(static_cast<int32>(EVENT_FLAGS_LEFT_MOUSE_BUTTON) == |
+ static_cast<int32>(ui::EF_LEFT_MOUSE_BUTTON), |
+ event_flags_should_match); |
+COMPILE_ASSERT(static_cast<int32>(EVENT_FLAGS_MIDDLE_MOUSE_BUTTON) == |
+ static_cast<int32>(ui::EF_MIDDLE_MOUSE_BUTTON), |
+ event_flags_should_match); |
+COMPILE_ASSERT(static_cast<int32>(EVENT_FLAGS_RIGHT_MOUSE_BUTTON) == |
+ static_cast<int32>(ui::EF_RIGHT_MOUSE_BUTTON), |
+ event_flags_should_match); |
+COMPILE_ASSERT(static_cast<int32>(EVENT_FLAGS_COMMAND_DOWN) == |
+ static_cast<int32>(ui::EF_COMMAND_DOWN), |
+ event_flags_should_match); |
+COMPILE_ASSERT(static_cast<int32>(EVENT_FLAGS_EXTENDED) == |
+ static_cast<int32>(ui::EF_EXTENDED), |
+ event_flags_should_match); |
+COMPILE_ASSERT(static_cast<int32>(EVENT_FLAGS_IS_SYNTHESIZED) == |
+ static_cast<int32>(ui::EF_IS_SYNTHESIZED), |
+ event_flags_should_match); |
+COMPILE_ASSERT(static_cast<int32>(EVENT_FLAGS_ALTGR_DOWN) == |
+ static_cast<int32>(ui::EF_ALTGR_DOWN), |
+ event_flags_should_match); |
+COMPILE_ASSERT(static_cast<int32>(EVENT_FLAGS_MOD3_DOWN) == |
+ static_cast<int32>(ui::EF_MOD3_DOWN), |
+ event_flags_should_match); |
+ |
+ |
+// static |
+EventType TypeConverter<EventType, ui::EventType>::ConvertFrom( |
+ ui::EventType type) { |
+ |
+#define MOJO_INPUT_EVENT_NAME(name) case ui::ET_##name: return EVENT_TYPE_##name |
+ |
+ switch (type) { |
+#include "mojo/services/public/cpp/input_events/lib/input_event_names.h" |
+ case ui::ET_LAST: |
+ NOTREACHED(); |
+ break; |
+ } |
+ |
+#undef MOJO_INPUT_EVENT_NAME |
+ |
+ NOTREACHED(); |
+ return EVENT_TYPE_UNKNOWN; |
+} |
+ |
+// static |
+ui::EventType TypeConverter<EventType, ui::EventType>::ConvertTo( |
+ EventType type) { |
+ |
+#define MOJO_INPUT_EVENT_NAME(name) case EVENT_TYPE_##name: return ui::ET_##name |
+ |
+ switch (type) { |
+#include "mojo/services/public/cpp/input_events/lib/input_event_names.h" |
+ } |
+ |
+#undef MOJO_INPUT_EVENT_NAME |
+ |
+ NOTREACHED(); |
+ return ui::ET_UNKNOWN; |
+} |
+ |
+ |
// static |
EventPtr TypeConverter<EventPtr, ui::Event>::ConvertFrom( |
const ui::Event& input) { |
EventPtr event(Event::New()); |
- event->action = input.type(); |
- event->flags = input.flags(); |
+ event->action = TypeConverter<EventType, ui::EventType>::ConvertFrom( |
+ input.type()); |
+ event->flags = EventFlags(input.flags()); |
event->time_stamp = input.time_stamp().ToInternalValue(); |
if (input.IsMouseEvent() || input.IsTouchEvent()) { |
@@ -59,34 +138,36 @@ scoped_ptr<ui::Event> |
TypeConverter<EventPtr, scoped_ptr<ui::Event> >::ConvertTo( |
const EventPtr& input) { |
scoped_ptr<ui::Event> ui_event; |
+ ui::EventType ui_event_type = |
+ TypeConverter<EventType, ui::EventType>::ConvertTo(input->action); |
switch (input->action) { |
- case ui::ET_KEY_PRESSED: |
- case ui::ET_KEY_RELEASED: |
+ case EVENT_TYPE_KEY_PRESSED: |
+ case EVENT_TYPE_KEY_RELEASED: |
ui_event.reset(new ui::KeyEvent( |
- static_cast<ui::EventType>(input->action), |
+ ui_event_type, |
static_cast<ui::KeyboardCode>( |
input->key_data->key_code), |
- input->flags, |
+ ui::EventFlags(input->flags), |
input->key_data->is_char)); |
break; |
- case ui::ET_MOUSE_PRESSED: |
- case ui::ET_MOUSE_DRAGGED: |
- case ui::ET_MOUSE_RELEASED: |
- case ui::ET_MOUSE_MOVED: |
- case ui::ET_MOUSE_ENTERED: |
- case ui::ET_MOUSE_EXITED: { |
+ case EVENT_TYPE_MOUSE_PRESSED: |
+ case EVENT_TYPE_MOUSE_DRAGGED: |
+ case EVENT_TYPE_MOUSE_RELEASED: |
+ case EVENT_TYPE_MOUSE_MOVED: |
+ case EVENT_TYPE_MOUSE_ENTERED: |
+ case EVENT_TYPE_MOUSE_EXITED: { |
const gfx::PointF location(TypeConverter<PointPtr, gfx::Point>::ConvertTo( |
input->location)); |
// TODO: last flags isn't right. Need to send changed_flags. |
ui_event.reset(new ui::MouseEvent( |
- static_cast<ui::EventType>(input->action), |
+ ui_event_type, |
location, |
location, |
- input->flags, |
- input->flags)); |
+ ui::EventFlags(input->flags), |
+ ui::EventFlags(input->flags))); |
break; |
} |
- case ui::ET_MOUSEWHEEL: { |
+ case EVENT_TYPE_MOUSEWHEEL: { |
const gfx::PointF location(TypeConverter<PointPtr, gfx::Point>::ConvertTo( |
input->location)); |
const gfx::Vector2d offset(input->wheel_data->x_offset, |
@@ -94,19 +175,19 @@ TypeConverter<EventPtr, scoped_ptr<ui::Event> >::ConvertTo( |
ui_event.reset(new ui::MouseWheelEvent(offset, |
location, |
location, |
- input->flags, |
- input->flags)); |
+ ui::EventFlags(input->flags), |
+ ui::EventFlags(input->flags))); |
break; |
} |
- case ui::ET_TOUCH_MOVED: |
- case ui::ET_TOUCH_PRESSED: |
- case ui::ET_TOUCH_CANCELLED: |
- case ui::ET_TOUCH_RELEASED: { |
+ case EVENT_TYPE_TOUCH_MOVED: |
+ case EVENT_TYPE_TOUCH_PRESSED: |
+ case EVENT_TYPE_TOUCH_CANCELLED: |
+ case EVENT_TYPE_TOUCH_RELEASED: { |
gfx::Point location(input->location->x, input->location->y); |
ui_event.reset(new ui::TouchEvent( |
- static_cast<ui::EventType>(input->action), |
+ ui_event_type, |
location, |
- input->flags, |
+ ui::EventFlags(input->flags), |
input->touch_data->pointer_id, |
base::TimeDelta::FromInternalValue(input->time_stamp), |
0.f, 0.f, 0.f, 0.f)); |