Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(318)

Unified Diff: components/html_viewer/blink_input_events_type_converters.cc

Issue 1362793002: Construct and check for mojo::Event's LocationData as needed. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Also audit wheel_data and brush_data. Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | components/html_viewer/html_frame.cc » ('j') | components/pdf_viewer/pdf_viewer.cc » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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:
« no previous file with comments | « no previous file | components/html_viewer/html_frame.cc » ('j') | components/pdf_viewer/pdf_viewer.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698