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

Side by Side Diff: ash/sticky_keys/sticky_keys_controller.cc

Issue 2095193002: clang-format all of //ash (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 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
« no previous file with comments | « ash/sticky_keys/sticky_keys_controller.h ('k') | ash/sticky_keys/sticky_keys_overlay.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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "ash/sticky_keys/sticky_keys_controller.h" 5 #include "ash/sticky_keys/sticky_keys_controller.h"
6 6
7 #include "ash/sticky_keys/sticky_keys_overlay.h" 7 #include "ash/sticky_keys/sticky_keys_overlay.h"
8 #include "base/debug/stack_trace.h" 8 #include "base/debug/stack_trace.h"
9 #include "ui/aura/window.h" 9 #include "ui/aura/window.h"
10 #include "ui/aura/window_tracker.h" 10 #include "ui/aura/window_tracker.h"
(...skipping 27 matching lines...) Expand all
38 if (changed_down_flags) 38 if (changed_down_flags)
39 return ui::EVENT_REWRITE_REWRITTEN; 39 return ui::EVENT_REWRITE_REWRITTEN;
40 return ui::EVENT_REWRITE_CONTINUE; 40 return ui::EVENT_REWRITE_CONTINUE;
41 } 41 }
42 42
43 } // namespace 43 } // namespace
44 44
45 /////////////////////////////////////////////////////////////////////////////// 45 ///////////////////////////////////////////////////////////////////////////////
46 // StickyKeys 46 // StickyKeys
47 StickyKeysController::StickyKeysController() 47 StickyKeysController::StickyKeysController()
48 : enabled_(false), 48 : enabled_(false), mod3_enabled_(false), altgr_enabled_(false) {}
49 mod3_enabled_(false),
50 altgr_enabled_(false) {
51 }
52 49
53 StickyKeysController::~StickyKeysController() { 50 StickyKeysController::~StickyKeysController() {}
54 }
55 51
56 void StickyKeysController::Enable(bool enabled) { 52 void StickyKeysController::Enable(bool enabled) {
57 if (enabled_ != enabled) { 53 if (enabled_ != enabled) {
58 enabled_ = enabled; 54 enabled_ = enabled;
59 55
60 // Reset key handlers when activating sticky keys to ensure all 56 // Reset key handlers when activating sticky keys to ensure all
61 // the handlers' states are reset. 57 // the handlers' states are reset.
62 if (enabled_) { 58 if (enabled_) {
63 shift_sticky_key_.reset(new StickyKeysHandler(ui::EF_SHIFT_DOWN)); 59 shift_sticky_key_.reset(new StickyKeysHandler(ui::EF_SHIFT_DOWN));
64 alt_sticky_key_.reset(new StickyKeysHandler(ui::EF_ALT_DOWN)); 60 alt_sticky_key_.reset(new StickyKeysHandler(ui::EF_ALT_DOWN));
(...skipping 18 matching lines...) Expand all
83 if (overlay_) { 79 if (overlay_) {
84 overlay_->SetModifierVisible(ui::EF_ALTGR_DOWN, altgr_enabled_); 80 overlay_->SetModifierVisible(ui::EF_ALTGR_DOWN, altgr_enabled_);
85 overlay_->SetModifierVisible(ui::EF_MOD3_DOWN, mod3_enabled_); 81 overlay_->SetModifierVisible(ui::EF_MOD3_DOWN, mod3_enabled_);
86 } 82 }
87 } 83 }
88 84
89 bool StickyKeysController::HandleKeyEvent(const ui::KeyEvent& event, 85 bool StickyKeysController::HandleKeyEvent(const ui::KeyEvent& event,
90 ui::KeyboardCode key_code, 86 ui::KeyboardCode key_code,
91 int* mod_down_flags, 87 int* mod_down_flags,
92 bool* released) { 88 bool* released) {
93 return shift_sticky_key_->HandleKeyEvent( 89 return shift_sticky_key_->HandleKeyEvent(event, key_code, mod_down_flags,
94 event, key_code, mod_down_flags, released) || 90 released) ||
95 alt_sticky_key_->HandleKeyEvent( 91 alt_sticky_key_->HandleKeyEvent(event, key_code, mod_down_flags,
96 event, key_code, mod_down_flags, released) || 92 released) ||
97 altgr_sticky_key_->HandleKeyEvent( 93 altgr_sticky_key_->HandleKeyEvent(event, key_code, mod_down_flags,
98 event, key_code, mod_down_flags, released) || 94 released) ||
99 ctrl_sticky_key_->HandleKeyEvent( 95 ctrl_sticky_key_->HandleKeyEvent(event, key_code, mod_down_flags,
100 event, key_code, mod_down_flags, released) || 96 released) ||
101 mod3_sticky_key_->HandleKeyEvent( 97 mod3_sticky_key_->HandleKeyEvent(event, key_code, mod_down_flags,
102 event, key_code, mod_down_flags, released) || 98 released) ||
103 search_sticky_key_->HandleKeyEvent( 99 search_sticky_key_->HandleKeyEvent(event, key_code, mod_down_flags,
104 event, key_code, mod_down_flags, released); 100 released);
105 } 101 }
106 102
107 bool StickyKeysController::HandleMouseEvent(const ui::MouseEvent& event, 103 bool StickyKeysController::HandleMouseEvent(const ui::MouseEvent& event,
108 int* mod_down_flags, 104 int* mod_down_flags,
109 bool* released) { 105 bool* released) {
110 return shift_sticky_key_->HandleMouseEvent( 106 return shift_sticky_key_->HandleMouseEvent(event, mod_down_flags, released) ||
111 event, mod_down_flags, released) || 107 alt_sticky_key_->HandleMouseEvent(event, mod_down_flags, released) ||
112 alt_sticky_key_->HandleMouseEvent( 108 altgr_sticky_key_->HandleMouseEvent(event, mod_down_flags, released) ||
113 event, mod_down_flags, released) || 109 ctrl_sticky_key_->HandleMouseEvent(event, mod_down_flags, released) ||
114 altgr_sticky_key_->HandleMouseEvent( 110 mod3_sticky_key_->HandleMouseEvent(event, mod_down_flags, released);
115 event, mod_down_flags, released) ||
116 ctrl_sticky_key_->HandleMouseEvent(
117 event, mod_down_flags, released) ||
118 mod3_sticky_key_->HandleMouseEvent(
119 event, mod_down_flags, released);
120 } 111 }
121 112
122 bool StickyKeysController::HandleScrollEvent(const ui::ScrollEvent& event, 113 bool StickyKeysController::HandleScrollEvent(const ui::ScrollEvent& event,
123 int* mod_down_flags, 114 int* mod_down_flags,
124 bool* released) { 115 bool* released) {
125 return shift_sticky_key_->HandleScrollEvent( 116 return shift_sticky_key_->HandleScrollEvent(event, mod_down_flags,
126 event, mod_down_flags, released) || 117 released) ||
127 alt_sticky_key_->HandleScrollEvent( 118 alt_sticky_key_->HandleScrollEvent(event, mod_down_flags, released) ||
128 event, mod_down_flags, released) || 119 altgr_sticky_key_->HandleScrollEvent(event, mod_down_flags,
129 altgr_sticky_key_->HandleScrollEvent( 120 released) ||
130 event, mod_down_flags, released) || 121 ctrl_sticky_key_->HandleScrollEvent(event, mod_down_flags, released) ||
131 ctrl_sticky_key_->HandleScrollEvent( 122 mod3_sticky_key_->HandleScrollEvent(event, mod_down_flags, released);
132 event, mod_down_flags, released) ||
133 mod3_sticky_key_->HandleScrollEvent(
134 event, mod_down_flags, released);
135 } 123 }
136 124
137 ui::EventRewriteStatus StickyKeysController::RewriteKeyEvent( 125 ui::EventRewriteStatus StickyKeysController::RewriteKeyEvent(
138 const ui::KeyEvent& event, 126 const ui::KeyEvent& event,
139 ui::KeyboardCode key_code, 127 ui::KeyboardCode key_code,
140 int* flags) { 128 int* flags) {
141 if (!enabled_) 129 if (!enabled_)
142 return ui::EVENT_REWRITE_CONTINUE; 130 return ui::EVENT_REWRITE_CONTINUE;
143 int mod_down_flags = 0; 131 int mod_down_flags = 0;
144 bool released = false; 132 bool released = false;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
182 mod3_sticky_key_->GetModifierUpEvent(new_event) + 170 mod3_sticky_key_->GetModifierUpEvent(new_event) +
183 search_sticky_key_->GetModifierUpEvent(new_event); 171 search_sticky_key_->GetModifierUpEvent(new_event);
184 if (!new_event) 172 if (!new_event)
185 return ui::EVENT_REWRITE_CONTINUE; 173 return ui::EVENT_REWRITE_CONTINUE;
186 if (remaining) 174 if (remaining)
187 return ui::EVENT_REWRITE_DISPATCH_ANOTHER; 175 return ui::EVENT_REWRITE_DISPATCH_ANOTHER;
188 return ui::EVENT_REWRITE_REWRITTEN; 176 return ui::EVENT_REWRITE_REWRITTEN;
189 } 177 }
190 178
191 void StickyKeysController::UpdateOverlay() { 179 void StickyKeysController::UpdateOverlay() {
192 overlay_->SetModifierKeyState( 180 overlay_->SetModifierKeyState(ui::EF_SHIFT_DOWN,
193 ui::EF_SHIFT_DOWN, shift_sticky_key_->current_state()); 181 shift_sticky_key_->current_state());
194 overlay_->SetModifierKeyState( 182 overlay_->SetModifierKeyState(ui::EF_CONTROL_DOWN,
195 ui::EF_CONTROL_DOWN, ctrl_sticky_key_->current_state()); 183 ctrl_sticky_key_->current_state());
196 overlay_->SetModifierKeyState( 184 overlay_->SetModifierKeyState(ui::EF_ALT_DOWN,
197 ui::EF_ALT_DOWN, alt_sticky_key_->current_state()); 185 alt_sticky_key_->current_state());
198 overlay_->SetModifierKeyState( 186 overlay_->SetModifierKeyState(ui::EF_COMMAND_DOWN,
199 ui::EF_COMMAND_DOWN, search_sticky_key_->current_state()); 187 search_sticky_key_->current_state());
200 overlay_->SetModifierKeyState( 188 overlay_->SetModifierKeyState(ui::EF_ALTGR_DOWN,
201 ui::EF_ALTGR_DOWN, altgr_sticky_key_->current_state()); 189 altgr_sticky_key_->current_state());
202 overlay_->SetModifierKeyState( 190 overlay_->SetModifierKeyState(ui::EF_MOD3_DOWN,
203 ui::EF_MOD3_DOWN, mod3_sticky_key_->current_state()); 191 mod3_sticky_key_->current_state());
204 192
205 bool key_in_use = 193 bool key_in_use =
206 shift_sticky_key_->current_state() != STICKY_KEY_STATE_DISABLED || 194 shift_sticky_key_->current_state() != STICKY_KEY_STATE_DISABLED ||
207 alt_sticky_key_->current_state() != STICKY_KEY_STATE_DISABLED || 195 alt_sticky_key_->current_state() != STICKY_KEY_STATE_DISABLED ||
208 altgr_sticky_key_->current_state() != STICKY_KEY_STATE_DISABLED || 196 altgr_sticky_key_->current_state() != STICKY_KEY_STATE_DISABLED ||
209 ctrl_sticky_key_->current_state() != STICKY_KEY_STATE_DISABLED || 197 ctrl_sticky_key_->current_state() != STICKY_KEY_STATE_DISABLED ||
210 search_sticky_key_->current_state() != STICKY_KEY_STATE_DISABLED || 198 search_sticky_key_->current_state() != STICKY_KEY_STATE_DISABLED ||
211 mod3_sticky_key_->current_state() != STICKY_KEY_STATE_DISABLED; 199 mod3_sticky_key_->current_state() != STICKY_KEY_STATE_DISABLED;
212 200
213 overlay_->Show(enabled_ && key_in_use); 201 overlay_->Show(enabled_ && key_in_use);
214 } 202 }
215 203
216 StickyKeysOverlay* StickyKeysController::GetOverlayForTest() { 204 StickyKeysOverlay* StickyKeysController::GetOverlayForTest() {
217 return overlay_.get(); 205 return overlay_.get();
218 } 206 }
219 207
220 /////////////////////////////////////////////////////////////////////////////// 208 ///////////////////////////////////////////////////////////////////////////////
221 // StickyKeysHandler 209 // StickyKeysHandler
222 StickyKeysHandler::StickyKeysHandler(ui::EventFlags modifier_flag) 210 StickyKeysHandler::StickyKeysHandler(ui::EventFlags modifier_flag)
223 : modifier_flag_(modifier_flag), 211 : modifier_flag_(modifier_flag),
224 current_state_(STICKY_KEY_STATE_DISABLED), 212 current_state_(STICKY_KEY_STATE_DISABLED),
225 preparing_to_enable_(false), 213 preparing_to_enable_(false),
226 scroll_delta_(0) { 214 scroll_delta_(0) {}
227 }
228 215
229 StickyKeysHandler::~StickyKeysHandler() { 216 StickyKeysHandler::~StickyKeysHandler() {}
230 }
231 217
232 bool StickyKeysHandler::HandleKeyEvent(const ui::KeyEvent& event, 218 bool StickyKeysHandler::HandleKeyEvent(const ui::KeyEvent& event,
233 ui::KeyboardCode key_code, 219 ui::KeyboardCode key_code,
234 int* mod_down_flags, 220 int* mod_down_flags,
235 bool* released) { 221 bool* released) {
236 switch (current_state_) { 222 switch (current_state_) {
237 case STICKY_KEY_STATE_DISABLED: 223 case STICKY_KEY_STATE_DISABLED:
238 return HandleDisabledState(event, key_code); 224 return HandleDisabledState(event, key_code);
239 case STICKY_KEY_STATE_ENABLED: 225 case STICKY_KEY_STATE_ENABLED:
240 return HandleEnabledState(event, key_code, mod_down_flags, released); 226 return HandleEnabledState(event, key_code, mod_down_flags, released);
241 case STICKY_KEY_STATE_LOCKED: 227 case STICKY_KEY_STATE_LOCKED:
242 return HandleLockedState(event, key_code, mod_down_flags, released); 228 return HandleLockedState(event, key_code, mod_down_flags, released);
243 } 229 }
244 NOTREACHED(); 230 NOTREACHED();
245 return false; 231 return false;
246 } 232 }
247 233
248 bool StickyKeysHandler::HandleMouseEvent( 234 bool StickyKeysHandler::HandleMouseEvent(const ui::MouseEvent& event,
249 const ui::MouseEvent& event, 235 int* mod_down_flags,
250 int* mod_down_flags, 236 bool* released) {
251 bool* released) {
252 if (ShouldModifyMouseEvent(event)) 237 if (ShouldModifyMouseEvent(event))
253 preparing_to_enable_ = false; 238 preparing_to_enable_ = false;
254 239
255 if (current_state_ == STICKY_KEY_STATE_DISABLED || 240 if (current_state_ == STICKY_KEY_STATE_DISABLED ||
256 !ShouldModifyMouseEvent(event)) { 241 !ShouldModifyMouseEvent(event)) {
257 return false; 242 return false;
258 } 243 }
259 DCHECK(current_state_ == STICKY_KEY_STATE_ENABLED || 244 DCHECK(current_state_ == STICKY_KEY_STATE_ENABLED ||
260 current_state_ == STICKY_KEY_STATE_LOCKED); 245 current_state_ == STICKY_KEY_STATE_LOCKED);
261 246
262 *mod_down_flags |= modifier_flag_; 247 *mod_down_flags |= modifier_flag_;
263 // Only disable on the mouse released event in normal, non-locked mode. 248 // Only disable on the mouse released event in normal, non-locked mode.
264 if (current_state_ == STICKY_KEY_STATE_ENABLED && 249 if (current_state_ == STICKY_KEY_STATE_ENABLED &&
265 event.type() != ui::ET_MOUSE_PRESSED) { 250 event.type() != ui::ET_MOUSE_PRESSED) {
266 current_state_ = STICKY_KEY_STATE_DISABLED; 251 current_state_ = STICKY_KEY_STATE_DISABLED;
267 *released = true; 252 *released = true;
268 return false; 253 return false;
269 } 254 }
270 255
271 return false; 256 return false;
272 } 257 }
273 258
274 bool StickyKeysHandler::HandleScrollEvent( 259 bool StickyKeysHandler::HandleScrollEvent(const ui::ScrollEvent& event,
275 const ui::ScrollEvent& event, 260 int* mod_down_flags,
276 int* mod_down_flags, 261 bool* released) {
277 bool* released) {
278 preparing_to_enable_ = false; 262 preparing_to_enable_ = false;
279 if (current_state_ == STICKY_KEY_STATE_DISABLED) 263 if (current_state_ == STICKY_KEY_STATE_DISABLED)
280 return false; 264 return false;
281 DCHECK(current_state_ == STICKY_KEY_STATE_ENABLED || 265 DCHECK(current_state_ == STICKY_KEY_STATE_ENABLED ||
282 current_state_ == STICKY_KEY_STATE_LOCKED); 266 current_state_ == STICKY_KEY_STATE_LOCKED);
283 267
284 // We detect a direction change if the current |scroll_delta_| is assigned 268 // We detect a direction change if the current |scroll_delta_| is assigned
285 // and the offset of the current scroll event has the opposing sign. 269 // and the offset of the current scroll event has the opposing sign.
286 bool direction_changed = false; 270 bool direction_changed = false;
287 if (current_state_ == STICKY_KEY_STATE_ENABLED && 271 if (current_state_ == STICKY_KEY_STATE_ENABLED &&
(...skipping 29 matching lines...) Expand all
317 if (*new_event) 301 if (*new_event)
318 return 1; 302 return 1;
319 new_event->reset(modifier_up_event_.release()); 303 new_event->reset(modifier_up_event_.release());
320 return 0; 304 return 0;
321 } 305 }
322 306
323 StickyKeysHandler::KeyEventType StickyKeysHandler::TranslateKeyEvent( 307 StickyKeysHandler::KeyEventType StickyKeysHandler::TranslateKeyEvent(
324 ui::EventType type, 308 ui::EventType type,
325 ui::KeyboardCode key_code) { 309 ui::KeyboardCode key_code) {
326 bool is_target_key = false; 310 bool is_target_key = false;
327 if (key_code == ui::VKEY_SHIFT || 311 if (key_code == ui::VKEY_SHIFT || key_code == ui::VKEY_LSHIFT ||
328 key_code == ui::VKEY_LSHIFT ||
329 key_code == ui::VKEY_RSHIFT) { 312 key_code == ui::VKEY_RSHIFT) {
330 is_target_key = (modifier_flag_ == ui::EF_SHIFT_DOWN); 313 is_target_key = (modifier_flag_ == ui::EF_SHIFT_DOWN);
331 } else if (key_code == ui::VKEY_CONTROL || 314 } else if (key_code == ui::VKEY_CONTROL || key_code == ui::VKEY_LCONTROL ||
332 key_code == ui::VKEY_LCONTROL || 315 key_code == ui::VKEY_RCONTROL) {
333 key_code == ui::VKEY_RCONTROL) {
334 is_target_key = (modifier_flag_ == ui::EF_CONTROL_DOWN); 316 is_target_key = (modifier_flag_ == ui::EF_CONTROL_DOWN);
335 } else if (key_code == ui::VKEY_MENU || 317 } else if (key_code == ui::VKEY_MENU || key_code == ui::VKEY_LMENU ||
336 key_code == ui::VKEY_LMENU || 318 key_code == ui::VKEY_RMENU) {
337 key_code == ui::VKEY_RMENU) {
338 is_target_key = (modifier_flag_ == ui::EF_ALT_DOWN); 319 is_target_key = (modifier_flag_ == ui::EF_ALT_DOWN);
339 } else if (key_code == ui::VKEY_ALTGR) { 320 } else if (key_code == ui::VKEY_ALTGR) {
340 is_target_key = (modifier_flag_ == ui::EF_ALTGR_DOWN); 321 is_target_key = (modifier_flag_ == ui::EF_ALTGR_DOWN);
341 } else if (key_code == ui::VKEY_OEM_8) { 322 } else if (key_code == ui::VKEY_OEM_8) {
342 is_target_key = (modifier_flag_ == ui::EF_MOD3_DOWN); 323 is_target_key = (modifier_flag_ == ui::EF_MOD3_DOWN);
343 } else if (key_code == ui::VKEY_LWIN) { 324 } else if (key_code == ui::VKEY_LWIN) {
344 is_target_key = (modifier_flag_ == ui::EF_COMMAND_DOWN); 325 is_target_key = (modifier_flag_ == ui::EF_COMMAND_DOWN);
345 } else { 326 } else {
346 return type == ui::ET_KEY_PRESSED ? 327 return type == ui::ET_KEY_PRESSED ? NORMAL_KEY_DOWN : NORMAL_KEY_UP;
347 NORMAL_KEY_DOWN : NORMAL_KEY_UP;
348 } 328 }
349 329
350 if (is_target_key) { 330 if (is_target_key) {
351 return type == ui::ET_KEY_PRESSED ? 331 return type == ui::ET_KEY_PRESSED ? TARGET_MODIFIER_DOWN
352 TARGET_MODIFIER_DOWN : TARGET_MODIFIER_UP; 332 : TARGET_MODIFIER_UP;
353 } 333 }
354 return type == ui::ET_KEY_PRESSED ? 334 return type == ui::ET_KEY_PRESSED ? OTHER_MODIFIER_DOWN : OTHER_MODIFIER_UP;
355 OTHER_MODIFIER_DOWN : OTHER_MODIFIER_UP;
356 } 335 }
357 336
358 bool StickyKeysHandler::HandleDisabledState(const ui::KeyEvent& event, 337 bool StickyKeysHandler::HandleDisabledState(const ui::KeyEvent& event,
359 ui::KeyboardCode key_code) { 338 ui::KeyboardCode key_code) {
360 switch (TranslateKeyEvent(event.type(), key_code)) { 339 switch (TranslateKeyEvent(event.type(), key_code)) {
361 case TARGET_MODIFIER_UP: 340 case TARGET_MODIFIER_UP:
362 if (preparing_to_enable_) { 341 if (preparing_to_enable_) {
363 preparing_to_enable_ = false; 342 preparing_to_enable_ = false;
364 scroll_delta_ = 0; 343 scroll_delta_ = 0;
365 current_state_ = STICKY_KEY_STATE_ENABLED; 344 current_state_ = STICKY_KEY_STATE_ENABLED;
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
424 return false; 403 return false;
425 case OTHER_MODIFIER_DOWN: 404 case OTHER_MODIFIER_DOWN:
426 case OTHER_MODIFIER_UP: 405 case OTHER_MODIFIER_UP:
427 return false; 406 return false;
428 } 407 }
429 NOTREACHED(); 408 NOTREACHED();
430 return false; 409 return false;
431 } 410 }
432 411
433 } // namespace ash 412 } // namespace ash
OLDNEW
« no previous file with comments | « ash/sticky_keys/sticky_keys_controller.h ('k') | ash/sticky_keys/sticky_keys_overlay.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698