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

Side by Side Diff: components/html_viewer/blink_input_events_type_converters.cc

Issue 1313353010: Overhaul Mandoline event transport code (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fixed gn check 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 unified diff | Download patch
« no previous file with comments | « components/html_viewer/DEPS ('k') | components/html_viewer/html_frame.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/html_viewer/blink_input_events_type_converters.h" 5 #include "components/html_viewer/blink_input_events_type_converters.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/time/time.h" 8 #include "base/time/time.h"
9 #include "third_party/WebKit/public/web/WebInputEvent.h" 9 #include "third_party/WebKit/public/web/WebInputEvent.h"
10 #include "ui/mojo/events/input_event_constants.mojom.h" 10 #include "ui/mojo/events/input_event_constants.mojom.h"
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 54
55 int GetClickCount(int flags) { 55 int GetClickCount(int flags) {
56 if (flags & mojo::MOUSE_EVENT_FLAGS_IS_TRIPLE_CLICK) 56 if (flags & mojo::MOUSE_EVENT_FLAGS_IS_TRIPLE_CLICK)
57 return 3; 57 return 3;
58 else if (flags & mojo::MOUSE_EVENT_FLAGS_IS_DOUBLE_CLICK) 58 else if (flags & mojo::MOUSE_EVENT_FLAGS_IS_DOUBLE_CLICK)
59 return 2; 59 return 2;
60 60
61 return 1; 61 return 1;
62 } 62 }
63 63
64 void SetWebMouseEventLocation(const mojo::PointerData& pointer_data, 64 void SetWebMouseEventLocation(const mojo::LocationData& location_data,
65 blink::WebMouseEvent* web_event) { 65 blink::WebMouseEvent* web_event) {
66 web_event->x = static_cast<int>(pointer_data.x); 66 web_event->x = static_cast<int>(location_data.x);
67 web_event->y = static_cast<int>(pointer_data.y); 67 web_event->y = static_cast<int>(location_data.y);
68 web_event->globalX = static_cast<int>(pointer_data.screen_x); 68 web_event->globalX = static_cast<int>(location_data.screen_x);
69 web_event->globalY = static_cast<int>(pointer_data.screen_y); 69 web_event->globalY = static_cast<int>(location_data.screen_y);
70 } 70 }
71 71
72 scoped_ptr<blink::WebInputEvent> BuildWebMouseEventFrom(const EventPtr& event) { 72 scoped_ptr<blink::WebInputEvent> BuildWebMouseEventFrom(const EventPtr& event) {
73 scoped_ptr<blink::WebMouseEvent> web_event(new blink::WebMouseEvent); 73 scoped_ptr<blink::WebMouseEvent> web_event(new blink::WebMouseEvent);
74 74
75 SetWebMouseEventLocation(*(event->pointer_data), web_event.get()); 75 SetWebMouseEventLocation(*(event->pointer_data->location), web_event.get());
76 76
77 web_event->modifiers = EventFlagsToWebEventModifiers(event->flags); 77 web_event->modifiers = EventFlagsToWebEventModifiers(event->flags);
78 web_event->timeStampSeconds = EventTimeToWebEventTime(event); 78 web_event->timeStampSeconds = EventTimeToWebEventTime(event);
79 79
80 web_event->button = blink::WebMouseEvent::ButtonNone; 80 web_event->button = blink::WebMouseEvent::ButtonNone;
81 if (event->flags & mojo::EVENT_FLAGS_LEFT_MOUSE_BUTTON) 81 if (event->flags & mojo::EVENT_FLAGS_LEFT_MOUSE_BUTTON)
82 web_event->button = blink::WebMouseEvent::ButtonLeft; 82 web_event->button = blink::WebMouseEvent::ButtonLeft;
83 if (event->flags & mojo::EVENT_FLAGS_MIDDLE_MOUSE_BUTTON) 83 if (event->flags & mojo::EVENT_FLAGS_MIDDLE_MOUSE_BUTTON)
84 web_event->button = blink::WebMouseEvent::ButtonMiddle; 84 web_event->button = blink::WebMouseEvent::ButtonMiddle;
85 if (event->flags & mojo::EVENT_FLAGS_RIGHT_MOUSE_BUTTON) 85 if (event->flags & mojo::EVENT_FLAGS_RIGHT_MOUSE_BUTTON)
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
138 138
139 scoped_ptr<blink::WebInputEvent> BuildWebMouseWheelEventFrom( 139 scoped_ptr<blink::WebInputEvent> BuildWebMouseWheelEventFrom(
140 const EventPtr& event) { 140 const EventPtr& event) {
141 scoped_ptr<blink::WebMouseWheelEvent> web_event( 141 scoped_ptr<blink::WebMouseWheelEvent> web_event(
142 new blink::WebMouseWheelEvent); 142 new blink::WebMouseWheelEvent);
143 web_event->type = blink::WebInputEvent::MouseWheel; 143 web_event->type = blink::WebInputEvent::MouseWheel;
144 web_event->button = blink::WebMouseEvent::ButtonNone; 144 web_event->button = blink::WebMouseEvent::ButtonNone;
145 web_event->modifiers = EventFlagsToWebEventModifiers(event->flags); 145 web_event->modifiers = EventFlagsToWebEventModifiers(event->flags);
146 web_event->timeStampSeconds = EventTimeToWebEventTime(event); 146 web_event->timeStampSeconds = EventTimeToWebEventTime(event);
147 147
148 SetWebMouseEventLocation(*(event->pointer_data), web_event.get()); 148 SetWebMouseEventLocation(*(event->wheel_data->location), web_event.get());
149 149
150 if ((event->flags & mojo::EVENT_FLAGS_SHIFT_DOWN) != 0 && 150 // TODO(rjkroege): Update the following code once Blink supports
151 event->pointer_data->horizontal_wheel == 0) { 151 // DOM Level 3 wheel events
152 web_event->deltaX = event->pointer_data->horizontal_wheel; 152 // (http://www.w3.org/TR/DOM-Level-3-Events/#events-wheelevents)
153 web_event->deltaY = 0; 153 web_event->deltaX = event->wheel_data->delta_x;
154 } else { 154 web_event->deltaY = event->wheel_data->delta_y;
155 web_event->deltaX = event->pointer_data->horizontal_wheel;
156 web_event->deltaY = event->pointer_data->vertical_wheel;
157 }
158 155
159 // TODO(sky): resole this, doesn't work for desktop.
160 web_event->wheelTicksX = web_event->deltaX / kPixelsPerTick; 156 web_event->wheelTicksX = web_event->deltaX / kPixelsPerTick;
161 web_event->wheelTicksY = web_event->deltaY / kPixelsPerTick; 157 web_event->wheelTicksY = web_event->deltaY / kPixelsPerTick;
162 158
159 // TODO(rjkroege): Mandoline currently only generates WHEEL_MODE_LINE
160 // wheel events so the other modes are not yet tested. Verify that
161 // the implementation is correct.
162 switch (event->wheel_data->mode) {
163 case mojo::WHEEL_MODE_PIXEL:
164 web_event->hasPreciseScrollingDeltas = true;
165 web_event->scrollByPage = false;
166 web_event->canScroll = true;
167 break;
168 case mojo::WHEEL_MODE_LINE:
169 web_event->hasPreciseScrollingDeltas = false;
170 web_event->scrollByPage = false;
171 web_event->canScroll = true;
172 break;
173 case mojo::WHEEL_MODE_PAGE:
174 web_event->hasPreciseScrollingDeltas = false;
175 web_event->scrollByPage = true;
176 web_event->canScroll = true;
177 break;
178 case mojo::WHEEL_MODE_SCALING:
179 web_event->hasPreciseScrollingDeltas = false;
180 web_event->scrollByPage = false;
181 web_event->canScroll = false;
182 break;
183 }
184
163 return web_event.Pass(); 185 return web_event.Pass();
164 } 186 }
165 187
166 } // namespace 188 } // namespace
167 189
168 // static 190 // static
169 scoped_ptr<blink::WebInputEvent> 191 scoped_ptr<blink::WebInputEvent>
170 TypeConverter<scoped_ptr<blink::WebInputEvent>, EventPtr>::Convert( 192 TypeConverter<scoped_ptr<blink::WebInputEvent>, EventPtr>::Convert(
171 const EventPtr& event) { 193 const EventPtr& event) {
172 if (event->action == mojo::EVENT_TYPE_POINTER_DOWN || 194 switch (event->action) {
173 event->action == mojo::EVENT_TYPE_POINTER_UP || 195 case mojo::EVENT_TYPE_POINTER_DOWN:
174 event->action == mojo::EVENT_TYPE_POINTER_CANCEL || 196 case mojo::EVENT_TYPE_POINTER_UP:
175 event->action == mojo::EVENT_TYPE_POINTER_MOVE) { 197 case mojo::EVENT_TYPE_POINTER_CANCEL:
176 if (event->pointer_data->horizontal_wheel != 0 || 198 case mojo::EVENT_TYPE_POINTER_MOVE:
177 event->pointer_data->vertical_wheel != 0) { 199 if (event->pointer_data->kind == mojo::POINTER_KIND_MOUSE)
200 return BuildWebMouseEventFrom(event);
201 case mojo::EVENT_TYPE_WHEEL:
178 return BuildWebMouseWheelEventFrom(event); 202 return BuildWebMouseWheelEventFrom(event);
179 } 203 case mojo::EVENT_TYPE_KEY_PRESSED:
180 if (event->pointer_data->kind == mojo::POINTER_KIND_MOUSE) 204 case mojo::EVENT_TYPE_KEY_RELEASED:
181 return BuildWebMouseEventFrom(event); 205 return BuildWebKeyboardEvent(event);
182 } else if ((event->action == mojo::EVENT_TYPE_KEY_PRESSED || 206 case mojo::EVENT_TYPE_UNKNOWN:
183 event->action == mojo::EVENT_TYPE_KEY_RELEASED) && 207 return nullptr;
184 event->key_data) {
185 return BuildWebKeyboardEvent(event);
186 } 208 }
187 return nullptr; 209 return nullptr;
188 } 210 }
189 211
190 } // namespace mojo 212 } // namespace mojo
OLDNEW
« no previous file with comments | « components/html_viewer/DEPS ('k') | components/html_viewer/html_frame.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698