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

Side by Side Diff: content/test/render_view_test.cc

Issue 8834014: Move CreateFakeXEvent to x11_util.{h,cc}. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Move the functions to x11_util Created 9 years 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
« no previous file with comments | « no previous file | ui/base/x/x11_util.h » ('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 (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/test/render_view_test.h" 5 #include "content/test/render_view_test.h"
6 6
7 #include "content/common/dom_storage_common.h" 7 #include "content/common/dom_storage_common.h"
8 #include "content/common/view_messages.h" 8 #include "content/common/view_messages.h"
9 #include "content/public/browser/native_web_keyboard_event.h" 9 #include "content/public/browser/native_web_keyboard_event.h"
10 #include "content/public/common/renderer_preferences.h" 10 #include "content/public/common/renderer_preferences.h"
(...skipping 12 matching lines...) Expand all
23 #if defined(OS_LINUX) && !defined(USE_AURA) 23 #if defined(OS_LINUX) && !defined(USE_AURA)
24 #include "ui/base/gtk/event_synthesis_gtk.h" 24 #include "ui/base/gtk/event_synthesis_gtk.h"
25 #endif 25 #endif
26 26
27 #if defined(USE_AURA) 27 #if defined(USE_AURA)
28 #include "ui/aura/event.h" 28 #include "ui/aura/event.h"
29 #endif 29 #endif
30 30
31 #if defined(USE_AURA) && defined(USE_X11) 31 #if defined(USE_AURA) && defined(USE_X11)
32 #include <X11/Xlib.h> 32 #include <X11/Xlib.h>
33 #include <X11/keysym.h>
34 #include "ui/base/events.h" 33 #include "ui/base/events.h"
35 #include "ui/base/keycodes/keyboard_code_conversion.h" 34 #include "ui/base/keycodes/keyboard_code_conversion.h"
36 #include "ui/base/keycodes/keyboard_code_conversion_x.h"
37 #include "ui/base/x/x11_util.h" 35 #include "ui/base/x/x11_util.h"
38 #endif 36 #endif
39 37
40 using WebKit::WebFrame; 38 using WebKit::WebFrame;
41 using WebKit::WebInputEvent; 39 using WebKit::WebInputEvent;
42 using WebKit::WebMouseEvent; 40 using WebKit::WebMouseEvent;
43 using WebKit::WebScriptController; 41 using WebKit::WebScriptController;
44 using WebKit::WebScriptSource; 42 using WebKit::WebScriptSource;
45 using WebKit::WebString; 43 using WebKit::WebString;
46 using WebKit::WebURLRequest; 44 using WebKit::WebURLRequest;
47 45
48 namespace { 46 namespace {
49 const int32 kOpenerId = 7; 47 const int32 kOpenerId = 7;
50 const int32 kRouteId = 5; 48 const int32 kRouteId = 5;
51 49
52 #if defined(USE_AURA) && defined(USE_X11) 50 #if defined(USE_AURA) && defined(USE_X11)
53 // Converts ui::EventType to XKeyEvent state.
54 unsigned int XKeyEventState(int flags) {
55 return
56 ((flags & ui::EF_SHIFT_DOWN) ? ShiftMask : 0) |
57 ((flags & ui::EF_CONTROL_DOWN) ? ControlMask : 0) |
58 ((flags & ui::EF_CAPS_LOCK_DOWN) ? LockMask : 0);
59 }
60
61 // Converts ui::EventType to XKeyEvent type.
62 int XKeyEventType(ui::EventType type) {
63 switch (type) {
64 case ui::ET_KEY_PRESSED:
65 return KeyPress;
66 case ui::ET_KEY_RELEASED:
67 return KeyRelease;
68 default:
69 return 0;
70 }
71 }
72
73 // Converts ui::KeyboardCode to XKeyEvent keycode.
74 unsigned int XKeyEventKeyCode(ui::KeyboardCode key_code,
75 int flags,
76 Display* display) {
77 const int keysym = ui::XKeysymForWindowsKeyCode(key_code,
78 flags & ui::EF_SHIFT_DOWN);
79 // The test assumes the keycode for XK_less is equal to the one of XK_comma,
80 // but XKeysymToKeycode returns 94 for XK_less while it returns 59 for
81 // XK_comma. Here we convert the value for XK_less to the value for XK_comma.
82 return (keysym == XK_less) ? 59 : XKeysymToKeycode(display, keysym);
83 }
84
85 // Creates a fake XEvent for testing.
86 XEvent* CreateFakeXEvent(ui::EventType type,
87 ui::KeyboardCode key_code,
88 int flags) {
89 Display* display = ui::GetXDisplay();
90 XKeyEvent key_event;
91 key_event.type = XKeyEventType(type);
92 key_event.serial = 0;
93 key_event.send_event = 0;
94 key_event.display = display;
95 key_event.time = 0;
96 key_event.window = 0;
97 key_event.root = 0;
98 key_event.subwindow = 0;
99 key_event.x = 0;
100 key_event.y = 0;
101 key_event.x_root = 0;
102 key_event.y_root = 0;
103 key_event.state = XKeyEventState(flags);
104 key_event.keycode = XKeyEventKeyCode(key_code, flags, display);
105 key_event.same_screen = 1;
106 XEvent* event = new XEvent;
107 event->type = key_event.type;
108 event->xkey = key_event;
109 return event;
110 }
111
112 // Converts MockKeyboard::Modifiers to ui::EventFlags. 51 // Converts MockKeyboard::Modifiers to ui::EventFlags.
113 int ConvertMockKeyboardModifier(MockKeyboard::Modifiers modifiers) { 52 int ConvertMockKeyboardModifier(MockKeyboard::Modifiers modifiers) {
114 static struct ModifierMap { 53 static struct ModifierMap {
115 MockKeyboard::Modifiers src; 54 MockKeyboard::Modifiers src;
116 int dst; 55 int dst;
117 } kModifierMap[] = { 56 } kModifierMap[] = {
118 { MockKeyboard::LEFT_SHIFT, ui::EF_SHIFT_DOWN }, 57 { MockKeyboard::LEFT_SHIFT, ui::EF_SHIFT_DOWN },
119 { MockKeyboard::RIGHT_SHIFT, ui::EF_SHIFT_DOWN }, 58 { MockKeyboard::RIGHT_SHIFT, ui::EF_SHIFT_DOWN },
120 { MockKeyboard::LEFT_CONTROL, ui::EF_CONTROL_DOWN }, 59 { MockKeyboard::LEFT_CONTROL, ui::EF_CONTROL_DOWN },
121 { MockKeyboard::RIGHT_CONTROL, ui::EF_CONTROL_DOWN }, 60 { MockKeyboard::RIGHT_CONTROL, ui::EF_CONTROL_DOWN },
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
299 #endif 238 #endif
300 SendNativeKeyEvent(keyup_event); 239 SendNativeKeyEvent(keyup_event);
301 240
302 return length; 241 return length;
303 #elif defined(USE_AURA) && defined(USE_X11) 242 #elif defined(USE_AURA) && defined(USE_X11)
304 // We ignore |layout|, which means we are only testing the layout of the 243 // We ignore |layout|, which means we are only testing the layout of the
305 // current locale. TODO(mazda): fix this to respect |layout|. 244 // current locale. TODO(mazda): fix this to respect |layout|.
306 CHECK(output); 245 CHECK(output);
307 const int flags = ConvertMockKeyboardModifier(modifiers); 246 const int flags = ConvertMockKeyboardModifier(modifiers);
308 247
309 scoped_ptr<XEvent> xevent1(CreateFakeXEvent( 248 XEvent xevent1;
310 ui::ET_KEY_PRESSED, 249 InitXKeyEventForTesting(ui::ET_KEY_PRESSED,
311 static_cast<ui::KeyboardCode>(key_code), 250 static_cast<ui::KeyboardCode>(key_code),
312 flags)); 251 flags,
313 aura::KeyEvent event1(xevent1.get(), false); 252 &xevent1);
253 aura::KeyEvent event1(&xevent1, false);
314 NativeWebKeyboardEvent keydown_event(&event1); 254 NativeWebKeyboardEvent keydown_event(&event1);
315 SendNativeKeyEvent(keydown_event); 255 SendNativeKeyEvent(keydown_event);
316 256
317 scoped_ptr<XEvent> xevent2(CreateFakeXEvent( 257 XEvent xevent2;
318 ui::ET_KEY_PRESSED, 258 InitXKeyEventForTesting(ui::ET_KEY_PRESSED,
319 static_cast<ui::KeyboardCode>(key_code), 259 static_cast<ui::KeyboardCode>(key_code),
320 flags)); 260 flags,
321 aura::KeyEvent event2(xevent2.get(), true); 261 &xevent2);
262 aura::KeyEvent event2(&xevent2, true);
322 NativeWebKeyboardEvent char_event(&event2); 263 NativeWebKeyboardEvent char_event(&event2);
323 SendNativeKeyEvent(char_event); 264 SendNativeKeyEvent(char_event);
324 265
325 scoped_ptr<XEvent> xevent3(CreateFakeXEvent( 266 XEvent xevent3;
326 ui::ET_KEY_RELEASED, 267 InitXKeyEventForTesting(ui::ET_KEY_RELEASED,
327 static_cast<ui::KeyboardCode>(key_code), 268 static_cast<ui::KeyboardCode>(key_code),
328 flags)); 269 flags,
329 aura::KeyEvent event3(xevent3.get(), false); 270 &xevent3);
271 aura::KeyEvent event3(&xevent3, false);
330 NativeWebKeyboardEvent keyup_event(&event3); 272 NativeWebKeyboardEvent keyup_event(&event3);
331 SendNativeKeyEvent(keyup_event); 273 SendNativeKeyEvent(keyup_event);
332 274
333 long c = GetCharacterFromKeyCode(static_cast<ui::KeyboardCode>(key_code), 275 long c = GetCharacterFromKeyCode(static_cast<ui::KeyboardCode>(key_code),
334 flags); 276 flags);
335 output->assign(1, static_cast<char16>(c)); 277 output->assign(1, static_cast<char16>(c));
336 return 1; 278 return 1;
337 #elif defined(OS_LINUX) 279 #elif defined(OS_LINUX)
338 // We ignore |layout|, which means we are only testing the layout of the 280 // We ignore |layout|, which means we are only testing the layout of the
339 // current locale. TODO(estade): fix this to respect |layout|. 281 // current locale. TODO(estade): fix this to respect |layout|.
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
486 RenderViewImpl* impl = static_cast<RenderViewImpl*>(view_); 428 RenderViewImpl* impl = static_cast<RenderViewImpl*>(view_);
487 impl->set_send_content_state_immediately(true); 429 impl->set_send_content_state_immediately(true);
488 } 430 }
489 431
490 WebKit::WebWidget* RenderViewTest::GetWebWidget() { 432 WebKit::WebWidget* RenderViewTest::GetWebWidget() {
491 RenderViewImpl* impl = static_cast<RenderViewImpl*>(view_); 433 RenderViewImpl* impl = static_cast<RenderViewImpl*>(view_);
492 return impl->webwidget(); 434 return impl->webwidget();
493 } 435 }
494 436
495 } // namespace content 437 } // namespace content
OLDNEW
« no previous file with comments | « no previous file | ui/base/x/x11_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698