1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 2116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// found in the LICENSE file. 4116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 5116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "mojo/services/html_viewer/blink_input_events_type_converters.h" 6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "base/logging.h" 8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/time/time.h" 903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "mojo/services/public/interfaces/input_events/input_event_constants.mojom.h" 10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "third_party/WebKit/public/web/WebInputEvent.h" 11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 12116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace mojo { 13116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace { 14116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 15116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Used for scrolling. This matches Firefox behavior. 16116680a4aac90f2aa7413d9095a592090648e557Ben Murdochconst int kPixelsPerTick = 53; 17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 18116680a4aac90f2aa7413d9095a592090648e557Ben Murdochint EventFlagsToWebEventModifiers(int flags) { 19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch int modifiers = 0; 20116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 2103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) if (flags & mojo::EVENT_FLAGS_SHIFT_DOWN) 22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch modifiers |= blink::WebInputEvent::ShiftKey; 2303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) if (flags & mojo::EVENT_FLAGS_CONTROL_DOWN) 24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch modifiers |= blink::WebInputEvent::ControlKey; 2503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) if (flags & mojo::EVENT_FLAGS_ALT_DOWN) 26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch modifiers |= blink::WebInputEvent::AltKey; 27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // TODO(beng): MetaKey/META_MASK 2803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) if (flags & mojo::EVENT_FLAGS_LEFT_MOUSE_BUTTON) 29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch modifiers |= blink::WebInputEvent::LeftButtonDown; 3003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) if (flags & mojo::EVENT_FLAGS_MIDDLE_MOUSE_BUTTON) 31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch modifiers |= blink::WebInputEvent::MiddleButtonDown; 3203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) if (flags & mojo::EVENT_FLAGS_RIGHT_MOUSE_BUTTON) 33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch modifiers |= blink::WebInputEvent::RightButtonDown; 3403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) if (flags & mojo::EVENT_FLAGS_CAPS_LOCK_DOWN) 35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch modifiers |= blink::WebInputEvent::CapsLockOn; 36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return modifiers; 37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 39116680a4aac90f2aa7413d9095a592090648e557Ben Murdochint EventFlagsToWebInputEventModifiers(int flags) { 40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return 4103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) (flags & mojo::EVENT_FLAGS_SHIFT_DOWN ? 4203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) blink::WebInputEvent::ShiftKey : 0) | 4303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) (flags & mojo::EVENT_FLAGS_CONTROL_DOWN ? 4403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) blink::WebInputEvent::ControlKey : 0) | 4503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) (flags & mojo::EVENT_FLAGS_CAPS_LOCK_DOWN ? 4603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) blink::WebInputEvent::CapsLockOn : 0) | 4703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) (flags & mojo::EVENT_FLAGS_ALT_DOWN ? 4803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) blink::WebInputEvent::AltKey : 0); 49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 51116680a4aac90f2aa7413d9095a592090648e557Ben Murdochint GetClickCount(int flags) { 5203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) if (flags & mojo::MOUSE_EVENT_FLAGS_IS_TRIPLE_CLICK) 53116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return 3; 5403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) else if (flags & mojo::MOUSE_EVENT_FLAGS_IS_DOUBLE_CLICK) 55116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return 2; 56116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 57116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return 1; 58116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 59116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 6003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)scoped_ptr<blink::WebInputEvent> BuildWebMouseEventFrom(const EventPtr& event) { 6103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) scoped_ptr<blink::WebMouseEvent> web_event(new blink::WebMouseEvent); 6203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) web_event->x = event->location_data->in_view_location->x; 6303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) web_event->y = event->location_data->in_view_location->y; 6403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 6503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) // TODO(erg): Remove this if check once we can rely on screen_location 6603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) // actually being passed to us. As written today, getting the screen 6703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) // location from ui::Event objects can only be done by querying the 6803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) // underlying native events, so all synthesized events don't have screen 6903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) // locations. 7003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) if (!event->location_data->screen_location.is_null()) { 7103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) web_event->globalX = event->location_data->screen_location->x; 7203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) web_event->globalY = event->location_data->screen_location->y; 7303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) } 7403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 7503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) web_event->modifiers = EventFlagsToWebEventModifiers(event->flags); 7603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) web_event->timeStampSeconds = 7703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) base::TimeDelta::FromInternalValue(event->time_stamp).InSecondsF(); 7803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 7903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) web_event->button = blink::WebMouseEvent::ButtonNone; 8003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) if (event->flags & mojo::EVENT_FLAGS_LEFT_MOUSE_BUTTON) 8103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) web_event->button = blink::WebMouseEvent::ButtonLeft; 8203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) if (event->flags & mojo::EVENT_FLAGS_MIDDLE_MOUSE_BUTTON) 8303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) web_event->button = blink::WebMouseEvent::ButtonMiddle; 8403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) if (event->flags & mojo::EVENT_FLAGS_RIGHT_MOUSE_BUTTON) 8503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) web_event->button = blink::WebMouseEvent::ButtonRight; 8603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 8703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) switch (event->action) { 8803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) case EVENT_TYPE_MOUSE_PRESSED: 8903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) web_event->type = blink::WebInputEvent::MouseDown; 9003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) break; 9103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) case EVENT_TYPE_MOUSE_RELEASED: 9203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) web_event->type = blink::WebInputEvent::MouseUp; 9303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) break; 9403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) case EVENT_TYPE_MOUSE_ENTERED: 9503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) web_event->type = blink::WebInputEvent::MouseLeave; 9603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) web_event->button = blink::WebMouseEvent::ButtonNone; 9703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) break; 9803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) case EVENT_TYPE_MOUSE_EXITED: 9903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) case EVENT_TYPE_MOUSE_MOVED: 10003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) case EVENT_TYPE_MOUSE_DRAGGED: 10103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) web_event->type = blink::WebInputEvent::MouseMove; 10203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) break; 10303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) default: 10403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) NOTIMPLEMENTED() << "Received unexpected event: " << event->action; 10503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) break; 10603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) } 10703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 10803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) web_event->clickCount = GetClickCount(event->flags); 10903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 11003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) return web_event.PassAs<blink::WebInputEvent>(); 11103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)} 11203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 11303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)scoped_ptr<blink::WebInputEvent> BuildWebKeyboardEvent( 11403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) const EventPtr& event) { 11503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) scoped_ptr<blink::WebKeyboardEvent> web_event(new blink::WebKeyboardEvent); 11603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 11703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) web_event->modifiers = EventFlagsToWebInputEventModifiers(event->flags); 11803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) web_event->timeStampSeconds = 11903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) base::TimeDelta::FromInternalValue(event->time_stamp).InSecondsF(); 12003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 12103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) switch (event->action) { 12203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) case EVENT_TYPE_KEY_PRESSED: 1231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci web_event->type = event->key_data->is_char ? blink::WebInputEvent::Char : 12403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) blink::WebInputEvent::RawKeyDown; 12503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) break; 12603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) case EVENT_TYPE_KEY_RELEASED: 12703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) web_event->type = blink::WebInputEvent::KeyUp; 12803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) break; 12903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) default: 13003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) NOTREACHED(); 13103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) } 13203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 13303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) if (web_event->modifiers & blink::WebInputEvent::AltKey) 13403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) web_event->isSystemKey = true; 13503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 13603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) web_event->windowsKeyCode = event->key_data->windows_key_code; 13703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) web_event->nativeKeyCode = event->key_data->native_key_code; 13803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) web_event->text[0] = event->key_data->text; 13903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) web_event->unmodifiedText[0] = event->key_data->unmodified_text; 14003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 14103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) web_event->setKeyIdentifierFromWindowsKeyCode(); 14203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) return web_event.PassAs<blink::WebInputEvent>(); 14303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)} 14403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 14503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)scoped_ptr<blink::WebInputEvent> BuildWebMouseWheelEventFrom( 14603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) const EventPtr& event) { 14703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) scoped_ptr<blink::WebMouseWheelEvent> web_event( 14803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) new blink::WebMouseWheelEvent); 14903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) web_event->type = blink::WebInputEvent::MouseWheel; 15003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) web_event->button = blink::WebMouseEvent::ButtonNone; 15103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) web_event->modifiers = EventFlagsToWebEventModifiers(event->flags); 15203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) web_event->timeStampSeconds = 15303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) base::TimeDelta::FromInternalValue(event->time_stamp).InSecondsF(); 15403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 15503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) web_event->x = event->location_data->in_view_location->x; 15603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) web_event->y = event->location_data->in_view_location->y; 15703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 15803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) // TODO(erg): Remove this null check as parallel to above. 15903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) if (!event->location_data->screen_location.is_null()) { 16003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) web_event->globalX = event->location_data->screen_location->x; 16103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) web_event->globalY = event->location_data->screen_location->y; 16203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) } 16303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 16403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) if ((event->flags & mojo::EVENT_FLAGS_SHIFT_DOWN) != 0 && 16503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) event->wheel_data->x_offset == 0) { 16603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) web_event->deltaX = event->wheel_data->y_offset; 16703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) web_event->deltaY = 0; 16803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) } else { 16903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) web_event->deltaX = event->wheel_data->x_offset; 17003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) web_event->deltaY = event->wheel_data->y_offset; 17103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) } 17203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 17303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) web_event->wheelTicksX = web_event->deltaX / kPixelsPerTick; 17403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) web_event->wheelTicksY = web_event->deltaY / kPixelsPerTick; 17503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 17603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) return web_event.PassAs<blink::WebInputEvent>(); 17703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)} 17803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 179116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} // namespace 180116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 181116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// static 182116680a4aac90f2aa7413d9095a592090648e557Ben Murdochscoped_ptr<blink::WebInputEvent> 1831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTypeConverter<scoped_ptr<blink::WebInputEvent>, EventPtr>::Convert( 184116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const EventPtr& event) { 1855f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (event->action == EVENT_TYPE_MOUSE_PRESSED || 1865f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) event->action == EVENT_TYPE_MOUSE_RELEASED || 1875f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) event->action == EVENT_TYPE_MOUSE_ENTERED || 1885f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) event->action == EVENT_TYPE_MOUSE_EXITED || 1895f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) event->action == EVENT_TYPE_MOUSE_MOVED || 1905f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) event->action == EVENT_TYPE_MOUSE_DRAGGED) { 19103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) return BuildWebMouseEventFrom(event); 1925f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } else if ((event->action == EVENT_TYPE_KEY_PRESSED || 1935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) event->action == EVENT_TYPE_KEY_RELEASED) && 194116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch event->key_data) { 19503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) return BuildWebKeyboardEvent(event); 1965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } else if (event->action == EVENT_TYPE_MOUSEWHEEL) { 19703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) return BuildWebMouseWheelEventFrom(event); 198116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 199116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 200116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return scoped_ptr<blink::WebInputEvent>(); 201116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 202116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 203116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} // namespace mojo 204