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

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

Issue 2083012: enable RenderViewTest.OnHandleKeyboardEvent on Linux. (Closed) Base URL: http://src.chromium.org/git/chromium.git
Patch Set: Created 10 years, 7 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) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 "chrome/test/render_view_test.h" 5 #include "chrome/test/render_view_test.h"
6 6
7 #include "chrome/browser/extensions/extension_function_dispatcher.h" 7 #include "chrome/browser/extensions/extension_function_dispatcher.h"
8 #include "chrome/common/extensions/extension.h" 8 #include "chrome/common/extensions/extension.h"
9 #include "chrome/common/native_web_keyboard_event.h" 9 #include "chrome/common/native_web_keyboard_event.h"
10 #include "chrome/common/render_messages.h" 10 #include "chrome/common/render_messages.h"
11 #include "chrome/common/renderer_preferences.h" 11 #include "chrome/common/renderer_preferences.h"
12 #include "chrome/renderer/extensions/event_bindings.h" 12 #include "chrome/renderer/extensions/event_bindings.h"
13 #include "chrome/renderer/extensions/extension_process_bindings.h" 13 #include "chrome/renderer/extensions/extension_process_bindings.h"
14 #include "chrome/renderer/extensions/js_only_v8_extensions.h" 14 #include "chrome/renderer/extensions/js_only_v8_extensions.h"
15 #include "chrome/renderer/extensions/renderer_extension_bindings.h" 15 #include "chrome/renderer/extensions/renderer_extension_bindings.h"
16 #include "chrome/renderer/mock_render_process.h" 16 #include "chrome/renderer/mock_render_process.h"
17 #include "chrome/renderer/renderer_main_platform_delegate.h" 17 #include "chrome/renderer/renderer_main_platform_delegate.h"
18 #include "third_party/WebKit/WebKit/chromium/public/WebFrame.h" 18 #include "third_party/WebKit/WebKit/chromium/public/WebFrame.h"
19 #include "third_party/WebKit/WebKit/chromium/public/WebInputEvent.h" 19 #include "third_party/WebKit/WebKit/chromium/public/WebInputEvent.h"
20 #include "third_party/WebKit/WebKit/chromium/public/WebKit.h" 20 #include "third_party/WebKit/WebKit/chromium/public/WebKit.h"
21 #include "third_party/WebKit/WebKit/chromium/public/WebScriptController.h" 21 #include "third_party/WebKit/WebKit/chromium/public/WebScriptController.h"
22 #include "third_party/WebKit/WebKit/chromium/public/WebScriptSource.h" 22 #include "third_party/WebKit/WebKit/chromium/public/WebScriptSource.h"
23 #include "third_party/WebKit/WebKit/chromium/public/WebURLRequest.h" 23 #include "third_party/WebKit/WebKit/chromium/public/WebURLRequest.h"
24 #include "third_party/WebKit/WebKit/chromium/public/WebView.h" 24 #include "third_party/WebKit/WebKit/chromium/public/WebView.h"
25 #include "webkit/glue/webkit_glue.h" 25 #include "webkit/glue/webkit_glue.h"
26 26
27 #if defined(OS_LINUX)
28 #include "base/event_synthesis_gtk.h"
29 #endif
30
27 using WebKit::WebFrame; 31 using WebKit::WebFrame;
28 using WebKit::WebScriptController; 32 using WebKit::WebScriptController;
29 using WebKit::WebScriptSource; 33 using WebKit::WebScriptSource;
30 using WebKit::WebString; 34 using WebKit::WebString;
31 using WebKit::WebURLRequest; 35 using WebKit::WebURLRequest;
32 36
33 namespace { 37 namespace {
34 const int32 kRouteId = 5; 38 const int32 kRouteId = 5;
35 const int32 kOpenerId = 7; 39 const int32 kOpenerId = 7;
36 } // namespace 40 } // namespace
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
167 NativeWebKeyboardEvent keydown_event(NULL, WM_KEYDOWN, key_code, 0); 171 NativeWebKeyboardEvent keydown_event(NULL, WM_KEYDOWN, key_code, 0);
168 SendNativeKeyEvent(keydown_event); 172 SendNativeKeyEvent(keydown_event);
169 173
170 NativeWebKeyboardEvent char_event(NULL, WM_CHAR, (*output)[0], 0); 174 NativeWebKeyboardEvent char_event(NULL, WM_CHAR, (*output)[0], 0);
171 SendNativeKeyEvent(char_event); 175 SendNativeKeyEvent(char_event);
172 176
173 NativeWebKeyboardEvent keyup_event(NULL, WM_KEYUP, key_code, 0); 177 NativeWebKeyboardEvent keyup_event(NULL, WM_KEYUP, key_code, 0);
174 SendNativeKeyEvent(keyup_event); 178 SendNativeKeyEvent(keyup_event);
175 179
176 return length; 180 return length;
181 #elif defined(OS_LINUX)
182 // We ignore |layout|, which means we are only testing the layout of the
183 // current locale. TODO(estade): fix this to respect |layout|.
184 std::vector<GdkEvent*> events;
185 base::SynthesizeKeyPressEvents(
186 NULL, static_cast<base::KeyboardCode>(key_code),
187 modifiers & (MockKeyboard::LEFT_CONTROL | MockKeyboard::RIGHT_CONTROL),
188 modifiers & (MockKeyboard::LEFT_SHIFT | MockKeyboard::RIGHT_SHIFT),
189 modifiers & (MockKeyboard::LEFT_ALT | MockKeyboard::RIGHT_ALT),
190 &events);
191
192 guint32 unicode_key = 0;
193 for (size_t i = 0; i < events.size(); ++i) {
194 // Only send the up/down events for key press itself (skip the up/down
195 // events for the modifier keys).
196 if ((i + 1) == (events.size() / 2) || i == (events.size() / 2)) {
197 unicode_key = gdk_keyval_to_unicode(events[i]->key.keyval);
198 NativeWebKeyboardEvent webkit_event(&events[i]->key);
199 SendNativeKeyEvent(webkit_event);
200
201 // Need to add a char event after the key down.
202 if (webkit_event.type == WebKit::WebInputEvent::RawKeyDown) {
203 NativeWebKeyboardEvent char_event = webkit_event;
204 char_event.type = WebKit::WebInputEvent::Char;
205 char_event.skip_in_browser = true;
206 SendNativeKeyEvent(char_event);
207 }
208 }
209 gdk_event_free(events[i]);
210 }
211
212 *output = std::wstring(1, unicode_key);
213 return 1;
177 #else 214 #else
178 NOTIMPLEMENTED(); 215 NOTIMPLEMENTED();
179 return L'\0'; 216 return L'\0';
180 #endif 217 #endif
181 } 218 }
182 219
183 void RenderViewTest::SendNativeKeyEvent( 220 void RenderViewTest::SendNativeKeyEvent(
184 const NativeWebKeyboardEvent& key_event) { 221 const NativeWebKeyboardEvent& key_event) {
185 scoped_ptr<IPC::Message> input_message(new ViewMsg_HandleInputEvent(0)); 222 scoped_ptr<IPC::Message> input_message(new ViewMsg_HandleInputEvent(0));
186 input_message->WriteData(reinterpret_cast<const char*>(&key_event), 223 input_message->WriteData(reinterpret_cast<const char*>(&key_event),
187 sizeof(WebKit::WebKeyboardEvent)); 224 sizeof(WebKit::WebKeyboardEvent));
188 view_->OnHandleInputEvent(*input_message); 225 view_->OnHandleInputEvent(*input_message);
189 } 226 }
OLDNEW
« base/event_synthesis_gtk.h ('K') | « chrome/renderer/render_view_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698