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

Side by Side Diff: chrome/browser/automation/ui_controls_win.cc

Issue 6246001: Move app/key* to ui/base/keycodes/* (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years, 11 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
« no previous file with comments | « chrome/browser/automation/ui_controls_mac.mm ('k') | chrome/browser/browser_focus_uitest.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 (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/browser/automation/ui_controls.h" 5 #include "chrome/browser/automation/ui_controls.h"
6 6
7 #include "app/keyboard_code_conversion_win.h"
8 #include "app/keyboard_codes.h"
9 #include "base/logging.h" 7 #include "base/logging.h"
10 #include "base/message_loop.h" 8 #include "base/message_loop.h"
11 #include "base/ref_counted.h" 9 #include "base/ref_counted.h"
12 #include "base/task.h" 10 #include "base/task.h"
11 #include "ui/base/keycodes/keyboard_codes.h"
12 #include "ui/base/keycodes/keyboard_code_conversion_win.h"
13 #include "views/view.h" 13 #include "views/view.h"
14 14
15 namespace ui_controls { 15 namespace ui_controls {
16 16
17 namespace { 17 namespace {
18 18
19 // InputDispatcher ------------------------------------------------------------ 19 // InputDispatcher ------------------------------------------------------------
20 20
21 // InputDispatcher is used to listen for a mouse/keyboard event. When the 21 // InputDispatcher is used to listen for a mouse/keyboard event. When the
22 // appropriate event is received the task is notified. 22 // appropriate event is received the task is notified.
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 132
133 void InputDispatcher::NotifyTask() { 133 void InputDispatcher::NotifyTask() {
134 task_->Run(); 134 task_->Run();
135 Release(); 135 Release();
136 } 136 }
137 137
138 // Private functions ---------------------------------------------------------- 138 // Private functions ----------------------------------------------------------
139 139
140 // Populate the INPUT structure with the appropriate keyboard event 140 // Populate the INPUT structure with the appropriate keyboard event
141 // parameters required by SendInput 141 // parameters required by SendInput
142 bool FillKeyboardInput(app::KeyboardCode key, INPUT* input, bool key_up) { 142 bool FillKeyboardInput(ui::KeyboardCode key, INPUT* input, bool key_up) {
143 memset(input, 0, sizeof(INPUT)); 143 memset(input, 0, sizeof(INPUT));
144 input->type = INPUT_KEYBOARD; 144 input->type = INPUT_KEYBOARD;
145 input->ki.wVk = app::WindowsKeyCodeForKeyboardCode(key); 145 input->ki.wVk = ui::WindowsKeyCodeForKeyboardCode(key);
146 input->ki.dwFlags = key_up ? KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP : 146 input->ki.dwFlags = key_up ? KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP :
147 KEYEVENTF_EXTENDEDKEY; 147 KEYEVENTF_EXTENDEDKEY;
148 148
149 return true; 149 return true;
150 } 150 }
151 151
152 // Send a key event (up/down) 152 // Send a key event (up/down)
153 bool SendKeyEvent(app::KeyboardCode key, bool up) { 153 bool SendKeyEvent(ui::KeyboardCode key, bool up) {
154 INPUT input = { 0 }; 154 INPUT input = { 0 };
155 155
156 if (!FillKeyboardInput(key, &input, up)) 156 if (!FillKeyboardInput(key, &input, up))
157 return false; 157 return false;
158 158
159 if (!::SendInput(1, &input, sizeof(INPUT))) 159 if (!::SendInput(1, &input, sizeof(INPUT)))
160 return false; 160 return false;
161 161
162 return true; 162 return true;
163 } 163 }
164 164
165 bool SendKeyPressImpl(app::KeyboardCode key, 165 bool SendKeyPressImpl(ui::KeyboardCode key,
166 bool control, bool shift, bool alt, 166 bool control, bool shift, bool alt,
167 Task* task) { 167 Task* task) {
168 scoped_refptr<InputDispatcher> dispatcher( 168 scoped_refptr<InputDispatcher> dispatcher(
169 task ? new InputDispatcher(task, WM_KEYUP) : NULL); 169 task ? new InputDispatcher(task, WM_KEYUP) : NULL);
170 170
171 // If a pop-up menu is open, it won't receive events sent using SendInput. 171 // If a pop-up menu is open, it won't receive events sent using SendInput.
172 // Check for a pop-up menu using its window class (#32768) and if one 172 // Check for a pop-up menu using its window class (#32768) and if one
173 // exists, send the key event directly there. 173 // exists, send the key event directly there.
174 HWND popup_menu = ::FindWindow(L"#32768", 0); 174 HWND popup_menu = ::FindWindow(L"#32768", 0);
175 if (popup_menu != NULL && popup_menu == ::GetTopWindow(NULL)) { 175 if (popup_menu != NULL && popup_menu == ::GetTopWindow(NULL)) {
176 WPARAM w_param = app::WindowsKeyCodeForKeyboardCode(key); 176 WPARAM w_param = ui::WindowsKeyCodeForKeyboardCode(key);
177 LPARAM l_param = 0; 177 LPARAM l_param = 0;
178 ::SendMessage(popup_menu, WM_KEYDOWN, w_param, l_param); 178 ::SendMessage(popup_menu, WM_KEYDOWN, w_param, l_param);
179 ::SendMessage(popup_menu, WM_KEYUP, w_param, l_param); 179 ::SendMessage(popup_menu, WM_KEYUP, w_param, l_param);
180 180
181 if (dispatcher.get()) 181 if (dispatcher.get())
182 dispatcher->AddRef(); 182 dispatcher->AddRef();
183 return true; 183 return true;
184 } 184 }
185 185
186 INPUT input[8] = { 0 }; // 8, assuming all the modifiers are activated. 186 INPUT input[8] = { 0 }; // 8, assuming all the modifiers are activated.
187 187
188 UINT i = 0; 188 UINT i = 0;
189 if (control) { 189 if (control) {
190 if (!FillKeyboardInput(app::VKEY_CONTROL, &input[i], false)) 190 if (!FillKeyboardInput(ui::VKEY_CONTROL, &input[i], false))
191 return false; 191 return false;
192 i++; 192 i++;
193 } 193 }
194 194
195 if (shift) { 195 if (shift) {
196 if (!FillKeyboardInput(app::VKEY_SHIFT, &input[i], false)) 196 if (!FillKeyboardInput(ui::VKEY_SHIFT, &input[i], false))
197 return false; 197 return false;
198 i++; 198 i++;
199 } 199 }
200 200
201 if (alt) { 201 if (alt) {
202 if (!FillKeyboardInput(app::VKEY_MENU, &input[i], false)) 202 if (!FillKeyboardInput(ui::VKEY_MENU, &input[i], false))
203 return false; 203 return false;
204 i++; 204 i++;
205 } 205 }
206 206
207 if (!FillKeyboardInput(key, &input[i], false)) 207 if (!FillKeyboardInput(key, &input[i], false))
208 return false; 208 return false;
209 i++; 209 i++;
210 210
211 if (!FillKeyboardInput(key, &input[i], true)) 211 if (!FillKeyboardInput(key, &input[i], true))
212 return false; 212 return false;
213 i++; 213 i++;
214 214
215 if (alt) { 215 if (alt) {
216 if (!FillKeyboardInput(app::VKEY_MENU, &input[i], true)) 216 if (!FillKeyboardInput(ui::VKEY_MENU, &input[i], true))
217 return false; 217 return false;
218 i++; 218 i++;
219 } 219 }
220 220
221 if (shift) { 221 if (shift) {
222 if (!FillKeyboardInput(app::VKEY_SHIFT, &input[i], true)) 222 if (!FillKeyboardInput(ui::VKEY_SHIFT, &input[i], true))
223 return false; 223 return false;
224 i++; 224 i++;
225 } 225 }
226 226
227 if (control) { 227 if (control) {
228 if (!FillKeyboardInput(app::VKEY_CONTROL, &input[i], true)) 228 if (!FillKeyboardInput(ui::VKEY_CONTROL, &input[i], true))
229 return false; 229 return false;
230 i++; 230 i++;
231 } 231 }
232 232
233 if (::SendInput(i, input, sizeof(INPUT)) != i) 233 if (::SendInput(i, input, sizeof(INPUT)) != i)
234 return false; 234 return false;
235 235
236 if (dispatcher.get()) 236 if (dispatcher.get())
237 dispatcher->AddRef(); 237 dispatcher->AddRef();
238 238
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
318 if (dispatcher.get()) 318 if (dispatcher.get())
319 dispatcher->AddRef(); 319 dispatcher->AddRef();
320 320
321 return true; 321 return true;
322 } 322 }
323 323
324 } // namespace 324 } // namespace
325 325
326 // public functions ----------------------------------------------------------- 326 // public functions -----------------------------------------------------------
327 327
328 bool SendKeyPress(gfx::NativeWindow window, app::KeyboardCode key, 328 bool SendKeyPress(gfx::NativeWindow window, ui::KeyboardCode key,
329 bool control, bool shift, bool alt, bool command) { 329 bool control, bool shift, bool alt, bool command) {
330 DCHECK(command == false); // No command key on Windows 330 DCHECK(command == false); // No command key on Windows
331 return SendKeyPressImpl(key, control, shift, alt, NULL); 331 return SendKeyPressImpl(key, control, shift, alt, NULL);
332 } 332 }
333 333
334 bool SendKeyPressNotifyWhenDone(gfx::NativeWindow window, 334 bool SendKeyPressNotifyWhenDone(gfx::NativeWindow window,
335 app::KeyboardCode key, 335 ui::KeyboardCode key,
336 bool control, bool shift, bool alt, 336 bool control, bool shift, bool alt,
337 bool command, 337 bool command,
338 Task* task) { 338 Task* task) {
339 DCHECK(command == false); // No command key on Windows 339 DCHECK(command == false); // No command key on Windows
340 return SendKeyPressImpl(key, control, shift, alt, task); 340 return SendKeyPressImpl(key, control, shift, alt, task);
341 } 341 }
342 342
343 bool SendMouseMove(long x, long y) { 343 bool SendMouseMove(long x, long y) {
344 return SendMouseMoveImpl(x, y, NULL); 344 return SendMouseMoveImpl(x, y, NULL);
345 } 345 }
(...skipping 18 matching lines...) Expand all
364 int state, Task* task) { 364 int state, Task* task) {
365 DCHECK(view); 365 DCHECK(view);
366 DCHECK(view->GetWidget()); 366 DCHECK(view->GetWidget());
367 gfx::Point view_center(view->width() / 2, view->height() / 2); 367 gfx::Point view_center(view->width() / 2, view->height() / 2);
368 views::View::ConvertPointToScreen(view, &view_center); 368 views::View::ConvertPointToScreen(view, &view_center);
369 SendMouseMove(view_center.x(), view_center.y()); 369 SendMouseMove(view_center.x(), view_center.y());
370 SendMouseEventsNotifyWhenDone(button, state, task); 370 SendMouseEventsNotifyWhenDone(button, state, task);
371 } 371 }
372 372
373 } // ui_controls 373 } // ui_controls
OLDNEW
« no previous file with comments | « chrome/browser/automation/ui_controls_mac.mm ('k') | chrome/browser/browser_focus_uitest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698