Index: components/html_viewer/blink_input_events_type_converters.cc |
diff --git a/components/html_viewer/blink_input_events_type_converters.cc b/components/html_viewer/blink_input_events_type_converters.cc |
index b1446ec92d7acdb47b585aaa9bd410e660e37576..0e8b1d67fbf74861e3b229ed23447b59591195d4 100644 |
--- a/components/html_viewer/blink_input_events_type_converters.cc |
+++ b/components/html_viewer/blink_input_events_type_converters.cc |
@@ -61,18 +61,18 @@ |
return 1; |
} |
-void SetWebMouseEventLocation(const mojo::LocationData& location_data, |
+void SetWebMouseEventLocation(const mojo::PointerData& pointer_data, |
blink::WebMouseEvent* web_event) { |
- web_event->x = static_cast<int>(location_data.x); |
- web_event->y = static_cast<int>(location_data.y); |
- web_event->globalX = static_cast<int>(location_data.screen_x); |
- web_event->globalY = static_cast<int>(location_data.screen_y); |
+ web_event->x = static_cast<int>(pointer_data.x); |
+ web_event->y = static_cast<int>(pointer_data.y); |
+ web_event->globalX = static_cast<int>(pointer_data.screen_x); |
+ web_event->globalY = static_cast<int>(pointer_data.screen_y); |
} |
scoped_ptr<blink::WebInputEvent> BuildWebMouseEventFrom(const EventPtr& event) { |
scoped_ptr<blink::WebMouseEvent> web_event(new blink::WebMouseEvent); |
- SetWebMouseEventLocation(*(event->pointer_data->location), web_event.get()); |
+ SetWebMouseEventLocation(*(event->pointer_data), web_event.get()); |
web_event->modifiers = EventFlagsToWebEventModifiers(event->flags); |
web_event->timeStampSeconds = EventTimeToWebEventTime(event); |
@@ -145,42 +145,20 @@ |
web_event->modifiers = EventFlagsToWebEventModifiers(event->flags); |
web_event->timeStampSeconds = EventTimeToWebEventTime(event); |
- SetWebMouseEventLocation(*(event->wheel_data->location), web_event.get()); |
+ SetWebMouseEventLocation(*(event->pointer_data), web_event.get()); |
- // TODO(rjkroege): Update the following code once Blink supports |
- // DOM Level 3 wheel events |
- // (http://www.w3.org/TR/DOM-Level-3-Events/#events-wheelevents) |
- web_event->deltaX = event->wheel_data->delta_x; |
- web_event->deltaY = event->wheel_data->delta_y; |
+ if ((event->flags & mojo::EVENT_FLAGS_SHIFT_DOWN) != 0 && |
+ event->pointer_data->horizontal_wheel == 0) { |
+ web_event->deltaX = event->pointer_data->horizontal_wheel; |
+ web_event->deltaY = 0; |
+ } else { |
+ web_event->deltaX = event->pointer_data->horizontal_wheel; |
+ web_event->deltaY = event->pointer_data->vertical_wheel; |
+ } |
+ // TODO(sky): resole this, doesn't work for desktop. |
web_event->wheelTicksX = web_event->deltaX / kPixelsPerTick; |
web_event->wheelTicksY = web_event->deltaY / kPixelsPerTick; |
- |
- // TODO(rjkroege): Mandoline currently only generates WHEEL_MODE_LINE |
- // wheel events so the other modes are not yet tested. Verify that |
- // the implementation is correct. |
- switch (event->wheel_data->mode) { |
- case mojo::WHEEL_MODE_PIXEL: |
- web_event->hasPreciseScrollingDeltas = true; |
- web_event->scrollByPage = false; |
- web_event->canScroll = true; |
- break; |
- case mojo::WHEEL_MODE_LINE: |
- web_event->hasPreciseScrollingDeltas = false; |
- web_event->scrollByPage = false; |
- web_event->canScroll = true; |
- break; |
- case mojo::WHEEL_MODE_PAGE: |
- web_event->hasPreciseScrollingDeltas = false; |
- web_event->scrollByPage = true; |
- web_event->canScroll = true; |
- break; |
- case mojo::WHEEL_MODE_SCALING: |
- web_event->hasPreciseScrollingDeltas = false; |
- web_event->scrollByPage = false; |
- web_event->canScroll = false; |
- break; |
- } |
return web_event.Pass(); |
} |
@@ -191,20 +169,20 @@ |
scoped_ptr<blink::WebInputEvent> |
TypeConverter<scoped_ptr<blink::WebInputEvent>, EventPtr>::Convert( |
const EventPtr& event) { |
- switch (event->action) { |
- case mojo::EVENT_TYPE_POINTER_DOWN: |
- case mojo::EVENT_TYPE_POINTER_UP: |
- case mojo::EVENT_TYPE_POINTER_CANCEL: |
- case mojo::EVENT_TYPE_POINTER_MOVE: |
- if (event->pointer_data->kind == mojo::POINTER_KIND_MOUSE) |
- return BuildWebMouseEventFrom(event); |
- case mojo::EVENT_TYPE_WHEEL: |
+ if (event->action == mojo::EVENT_TYPE_POINTER_DOWN || |
+ event->action == mojo::EVENT_TYPE_POINTER_UP || |
+ event->action == mojo::EVENT_TYPE_POINTER_CANCEL || |
+ event->action == mojo::EVENT_TYPE_POINTER_MOVE) { |
+ if (event->pointer_data->horizontal_wheel != 0 || |
+ event->pointer_data->vertical_wheel != 0) { |
return BuildWebMouseWheelEventFrom(event); |
- case mojo::EVENT_TYPE_KEY_PRESSED: |
- case mojo::EVENT_TYPE_KEY_RELEASED: |
- return BuildWebKeyboardEvent(event); |
- case mojo::EVENT_TYPE_UNKNOWN: |
- return nullptr; |
+ } |
+ if (event->pointer_data->kind == mojo::POINTER_KIND_MOUSE) |
+ return BuildWebMouseEventFrom(event); |
+ } else if ((event->action == mojo::EVENT_TYPE_KEY_PRESSED || |
+ event->action == mojo::EVENT_TYPE_KEY_RELEASED) && |
+ event->key_data) { |
+ return BuildWebKeyboardEvent(event); |
} |
return nullptr; |
} |