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

Side by Side Diff: content/browser/renderer_host/web_input_event_aurax11.cc

Issue 10827145: Convert Aura to use ui::Event. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 8 years, 4 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 // Portions based heavily on: 5 // Portions based heavily on:
6 // third_party/WebKit/Source/WebKit/chromium/public/gtk/WebInputEventFactory.cpp 6 // third_party/WebKit/Source/WebKit/chromium/public/gtk/WebInputEventFactory.cpp
7 // 7 //
8 /* 8 /*
9 * Copyright (C) 2006-2011 Google Inc. All rights reserved. 9 * Copyright (C) 2006-2011 Google Inc. All rights reserved.
10 * 10 *
(...skipping 26 matching lines...) Expand all
37 37
38 #include "content/browser/renderer_host/web_input_event_aura.h" 38 #include "content/browser/renderer_host/web_input_event_aura.h"
39 39
40 #include <cstdlib> 40 #include <cstdlib>
41 #include <X11/keysym.h> 41 #include <X11/keysym.h>
42 #include <X11/Xlib.h> 42 #include <X11/Xlib.h>
43 #include <X11/Xutil.h> 43 #include <X11/Xutil.h>
44 44
45 #include "base/event_types.h" 45 #include "base/event_types.h"
46 #include "base/logging.h" 46 #include "base/logging.h"
47 #include "ui/aura/event.h" 47 #include "ui/base/event.h"
48 #include "ui/base/events.h" 48 #include "ui/base/events.h"
49 #include "ui/base/keycodes/keyboard_codes.h" 49 #include "ui/base/keycodes/keyboard_codes.h"
50 #include "ui/base/keycodes/keyboard_code_conversion_x.h" 50 #include "ui/base/keycodes/keyboard_code_conversion_x.h"
51 51
52 namespace content { 52 namespace content {
53 53
54 // chromium WebKit does not provide a WebInputEventFactory for X11, so we have 54 // chromium WebKit does not provide a WebInputEventFactory for X11, so we have
55 // to do the work here ourselves. 55 // to do the work here ourselves.
56 56
57 namespace { 57 namespace {
58 58
59 // This matches Firefox behavior. 59 // This matches Firefox behavior.
60 const int kPixelsPerTick = 53; 60 const int kPixelsPerTick = 53;
61 61
62 // Normalizes event.flags() to make it Windows/Mac compatible. Since the way 62 // Normalizes event.flags() to make it Windows/Mac compatible. Since the way
63 // of setting modifier mask on X is very different than Windows/Mac as shown 63 // of setting modifier mask on X is very different than Windows/Mac as shown
64 // in http://crbug.com/127142#c8, the normalization is necessary. 64 // in http://crbug.com/127142#c8, the normalization is necessary.
65 int NormalizeEventFlags(const aura::KeyEvent& event) { 65 int NormalizeEventFlags(const ui::KeyEvent& event) {
66 int mask = 0; 66 int mask = 0;
67 switch (event.key_code()) { 67 switch (event.key_code()) {
68 case ui::VKEY_CONTROL: 68 case ui::VKEY_CONTROL:
69 mask = ui::EF_CONTROL_DOWN; 69 mask = ui::EF_CONTROL_DOWN;
70 break; 70 break;
71 case ui::VKEY_SHIFT: 71 case ui::VKEY_SHIFT:
72 mask = ui::EF_SHIFT_DOWN; 72 mask = ui::EF_SHIFT_DOWN;
73 break; 73 break;
74 case ui::VKEY_MENU: 74 case ui::VKEY_MENU:
75 mask = ui::EF_ALT_DOWN; 75 mask = ui::EF_ALT_DOWN;
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
175 return 0x0A; 175 return 0x0A;
176 // Returns 0 for all other keys to avoid inputting unexpected chars. 176 // Returns 0 for all other keys to avoid inputting unexpected chars.
177 default: 177 default:
178 break; 178 break;
179 } 179 }
180 } 180 }
181 return 0; 181 return 0;
182 } 182 }
183 183
184 WebKit::WebTouchPoint::State TouchPointStateFromEvent( 184 WebKit::WebTouchPoint::State TouchPointStateFromEvent(
185 const aura::TouchEvent* event) { 185 const ui::TouchEventImpl* event) {
186 switch (event->type()) { 186 switch (event->type()) {
187 case ui::ET_TOUCH_PRESSED: 187 case ui::ET_TOUCH_PRESSED:
188 return WebKit::WebTouchPoint::StatePressed; 188 return WebKit::WebTouchPoint::StatePressed;
189 case ui::ET_TOUCH_RELEASED: 189 case ui::ET_TOUCH_RELEASED:
190 return WebKit::WebTouchPoint::StateReleased; 190 return WebKit::WebTouchPoint::StateReleased;
191 case ui::ET_TOUCH_MOVED: 191 case ui::ET_TOUCH_MOVED:
192 return WebKit::WebTouchPoint::StateMoved; 192 return WebKit::WebTouchPoint::StateMoved;
193 case ui::ET_TOUCH_CANCELLED: 193 case ui::ET_TOUCH_CANCELLED:
194 return WebKit::WebTouchPoint::StateCancelled; 194 return WebKit::WebTouchPoint::StateCancelled;
195 default: 195 default:
196 return WebKit::WebTouchPoint::StateUndefined; 196 return WebKit::WebTouchPoint::StateUndefined;
197 } 197 }
198 } 198 }
199 199
200 WebKit::WebInputEvent::Type TouchEventTypeFromEvent( 200 WebKit::WebInputEvent::Type TouchEventTypeFromEvent(
201 const aura::TouchEvent* event) { 201 const ui::TouchEventImpl* event) {
202 switch (event->type()) { 202 switch (event->type()) {
203 case ui::ET_TOUCH_PRESSED: 203 case ui::ET_TOUCH_PRESSED:
204 return WebKit::WebInputEvent::TouchStart; 204 return WebKit::WebInputEvent::TouchStart;
205 case ui::ET_TOUCH_RELEASED: 205 case ui::ET_TOUCH_RELEASED:
206 return WebKit::WebInputEvent::TouchEnd; 206 return WebKit::WebInputEvent::TouchEnd;
207 case ui::ET_TOUCH_MOVED: 207 case ui::ET_TOUCH_MOVED:
208 return WebKit::WebInputEvent::TouchMove; 208 return WebKit::WebInputEvent::TouchMove;
209 case ui::ET_TOUCH_CANCELLED: 209 case ui::ET_TOUCH_CANCELLED:
210 return WebKit::WebInputEvent::TouchCancel; 210 return WebKit::WebInputEvent::TouchCancel;
211 default: 211 default:
212 return WebKit::WebInputEvent::Undefined; 212 return WebKit::WebInputEvent::Undefined;
213 } 213 }
214 } 214 }
215 215
216 } // namespace 216 } // namespace
217 217
218 WebKit::WebMouseEvent MakeWebMouseEventFromAuraEvent(aura::MouseEvent* event) { 218 WebKit::WebMouseEvent MakeWebMouseEventFromAuraEvent(ui::MouseEvent* event) {
219 WebKit::WebMouseEvent webkit_event; 219 WebKit::WebMouseEvent webkit_event;
220 220
221 webkit_event.modifiers = EventFlagsToWebEventModifiers(event->flags()); 221 webkit_event.modifiers = EventFlagsToWebEventModifiers(event->flags());
222 webkit_event.timeStampSeconds = event->time_stamp().InSecondsF(); 222 webkit_event.timeStampSeconds = event->time_stamp().InSecondsF();
223 223
224 webkit_event.button = WebKit::WebMouseEvent::ButtonNone; 224 webkit_event.button = WebKit::WebMouseEvent::ButtonNone;
225 if (event->flags() & ui::EF_LEFT_MOUSE_BUTTON) 225 if (event->flags() & ui::EF_LEFT_MOUSE_BUTTON)
226 webkit_event.button = WebKit::WebMouseEvent::ButtonLeft; 226 webkit_event.button = WebKit::WebMouseEvent::ButtonLeft;
227 if (event->flags() & ui::EF_MIDDLE_MOUSE_BUTTON) 227 if (event->flags() & ui::EF_MIDDLE_MOUSE_BUTTON)
228 webkit_event.button = WebKit::WebMouseEvent::ButtonMiddle; 228 webkit_event.button = WebKit::WebMouseEvent::ButtonMiddle;
(...skipping 16 matching lines...) Expand all
245 break; 245 break;
246 default: 246 default:
247 NOTIMPLEMENTED() << "Received unexpected event: " << event->type(); 247 NOTIMPLEMENTED() << "Received unexpected event: " << event->type();
248 break; 248 break;
249 } 249 }
250 250
251 return webkit_event; 251 return webkit_event;
252 } 252 }
253 253
254 WebKit::WebMouseWheelEvent MakeWebMouseWheelEventFromAuraEvent( 254 WebKit::WebMouseWheelEvent MakeWebMouseWheelEventFromAuraEvent(
255 aura::MouseEvent* event) { 255 ui::MouseEvent* event) {
256 WebKit::WebMouseWheelEvent webkit_event; 256 WebKit::WebMouseWheelEvent webkit_event;
257 257
258 webkit_event.type = WebKit::WebInputEvent::MouseWheel; 258 webkit_event.type = WebKit::WebInputEvent::MouseWheel;
259 webkit_event.button = WebKit::WebMouseEvent::ButtonNone; 259 webkit_event.button = WebKit::WebMouseEvent::ButtonNone;
260 webkit_event.modifiers = EventFlagsToWebEventModifiers(event->flags()); 260 webkit_event.modifiers = EventFlagsToWebEventModifiers(event->flags());
261 webkit_event.timeStampSeconds = event->time_stamp().InSecondsF(); 261 webkit_event.timeStampSeconds = event->time_stamp().InSecondsF();
262 webkit_event.deltaY = ui::GetMouseWheelOffset(event->native_event()); 262 webkit_event.deltaY = ui::GetMouseWheelOffset(event->native_event());
263 webkit_event.wheelTicksY = webkit_event.deltaY / kPixelsPerTick; 263 webkit_event.wheelTicksY = webkit_event.deltaY / kPixelsPerTick;
264 264
265 return webkit_event; 265 return webkit_event;
266 } 266 }
267 267
268 WebKit::WebMouseWheelEvent MakeWebMouseWheelEventFromAuraEvent( 268 WebKit::WebMouseWheelEvent MakeWebMouseWheelEventFromAuraEvent(
269 aura::ScrollEvent* event) { 269 ui::ScrollEvent* event) {
270 WebKit::WebMouseWheelEvent webkit_event; 270 WebKit::WebMouseWheelEvent webkit_event;
271 271
272 webkit_event.type = WebKit::WebInputEvent::MouseWheel; 272 webkit_event.type = WebKit::WebInputEvent::MouseWheel;
273 webkit_event.button = WebKit::WebMouseEvent::ButtonNone; 273 webkit_event.button = WebKit::WebMouseEvent::ButtonNone;
274 webkit_event.modifiers = EventFlagsToWebEventModifiers(event->flags()); 274 webkit_event.modifiers = EventFlagsToWebEventModifiers(event->flags());
275 webkit_event.timeStampSeconds = event->time_stamp().InSecondsF(); 275 webkit_event.timeStampSeconds = event->time_stamp().InSecondsF();
276 webkit_event.hasPreciseScrollingDeltas = true; 276 webkit_event.hasPreciseScrollingDeltas = true;
277 webkit_event.deltaX = event->x_offset(); 277 webkit_event.deltaX = event->x_offset();
278 webkit_event.wheelTicksX = webkit_event.deltaX / kPixelsPerTick; 278 webkit_event.wheelTicksX = webkit_event.deltaX / kPixelsPerTick;
279 webkit_event.deltaY = event->y_offset(); 279 webkit_event.deltaY = event->y_offset();
280 webkit_event.wheelTicksY = webkit_event.deltaY / kPixelsPerTick; 280 webkit_event.wheelTicksY = webkit_event.deltaY / kPixelsPerTick;
281 281
282 return webkit_event; 282 return webkit_event;
283 } 283 }
284 284
285 WebKit::WebGestureEvent MakeWebGestureEventFromAuraEvent( 285 WebKit::WebGestureEvent MakeWebGestureEventFromAuraEvent(
286 aura::ScrollEvent* event) { 286 ui::ScrollEvent* event) {
287 WebKit::WebGestureEvent webkit_event; 287 WebKit::WebGestureEvent webkit_event;
288 288
289 switch (event->type()) { 289 switch (event->type()) {
290 case ui::ET_SCROLL: 290 case ui::ET_SCROLL:
291 webkit_event.type = WebKit::WebInputEvent::GestureScrollUpdate; 291 webkit_event.type = WebKit::WebInputEvent::GestureScrollUpdate;
292 break; 292 break;
293 case ui::ET_SCROLL_FLING_START: 293 case ui::ET_SCROLL_FLING_START:
294 webkit_event.type = WebKit::WebInputEvent::GestureFlingStart; 294 webkit_event.type = WebKit::WebInputEvent::GestureFlingStart;
295 break; 295 break;
296 case ui::ET_SCROLL_FLING_CANCEL: 296 case ui::ET_SCROLL_FLING_CANCEL:
297 webkit_event.type = WebKit::WebInputEvent::GestureFlingCancel; 297 webkit_event.type = WebKit::WebInputEvent::GestureFlingCancel;
298 break; 298 break;
299 default: 299 default:
300 NOTREACHED() << "Unknown gesture type: " << event->type(); 300 NOTREACHED() << "Unknown gesture type: " << event->type();
301 } 301 }
302 302
303 webkit_event.modifiers = EventFlagsToWebEventModifiers(event->flags()); 303 webkit_event.modifiers = EventFlagsToWebEventModifiers(event->flags());
304 webkit_event.timeStampSeconds = event->time_stamp().InSecondsF(); 304 webkit_event.timeStampSeconds = event->time_stamp().InSecondsF();
305 webkit_event.deltaX = event->x_offset(); 305 webkit_event.deltaX = event->x_offset();
306 webkit_event.deltaY = event->y_offset(); 306 webkit_event.deltaY = event->y_offset();
307 307
308 return webkit_event; 308 return webkit_event;
309 } 309 }
310 310
311 WebKit::WebKeyboardEvent MakeWebKeyboardEventFromAuraEvent( 311 WebKit::WebKeyboardEvent MakeWebKeyboardEventFromAuraEvent(
312 aura::KeyEvent* event) { 312 ui::KeyEvent* event) {
313 base::NativeEvent native_event = event->native_event(); 313 base::NativeEvent native_event = event->native_event();
314 WebKit::WebKeyboardEvent webkit_event; 314 WebKit::WebKeyboardEvent webkit_event;
315 XKeyEvent* native_key_event = &native_event->xkey; 315 XKeyEvent* native_key_event = &native_event->xkey;
316 316
317 webkit_event.timeStampSeconds = event->time_stamp().InSecondsF(); 317 webkit_event.timeStampSeconds = event->time_stamp().InSecondsF();
318 webkit_event.modifiers = 318 webkit_event.modifiers =
319 EventFlagsToWebEventModifiers(NormalizeEventFlags(*event)); 319 EventFlagsToWebEventModifiers(NormalizeEventFlags(*event));
320 320
321 switch (native_event->type) { 321 switch (native_event->type) {
322 case KeyPress: 322 case KeyPress:
(...skipping 28 matching lines...) Expand all
351 } 351 }
352 352
353 webkit_event.setKeyIdentifierFromWindowsKeyCode(); 353 webkit_event.setKeyIdentifierFromWindowsKeyCode();
354 354
355 // TODO: IsAutoRepeat/IsKeyPad? 355 // TODO: IsAutoRepeat/IsKeyPad?
356 356
357 return webkit_event; 357 return webkit_event;
358 } 358 }
359 359
360 WebKit::WebGestureEvent MakeWebGestureEventFromAuraEvent( 360 WebKit::WebGestureEvent MakeWebGestureEventFromAuraEvent(
361 aura::GestureEvent* event) { 361 ui::GestureEventImpl* event) {
362 WebKit::WebGestureEvent gesture_event; 362 WebKit::WebGestureEvent gesture_event;
363 363
364 switch (event->type()) { 364 switch (event->type()) {
365 case ui::ET_GESTURE_TAP: 365 case ui::ET_GESTURE_TAP:
366 gesture_event.type = WebKit::WebInputEvent::GestureTap; 366 gesture_event.type = WebKit::WebInputEvent::GestureTap;
367 gesture_event.deltaX = event->details().tap_count(); 367 gesture_event.deltaX = event->details().tap_count();
368 break; 368 break;
369 case ui::ET_GESTURE_TAP_DOWN: 369 case ui::ET_GESTURE_TAP_DOWN:
370 gesture_event.type = WebKit::WebInputEvent::GestureTapDown; 370 gesture_event.type = WebKit::WebInputEvent::GestureTapDown;
371 break; 371 break;
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
415 NOTREACHED() << "Unknown gesture type: " << event->type(); 415 NOTREACHED() << "Unknown gesture type: " << event->type();
416 } 416 }
417 417
418 gesture_event.boundingBox = event->details().bounding_box(); 418 gesture_event.boundingBox = event->details().bounding_box();
419 gesture_event.modifiers = EventFlagsToWebEventModifiers(event->flags()); 419 gesture_event.modifiers = EventFlagsToWebEventModifiers(event->flags());
420 420
421 return gesture_event; 421 return gesture_event;
422 } 422 }
423 423
424 WebKit::WebTouchPoint* UpdateWebTouchEventFromAuraEvent( 424 WebKit::WebTouchPoint* UpdateWebTouchEventFromAuraEvent(
425 aura::TouchEvent* event, WebKit::WebTouchEvent* web_event) { 425 ui::TouchEventImpl* event, WebKit::WebTouchEvent* web_event) {
426 WebKit::WebTouchPoint* point = NULL; 426 WebKit::WebTouchPoint* point = NULL;
427 switch (event->type()) { 427 switch (event->type()) {
428 case ui::ET_TOUCH_PRESSED: 428 case ui::ET_TOUCH_PRESSED:
429 // Add a new touch point. 429 // Add a new touch point.
430 if (web_event->touchesLength < WebKit::WebTouchEvent::touchesLengthCap) { 430 if (web_event->touchesLength < WebKit::WebTouchEvent::touchesLengthCap) {
431 point = &web_event->touches[web_event->touchesLength++]; 431 point = &web_event->touches[web_event->touchesLength++];
432 point->id = event->touch_id(); 432 point->id = event->touch_id();
433 } 433 }
434 break; 434 break;
435 case ui::ET_TOUCH_RELEASED: 435 case ui::ET_TOUCH_RELEASED:
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
486 486
487 // Update the type of the touch event. 487 // Update the type of the touch event.
488 web_event->type = TouchEventTypeFromEvent(event); 488 web_event->type = TouchEventTypeFromEvent(event);
489 web_event->timeStampSeconds = event->time_stamp().InSecondsF(); 489 web_event->timeStampSeconds = event->time_stamp().InSecondsF();
490 web_event->modifiers = EventFlagsToWebEventModifiers(event->flags()); 490 web_event->modifiers = EventFlagsToWebEventModifiers(event->flags());
491 491
492 return point; 492 return point;
493 } 493 }
494 494
495 } // namespace content 495 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/renderer_host/web_input_event_aura_unittest.cc ('k') | content/browser/web_contents/web_contents_view_aura.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698