| 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..33f7bad152d6d32a87eb8455cb8b609db69d9a16 100644
|
| --- a/components/html_viewer/blink_input_events_type_converters.cc
|
| +++ b/components/html_viewer/blink_input_events_type_converters.cc
|
| @@ -72,7 +72,8 @@ void SetWebMouseEventLocation(const mojo::LocationData& location_data,
|
| 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());
|
| + if (event->pointer_data && event->pointer_data->location)
|
| + SetWebMouseEventLocation(*(event->pointer_data->location), web_event.get());
|
|
|
| web_event->modifiers = EventFlagsToWebEventModifiers(event->flags);
|
| web_event->timeStampSeconds = EventTimeToWebEventTime(event);
|
| @@ -145,41 +146,44 @@ scoped_ptr<blink::WebInputEvent> BuildWebMouseWheelEventFrom(
|
| web_event->modifiers = EventFlagsToWebEventModifiers(event->flags);
|
| web_event->timeStampSeconds = EventTimeToWebEventTime(event);
|
|
|
| - SetWebMouseEventLocation(*(event->wheel_data->location), 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;
|
| -
|
| - 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;
|
| + if (event->wheel_data) {
|
| + if (event->wheel_data->location)
|
| + SetWebMouseEventLocation(*(event->wheel_data->location), 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;
|
| +
|
| + 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();
|
| @@ -196,8 +200,10 @@ TypeConverter<scoped_ptr<blink::WebInputEvent>, EventPtr>::Convert(
|
| 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)
|
| + if (event->pointer_data &&
|
| + event->pointer_data->kind == mojo::POINTER_KIND_MOUSE) {
|
| return BuildWebMouseEventFrom(event);
|
| + }
|
| case mojo::EVENT_TYPE_WHEEL:
|
| return BuildWebMouseWheelEventFrom(event);
|
| case mojo::EVENT_TYPE_KEY_PRESSED:
|
|
|