summaryrefslogtreecommitdiffstats
path: root/mojo/services/native_viewport/native_viewport_impl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'mojo/services/native_viewport/native_viewport_impl.cc')
-rw-r--r--mojo/services/native_viewport/native_viewport_impl.cc24
1 files changed, 23 insertions, 1 deletions
diff --git a/mojo/services/native_viewport/native_viewport_impl.cc b/mojo/services/native_viewport/native_viewport_impl.cc
index bce78e3..777c8d2 100644
--- a/mojo/services/native_viewport/native_viewport_impl.cc
+++ b/mojo/services/native_viewport/native_viewport_impl.cc
@@ -47,7 +47,29 @@ void NativeViewportImpl::CreateGLES2ContextIfNeeded() {
gles2_->CreateContext(widget_, native_viewport_->GetSize());
}
-bool NativeViewportImpl::OnEvent(ui::Event* event) {
+bool NativeViewportImpl::OnEvent(ui::Event* ui_event) {
+ AllocationScope scope;
+
+ Event::Builder event;
+ event.set_action(ui_event->type());
+ event.set_time_stamp(ui_event->time_stamp().ToInternalValue());
+
+ if (ui_event->IsMouseEvent() || ui_event->IsTouchEvent()) {
+ ui::LocatedEvent* located_event = static_cast<ui::LocatedEvent*>(ui_event);
+ Point::Builder location;
+ location.set_x(located_event->location().x());
+ location.set_y(located_event->location().y());
+ event.set_location(location.Finish());
+ }
+
+ if (ui_event->IsTouchEvent()) {
+ ui::TouchEvent* touch_event = static_cast<ui::TouchEvent*>(ui_event);
+ TouchData::Builder touch_data;
+ touch_data.set_pointer_id(touch_event->touch_id());
+ event.set_touch_data(touch_data.Finish());
+ }
+
+ client_->HandleEvent(event.Finish());
return false;
}