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

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

Issue 536313002: Revert of Removing X11 native_event uses for key events. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 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
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 #include "content/browser/renderer_host/web_input_event_aura.h" 5 #include "content/browser/renderer_host/web_input_event_aura.h"
6 6
7 #include "content/browser/renderer_host/ui_events_helper.h" 7 #include "content/browser/renderer_host/ui_events_helper.h"
8 #include "ui/aura/window.h" 8 #include "ui/aura/window.h"
9 #include "ui/events/event.h" 9 #include "ui/events/event.h"
10 #include "ui/events/event_utils.h" 10 #include "ui/events/event_utils.h"
11 11
12 #if defined(USE_OZONE) 12 #if defined(USE_OZONE)
13 #include "ui/events/keycodes/keyboard_code_conversion.h" 13 #include "ui/events/keycodes/keyboard_code_conversion.h"
14 #endif 14 #endif
15 15
16 namespace content { 16 namespace content {
17 17
18 #if defined(OS_WIN) 18 #if defined(OS_WIN)
19 blink::WebMouseEvent MakeUntranslatedWebMouseEventFromNativeEvent( 19 blink::WebMouseEvent MakeUntranslatedWebMouseEventFromNativeEvent(
20 const base::NativeEvent& native_event); 20 const base::NativeEvent& native_event);
21 blink::WebMouseWheelEvent MakeUntranslatedWebMouseWheelEventFromNativeEvent( 21 blink::WebMouseWheelEvent MakeUntranslatedWebMouseWheelEventFromNativeEvent(
22 const base::NativeEvent& native_event); 22 const base::NativeEvent& native_event);
23 blink::WebKeyboardEvent MakeWebKeyboardEventFromNativeEvent( 23 blink::WebKeyboardEvent MakeWebKeyboardEventFromNativeEvent(
24 const base::NativeEvent& native_event); 24 const base::NativeEvent& native_event);
25 blink::WebGestureEvent MakeWebGestureEventFromNativeEvent( 25 blink::WebGestureEvent MakeWebGestureEventFromNativeEvent(
26 const base::NativeEvent& native_event); 26 const base::NativeEvent& native_event);
27 #endif 27 #elif defined(USE_X11)
28 #if defined(USE_X11) || defined(USE_OZONE) 28 blink::WebKeyboardEvent MakeWebKeyboardEventFromAuraEvent(
29 ui::KeyEvent* event);
30 #elif defined(USE_OZONE)
29 blink::WebKeyboardEvent MakeWebKeyboardEventFromAuraEvent( 31 blink::WebKeyboardEvent MakeWebKeyboardEventFromAuraEvent(
30 ui::KeyEvent* event) { 32 ui::KeyEvent* event) {
33 const base::NativeEvent& native_event = event->native_event();
34 ui::EventType type = ui::EventTypeFromNative(native_event);
31 blink::WebKeyboardEvent webkit_event; 35 blink::WebKeyboardEvent webkit_event;
32 36
33 webkit_event.timeStampSeconds = event->time_stamp().InSecondsF(); 37 webkit_event.timeStampSeconds = event->time_stamp().InSecondsF();
34 webkit_event.modifiers = EventFlagsToWebEventModifiers(event->flags()); 38 webkit_event.modifiers = EventFlagsToWebEventModifiers(event->flags());
35 39
36 switch (event->type()) { 40 switch (type) {
37 case ui::ET_KEY_PRESSED: 41 case ui::ET_KEY_PRESSED:
38 webkit_event.type = event->is_char() ? blink::WebInputEvent::Char : 42 webkit_event.type = event->is_char() ? blink::WebInputEvent::Char :
39 blink::WebInputEvent::RawKeyDown; 43 blink::WebInputEvent::RawKeyDown;
40 break; 44 break;
41 case ui::ET_KEY_RELEASED: 45 case ui::ET_KEY_RELEASED:
42 webkit_event.type = blink::WebInputEvent::KeyUp; 46 webkit_event.type = blink::WebInputEvent::KeyUp;
43 break; 47 break;
44 default: 48 default:
45 NOTREACHED(); 49 NOTREACHED();
46 } 50 }
47 51
48 if (webkit_event.modifiers & blink::WebInputEvent::AltKey) 52 if (webkit_event.modifiers & blink::WebInputEvent::AltKey)
49 webkit_event.isSystemKey = true; 53 webkit_event.isSystemKey = true;
50 54
51 webkit_event.windowsKeyCode = event->GetLocatedWindowsKeyboardCode(); 55 wchar_t character = ui::KeyboardCodeFromNative(native_event);
52 webkit_event.nativeKeyCode = event->platform_keycode(); 56 webkit_event.windowsKeyCode = character;
53 webkit_event.unmodifiedText[0] = event->GetUnmodifiedText(); 57 webkit_event.nativeKeyCode = character;
54 webkit_event.text[0] = event->GetText(); 58
59 if (webkit_event.windowsKeyCode == ui::VKEY_RETURN)
60 webkit_event.unmodifiedText[0] = '\r';
61 else
62 webkit_event.unmodifiedText[0] = ui::GetCharacterFromKeyCode(
63 ui::KeyboardCodeFromNative(native_event),
64 ui::EventFlagsFromNative(native_event));
65
66 if (webkit_event.modifiers & blink::WebInputEvent::ControlKey) {
67 webkit_event.text[0] = ui::GetControlCharacterForKeycode(
68 webkit_event.windowsKeyCode,
69 webkit_event.modifiers & blink::WebInputEvent::ShiftKey);
70 } else {
71 webkit_event.text[0] = webkit_event.unmodifiedText[0];
72 }
55 73
56 webkit_event.setKeyIdentifierFromWindowsKeyCode(); 74 webkit_event.setKeyIdentifierFromWindowsKeyCode();
57 75
58 return webkit_event; 76 return webkit_event;
59 } 77 }
60 78 #endif
79 #if defined(USE_X11) || defined(USE_OZONE)
61 blink::WebMouseWheelEvent MakeWebMouseWheelEventFromAuraEvent( 80 blink::WebMouseWheelEvent MakeWebMouseWheelEventFromAuraEvent(
62 ui::ScrollEvent* event) { 81 ui::ScrollEvent* event) {
63 blink::WebMouseWheelEvent webkit_event; 82 blink::WebMouseWheelEvent webkit_event;
64 83
65 webkit_event.type = blink::WebInputEvent::MouseWheel; 84 webkit_event.type = blink::WebInputEvent::MouseWheel;
66 webkit_event.button = blink::WebMouseEvent::ButtonNone; 85 webkit_event.button = blink::WebMouseEvent::ButtonNone;
67 webkit_event.modifiers = EventFlagsToWebEventModifiers(event->flags()); 86 webkit_event.modifiers = EventFlagsToWebEventModifiers(event->flags());
68 webkit_event.timeStampSeconds = event->time_stamp().InSecondsF(); 87 webkit_event.timeStampSeconds = event->time_stamp().InSecondsF();
69 webkit_event.hasPreciseScrollingDeltas = true; 88 webkit_event.hasPreciseScrollingDeltas = true;
70 89
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
214 webkit_event.windowY = webkit_event.y = event->y(); 233 webkit_event.windowY = webkit_event.y = event->y();
215 234
216 const gfx::Point root_point = event->root_location(); 235 const gfx::Point root_point = event->root_location();
217 webkit_event.globalX = root_point.x(); 236 webkit_event.globalX = root_point.x();
218 webkit_event.globalY = root_point.y(); 237 webkit_event.globalY = root_point.y();
219 238
220 return webkit_event; 239 return webkit_event;
221 } 240 }
222 241
223 blink::WebKeyboardEvent MakeWebKeyboardEvent(ui::KeyEvent* event) { 242 blink::WebKeyboardEvent MakeWebKeyboardEvent(ui::KeyEvent* event) {
243 if (!event->HasNativeEvent())
244 return blink::WebKeyboardEvent();
245
224 // Windows can figure out whether or not to construct a RawKeyDown or a Char 246 // Windows can figure out whether or not to construct a RawKeyDown or a Char
225 // WebInputEvent based on the type of message carried in 247 // WebInputEvent based on the type of message carried in
226 // event->native_event(). X11 is not so fortunate, there is no separate 248 // event->native_event(). X11 is not so fortunate, there is no separate
227 // translated event type, so DesktopHostLinux sends an extra KeyEvent with 249 // translated event type, so DesktopHostLinux sends an extra KeyEvent with
228 // is_char() == true. We need to pass the ui::KeyEvent to the X11 function 250 // is_char() == true. We need to pass the ui::KeyEvent to the X11 function
229 // to detect this case so the right event type can be constructed. 251 // to detect this case so the right event type can be constructed.
230 #if defined(OS_WIN) 252 #if defined(OS_WIN)
231 if (!event->HasNativeEvent())
232 return blink::WebKeyboardEvent();
233
234 // Key events require no translation by the aura system. 253 // Key events require no translation by the aura system.
235 return MakeWebKeyboardEventFromNativeEvent(event->native_event()); 254 return MakeWebKeyboardEventFromNativeEvent(event->native_event());
236 #else 255 #else
237 return MakeWebKeyboardEventFromAuraEvent(event); 256 return MakeWebKeyboardEventFromAuraEvent(event);
238 #endif 257 #endif
239 } 258 }
240 259
241 blink::WebGestureEvent MakeWebGestureEvent(ui::GestureEvent* event) { 260 blink::WebGestureEvent MakeWebGestureEvent(ui::GestureEvent* event) {
242 blink::WebGestureEvent gesture_event; 261 blink::WebGestureEvent gesture_event;
243 #if defined(OS_WIN) 262 #if defined(OS_WIN)
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
341 webkit_event.deltaY = event->y_offset(); 360 webkit_event.deltaY = event->y_offset();
342 } 361 }
343 362
344 webkit_event.wheelTicksX = webkit_event.deltaX / kPixelsPerTick; 363 webkit_event.wheelTicksX = webkit_event.deltaX / kPixelsPerTick;
345 webkit_event.wheelTicksY = webkit_event.deltaY / kPixelsPerTick; 364 webkit_event.wheelTicksY = webkit_event.deltaY / kPixelsPerTick;
346 365
347 return webkit_event; 366 return webkit_event;
348 } 367 }
349 368
350 } // namespace content 369 } // namespace content
OLDNEW
« no previous file with comments | « ash/accelerators/key_hold_detector.cc ('k') | content/browser/renderer_host/web_input_event_aurax11.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698