146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// found in the LICENSE file. 446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "mojo/services/public/cpp/input_events/input_events_type_converters.h" 646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#if defined(USE_X11) 803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include <X11/extensions/XInput2.h> 903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include <X11/Xlib.h> 1003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#endif 1103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 1246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "mojo/services/public/cpp/geometry/geometry_type_converters.h" 131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "mojo/services/public/cpp/input_events/lib/mojo_extended_key_event_data.h" 145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "mojo/services/public/interfaces/input_events/input_events.mojom.h" 1503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "ui/events/event_utils.h" 1646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "ui/events/keycodes/keyboard_codes.h" 1746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 1846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)namespace mojo { 1946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)COMPILE_ASSERT(static_cast<int32>(EVENT_FLAGS_NONE) == 215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) static_cast<int32>(ui::EF_NONE), 225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) event_flags_should_match); 235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)COMPILE_ASSERT(static_cast<int32>(EVENT_FLAGS_CAPS_LOCK_DOWN) == 245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) static_cast<int32>(ui::EF_CAPS_LOCK_DOWN), 255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) event_flags_should_match); 265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)COMPILE_ASSERT(static_cast<int32>(EVENT_FLAGS_SHIFT_DOWN) == 275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) static_cast<int32>(ui::EF_SHIFT_DOWN), 285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) event_flags_should_match); 295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)COMPILE_ASSERT(static_cast<int32>(EVENT_FLAGS_CONTROL_DOWN) == 305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) static_cast<int32>(ui::EF_CONTROL_DOWN), 315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) event_flags_should_match); 325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)COMPILE_ASSERT(static_cast<int32>(EVENT_FLAGS_ALT_DOWN) == 335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) static_cast<int32>(ui::EF_ALT_DOWN), 345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) event_flags_should_match); 355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)COMPILE_ASSERT(static_cast<int32>(EVENT_FLAGS_LEFT_MOUSE_BUTTON) == 365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) static_cast<int32>(ui::EF_LEFT_MOUSE_BUTTON), 375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) event_flags_should_match); 385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)COMPILE_ASSERT(static_cast<int32>(EVENT_FLAGS_MIDDLE_MOUSE_BUTTON) == 395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) static_cast<int32>(ui::EF_MIDDLE_MOUSE_BUTTON), 405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) event_flags_should_match); 415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)COMPILE_ASSERT(static_cast<int32>(EVENT_FLAGS_RIGHT_MOUSE_BUTTON) == 425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) static_cast<int32>(ui::EF_RIGHT_MOUSE_BUTTON), 435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) event_flags_should_match); 445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)COMPILE_ASSERT(static_cast<int32>(EVENT_FLAGS_COMMAND_DOWN) == 455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) static_cast<int32>(ui::EF_COMMAND_DOWN), 465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) event_flags_should_match); 475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)COMPILE_ASSERT(static_cast<int32>(EVENT_FLAGS_EXTENDED) == 485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) static_cast<int32>(ui::EF_EXTENDED), 495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) event_flags_should_match); 505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)COMPILE_ASSERT(static_cast<int32>(EVENT_FLAGS_IS_SYNTHESIZED) == 515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) static_cast<int32>(ui::EF_IS_SYNTHESIZED), 525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) event_flags_should_match); 535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)COMPILE_ASSERT(static_cast<int32>(EVENT_FLAGS_ALTGR_DOWN) == 545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) static_cast<int32>(ui::EF_ALTGR_DOWN), 555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) event_flags_should_match); 565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)COMPILE_ASSERT(static_cast<int32>(EVENT_FLAGS_MOD3_DOWN) == 575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) static_cast<int32>(ui::EF_MOD3_DOWN), 585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) event_flags_should_match); 595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// static 621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciEventType TypeConverter<EventType, ui::EventType>::Convert(ui::EventType type) { 635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#define MOJO_INPUT_EVENT_NAME(name) case ui::ET_##name: return EVENT_TYPE_##name 645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) switch (type) { 665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "mojo/services/public/cpp/input_events/lib/input_event_names.h" 675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case ui::ET_LAST: 685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) NOTREACHED(); 695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) break; 705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#undef MOJO_INPUT_EVENT_NAME 735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 745f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) NOTREACHED(); 755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return EVENT_TYPE_UNKNOWN; 765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 785f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// static 791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciui::EventType TypeConverter<ui::EventType, EventType>::Convert(EventType type) { 805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#define MOJO_INPUT_EVENT_NAME(name) case EVENT_TYPE_##name: return ui::ET_##name 815f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 825f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) switch (type) { 835f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "mojo/services/public/cpp/input_events/lib/input_event_names.h" 845f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 855f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 865f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#undef MOJO_INPUT_EVENT_NAME 875f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 885f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) NOTREACHED(); 895f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return ui::ET_UNKNOWN; 905f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 915f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 9246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// static 931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciEventPtr TypeConverter<EventPtr, ui::Event>::Convert(const ui::Event& input) { 9446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) EventPtr event(Event::New()); 951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci event->action = ConvertTo<EventType>(input.type()); 965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) event->flags = EventFlags(input.flags()); 9746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) event->time_stamp = input.time_stamp().ToInternalValue(); 9846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 9946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) if (input.IsMouseEvent() || input.IsTouchEvent()) { 10046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) const ui::LocatedEvent* located_event = 10146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) static_cast<const ui::LocatedEvent*>(&input); 10203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 10303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) LocationDataPtr location_data(LocationData::New()); 1041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci location_data->in_view_location = Point::From(located_event->location()); 10503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) if (input.HasNativeEvent()) { 10603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) location_data->screen_location = 1071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Point::From(ui::EventSystemLocationFromNative(input.native_event())); 10803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) } 10903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 11003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) event->location_data = location_data.Pass(); 11146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) } 11246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 11346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) if (input.IsTouchEvent()) { 11446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) const ui::TouchEvent* touch_event = 11546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) static_cast<const ui::TouchEvent*>(&input); 11646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) TouchDataPtr touch_data(TouchData::New()); 11746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) touch_data->pointer_id = touch_event->touch_id(); 11846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) event->touch_data = touch_data.Pass(); 11946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) } else if (input.IsKeyEvent()) { 12046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) const ui::KeyEvent* key_event = static_cast<const ui::KeyEvent*>(&input); 12146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) KeyDataPtr key_data(KeyData::New()); 1221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci key_data->key_code = key_event->GetConflatedWindowsKeyCode(); 12303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) key_data->native_key_code = key_event->platform_keycode(); 1241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci key_data->is_char = key_event->is_char(); 1251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci key_data->character = key_event->GetCharacter(); 12603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 1271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (key_event->extended_key_event_data()) { 12803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) const MojoExtendedKeyEventData* data = 12903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) static_cast<const MojoExtendedKeyEventData*>( 13003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) key_event->extended_key_event_data()); 13103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) key_data->windows_key_code = static_cast<mojo::KeyboardCode>( 13203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) data->windows_key_code()); 13303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) key_data->text = data->text(); 13403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) key_data->unmodified_text = data->unmodified_text(); 13503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) } else { 1361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci key_data->windows_key_code = static_cast<mojo::KeyboardCode>( 1371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci key_event->GetLocatedWindowsKeyboardCode()); 1381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci key_data->text = key_event->GetText(); 1391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci key_data->unmodified_text = key_event->GetUnmodifiedText(); 14003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) } 14103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 14246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) event->key_data = key_data.Pass(); 143116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } else if (input.IsMouseWheelEvent()) { 144116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const ui::MouseWheelEvent* wheel_event = 145116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch static_cast<const ui::MouseWheelEvent*>(&input); 146116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch MouseWheelDataPtr wheel_data(MouseWheelData::New()); 147116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch wheel_data->x_offset = wheel_event->x_offset(); 148116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch wheel_data->y_offset = wheel_event->y_offset(); 149116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch event->wheel_data = wheel_data.Pass(); 15046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) } 15146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) return event.Pass(); 15246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)} 15346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 154f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// static 1551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciEventPtr TypeConverter<EventPtr, ui::KeyEvent>::Convert( 156116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const ui::KeyEvent& input) { 157116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return Event::From(static_cast<const ui::Event&>(input)); 158116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 159116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 160116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// static 1611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciscoped_ptr<ui::Event> TypeConverter<scoped_ptr<ui::Event>, EventPtr>::Convert( 162f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) const EventPtr& input) { 163f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) scoped_ptr<ui::Event> ui_event; 1641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ui::EventType ui_event_type = ConvertTo<ui::EventType>(input->action); 16503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 16603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) gfx::Point location; 16703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) if (!input->location_data.is_null() && 16803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) !input->location_data->in_view_location.is_null()) { 1691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci location = input->location_data->in_view_location.To<gfx::Point>(); 17003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) } 17103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 172f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) switch (input->action) { 173f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) case ui::ET_KEY_PRESSED: 17403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) case ui::ET_KEY_RELEASED: { 17503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) scoped_ptr<ui::KeyEvent> key_event; 1765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (input->key_data->is_char) { 17703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) key_event.reset(new ui::KeyEvent( 1781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci static_cast<base::char16>(input->key_data->character), 1791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci static_cast<ui::KeyboardCode>( 1801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci input->key_data->key_code), 1811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci input->flags)); 1825f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } else { 18303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) key_event.reset(new ui::KeyEvent( 1841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ui_event_type, 1851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci static_cast<ui::KeyboardCode>( 1861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci input->key_data->key_code), 1871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci input->flags)); 1885f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 18903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) key_event->SetExtendedKeyEventData(scoped_ptr<ui::ExtendedKeyEventData>( 19003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) new MojoExtendedKeyEventData( 19103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) static_cast<int32_t>(input->key_data->windows_key_code), 19203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) input->key_data->text, 19303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) input->key_data->unmodified_text))); 19403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) key_event->set_platform_keycode(input->key_data->native_key_code); 19503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) ui_event = key_event.PassAs<ui::KeyEvent>(); 196f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) break; 19703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) } 1985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case EVENT_TYPE_MOUSE_PRESSED: 1995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case EVENT_TYPE_MOUSE_DRAGGED: 2005f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case EVENT_TYPE_MOUSE_RELEASED: 2015f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case EVENT_TYPE_MOUSE_MOVED: 2025f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case EVENT_TYPE_MOUSE_ENTERED: 2035f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case EVENT_TYPE_MOUSE_EXITED: { 204116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // TODO: last flags isn't right. Need to send changed_flags. 205116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ui_event.reset(new ui::MouseEvent( 2065f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ui_event_type, 207116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch location, 208116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch location, 2095f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ui::EventFlags(input->flags), 2105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ui::EventFlags(input->flags))); 211116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch break; 212116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 2135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case EVENT_TYPE_MOUSEWHEEL: { 214116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const gfx::Vector2d offset(input->wheel_data->x_offset, 215116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch input->wheel_data->y_offset); 216116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ui_event.reset(new ui::MouseWheelEvent(offset, 217116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch location, 218116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch location, 2195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ui::EventFlags(input->flags), 2205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ui::EventFlags(input->flags))); 221116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch break; 222116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 2235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case EVENT_TYPE_TOUCH_MOVED: 2245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case EVENT_TYPE_TOUCH_PRESSED: 2255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case EVENT_TYPE_TOUCH_CANCELLED: 2265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case EVENT_TYPE_TOUCH_RELEASED: { 227116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ui_event.reset(new ui::TouchEvent( 2285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ui_event_type, 229116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch location, 2305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ui::EventFlags(input->flags), 231116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch input->touch_data->pointer_id, 232116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch base::TimeDelta::FromInternalValue(input->time_stamp), 233116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 0.f, 0.f, 0.f, 0.f)); 234116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch break; 235116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 236f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) default: 237f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // TODO: support other types. 238f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // NOTIMPLEMENTED(); 239f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) ; 240f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) } 241f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // TODO: need to support time_stamp. 242f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) return ui_event.Pass(); 243f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} 244f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 24546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)} // namespace mojo 246