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

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

Issue 2731283004: Do not use ash in chromeos::EventRewriter. (Closed)
Patch Set: Fix a crash Created 3 years, 9 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_unittest.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 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"
11 #include "ui/aura/window_tree_host.h" 11 #include "ui/aura/window_tree_host.h"
12 #include "ui/events/event.h" 12 #include "ui/events/event.h"
13 #include "ui/events/event_processor.h" 13 #include "ui/events/event_processor.h"
14 #include "ui/events/keycodes/keyboard_code_conversion.h" 14 #include "ui/events/keycodes/keyboard_code_conversion.h"
15 15
16 namespace ash { 16 namespace ash {
17 17
18 namespace { 18 namespace {
19 19
20 // Returns true if the type of mouse event should be modified by sticky keys. 20 // Returns true if the type of mouse event should be modified by sticky keys.
21 bool ShouldModifyMouseEvent(const ui::MouseEvent& event) { 21 bool ShouldModifyMouseEvent(const ui::MouseEvent& event) {
22 ui::EventType type = event.type(); 22 ui::EventType type = event.type();
23 return type == ui::ET_MOUSE_PRESSED || type == ui::ET_MOUSE_RELEASED || 23 return type == ui::ET_MOUSE_PRESSED || type == ui::ET_MOUSE_RELEASED ||
24 type == ui::ET_MOUSEWHEEL; 24 type == ui::ET_MOUSEWHEEL;
25 } 25 }
26 26
27 // Handle the common tail of event rewriting. 27 // Handle the common tail of event rewriting.
28 ui::EventRewriteStatus RewriteUpdate(bool consumed, 28 ui::EventRewriteStatus RewriteUpdate(
29 bool released, 29 bool consumed,
30 int mod_down_flags, 30 bool released,
31 int* flags) { 31 int mod_down_flags,
32 int changed_down_flags = mod_down_flags & ~*flags; 32 const ui::Event& event,
33 *flags |= mod_down_flags; 33 std::unique_ptr<ui::Event>* rewritten_event) {
34 int changed_down_flags = mod_down_flags & event.flags();
34 if (consumed) 35 if (consumed)
35 return ui::EVENT_REWRITE_DISCARD; 36 return ui::EVENT_REWRITE_DISCARD;
36 if (released) 37 if (released)
37 return ui::EVENT_REWRITE_DISPATCH_ANOTHER; 38 return ui::EVENT_REWRITE_DISPATCH_ANOTHER;
38 if (changed_down_flags) 39 if (changed_down_flags) {
40 *rewritten_event = ui::Event::Clone(event);
41 (*rewritten_event)->set_flags(event.flags() | mod_down_flags);
39 return ui::EVENT_REWRITE_REWRITTEN; 42 return ui::EVENT_REWRITE_REWRITTEN;
43 }
40 return ui::EVENT_REWRITE_CONTINUE; 44 return ui::EVENT_REWRITE_CONTINUE;
41 } 45 }
42 46
43 } // namespace 47 } // namespace
44 48
45 /////////////////////////////////////////////////////////////////////////////// 49 ///////////////////////////////////////////////////////////////////////////////
46 // StickyKeys 50 // StickyKeys
47 StickyKeysController::StickyKeysController() 51 StickyKeysController::StickyKeysController()
48 : enabled_(false), mod3_enabled_(false), altgr_enabled_(false) {} 52 : enabled_(false), mod3_enabled_(false), altgr_enabled_(false) {}
49 53
(...skipping 25 matching lines...) Expand all
75 void StickyKeysController::SetModifiersEnabled(bool mod3_enabled, 79 void StickyKeysController::SetModifiersEnabled(bool mod3_enabled,
76 bool altgr_enabled) { 80 bool altgr_enabled) {
77 mod3_enabled_ = mod3_enabled; 81 mod3_enabled_ = mod3_enabled;
78 altgr_enabled_ = altgr_enabled; 82 altgr_enabled_ = altgr_enabled;
79 if (overlay_) { 83 if (overlay_) {
80 overlay_->SetModifierVisible(ui::EF_ALTGR_DOWN, altgr_enabled_); 84 overlay_->SetModifierVisible(ui::EF_ALTGR_DOWN, altgr_enabled_);
81 overlay_->SetModifierVisible(ui::EF_MOD3_DOWN, mod3_enabled_); 85 overlay_->SetModifierVisible(ui::EF_MOD3_DOWN, mod3_enabled_);
82 } 86 }
83 } 87 }
84 88
89 StickyKeysOverlay* StickyKeysController::GetOverlayForTest() {
90 return overlay_.get();
91 }
92
93 ui::EventRewriteStatus StickyKeysController::RewriteEvent(
94 const ui::Event& event,
95 std::unique_ptr<ui::Event>* rewritten_event) {
96 DCHECK(rewritten_event);
97 if (!enabled_)
98 return ui::EVENT_REWRITE_CONTINUE;
99
100 if (event.IsKeyEvent()) {
101 int mod_down_flags = 0;
102 bool released = false;
103 bool consumed =
104 HandleKeyEvent(*event.AsKeyEvent(), &mod_down_flags, &released);
105 UpdateOverlay();
106 return RewriteUpdate(consumed, released, mod_down_flags, event,
107 rewritten_event);
108 } else if (event.IsMouseEvent()) {
109 int mod_down_flags = 0;
110 bool released = false;
111 bool consumed =
112 HandleMouseEvent(*event.AsMouseEvent(), &mod_down_flags, &released);
113 UpdateOverlay();
114 return RewriteUpdate(consumed, released, mod_down_flags, event,
115 rewritten_event);
116 } else if (event.IsScrollEvent()) {
117 int mod_down_flags = 0;
118 bool released = false;
119 bool consumed =
120 HandleScrollEvent(*event.AsScrollEvent(), &mod_down_flags, &released);
121 UpdateOverlay();
122 return RewriteUpdate(consumed, released, mod_down_flags, event,
123 rewritten_event);
124 }
125 NOTREACHED();
126 return ui::EVENT_REWRITE_CONTINUE;
127 }
128
129 ui::EventRewriteStatus StickyKeysController::NextDispatchEvent(
130 const ui::Event& last_event,
131 std::unique_ptr<ui::Event>* new_event) {
132 DCHECK(new_event);
133 new_event->reset();
134 int remaining = shift_sticky_key_->GetModifierUpEvent(new_event) +
135 alt_sticky_key_->GetModifierUpEvent(new_event) +
136 altgr_sticky_key_->GetModifierUpEvent(new_event) +
137 ctrl_sticky_key_->GetModifierUpEvent(new_event) +
138 mod3_sticky_key_->GetModifierUpEvent(new_event) +
139 search_sticky_key_->GetModifierUpEvent(new_event);
140 if (!new_event)
141 return ui::EVENT_REWRITE_CONTINUE;
142 if (remaining)
143 return ui::EVENT_REWRITE_DISPATCH_ANOTHER;
144 return ui::EVENT_REWRITE_REWRITTEN;
145 }
146
85 bool StickyKeysController::HandleKeyEvent(const ui::KeyEvent& event, 147 bool StickyKeysController::HandleKeyEvent(const ui::KeyEvent& event,
86 ui::KeyboardCode key_code,
87 int* mod_down_flags, 148 int* mod_down_flags,
88 bool* released) { 149 bool* released) {
89 return shift_sticky_key_->HandleKeyEvent(event, key_code, mod_down_flags, 150 return shift_sticky_key_->HandleKeyEvent(event, mod_down_flags, released) ||
90 released) || 151 alt_sticky_key_->HandleKeyEvent(event, mod_down_flags, released) ||
91 alt_sticky_key_->HandleKeyEvent(event, key_code, mod_down_flags, 152 altgr_sticky_key_->HandleKeyEvent(event, mod_down_flags, released) ||
92 released) || 153 ctrl_sticky_key_->HandleKeyEvent(event, mod_down_flags, released) ||
93 altgr_sticky_key_->HandleKeyEvent(event, key_code, mod_down_flags, 154 mod3_sticky_key_->HandleKeyEvent(event, mod_down_flags, released) ||
94 released) || 155 search_sticky_key_->HandleKeyEvent(event, mod_down_flags, released);
95 ctrl_sticky_key_->HandleKeyEvent(event, key_code, mod_down_flags,
96 released) ||
97 mod3_sticky_key_->HandleKeyEvent(event, key_code, mod_down_flags,
98 released) ||
99 search_sticky_key_->HandleKeyEvent(event, key_code, mod_down_flags,
100 released);
101 } 156 }
102 157
103 bool StickyKeysController::HandleMouseEvent(const ui::MouseEvent& event, 158 bool StickyKeysController::HandleMouseEvent(const ui::MouseEvent& event,
104 int* mod_down_flags, 159 int* mod_down_flags,
105 bool* released) { 160 bool* released) {
106 return shift_sticky_key_->HandleMouseEvent(event, mod_down_flags, released) || 161 return shift_sticky_key_->HandleMouseEvent(event, mod_down_flags, released) ||
107 alt_sticky_key_->HandleMouseEvent(event, mod_down_flags, released) || 162 alt_sticky_key_->HandleMouseEvent(event, mod_down_flags, released) ||
108 altgr_sticky_key_->HandleMouseEvent(event, mod_down_flags, released) || 163 altgr_sticky_key_->HandleMouseEvent(event, mod_down_flags, released) ||
109 ctrl_sticky_key_->HandleMouseEvent(event, mod_down_flags, released) || 164 ctrl_sticky_key_->HandleMouseEvent(event, mod_down_flags, released) ||
110 mod3_sticky_key_->HandleMouseEvent(event, mod_down_flags, released); 165 mod3_sticky_key_->HandleMouseEvent(event, mod_down_flags, released);
111 } 166 }
112 167
113 bool StickyKeysController::HandleScrollEvent(const ui::ScrollEvent& event, 168 bool StickyKeysController::HandleScrollEvent(const ui::ScrollEvent& event,
114 int* mod_down_flags, 169 int* mod_down_flags,
115 bool* released) { 170 bool* released) {
116 return shift_sticky_key_->HandleScrollEvent(event, mod_down_flags, 171 return shift_sticky_key_->HandleScrollEvent(event, mod_down_flags,
117 released) || 172 released) ||
118 alt_sticky_key_->HandleScrollEvent(event, mod_down_flags, released) || 173 alt_sticky_key_->HandleScrollEvent(event, mod_down_flags, released) ||
119 altgr_sticky_key_->HandleScrollEvent(event, mod_down_flags, 174 altgr_sticky_key_->HandleScrollEvent(event, mod_down_flags,
120 released) || 175 released) ||
121 ctrl_sticky_key_->HandleScrollEvent(event, mod_down_flags, released) || 176 ctrl_sticky_key_->HandleScrollEvent(event, mod_down_flags, released) ||
122 mod3_sticky_key_->HandleScrollEvent(event, mod_down_flags, released); 177 mod3_sticky_key_->HandleScrollEvent(event, mod_down_flags, released);
123 } 178 }
124 179
125 ui::EventRewriteStatus StickyKeysController::RewriteKeyEvent(
Tim Song 2017/03/07 18:48:54 Could you keep these functions (but make them priv
Peng 2017/03/07 19:43:16 Done
126 const ui::KeyEvent& event,
127 ui::KeyboardCode key_code,
128 int* flags) {
129 if (!enabled_)
130 return ui::EVENT_REWRITE_CONTINUE;
131 int mod_down_flags = 0;
132 bool released = false;
133 bool consumed = HandleKeyEvent(event, key_code, &mod_down_flags, &released);
134 UpdateOverlay();
135 return RewriteUpdate(consumed, released, mod_down_flags, flags);
136 }
137
138 ui::EventRewriteStatus StickyKeysController::RewriteMouseEvent(
139 const ui::MouseEvent& event,
140 int* flags) {
141 if (!enabled_)
142 return ui::EVENT_REWRITE_CONTINUE;
143 int mod_down_flags = 0;
144 bool released = false;
145 bool consumed = HandleMouseEvent(event, &mod_down_flags, &released);
146 UpdateOverlay();
147 return RewriteUpdate(consumed, released, mod_down_flags, flags);
148 }
149
150 ui::EventRewriteStatus StickyKeysController::RewriteScrollEvent(
151 const ui::ScrollEvent& event,
152 int* flags) {
153 if (!enabled_)
154 return ui::EVENT_REWRITE_CONTINUE;
155 int mod_down_flags = 0;
156 bool released = false;
157 bool consumed = HandleScrollEvent(event, &mod_down_flags, &released);
158 UpdateOverlay();
159 return RewriteUpdate(consumed, released, mod_down_flags, flags);
160 }
161
162 ui::EventRewriteStatus StickyKeysController::NextDispatchEvent(
163 std::unique_ptr<ui::Event>* new_event) {
164 DCHECK(new_event);
165 new_event->reset();
166 int remaining = shift_sticky_key_->GetModifierUpEvent(new_event) +
167 alt_sticky_key_->GetModifierUpEvent(new_event) +
168 altgr_sticky_key_->GetModifierUpEvent(new_event) +
169 ctrl_sticky_key_->GetModifierUpEvent(new_event) +
170 mod3_sticky_key_->GetModifierUpEvent(new_event) +
171 search_sticky_key_->GetModifierUpEvent(new_event);
172 if (!new_event)
173 return ui::EVENT_REWRITE_CONTINUE;
174 if (remaining)
175 return ui::EVENT_REWRITE_DISPATCH_ANOTHER;
176 return ui::EVENT_REWRITE_REWRITTEN;
177 }
178
179 void StickyKeysController::UpdateOverlay() { 180 void StickyKeysController::UpdateOverlay() {
180 overlay_->SetModifierKeyState(ui::EF_SHIFT_DOWN, 181 overlay_->SetModifierKeyState(ui::EF_SHIFT_DOWN,
181 shift_sticky_key_->current_state()); 182 shift_sticky_key_->current_state());
182 overlay_->SetModifierKeyState(ui::EF_CONTROL_DOWN, 183 overlay_->SetModifierKeyState(ui::EF_CONTROL_DOWN,
183 ctrl_sticky_key_->current_state()); 184 ctrl_sticky_key_->current_state());
184 overlay_->SetModifierKeyState(ui::EF_ALT_DOWN, 185 overlay_->SetModifierKeyState(ui::EF_ALT_DOWN,
185 alt_sticky_key_->current_state()); 186 alt_sticky_key_->current_state());
186 overlay_->SetModifierKeyState(ui::EF_COMMAND_DOWN, 187 overlay_->SetModifierKeyState(ui::EF_COMMAND_DOWN,
187 search_sticky_key_->current_state()); 188 search_sticky_key_->current_state());
188 overlay_->SetModifierKeyState(ui::EF_ALTGR_DOWN, 189 overlay_->SetModifierKeyState(ui::EF_ALTGR_DOWN,
189 altgr_sticky_key_->current_state()); 190 altgr_sticky_key_->current_state());
190 overlay_->SetModifierKeyState(ui::EF_MOD3_DOWN, 191 overlay_->SetModifierKeyState(ui::EF_MOD3_DOWN,
191 mod3_sticky_key_->current_state()); 192 mod3_sticky_key_->current_state());
192 193
193 bool key_in_use = 194 bool key_in_use =
194 shift_sticky_key_->current_state() != STICKY_KEY_STATE_DISABLED || 195 shift_sticky_key_->current_state() != STICKY_KEY_STATE_DISABLED ||
195 alt_sticky_key_->current_state() != STICKY_KEY_STATE_DISABLED || 196 alt_sticky_key_->current_state() != STICKY_KEY_STATE_DISABLED ||
196 altgr_sticky_key_->current_state() != STICKY_KEY_STATE_DISABLED || 197 altgr_sticky_key_->current_state() != STICKY_KEY_STATE_DISABLED ||
197 ctrl_sticky_key_->current_state() != STICKY_KEY_STATE_DISABLED || 198 ctrl_sticky_key_->current_state() != STICKY_KEY_STATE_DISABLED ||
198 search_sticky_key_->current_state() != STICKY_KEY_STATE_DISABLED || 199 search_sticky_key_->current_state() != STICKY_KEY_STATE_DISABLED ||
199 mod3_sticky_key_->current_state() != STICKY_KEY_STATE_DISABLED; 200 mod3_sticky_key_->current_state() != STICKY_KEY_STATE_DISABLED;
200 201
201 overlay_->Show(enabled_ && key_in_use); 202 overlay_->Show(enabled_ && key_in_use);
202 } 203 }
203 204
204 StickyKeysOverlay* StickyKeysController::GetOverlayForTest() {
205 return overlay_.get();
206 }
207
208 /////////////////////////////////////////////////////////////////////////////// 205 ///////////////////////////////////////////////////////////////////////////////
209 // StickyKeysHandler 206 // StickyKeysHandler
210 StickyKeysHandler::StickyKeysHandler(ui::EventFlags modifier_flag) 207 StickyKeysHandler::StickyKeysHandler(ui::EventFlags modifier_flag)
211 : modifier_flag_(modifier_flag), 208 : modifier_flag_(modifier_flag),
212 current_state_(STICKY_KEY_STATE_DISABLED), 209 current_state_(STICKY_KEY_STATE_DISABLED),
213 preparing_to_enable_(false), 210 preparing_to_enable_(false),
214 scroll_delta_(0) {} 211 scroll_delta_(0) {}
215 212
216 StickyKeysHandler::~StickyKeysHandler() {} 213 StickyKeysHandler::~StickyKeysHandler() {}
217 214
218 bool StickyKeysHandler::HandleKeyEvent(const ui::KeyEvent& event, 215 bool StickyKeysHandler::HandleKeyEvent(const ui::KeyEvent& event,
219 ui::KeyboardCode key_code,
220 int* mod_down_flags, 216 int* mod_down_flags,
221 bool* released) { 217 bool* released) {
222 switch (current_state_) { 218 switch (current_state_) {
223 case STICKY_KEY_STATE_DISABLED: 219 case STICKY_KEY_STATE_DISABLED:
224 return HandleDisabledState(event, key_code); 220 return HandleDisabledState(event);
225 case STICKY_KEY_STATE_ENABLED: 221 case STICKY_KEY_STATE_ENABLED:
226 return HandleEnabledState(event, key_code, mod_down_flags, released); 222 return HandleEnabledState(event, mod_down_flags, released);
227 case STICKY_KEY_STATE_LOCKED: 223 case STICKY_KEY_STATE_LOCKED:
228 return HandleLockedState(event, key_code, mod_down_flags, released); 224 return HandleLockedState(event, mod_down_flags, released);
229 } 225 }
230 NOTREACHED(); 226 NOTREACHED();
231 return false; 227 return false;
232 } 228 }
233 229
234 bool StickyKeysHandler::HandleMouseEvent(const ui::MouseEvent& event, 230 bool StickyKeysHandler::HandleMouseEvent(const ui::MouseEvent& event,
235 int* mod_down_flags, 231 int* mod_down_flags,
236 bool* released) { 232 bool* released) {
237 if (ShouldModifyMouseEvent(event)) 233 if (ShouldModifyMouseEvent(event))
238 preparing_to_enable_ = false; 234 preparing_to_enable_ = false;
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
327 return type == ui::ET_KEY_PRESSED ? NORMAL_KEY_DOWN : NORMAL_KEY_UP; 323 return type == ui::ET_KEY_PRESSED ? NORMAL_KEY_DOWN : NORMAL_KEY_UP;
328 } 324 }
329 325
330 if (is_target_key) { 326 if (is_target_key) {
331 return type == ui::ET_KEY_PRESSED ? TARGET_MODIFIER_DOWN 327 return type == ui::ET_KEY_PRESSED ? TARGET_MODIFIER_DOWN
332 : TARGET_MODIFIER_UP; 328 : TARGET_MODIFIER_UP;
333 } 329 }
334 return type == ui::ET_KEY_PRESSED ? OTHER_MODIFIER_DOWN : OTHER_MODIFIER_UP; 330 return type == ui::ET_KEY_PRESSED ? OTHER_MODIFIER_DOWN : OTHER_MODIFIER_UP;
335 } 331 }
336 332
337 bool StickyKeysHandler::HandleDisabledState(const ui::KeyEvent& event, 333 bool StickyKeysHandler::HandleDisabledState(const ui::KeyEvent& event) {
338 ui::KeyboardCode key_code) { 334 switch (TranslateKeyEvent(event.type(), event.key_code())) {
339 switch (TranslateKeyEvent(event.type(), key_code)) {
340 case TARGET_MODIFIER_UP: 335 case TARGET_MODIFIER_UP:
341 if (preparing_to_enable_) { 336 if (preparing_to_enable_) {
342 preparing_to_enable_ = false; 337 preparing_to_enable_ = false;
343 scroll_delta_ = 0; 338 scroll_delta_ = 0;
344 current_state_ = STICKY_KEY_STATE_ENABLED; 339 current_state_ = STICKY_KEY_STATE_ENABLED;
345 modifier_up_event_.reset(new ui::KeyEvent(event)); 340 modifier_up_event_.reset(new ui::KeyEvent(event));
346 return true; 341 return true;
347 } 342 }
348 return false; 343 return false;
349 case TARGET_MODIFIER_DOWN: 344 case TARGET_MODIFIER_DOWN:
350 preparing_to_enable_ = true; 345 preparing_to_enable_ = true;
351 return false; 346 return false;
352 case NORMAL_KEY_DOWN: 347 case NORMAL_KEY_DOWN:
353 preparing_to_enable_ = false; 348 preparing_to_enable_ = false;
354 return false; 349 return false;
355 case NORMAL_KEY_UP: 350 case NORMAL_KEY_UP:
356 case OTHER_MODIFIER_DOWN: 351 case OTHER_MODIFIER_DOWN:
357 case OTHER_MODIFIER_UP: 352 case OTHER_MODIFIER_UP:
358 return false; 353 return false;
359 } 354 }
360 NOTREACHED(); 355 NOTREACHED();
361 return false; 356 return false;
362 } 357 }
363 358
364 bool StickyKeysHandler::HandleEnabledState(const ui::KeyEvent& event, 359 bool StickyKeysHandler::HandleEnabledState(const ui::KeyEvent& event,
365 ui::KeyboardCode key_code,
366 int* mod_down_flags, 360 int* mod_down_flags,
367 bool* released) { 361 bool* released) {
368 switch (TranslateKeyEvent(event.type(), key_code)) { 362 switch (TranslateKeyEvent(event.type(), event.key_code())) {
369 case NORMAL_KEY_UP: 363 case NORMAL_KEY_UP:
370 case TARGET_MODIFIER_DOWN: 364 case TARGET_MODIFIER_DOWN:
371 return false; 365 return false;
372 case TARGET_MODIFIER_UP: 366 case TARGET_MODIFIER_UP:
373 current_state_ = STICKY_KEY_STATE_LOCKED; 367 current_state_ = STICKY_KEY_STATE_LOCKED;
374 modifier_up_event_.reset(); 368 modifier_up_event_.reset();
375 return true; 369 return true;
376 case NORMAL_KEY_DOWN: { 370 case NORMAL_KEY_DOWN: {
377 current_state_ = STICKY_KEY_STATE_DISABLED; 371 current_state_ = STICKY_KEY_STATE_DISABLED;
378 *mod_down_flags |= modifier_flag_; 372 *mod_down_flags |= modifier_flag_;
379 *released = true; 373 *released = true;
380 return false; 374 return false;
381 } 375 }
382 case OTHER_MODIFIER_DOWN: 376 case OTHER_MODIFIER_DOWN:
383 case OTHER_MODIFIER_UP: 377 case OTHER_MODIFIER_UP:
384 return false; 378 return false;
385 } 379 }
386 NOTREACHED(); 380 NOTREACHED();
387 return false; 381 return false;
388 } 382 }
389 383
390 bool StickyKeysHandler::HandleLockedState(const ui::KeyEvent& event, 384 bool StickyKeysHandler::HandleLockedState(const ui::KeyEvent& event,
391 ui::KeyboardCode key_code,
392 int* mod_down_flags, 385 int* mod_down_flags,
393 bool* released) { 386 bool* released) {
394 switch (TranslateKeyEvent(event.type(), key_code)) { 387 switch (TranslateKeyEvent(event.type(), event.key_code())) {
395 case TARGET_MODIFIER_DOWN: 388 case TARGET_MODIFIER_DOWN:
396 return true; 389 return true;
397 case TARGET_MODIFIER_UP: 390 case TARGET_MODIFIER_UP:
398 current_state_ = STICKY_KEY_STATE_DISABLED; 391 current_state_ = STICKY_KEY_STATE_DISABLED;
399 return false; 392 return false;
400 case NORMAL_KEY_DOWN: 393 case NORMAL_KEY_DOWN:
401 case NORMAL_KEY_UP: 394 case NORMAL_KEY_UP:
402 *mod_down_flags |= modifier_flag_; 395 *mod_down_flags |= modifier_flag_;
403 return false; 396 return false;
404 case OTHER_MODIFIER_DOWN: 397 case OTHER_MODIFIER_DOWN:
405 case OTHER_MODIFIER_UP: 398 case OTHER_MODIFIER_UP:
406 return false; 399 return false;
407 } 400 }
408 NOTREACHED(); 401 NOTREACHED();
409 return false; 402 return false;
410 } 403 }
411 404
412 } // namespace ash 405 } // namespace ash
OLDNEW
« no previous file with comments | « ash/sticky_keys/sticky_keys_controller.h ('k') | ash/sticky_keys/sticky_keys_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698