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

Side by Side Diff: ash/accelerators/accelerator_controller_unittest.cc

Issue 308023002: Add EF_IS_REPEAT flag to KeyEvent to handle repeated accelerators correctly. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: use ui::EF_IS_REPEAT in test instead Created 6 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 | Annotate | Revision Log
« no previous file with comments | « ash/accelerators/accelerator_controller.cc ('k') | ash/accelerators/accelerator_delegate.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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/accelerators/accelerator_controller.h" 5 #include "ash/accelerators/accelerator_controller.h"
6 6
7 #include "ash/accelerators/accelerator_table.h" 7 #include "ash/accelerators/accelerator_table.h"
8 #include "ash/accessibility_delegate.h" 8 #include "ash/accessibility_delegate.h"
9 #include "ash/ash_switches.h" 9 #include "ash/ash_switches.h"
10 #include "ash/display/display_manager.h" 10 #include "ash/display/display_manager.h"
11 #include "ash/ime_control_delegate.h" 11 #include "ash/ime_control_delegate.h"
12 #include "ash/screen_util.h" 12 #include "ash/screen_util.h"
13 #include "ash/shell.h" 13 #include "ash/shell.h"
14 #include "ash/shell_window_ids.h" 14 #include "ash/shell_window_ids.h"
15 #include "ash/system/brightness_control_delegate.h" 15 #include "ash/system/brightness_control_delegate.h"
16 #include "ash/system/keyboard_brightness/keyboard_brightness_control_delegate.h" 16 #include "ash/system/keyboard_brightness/keyboard_brightness_control_delegate.h"
17 #include "ash/system/tray/system_tray_delegate.h" 17 #include "ash/system/tray/system_tray_delegate.h"
18 #include "ash/test/ash_test_base.h" 18 #include "ash/test/ash_test_base.h"
19 #include "ash/test/display_manager_test_api.h" 19 #include "ash/test/display_manager_test_api.h"
20 #include "ash/test/test_screenshot_delegate.h" 20 #include "ash/test/test_screenshot_delegate.h"
21 #include "ash/test/test_shell_delegate.h" 21 #include "ash/test/test_shell_delegate.h"
22 #include "ash/test/test_volume_control_delegate.h" 22 #include "ash/test/test_volume_control_delegate.h"
23 #include "ash/volume_control_delegate.h" 23 #include "ash/volume_control_delegate.h"
24 #include "ash/wm/window_state.h" 24 #include "ash/wm/window_state.h"
25 #include "ash/wm/window_util.h" 25 #include "ash/wm/window_util.h"
26 #include "base/command_line.h" 26 #include "base/command_line.h"
27 #include "ui/aura/client/aura_constants.h"
28 #include "ui/aura/test/event_generator.h"
27 #include "ui/aura/test/test_window_delegate.h" 29 #include "ui/aura/test/test_window_delegate.h"
28 #include "ui/aura/test/test_windows.h" 30 #include "ui/aura/test/test_windows.h"
29 #include "ui/aura/window.h" 31 #include "ui/aura/window.h"
30 #include "ui/events/event.h" 32 #include "ui/events/event.h"
31 #include "ui/events/event_processor.h" 33 #include "ui/events/event_processor.h"
32 #include "ui/gfx/screen.h" 34 #include "ui/gfx/screen.h"
35 #include "ui/views/widget/widget.h"
33 36
34 #if defined(USE_X11) 37 #if defined(USE_X11)
35 #include <X11/Xlib.h> 38 #include <X11/Xlib.h>
36 #include "ui/events/test/events_test_utils_x11.h" 39 #include "ui/events/test/events_test_utils_x11.h"
37 #endif 40 #endif
38 41
39 namespace ash { 42 namespace ash {
40 43
41 namespace { 44 namespace {
42 45
43 class TestTarget : public ui::AcceleratorTarget { 46 class TestTarget : public ui::AcceleratorTarget {
44 public: 47 public:
45 TestTarget() : accelerator_pressed_count_(0) {} 48 TestTarget() : accelerator_pressed_count_(0), accelerator_repeat_count_(0) {}
46 virtual ~TestTarget() {} 49 virtual ~TestTarget() {}
47 50
48 int accelerator_pressed_count() const { 51 int accelerator_pressed_count() const {
49 return accelerator_pressed_count_; 52 return accelerator_pressed_count_;
50 } 53 }
51 54
52 void set_accelerator_pressed_count(int accelerator_pressed_count) { 55 int accelerator_repeat_count() const { return accelerator_repeat_count_; }
53 accelerator_pressed_count_ = accelerator_pressed_count; 56
57 void reset() {
58 accelerator_pressed_count_ = 0;
59 accelerator_repeat_count_ = 0;
54 } 60 }
55 61
56 // Overridden from ui::AcceleratorTarget: 62 // Overridden from ui::AcceleratorTarget:
57 virtual bool AcceleratorPressed(const ui::Accelerator& accelerator) OVERRIDE; 63 virtual bool AcceleratorPressed(const ui::Accelerator& accelerator) OVERRIDE;
58 virtual bool CanHandleAccelerators() const OVERRIDE; 64 virtual bool CanHandleAccelerators() const OVERRIDE;
59 65
60 private: 66 private:
61 int accelerator_pressed_count_; 67 int accelerator_pressed_count_;
68 int accelerator_repeat_count_;
62 69
63 DISALLOW_COPY_AND_ASSIGN(TestTarget); 70 DISALLOW_COPY_AND_ASSIGN(TestTarget);
64 }; 71 };
65 72
66 class ReleaseAccelerator : public ui::Accelerator { 73 class ReleaseAccelerator : public ui::Accelerator {
67 public: 74 public:
68 ReleaseAccelerator(ui::KeyboardCode keycode, int modifiers) 75 ReleaseAccelerator(ui::KeyboardCode keycode, int modifiers)
69 : ui::Accelerator(keycode, modifiers) { 76 : ui::Accelerator(keycode, modifiers) {
70 set_type(ui::ET_KEY_RELEASED); 77 set_type(ui::ET_KEY_RELEASED);
71 } 78 }
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
207 private: 214 private:
208 const bool consume_; 215 const bool consume_;
209 int handle_keyboard_brightness_down_count_; 216 int handle_keyboard_brightness_down_count_;
210 int handle_keyboard_brightness_up_count_; 217 int handle_keyboard_brightness_up_count_;
211 ui::Accelerator last_accelerator_; 218 ui::Accelerator last_accelerator_;
212 219
213 DISALLOW_COPY_AND_ASSIGN(DummyKeyboardBrightnessControlDelegate); 220 DISALLOW_COPY_AND_ASSIGN(DummyKeyboardBrightnessControlDelegate);
214 }; 221 };
215 222
216 bool TestTarget::AcceleratorPressed(const ui::Accelerator& accelerator) { 223 bool TestTarget::AcceleratorPressed(const ui::Accelerator& accelerator) {
217 ++accelerator_pressed_count_; 224 if (accelerator.IsRepeat())
225 ++accelerator_repeat_count_;
226 else
227 ++accelerator_pressed_count_;
218 return true; 228 return true;
219 } 229 }
220 230
221 bool TestTarget::CanHandleAccelerators() const { 231 bool TestTarget::CanHandleAccelerators() const {
222 return true; 232 return true;
223 } 233 }
224 234
225 } // namespace 235 } // namespace
226 236
227 class AcceleratorControllerTest : public test::AshTestBase { 237 class AcceleratorControllerTest : public test::AshTestBase {
228 public: 238 public:
229 AcceleratorControllerTest() {} 239 AcceleratorControllerTest() {}
230 virtual ~AcceleratorControllerTest() {} 240 virtual ~AcceleratorControllerTest() {}
231 241
232 protected: 242 protected:
233 void EnableInternalDisplay() { 243 void EnableInternalDisplay() {
234 test::DisplayManagerTestApi(Shell::GetInstance()->display_manager()). 244 test::DisplayManagerTestApi(Shell::GetInstance()->display_manager()).
235 SetFirstDisplayAsInternalDisplay(); 245 SetFirstDisplayAsInternalDisplay();
236 } 246 }
237 247
238 static AcceleratorController* GetController(); 248 static AcceleratorController* GetController();
239 static bool ProcessWithContext(const ui::Accelerator& accelerator);
240 249
241 // Several functions to access ExitWarningHandler (as friend). 250 // Several functions to access ExitWarningHandler (as friend).
242 static void StubForTest(ExitWarningHandler* ewh) { 251 static void StubForTest(ExitWarningHandler* ewh) {
243 ewh->stub_timer_for_test_ = true; 252 ewh->stub_timer_for_test_ = true;
244 } 253 }
245 static void Reset(ExitWarningHandler* ewh) { 254 static void Reset(ExitWarningHandler* ewh) {
246 ewh->state_ = ExitWarningHandler::IDLE; 255 ewh->state_ = ExitWarningHandler::IDLE;
247 } 256 }
248 static void SimulateTimerExpired(ExitWarningHandler* ewh) { 257 static void SimulateTimerExpired(ExitWarningHandler* ewh) {
249 ewh->TimerAction(); 258 ewh->TimerAction();
250 } 259 }
251 static bool is_ui_shown(ExitWarningHandler* ewh) { 260 static bool is_ui_shown(ExitWarningHandler* ewh) {
252 return !!ewh->widget_; 261 return !!ewh->widget_;
253 } 262 }
254 static bool is_idle(ExitWarningHandler* ewh) { 263 static bool is_idle(ExitWarningHandler* ewh) {
255 return ewh->state_ == ExitWarningHandler::IDLE; 264 return ewh->state_ == ExitWarningHandler::IDLE;
256 } 265 }
257 static bool is_exiting(ExitWarningHandler* ewh) { 266 static bool is_exiting(ExitWarningHandler* ewh) {
258 return ewh->state_ == ExitWarningHandler::EXITING; 267 return ewh->state_ == ExitWarningHandler::EXITING;
259 } 268 }
260 269
261 private: 270 private:
262 DISALLOW_COPY_AND_ASSIGN(AcceleratorControllerTest); 271 DISALLOW_COPY_AND_ASSIGN(AcceleratorControllerTest);
263 }; 272 };
264 273
265 AcceleratorController* AcceleratorControllerTest::GetController() { 274 AcceleratorController* AcceleratorControllerTest::GetController() {
266 return Shell::GetInstance()->accelerator_controller(); 275 return Shell::GetInstance()->accelerator_controller();
267 } 276 }
268 277
269 bool AcceleratorControllerTest::ProcessWithContext(
270 const ui::Accelerator& accelerator) {
271 AcceleratorController* controller = GetController();
272 controller->context()->UpdateContext(accelerator);
273 return controller->Process(accelerator);
274 }
275
276 #if !defined(OS_WIN) 278 #if !defined(OS_WIN)
277 // Double press of exit shortcut => exiting 279 // Double press of exit shortcut => exiting
278 TEST_F(AcceleratorControllerTest, ExitWarningHandlerTestDoublePress) { 280 TEST_F(AcceleratorControllerTest, ExitWarningHandlerTestDoublePress) {
279 ui::Accelerator press(ui::VKEY_Q, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN); 281 ui::Accelerator press(ui::VKEY_Q, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN);
280 ui::Accelerator release(press); 282 ui::Accelerator release(press);
281 release.set_type(ui::ET_KEY_RELEASED); 283 release.set_type(ui::ET_KEY_RELEASED);
282 ExitWarningHandler* ewh = GetController()->GetExitWarningHandlerForTest(); 284 ExitWarningHandler* ewh = GetController()->GetExitWarningHandlerForTest();
283 ASSERT_TRUE(!!ewh); 285 ASSERT_TRUE(!!ewh);
284 StubForTest(ewh); 286 StubForTest(ewh);
285 EXPECT_TRUE(is_idle(ewh)); 287 EXPECT_TRUE(is_idle(ewh));
286 EXPECT_FALSE(is_ui_shown(ewh)); 288 EXPECT_FALSE(is_ui_shown(ewh));
287 EXPECT_TRUE(ProcessWithContext(press)); 289 EXPECT_TRUE(GetController()->Process(press));
288 EXPECT_FALSE(ProcessWithContext(release)); 290 EXPECT_FALSE(GetController()->Process(release));
289 EXPECT_FALSE(is_idle(ewh)); 291 EXPECT_FALSE(is_idle(ewh));
290 EXPECT_TRUE(is_ui_shown(ewh)); 292 EXPECT_TRUE(is_ui_shown(ewh));
291 EXPECT_TRUE(ProcessWithContext(press)); // second press before timer. 293 EXPECT_TRUE(GetController()->Process(press)); // second press before timer.
292 EXPECT_FALSE(ProcessWithContext(release)); 294 EXPECT_FALSE(GetController()->Process(release));
293 SimulateTimerExpired(ewh); 295 SimulateTimerExpired(ewh);
294 EXPECT_TRUE(is_exiting(ewh)); 296 EXPECT_TRUE(is_exiting(ewh));
295 EXPECT_FALSE(is_ui_shown(ewh)); 297 EXPECT_FALSE(is_ui_shown(ewh));
296 Reset(ewh); 298 Reset(ewh);
297 } 299 }
298 300
299 // Single press of exit shortcut before timer => idle 301 // Single press of exit shortcut before timer => idle
300 TEST_F(AcceleratorControllerTest, ExitWarningHandlerTestSinglePress) { 302 TEST_F(AcceleratorControllerTest, ExitWarningHandlerTestSinglePress) {
301 ui::Accelerator press(ui::VKEY_Q, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN); 303 ui::Accelerator press(ui::VKEY_Q, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN);
302 ui::Accelerator release(press); 304 ui::Accelerator release(press);
303 release.set_type(ui::ET_KEY_RELEASED); 305 release.set_type(ui::ET_KEY_RELEASED);
304 ExitWarningHandler* ewh = GetController()->GetExitWarningHandlerForTest(); 306 ExitWarningHandler* ewh = GetController()->GetExitWarningHandlerForTest();
305 ASSERT_TRUE(!!ewh); 307 ASSERT_TRUE(!!ewh);
306 StubForTest(ewh); 308 StubForTest(ewh);
307 EXPECT_TRUE(is_idle(ewh)); 309 EXPECT_TRUE(is_idle(ewh));
308 EXPECT_FALSE(is_ui_shown(ewh)); 310 EXPECT_FALSE(is_ui_shown(ewh));
309 EXPECT_TRUE(ProcessWithContext(press)); 311 EXPECT_TRUE(GetController()->Process(press));
310 EXPECT_FALSE(ProcessWithContext(release)); 312 EXPECT_FALSE(GetController()->Process(release));
311 EXPECT_FALSE(is_idle(ewh)); 313 EXPECT_FALSE(is_idle(ewh));
312 EXPECT_TRUE(is_ui_shown(ewh)); 314 EXPECT_TRUE(is_ui_shown(ewh));
313 SimulateTimerExpired(ewh); 315 SimulateTimerExpired(ewh);
314 EXPECT_TRUE(is_idle(ewh)); 316 EXPECT_TRUE(is_idle(ewh));
315 EXPECT_FALSE(is_ui_shown(ewh)); 317 EXPECT_FALSE(is_ui_shown(ewh));
316 Reset(ewh); 318 Reset(ewh);
317 } 319 }
318 320
319 // Shutdown ash with exit warning bubble open should not crash. 321 // Shutdown ash with exit warning bubble open should not crash.
320 TEST_F(AcceleratorControllerTest, LingeringExitWarningBubble) { 322 TEST_F(AcceleratorControllerTest, LingeringExitWarningBubble) {
321 ExitWarningHandler* ewh = GetController()->GetExitWarningHandlerForTest(); 323 ExitWarningHandler* ewh = GetController()->GetExitWarningHandlerForTest();
322 ASSERT_TRUE(!!ewh); 324 ASSERT_TRUE(!!ewh);
323 StubForTest(ewh); 325 StubForTest(ewh);
324 326
325 // Trigger once to show the bubble. 327 // Trigger once to show the bubble.
326 ewh->HandleAccelerator(); 328 ewh->HandleAccelerator();
327 EXPECT_FALSE(is_idle(ewh)); 329 EXPECT_FALSE(is_idle(ewh));
328 EXPECT_TRUE(is_ui_shown(ewh)); 330 EXPECT_TRUE(is_ui_shown(ewh));
329 331
330 // Exit ash and there should be no crash 332 // Exit ash and there should be no crash
331 } 333 }
332 #endif // !defined(OS_WIN) 334 #endif // !defined(OS_WIN)
333 335
334 TEST_F(AcceleratorControllerTest, Register) { 336 TEST_F(AcceleratorControllerTest, Register) {
335 const ui::Accelerator accelerator_a(ui::VKEY_A, ui::EF_NONE); 337 const ui::Accelerator accelerator_a(ui::VKEY_A, ui::EF_NONE);
336 TestTarget target; 338 TestTarget target;
337 GetController()->Register(accelerator_a, &target); 339 GetController()->Register(accelerator_a, &target);
338 340
339 // The registered accelerator is processed. 341 // The registered accelerator is processed.
340 EXPECT_TRUE(ProcessWithContext(accelerator_a)); 342 EXPECT_TRUE(GetController()->Process(accelerator_a));
341 EXPECT_EQ(1, target.accelerator_pressed_count()); 343 EXPECT_EQ(1, target.accelerator_pressed_count());
342 } 344 }
343 345
344 TEST_F(AcceleratorControllerTest, RegisterMultipleTarget) { 346 TEST_F(AcceleratorControllerTest, RegisterMultipleTarget) {
345 const ui::Accelerator accelerator_a(ui::VKEY_A, ui::EF_NONE); 347 const ui::Accelerator accelerator_a(ui::VKEY_A, ui::EF_NONE);
346 TestTarget target1; 348 TestTarget target1;
347 GetController()->Register(accelerator_a, &target1); 349 GetController()->Register(accelerator_a, &target1);
348 TestTarget target2; 350 TestTarget target2;
349 GetController()->Register(accelerator_a, &target2); 351 GetController()->Register(accelerator_a, &target2);
350 352
351 // If multiple targets are registered with the same accelerator, the target 353 // If multiple targets are registered with the same accelerator, the target
352 // registered later processes the accelerator. 354 // registered later processes the accelerator.
353 EXPECT_TRUE(ProcessWithContext(accelerator_a)); 355 EXPECT_TRUE(GetController()->Process(accelerator_a));
354 EXPECT_EQ(0, target1.accelerator_pressed_count()); 356 EXPECT_EQ(0, target1.accelerator_pressed_count());
355 EXPECT_EQ(1, target2.accelerator_pressed_count()); 357 EXPECT_EQ(1, target2.accelerator_pressed_count());
356 } 358 }
357 359
358 TEST_F(AcceleratorControllerTest, Unregister) { 360 TEST_F(AcceleratorControllerTest, Unregister) {
359 const ui::Accelerator accelerator_a(ui::VKEY_A, ui::EF_NONE); 361 const ui::Accelerator accelerator_a(ui::VKEY_A, ui::EF_NONE);
360 TestTarget target; 362 TestTarget target;
361 GetController()->Register(accelerator_a, &target); 363 GetController()->Register(accelerator_a, &target);
362 const ui::Accelerator accelerator_b(ui::VKEY_B, ui::EF_NONE); 364 const ui::Accelerator accelerator_b(ui::VKEY_B, ui::EF_NONE);
363 GetController()->Register(accelerator_b, &target); 365 GetController()->Register(accelerator_b, &target);
364 366
365 // Unregistering a different accelerator does not affect the other 367 // Unregistering a different accelerator does not affect the other
366 // accelerator. 368 // accelerator.
367 GetController()->Unregister(accelerator_b, &target); 369 GetController()->Unregister(accelerator_b, &target);
368 EXPECT_TRUE(ProcessWithContext(accelerator_a)); 370 EXPECT_TRUE(GetController()->Process(accelerator_a));
369 EXPECT_EQ(1, target.accelerator_pressed_count()); 371 EXPECT_EQ(1, target.accelerator_pressed_count());
370 372
371 // The unregistered accelerator is no longer processed. 373 // The unregistered accelerator is no longer processed.
372 target.set_accelerator_pressed_count(0); 374 target.reset();
373 GetController()->Unregister(accelerator_a, &target); 375 GetController()->Unregister(accelerator_a, &target);
374 EXPECT_FALSE(ProcessWithContext(accelerator_a)); 376 EXPECT_FALSE(GetController()->Process(accelerator_a));
375 EXPECT_EQ(0, target.accelerator_pressed_count()); 377 EXPECT_EQ(0, target.accelerator_pressed_count());
376 } 378 }
377 379
378 TEST_F(AcceleratorControllerTest, UnregisterAll) { 380 TEST_F(AcceleratorControllerTest, UnregisterAll) {
379 const ui::Accelerator accelerator_a(ui::VKEY_A, ui::EF_NONE); 381 const ui::Accelerator accelerator_a(ui::VKEY_A, ui::EF_NONE);
380 TestTarget target1; 382 TestTarget target1;
381 GetController()->Register(accelerator_a, &target1); 383 GetController()->Register(accelerator_a, &target1);
382 const ui::Accelerator accelerator_b(ui::VKEY_B, ui::EF_NONE); 384 const ui::Accelerator accelerator_b(ui::VKEY_B, ui::EF_NONE);
383 GetController()->Register(accelerator_b, &target1); 385 GetController()->Register(accelerator_b, &target1);
384 const ui::Accelerator accelerator_c(ui::VKEY_C, ui::EF_NONE); 386 const ui::Accelerator accelerator_c(ui::VKEY_C, ui::EF_NONE);
385 TestTarget target2; 387 TestTarget target2;
386 GetController()->Register(accelerator_c, &target2); 388 GetController()->Register(accelerator_c, &target2);
387 GetController()->UnregisterAll(&target1); 389 GetController()->UnregisterAll(&target1);
388 390
389 // All the accelerators registered for |target1| are no longer processed. 391 // All the accelerators registered for |target1| are no longer processed.
390 EXPECT_FALSE(ProcessWithContext(accelerator_a)); 392 EXPECT_FALSE(GetController()->Process(accelerator_a));
391 EXPECT_FALSE(ProcessWithContext(accelerator_b)); 393 EXPECT_FALSE(GetController()->Process(accelerator_b));
392 EXPECT_EQ(0, target1.accelerator_pressed_count()); 394 EXPECT_EQ(0, target1.accelerator_pressed_count());
393 395
394 // UnregisterAll with a different target does not affect the other target. 396 // UnregisterAll with a different target does not affect the other target.
395 EXPECT_TRUE(ProcessWithContext(accelerator_c)); 397 EXPECT_TRUE(GetController()->Process(accelerator_c));
396 EXPECT_EQ(1, target2.accelerator_pressed_count()); 398 EXPECT_EQ(1, target2.accelerator_pressed_count());
397 } 399 }
398 400
399 TEST_F(AcceleratorControllerTest, Process) { 401 TEST_F(AcceleratorControllerTest, Process) {
400 const ui::Accelerator accelerator_a(ui::VKEY_A, ui::EF_NONE); 402 const ui::Accelerator accelerator_a(ui::VKEY_A, ui::EF_NONE);
401 TestTarget target1; 403 TestTarget target1;
402 GetController()->Register(accelerator_a, &target1); 404 GetController()->Register(accelerator_a, &target1);
403 405
404 // The registered accelerator is processed. 406 // The registered accelerator is processed.
405 EXPECT_TRUE(ProcessWithContext(accelerator_a)); 407 EXPECT_TRUE(GetController()->Process(accelerator_a));
406 EXPECT_EQ(1, target1.accelerator_pressed_count()); 408 EXPECT_EQ(1, target1.accelerator_pressed_count());
407 409
408 // The non-registered accelerator is not processed. 410 // The non-registered accelerator is not processed.
409 const ui::Accelerator accelerator_b(ui::VKEY_B, ui::EF_NONE); 411 const ui::Accelerator accelerator_b(ui::VKEY_B, ui::EF_NONE);
410 EXPECT_FALSE(ProcessWithContext(accelerator_b)); 412 EXPECT_FALSE(GetController()->Process(accelerator_b));
411 } 413 }
412 414
413 TEST_F(AcceleratorControllerTest, IsRegistered) { 415 TEST_F(AcceleratorControllerTest, IsRegistered) {
414 const ui::Accelerator accelerator_a(ui::VKEY_A, ui::EF_NONE); 416 const ui::Accelerator accelerator_a(ui::VKEY_A, ui::EF_NONE);
415 const ui::Accelerator accelerator_shift_a(ui::VKEY_A, ui::EF_SHIFT_DOWN); 417 const ui::Accelerator accelerator_shift_a(ui::VKEY_A, ui::EF_SHIFT_DOWN);
416 TestTarget target; 418 TestTarget target;
417 GetController()->Register(accelerator_a, &target); 419 GetController()->Register(accelerator_a, &target);
418 EXPECT_TRUE(GetController()->IsRegistered(accelerator_a)); 420 EXPECT_TRUE(GetController()->IsRegistered(accelerator_a));
419 EXPECT_FALSE(GetController()->IsRegistered(accelerator_shift_a)); 421 EXPECT_FALSE(GetController()->IsRegistered(accelerator_shift_a));
420 GetController()->UnregisterAll(&target); 422 GetController()->UnregisterAll(&target);
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
501 aura::Window* docked_container = Shell::GetContainer( 503 aura::Window* docked_container = Shell::GetContainer(
502 window->GetRootWindow(), kShellWindowId_DockedContainer); 504 window->GetRootWindow(), kShellWindowId_DockedContainer);
503 docked_container->AddChild(window.get()); 505 docked_container->AddChild(window.get());
504 gfx::Rect docked_bounds = window->GetBoundsInScreen(); 506 gfx::Rect docked_bounds = window->GetBoundsInScreen();
505 GetController()->PerformAction(WINDOW_POSITION_CENTER, dummy); 507 GetController()->PerformAction(WINDOW_POSITION_CENTER, dummy);
506 // It should not get centered and should remain docked. 508 // It should not get centered and should remain docked.
507 EXPECT_EQ(kShellWindowId_DockedContainer, window->parent()->id()); 509 EXPECT_EQ(kShellWindowId_DockedContainer, window->parent()->id());
508 EXPECT_EQ(docked_bounds.ToString(), window->GetBoundsInScreen().ToString()); 510 EXPECT_EQ(docked_bounds.ToString(), window->GetBoundsInScreen().ToString());
509 } 511 }
510 512
511 TEST_F(AcceleratorControllerTest, ControllerContext) { 513 TEST_F(AcceleratorControllerTest, AutoRepeat) {
512 ui::Accelerator accelerator_a(ui::VKEY_A, ui::EF_NONE); 514 ui::Accelerator accelerator_a(ui::VKEY_A, ui::EF_CONTROL_DOWN);
513 ui::Accelerator accelerator_a2(ui::VKEY_A, ui::EF_NONE); 515 accelerator_a.set_type(ui::ET_KEY_PRESSED);
514 ui::Accelerator accelerator_b(ui::VKEY_B, ui::EF_NONE); 516 TestTarget target_a;
517 GetController()->Register(accelerator_a, &target_a);
518 ui::Accelerator accelerator_b(ui::VKEY_B, ui::EF_CONTROL_DOWN);
519 accelerator_b.set_type(ui::ET_KEY_PRESSED);
520 TestTarget target_b;
521 GetController()->Register(accelerator_b, &target_b);
515 522
516 accelerator_a.set_type(ui::ET_KEY_PRESSED); 523 aura::test::EventGenerator& generator = GetEventGenerator();
517 accelerator_a2.set_type(ui::ET_KEY_RELEASED); 524 generator.PressKey(ui::VKEY_A, ui::EF_CONTROL_DOWN);
518 accelerator_b.set_type(ui::ET_KEY_PRESSED); 525 generator.ReleaseKey(ui::VKEY_A, ui::EF_CONTROL_DOWN);
519 526
520 EXPECT_FALSE(GetController()->context()->repeated()); 527 EXPECT_EQ(1, target_a.accelerator_pressed_count());
521 EXPECT_EQ(ui::ET_UNKNOWN, 528 EXPECT_EQ(0, target_a.accelerator_repeat_count());
522 GetController()->context()->previous_accelerator().type());
523 529
524 GetController()->context()->UpdateContext(accelerator_a); 530 // Long press should generate one
525 EXPECT_FALSE(GetController()->context()->repeated()); 531 generator.PressKey(ui::VKEY_A, ui::EF_CONTROL_DOWN);
526 EXPECT_EQ(ui::ET_UNKNOWN, 532 generator.PressKey(ui::VKEY_A, ui::EF_CONTROL_DOWN | ui::EF_IS_REPEAT);
527 GetController()->context()->previous_accelerator().type()); 533 EXPECT_EQ(2, target_a.accelerator_pressed_count());
534 EXPECT_EQ(1, target_a.accelerator_repeat_count());
535 generator.PressKey(ui::VKEY_A, ui::EF_CONTROL_DOWN | ui::EF_IS_REPEAT);
536 EXPECT_EQ(2, target_a.accelerator_pressed_count());
537 EXPECT_EQ(2, target_a.accelerator_repeat_count());
538 generator.ReleaseKey(ui::VKEY_A, ui::EF_CONTROL_DOWN);
539 EXPECT_EQ(2, target_a.accelerator_pressed_count());
540 EXPECT_EQ(2, target_a.accelerator_repeat_count());
528 541
529 GetController()->context()->UpdateContext(accelerator_a2); 542 // Long press was intercepted by another key press.
530 EXPECT_FALSE(GetController()->context()->repeated()); 543 generator.PressKey(ui::VKEY_A, ui::EF_CONTROL_DOWN);
531 EXPECT_EQ(ui::ET_KEY_PRESSED, 544 generator.PressKey(ui::VKEY_A, ui::EF_CONTROL_DOWN | ui::EF_IS_REPEAT);
532 GetController()->context()->previous_accelerator().type()); 545 generator.PressKey(ui::VKEY_B, ui::EF_CONTROL_DOWN);
546 generator.ReleaseKey(ui::VKEY_B, ui::EF_CONTROL_DOWN);
547 generator.PressKey(ui::VKEY_A, ui::EF_CONTROL_DOWN);
548 generator.PressKey(ui::VKEY_A, ui::EF_CONTROL_DOWN | ui::EF_IS_REPEAT);
549 generator.ReleaseKey(ui::VKEY_A, ui::EF_CONTROL_DOWN);
533 550
534 GetController()->context()->UpdateContext(accelerator_a2); 551 EXPECT_EQ(1, target_b.accelerator_pressed_count());
535 EXPECT_TRUE(GetController()->context()->repeated()); 552 EXPECT_EQ(0, target_b.accelerator_repeat_count());
536 EXPECT_EQ(ui::ET_KEY_RELEASED, 553 EXPECT_EQ(4, target_a.accelerator_pressed_count());
537 GetController()->context()->previous_accelerator().type()); 554 EXPECT_EQ(4, target_a.accelerator_repeat_count());
538
539 GetController()->context()->UpdateContext(accelerator_b);
540 EXPECT_FALSE(GetController()->context()->repeated());
541 EXPECT_EQ(ui::ET_KEY_RELEASED,
542 GetController()->context()->previous_accelerator().type());
543 } 555 }
544 556
545 #if defined(OS_WIN) && defined(USE_AURA) 557 TEST_F(AcceleratorControllerTest, Previous) {
546 // crbug.com/314674 558 aura::test::EventGenerator& generator = GetEventGenerator();
547 #define MAYBE_SuppressToggleMaximized DISABLED_SuppressToggleMaximized 559 generator.PressKey(ui::VKEY_VOLUME_MUTE, ui::EF_NONE);
548 #else 560 generator.ReleaseKey(ui::VKEY_VOLUME_MUTE, ui::EF_NONE);
549 #define MAYBE_SuppressToggleMaximized SuppressToggleMaximized
550 #endif
551 561
552 TEST_F(AcceleratorControllerTest, MAYBE_SuppressToggleMaximized) { 562 EXPECT_EQ(ui::VKEY_VOLUME_MUTE,
553 scoped_ptr<aura::Window> window( 563 GetController()->previous_accelerator_for_test().key_code());
554 CreateTestWindowInShellWithBounds(gfx::Rect(5, 5, 20, 20))); 564 EXPECT_EQ(ui::EF_NONE,
555 wm::ActivateWindow(window.get()); 565 GetController()->previous_accelerator_for_test().modifiers());
556 const ui::Accelerator accelerator(ui::VKEY_A, ui::EF_NONE);
557 const ui::Accelerator empty_accelerator;
558 566
559 wm::WindowState* window_state = wm::GetWindowState(window.get()); 567 generator.PressKey(ui::VKEY_TAB, ui::EF_CONTROL_DOWN);
568 generator.ReleaseKey(ui::VKEY_TAB, ui::EF_CONTROL_DOWN);
569
570 EXPECT_EQ(ui::VKEY_TAB,
571 GetController()->previous_accelerator_for_test().key_code());
572 EXPECT_EQ(ui::EF_CONTROL_DOWN,
573 GetController()->previous_accelerator_for_test().modifiers());
574 }
575
576 TEST_F(AcceleratorControllerTest, DontRepeatToggleFullscreen) {
577 const AcceleratorData accelerators[] = {
578 {true, ui::VKEY_J, ui::EF_ALT_DOWN, TOGGLE_FULLSCREEN},
579 {true, ui::VKEY_K, ui::EF_ALT_DOWN, TOGGLE_FULLSCREEN},
580 };
581 GetController()->RegisterAccelerators(accelerators, arraysize(accelerators));
582
583 views::Widget::InitParams params(views::Widget::InitParams::TYPE_WINDOW);
584 params.context = CurrentContext();
585 params.bounds = gfx::Rect(5, 5, 20, 20);
586 views::Widget* widget = new views::Widget;
587 widget->Init(params);
588 widget->Show();
589 widget->Activate();
590 widget->GetNativeView()->SetProperty(aura::client::kCanMaximizeKey, true);
591
592 aura::test::EventGenerator& generator = GetEventGenerator();
593 wm::WindowState* window_state = wm::GetWindowState(widget->GetNativeView());
560 594
561 // Toggling not suppressed. 595 // Toggling not suppressed.
562 GetController()->context()->UpdateContext(accelerator); 596 generator.PressKey(ui::VKEY_J, ui::EF_ALT_DOWN);
563 GetController()->PerformAction(TOGGLE_MAXIMIZED, accelerator); 597 EXPECT_TRUE(window_state->IsFullscreen());
564 EXPECT_TRUE(window_state->IsMaximized());
565 598
566 // The same accelerator - toggling suppressed. 599 // The same accelerator - toggling suppressed.
567 GetController()->context()->UpdateContext(accelerator); 600 generator.PressKey(ui::VKEY_J, ui::EF_ALT_DOWN | ui::EF_IS_REPEAT);
568 GetController()->PerformAction(TOGGLE_MAXIMIZED, accelerator); 601 EXPECT_TRUE(window_state->IsFullscreen());
569 EXPECT_TRUE(window_state->IsMaximized());
570 602
571 // Suppressed but not for gesture events. 603 // Different accelerator.
572 GetController()->PerformAction(TOGGLE_MAXIMIZED, empty_accelerator); 604 generator.PressKey(ui::VKEY_K, ui::EF_ALT_DOWN);
573 EXPECT_FALSE(window_state->IsMaximized()); 605 EXPECT_FALSE(window_state->IsFullscreen());
574 } 606 }
575 607
576 #if defined(OS_WIN) && defined(USE_AURA) 608 // TODO(oshima): Fix this test to use EventGenerator.
609 #if defined(OS_WIN)
577 // crbug.com/317592 610 // crbug.com/317592
578 #define MAYBE_ProcessOnce DISABLED_ProcessOnce 611 #define MAYBE_ProcessOnce DISABLED_ProcessOnce
579 #else 612 #else
580 #define MAYBE_ProcessOnce ProcessOnce 613 #define MAYBE_ProcessOnce ProcessOnce
581 #endif 614 #endif
582 615
583 #if defined(OS_WIN) || defined(USE_X11) 616 #if defined(OS_WIN) || defined(USE_X11)
584 TEST_F(AcceleratorControllerTest, MAYBE_ProcessOnce) { 617 TEST_F(AcceleratorControllerTest, MAYBE_ProcessOnce) {
585 ui::Accelerator accelerator_a(ui::VKEY_A, ui::EF_NONE); 618 ui::Accelerator accelerator_a(ui::VKEY_A, ui::EF_NONE);
586 TestTarget target; 619 TestTarget target;
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
625 key_event3.SetTranslated(true); 658 key_event3.SetTranslated(true);
626 details = dispatcher->OnEventFromSource(&key_event3); 659 details = dispatcher->OnEventFromSource(&key_event3);
627 EXPECT_FALSE(key_event3.handled() || details.dispatcher_destroyed); 660 EXPECT_FALSE(key_event3.handled() || details.dispatcher_destroyed);
628 #endif 661 #endif
629 EXPECT_EQ(1, target.accelerator_pressed_count()); 662 EXPECT_EQ(1, target.accelerator_pressed_count());
630 } 663 }
631 #endif 664 #endif
632 665
633 TEST_F(AcceleratorControllerTest, GlobalAccelerators) { 666 TEST_F(AcceleratorControllerTest, GlobalAccelerators) {
634 // CycleBackward 667 // CycleBackward
635 EXPECT_TRUE(ProcessWithContext( 668 EXPECT_TRUE(GetController()->Process(
636 ui::Accelerator(ui::VKEY_TAB, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN))); 669 ui::Accelerator(ui::VKEY_TAB, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN)));
637 // CycleForward 670 // CycleForward
638 EXPECT_TRUE(ProcessWithContext( 671 EXPECT_TRUE(
639 ui::Accelerator(ui::VKEY_TAB, ui::EF_ALT_DOWN))); 672 GetController()->Process(ui::Accelerator(ui::VKEY_TAB, ui::EF_ALT_DOWN)));
640 // CycleLinear 673 // CycleLinear
641 EXPECT_TRUE(ProcessWithContext( 674 EXPECT_TRUE(GetController()->Process(
642 ui::Accelerator(ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_NONE))); 675 ui::Accelerator(ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_NONE)));
643 676
644 #if defined(OS_CHROMEOS) 677 #if defined(OS_CHROMEOS)
645 // Take screenshot / partial screenshot 678 // Take screenshot / partial screenshot
646 // True should always be returned regardless of the existence of the delegate. 679 // True should always be returned regardless of the existence of the delegate.
647 { 680 {
648 test::TestScreenshotDelegate* delegate = GetScreenshotDelegate(); 681 test::TestScreenshotDelegate* delegate = GetScreenshotDelegate();
649 delegate->set_can_take_screenshot(false); 682 delegate->set_can_take_screenshot(false);
650 EXPECT_TRUE(ProcessWithContext( 683 EXPECT_TRUE(GetController()->Process(
651 ui::Accelerator(ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_CONTROL_DOWN))); 684 ui::Accelerator(ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_CONTROL_DOWN)));
652 EXPECT_TRUE(ProcessWithContext( 685 EXPECT_TRUE(
653 ui::Accelerator(ui::VKEY_PRINT, ui::EF_NONE))); 686 GetController()->Process(ui::Accelerator(ui::VKEY_PRINT, ui::EF_NONE)));
654 EXPECT_TRUE(ProcessWithContext( 687 EXPECT_TRUE(GetController()->Process(ui::Accelerator(
655 ui::Accelerator(ui::VKEY_MEDIA_LAUNCH_APP1, 688 ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN)));
656 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN)));
657 689
658 delegate->set_can_take_screenshot(true); 690 delegate->set_can_take_screenshot(true);
659 EXPECT_EQ(0, delegate->handle_take_screenshot_count()); 691 EXPECT_EQ(0, delegate->handle_take_screenshot_count());
660 EXPECT_TRUE(ProcessWithContext( 692 EXPECT_TRUE(GetController()->Process(
661 ui::Accelerator(ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_CONTROL_DOWN))); 693 ui::Accelerator(ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_CONTROL_DOWN)));
662 EXPECT_EQ(1, delegate->handle_take_screenshot_count()); 694 EXPECT_EQ(1, delegate->handle_take_screenshot_count());
663 EXPECT_TRUE(ProcessWithContext( 695 EXPECT_TRUE(
664 ui::Accelerator(ui::VKEY_PRINT, ui::EF_NONE))); 696 GetController()->Process(ui::Accelerator(ui::VKEY_PRINT, ui::EF_NONE)));
665 EXPECT_EQ(2, delegate->handle_take_screenshot_count()); 697 EXPECT_EQ(2, delegate->handle_take_screenshot_count());
666 EXPECT_TRUE(ProcessWithContext( 698 EXPECT_TRUE(GetController()->Process(ui::Accelerator(
667 ui::Accelerator(ui::VKEY_MEDIA_LAUNCH_APP1, 699 ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN)));
668 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN)));
669 EXPECT_EQ(2, delegate->handle_take_screenshot_count()); 700 EXPECT_EQ(2, delegate->handle_take_screenshot_count());
670 } 701 }
671 #endif 702 #endif
672 const ui::Accelerator volume_mute(ui::VKEY_VOLUME_MUTE, ui::EF_NONE); 703 const ui::Accelerator volume_mute(ui::VKEY_VOLUME_MUTE, ui::EF_NONE);
673 const ui::Accelerator volume_down(ui::VKEY_VOLUME_DOWN, ui::EF_NONE); 704 const ui::Accelerator volume_down(ui::VKEY_VOLUME_DOWN, ui::EF_NONE);
674 const ui::Accelerator volume_up(ui::VKEY_VOLUME_UP, ui::EF_NONE); 705 const ui::Accelerator volume_up(ui::VKEY_VOLUME_UP, ui::EF_NONE);
675 { 706 {
676 TestVolumeControlDelegate* delegate = 707 TestVolumeControlDelegate* delegate =
677 new TestVolumeControlDelegate(false); 708 new TestVolumeControlDelegate(false);
678 ash::Shell::GetInstance()->system_tray_delegate()->SetVolumeControlDelegate( 709 ash::Shell::GetInstance()->system_tray_delegate()->SetVolumeControlDelegate(
679 scoped_ptr<VolumeControlDelegate>(delegate).Pass()); 710 scoped_ptr<VolumeControlDelegate>(delegate).Pass());
680 EXPECT_EQ(0, delegate->handle_volume_mute_count()); 711 EXPECT_EQ(0, delegate->handle_volume_mute_count());
681 EXPECT_FALSE(ProcessWithContext(volume_mute)); 712 EXPECT_FALSE(GetController()->Process(volume_mute));
682 EXPECT_EQ(1, delegate->handle_volume_mute_count()); 713 EXPECT_EQ(1, delegate->handle_volume_mute_count());
683 EXPECT_EQ(volume_mute, delegate->last_accelerator()); 714 EXPECT_EQ(volume_mute, delegate->last_accelerator());
684 EXPECT_EQ(0, delegate->handle_volume_down_count()); 715 EXPECT_EQ(0, delegate->handle_volume_down_count());
685 EXPECT_FALSE(ProcessWithContext(volume_down)); 716 EXPECT_FALSE(GetController()->Process(volume_down));
686 EXPECT_EQ(1, delegate->handle_volume_down_count()); 717 EXPECT_EQ(1, delegate->handle_volume_down_count());
687 EXPECT_EQ(volume_down, delegate->last_accelerator()); 718 EXPECT_EQ(volume_down, delegate->last_accelerator());
688 EXPECT_EQ(0, delegate->handle_volume_up_count()); 719 EXPECT_EQ(0, delegate->handle_volume_up_count());
689 EXPECT_FALSE(ProcessWithContext(volume_up)); 720 EXPECT_FALSE(GetController()->Process(volume_up));
690 EXPECT_EQ(1, delegate->handle_volume_up_count()); 721 EXPECT_EQ(1, delegate->handle_volume_up_count());
691 EXPECT_EQ(volume_up, delegate->last_accelerator()); 722 EXPECT_EQ(volume_up, delegate->last_accelerator());
692 } 723 }
693 { 724 {
694 TestVolumeControlDelegate* delegate = new TestVolumeControlDelegate(true); 725 TestVolumeControlDelegate* delegate = new TestVolumeControlDelegate(true);
695 ash::Shell::GetInstance()->system_tray_delegate()->SetVolumeControlDelegate( 726 ash::Shell::GetInstance()->system_tray_delegate()->SetVolumeControlDelegate(
696 scoped_ptr<VolumeControlDelegate>(delegate).Pass()); 727 scoped_ptr<VolumeControlDelegate>(delegate).Pass());
697 EXPECT_EQ(0, delegate->handle_volume_mute_count()); 728 EXPECT_EQ(0, delegate->handle_volume_mute_count());
698 EXPECT_TRUE(ProcessWithContext(volume_mute)); 729 EXPECT_TRUE(GetController()->Process(volume_mute));
699 EXPECT_EQ(1, delegate->handle_volume_mute_count()); 730 EXPECT_EQ(1, delegate->handle_volume_mute_count());
700 EXPECT_EQ(volume_mute, delegate->last_accelerator()); 731 EXPECT_EQ(volume_mute, delegate->last_accelerator());
701 EXPECT_EQ(0, delegate->handle_volume_down_count()); 732 EXPECT_EQ(0, delegate->handle_volume_down_count());
702 EXPECT_TRUE(ProcessWithContext(volume_down)); 733 EXPECT_TRUE(GetController()->Process(volume_down));
703 EXPECT_EQ(1, delegate->handle_volume_down_count()); 734 EXPECT_EQ(1, delegate->handle_volume_down_count());
704 EXPECT_EQ(volume_down, delegate->last_accelerator()); 735 EXPECT_EQ(volume_down, delegate->last_accelerator());
705 EXPECT_EQ(0, delegate->handle_volume_up_count()); 736 EXPECT_EQ(0, delegate->handle_volume_up_count());
706 EXPECT_TRUE(ProcessWithContext(volume_up)); 737 EXPECT_TRUE(GetController()->Process(volume_up));
707 EXPECT_EQ(1, delegate->handle_volume_up_count()); 738 EXPECT_EQ(1, delegate->handle_volume_up_count());
708 EXPECT_EQ(volume_up, delegate->last_accelerator()); 739 EXPECT_EQ(volume_up, delegate->last_accelerator());
709 } 740 }
710 #if defined(OS_CHROMEOS) 741 #if defined(OS_CHROMEOS)
711 // Brightness 742 // Brightness
712 // ui::VKEY_BRIGHTNESS_DOWN/UP are not defined on Windows. 743 // ui::VKEY_BRIGHTNESS_DOWN/UP are not defined on Windows.
713 const ui::Accelerator brightness_down(ui::VKEY_BRIGHTNESS_DOWN, ui::EF_NONE); 744 const ui::Accelerator brightness_down(ui::VKEY_BRIGHTNESS_DOWN, ui::EF_NONE);
714 const ui::Accelerator brightness_up(ui::VKEY_BRIGHTNESS_UP, ui::EF_NONE); 745 const ui::Accelerator brightness_up(ui::VKEY_BRIGHTNESS_UP, ui::EF_NONE);
715 { 746 {
716 DummyBrightnessControlDelegate* delegate = 747 DummyBrightnessControlDelegate* delegate =
717 new DummyBrightnessControlDelegate(false); 748 new DummyBrightnessControlDelegate(false);
718 GetController()->SetBrightnessControlDelegate( 749 GetController()->SetBrightnessControlDelegate(
719 scoped_ptr<BrightnessControlDelegate>(delegate).Pass()); 750 scoped_ptr<BrightnessControlDelegate>(delegate).Pass());
720 EXPECT_EQ(0, delegate->handle_brightness_down_count()); 751 EXPECT_EQ(0, delegate->handle_brightness_down_count());
721 EXPECT_FALSE(ProcessWithContext(brightness_down)); 752 EXPECT_FALSE(GetController()->Process(brightness_down));
722 EXPECT_EQ(1, delegate->handle_brightness_down_count()); 753 EXPECT_EQ(1, delegate->handle_brightness_down_count());
723 EXPECT_EQ(brightness_down, delegate->last_accelerator()); 754 EXPECT_EQ(brightness_down, delegate->last_accelerator());
724 EXPECT_EQ(0, delegate->handle_brightness_up_count()); 755 EXPECT_EQ(0, delegate->handle_brightness_up_count());
725 EXPECT_FALSE(ProcessWithContext(brightness_up)); 756 EXPECT_FALSE(GetController()->Process(brightness_up));
726 EXPECT_EQ(1, delegate->handle_brightness_up_count()); 757 EXPECT_EQ(1, delegate->handle_brightness_up_count());
727 EXPECT_EQ(brightness_up, delegate->last_accelerator()); 758 EXPECT_EQ(brightness_up, delegate->last_accelerator());
728 } 759 }
729 { 760 {
730 DummyBrightnessControlDelegate* delegate = 761 DummyBrightnessControlDelegate* delegate =
731 new DummyBrightnessControlDelegate(true); 762 new DummyBrightnessControlDelegate(true);
732 GetController()->SetBrightnessControlDelegate( 763 GetController()->SetBrightnessControlDelegate(
733 scoped_ptr<BrightnessControlDelegate>(delegate).Pass()); 764 scoped_ptr<BrightnessControlDelegate>(delegate).Pass());
734 EXPECT_EQ(0, delegate->handle_brightness_down_count()); 765 EXPECT_EQ(0, delegate->handle_brightness_down_count());
735 EXPECT_TRUE(ProcessWithContext(brightness_down)); 766 EXPECT_TRUE(GetController()->Process(brightness_down));
736 EXPECT_EQ(1, delegate->handle_brightness_down_count()); 767 EXPECT_EQ(1, delegate->handle_brightness_down_count());
737 EXPECT_EQ(brightness_down, delegate->last_accelerator()); 768 EXPECT_EQ(brightness_down, delegate->last_accelerator());
738 EXPECT_EQ(0, delegate->handle_brightness_up_count()); 769 EXPECT_EQ(0, delegate->handle_brightness_up_count());
739 EXPECT_TRUE(ProcessWithContext(brightness_up)); 770 EXPECT_TRUE(GetController()->Process(brightness_up));
740 EXPECT_EQ(1, delegate->handle_brightness_up_count()); 771 EXPECT_EQ(1, delegate->handle_brightness_up_count());
741 EXPECT_EQ(brightness_up, delegate->last_accelerator()); 772 EXPECT_EQ(brightness_up, delegate->last_accelerator());
742 } 773 }
743 774
744 // Keyboard brightness 775 // Keyboard brightness
745 const ui::Accelerator alt_brightness_down(ui::VKEY_BRIGHTNESS_DOWN, 776 const ui::Accelerator alt_brightness_down(ui::VKEY_BRIGHTNESS_DOWN,
746 ui::EF_ALT_DOWN); 777 ui::EF_ALT_DOWN);
747 const ui::Accelerator alt_brightness_up(ui::VKEY_BRIGHTNESS_UP, 778 const ui::Accelerator alt_brightness_up(ui::VKEY_BRIGHTNESS_UP,
748 ui::EF_ALT_DOWN); 779 ui::EF_ALT_DOWN);
749 { 780 {
750 EXPECT_TRUE(ProcessWithContext(alt_brightness_down)); 781 EXPECT_TRUE(GetController()->Process(alt_brightness_down));
751 EXPECT_TRUE(ProcessWithContext(alt_brightness_up)); 782 EXPECT_TRUE(GetController()->Process(alt_brightness_up));
752 DummyKeyboardBrightnessControlDelegate* delegate = 783 DummyKeyboardBrightnessControlDelegate* delegate =
753 new DummyKeyboardBrightnessControlDelegate(false); 784 new DummyKeyboardBrightnessControlDelegate(false);
754 GetController()->SetKeyboardBrightnessControlDelegate( 785 GetController()->SetKeyboardBrightnessControlDelegate(
755 scoped_ptr<KeyboardBrightnessControlDelegate>(delegate).Pass()); 786 scoped_ptr<KeyboardBrightnessControlDelegate>(delegate).Pass());
756 EXPECT_EQ(0, delegate->handle_keyboard_brightness_down_count()); 787 EXPECT_EQ(0, delegate->handle_keyboard_brightness_down_count());
757 EXPECT_FALSE(ProcessWithContext(alt_brightness_down)); 788 EXPECT_FALSE(GetController()->Process(alt_brightness_down));
758 EXPECT_EQ(1, delegate->handle_keyboard_brightness_down_count()); 789 EXPECT_EQ(1, delegate->handle_keyboard_brightness_down_count());
759 EXPECT_EQ(alt_brightness_down, delegate->last_accelerator()); 790 EXPECT_EQ(alt_brightness_down, delegate->last_accelerator());
760 EXPECT_EQ(0, delegate->handle_keyboard_brightness_up_count()); 791 EXPECT_EQ(0, delegate->handle_keyboard_brightness_up_count());
761 EXPECT_FALSE(ProcessWithContext(alt_brightness_up)); 792 EXPECT_FALSE(GetController()->Process(alt_brightness_up));
762 EXPECT_EQ(1, delegate->handle_keyboard_brightness_up_count()); 793 EXPECT_EQ(1, delegate->handle_keyboard_brightness_up_count());
763 EXPECT_EQ(alt_brightness_up, delegate->last_accelerator()); 794 EXPECT_EQ(alt_brightness_up, delegate->last_accelerator());
764 } 795 }
765 { 796 {
766 DummyKeyboardBrightnessControlDelegate* delegate = 797 DummyKeyboardBrightnessControlDelegate* delegate =
767 new DummyKeyboardBrightnessControlDelegate(true); 798 new DummyKeyboardBrightnessControlDelegate(true);
768 GetController()->SetKeyboardBrightnessControlDelegate( 799 GetController()->SetKeyboardBrightnessControlDelegate(
769 scoped_ptr<KeyboardBrightnessControlDelegate>(delegate).Pass()); 800 scoped_ptr<KeyboardBrightnessControlDelegate>(delegate).Pass());
770 EXPECT_EQ(0, delegate->handle_keyboard_brightness_down_count()); 801 EXPECT_EQ(0, delegate->handle_keyboard_brightness_down_count());
771 EXPECT_TRUE(ProcessWithContext(alt_brightness_down)); 802 EXPECT_TRUE(GetController()->Process(alt_brightness_down));
772 EXPECT_EQ(1, delegate->handle_keyboard_brightness_down_count()); 803 EXPECT_EQ(1, delegate->handle_keyboard_brightness_down_count());
773 EXPECT_EQ(alt_brightness_down, delegate->last_accelerator()); 804 EXPECT_EQ(alt_brightness_down, delegate->last_accelerator());
774 EXPECT_EQ(0, delegate->handle_keyboard_brightness_up_count()); 805 EXPECT_EQ(0, delegate->handle_keyboard_brightness_up_count());
775 EXPECT_TRUE(ProcessWithContext(alt_brightness_up)); 806 EXPECT_TRUE(GetController()->Process(alt_brightness_up));
776 EXPECT_EQ(1, delegate->handle_keyboard_brightness_up_count()); 807 EXPECT_EQ(1, delegate->handle_keyboard_brightness_up_count());
777 EXPECT_EQ(alt_brightness_up, delegate->last_accelerator()); 808 EXPECT_EQ(alt_brightness_up, delegate->last_accelerator());
778 } 809 }
779 #endif 810 #endif
780 811
781 #if !defined(NDEBUG) 812 #if !defined(NDEBUG)
782 // ToggleDesktopBackgroundMode 813 // ToggleDesktopBackgroundMode
783 EXPECT_TRUE(ProcessWithContext( 814 EXPECT_TRUE(GetController()->Process(
784 ui::Accelerator(ui::VKEY_B, ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN))); 815 ui::Accelerator(ui::VKEY_B, ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN)));
785 #if !defined(OS_LINUX) 816 #if !defined(OS_LINUX)
786 // ToggleDesktopFullScreen (not implemented yet on Linux) 817 // ToggleDesktopFullScreen (not implemented yet on Linux)
787 EXPECT_TRUE(ProcessWithContext( 818 EXPECT_TRUE(GetController()->Process(
788 ui::Accelerator(ui::VKEY_F11, ui::EF_CONTROL_DOWN))); 819 ui::Accelerator(ui::VKEY_F11, ui::EF_CONTROL_DOWN)));
789 #endif // OS_LINUX 820 #endif // OS_LINUX
790 #endif // !NDEBUG 821 #endif // !NDEBUG
791 822
792 #if !defined(OS_WIN) 823 #if !defined(OS_WIN)
793 // Exit 824 // Exit
794 ExitWarningHandler* ewh = GetController()->GetExitWarningHandlerForTest(); 825 ExitWarningHandler* ewh = GetController()->GetExitWarningHandlerForTest();
795 ASSERT_TRUE(!!ewh); 826 ASSERT_TRUE(!!ewh);
796 StubForTest(ewh); 827 StubForTest(ewh);
797 EXPECT_TRUE(is_idle(ewh)); 828 EXPECT_TRUE(is_idle(ewh));
798 EXPECT_FALSE(is_ui_shown(ewh)); 829 EXPECT_FALSE(is_ui_shown(ewh));
799 EXPECT_TRUE(ProcessWithContext( 830 EXPECT_TRUE(GetController()->Process(
800 ui::Accelerator(ui::VKEY_Q, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN))); 831 ui::Accelerator(ui::VKEY_Q, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN)));
801 EXPECT_FALSE(is_idle(ewh)); 832 EXPECT_FALSE(is_idle(ewh));
802 EXPECT_TRUE(is_ui_shown(ewh)); 833 EXPECT_TRUE(is_ui_shown(ewh));
803 SimulateTimerExpired(ewh); 834 SimulateTimerExpired(ewh);
804 EXPECT_TRUE(is_idle(ewh)); 835 EXPECT_TRUE(is_idle(ewh));
805 EXPECT_FALSE(is_ui_shown(ewh)); 836 EXPECT_FALSE(is_ui_shown(ewh));
806 Reset(ewh); 837 Reset(ewh);
807 #endif 838 #endif
808 839
809 // New tab 840 // New tab
810 EXPECT_TRUE(ProcessWithContext( 841 EXPECT_TRUE(GetController()->Process(
811 ui::Accelerator(ui::VKEY_T, ui::EF_CONTROL_DOWN))); 842 ui::Accelerator(ui::VKEY_T, ui::EF_CONTROL_DOWN)));
812 843
813 // New incognito window 844 // New incognito window
814 EXPECT_TRUE(ProcessWithContext( 845 EXPECT_TRUE(GetController()->Process(
815 ui::Accelerator(ui::VKEY_N, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN))); 846 ui::Accelerator(ui::VKEY_N, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN)));
816 847
817 // New window 848 // New window
818 EXPECT_TRUE(ProcessWithContext( 849 EXPECT_TRUE(GetController()->Process(
819 ui::Accelerator(ui::VKEY_N, ui::EF_CONTROL_DOWN))); 850 ui::Accelerator(ui::VKEY_N, ui::EF_CONTROL_DOWN)));
820 851
821 // Restore tab 852 // Restore tab
822 EXPECT_TRUE(ProcessWithContext( 853 EXPECT_TRUE(GetController()->Process(
823 ui::Accelerator(ui::VKEY_T, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN))); 854 ui::Accelerator(ui::VKEY_T, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN)));
824 855
825 // Show task manager 856 // Show task manager
826 EXPECT_TRUE(ProcessWithContext( 857 EXPECT_TRUE(GetController()->Process(
827 ui::Accelerator(ui::VKEY_ESCAPE, ui::EF_SHIFT_DOWN))); 858 ui::Accelerator(ui::VKEY_ESCAPE, ui::EF_SHIFT_DOWN)));
828 859
829 #if defined(OS_CHROMEOS) 860 #if defined(OS_CHROMEOS)
830 // Open file manager 861 // Open file manager
831 EXPECT_TRUE(ProcessWithContext( 862 EXPECT_TRUE(GetController()->Process(
832 ui::Accelerator(ui::VKEY_M, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN))); 863 ui::Accelerator(ui::VKEY_M, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN)));
833 864
834 // Lock screen 865 // Lock screen
835 // NOTE: Accelerators that do not work on the lock screen need to be 866 // NOTE: Accelerators that do not work on the lock screen need to be
836 // tested before the sequence below is invoked because it causes a side 867 // tested before the sequence below is invoked because it causes a side
837 // effect of locking the screen. 868 // effect of locking the screen.
838 EXPECT_TRUE(ProcessWithContext( 869 EXPECT_TRUE(GetController()->Process(
839 ui::Accelerator(ui::VKEY_L, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN))); 870 ui::Accelerator(ui::VKEY_L, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN)));
840 #endif 871 #endif
841 } 872 }
842 873
843 TEST_F(AcceleratorControllerTest, GlobalAcceleratorsToggleAppList) { 874 TEST_F(AcceleratorControllerTest, GlobalAcceleratorsToggleAppList) {
844 AccessibilityDelegate* delegate = 875 AccessibilityDelegate* delegate =
845 ash::Shell::GetInstance()->accessibility_delegate(); 876 ash::Shell::GetInstance()->accessibility_delegate();
846 EXPECT_FALSE(ash::Shell::GetInstance()->GetAppListTargetVisibility()); 877 EXPECT_FALSE(ash::Shell::GetInstance()->GetAppListTargetVisibility());
847 878
848 // The press event should not open the AppList, the release should instead. 879 // The press event should not open the AppList, the release should instead.
849 EXPECT_FALSE(ProcessWithContext( 880 EXPECT_FALSE(
850 ui::Accelerator(ui::VKEY_LWIN, ui::EF_NONE))); 881 GetController()->Process(ui::Accelerator(ui::VKEY_LWIN, ui::EF_NONE)));
851 EXPECT_TRUE(ProcessWithContext( 882 EXPECT_EQ(ui::VKEY_LWIN,
852 ReleaseAccelerator(ui::VKEY_LWIN, ui::EF_NONE))); 883 GetController()->previous_accelerator_for_test().key_code());
884
885 EXPECT_TRUE(
886 GetController()->Process(ReleaseAccelerator(ui::VKEY_LWIN, ui::EF_NONE)));
853 EXPECT_TRUE(ash::Shell::GetInstance()->GetAppListTargetVisibility()); 887 EXPECT_TRUE(ash::Shell::GetInstance()->GetAppListTargetVisibility());
854 888
855 // When spoken feedback is on, the AppList should not toggle. 889 // When spoken feedback is on, the AppList should not toggle.
856 delegate->ToggleSpokenFeedback(A11Y_NOTIFICATION_NONE); 890 delegate->ToggleSpokenFeedback(A11Y_NOTIFICATION_NONE);
857 EXPECT_FALSE(ProcessWithContext( 891 EXPECT_FALSE(
858 ui::Accelerator(ui::VKEY_LWIN, ui::EF_NONE))); 892 GetController()->Process(ui::Accelerator(ui::VKEY_LWIN, ui::EF_NONE)));
859 EXPECT_FALSE(ProcessWithContext( 893 EXPECT_FALSE(
860 ReleaseAccelerator(ui::VKEY_LWIN, ui::EF_NONE))); 894 GetController()->Process(ReleaseAccelerator(ui::VKEY_LWIN, ui::EF_NONE)));
861 delegate->ToggleSpokenFeedback(A11Y_NOTIFICATION_NONE); 895 delegate->ToggleSpokenFeedback(A11Y_NOTIFICATION_NONE);
862 EXPECT_TRUE(ash::Shell::GetInstance()->GetAppListTargetVisibility()); 896 EXPECT_TRUE(ash::Shell::GetInstance()->GetAppListTargetVisibility());
863 897
864 EXPECT_FALSE(ProcessWithContext( 898 EXPECT_FALSE(
865 ui::Accelerator(ui::VKEY_LWIN, ui::EF_NONE))); 899 GetController()->Process(ui::Accelerator(ui::VKEY_LWIN, ui::EF_NONE)));
866 EXPECT_TRUE(ProcessWithContext( 900 EXPECT_TRUE(
867 ReleaseAccelerator(ui::VKEY_LWIN, ui::EF_NONE))); 901 GetController()->Process(ReleaseAccelerator(ui::VKEY_LWIN, ui::EF_NONE)));
868 EXPECT_FALSE(ash::Shell::GetInstance()->GetAppListTargetVisibility()); 902 EXPECT_FALSE(ash::Shell::GetInstance()->GetAppListTargetVisibility());
869 903
870 // When spoken feedback is on, the AppList should not toggle. 904 // When spoken feedback is on, the AppList should not toggle.
871 delegate->ToggleSpokenFeedback(A11Y_NOTIFICATION_NONE); 905 delegate->ToggleSpokenFeedback(A11Y_NOTIFICATION_NONE);
872 EXPECT_FALSE(ProcessWithContext( 906 EXPECT_FALSE(
873 ui::Accelerator(ui::VKEY_LWIN, ui::EF_NONE))); 907 GetController()->Process(ui::Accelerator(ui::VKEY_LWIN, ui::EF_NONE)));
874 EXPECT_FALSE(ProcessWithContext( 908 EXPECT_FALSE(
875 ReleaseAccelerator(ui::VKEY_LWIN, ui::EF_NONE))); 909 GetController()->Process(ReleaseAccelerator(ui::VKEY_LWIN, ui::EF_NONE)));
876 delegate->ToggleSpokenFeedback(A11Y_NOTIFICATION_NONE); 910 delegate->ToggleSpokenFeedback(A11Y_NOTIFICATION_NONE);
877 EXPECT_FALSE(ash::Shell::GetInstance()->GetAppListTargetVisibility()); 911 EXPECT_FALSE(ash::Shell::GetInstance()->GetAppListTargetVisibility());
878 } 912 }
879 913
880 TEST_F(AcceleratorControllerTest, ImeGlobalAccelerators) { 914 TEST_F(AcceleratorControllerTest, ImeGlobalAccelerators) {
881 // Test IME shortcuts. 915 // Test IME shortcuts.
882 { 916 {
883 const ui::Accelerator control_space(ui::VKEY_SPACE, ui::EF_CONTROL_DOWN); 917 const ui::Accelerator control_space(ui::VKEY_SPACE, ui::EF_CONTROL_DOWN);
884 const ui::Accelerator convert(ui::VKEY_CONVERT, ui::EF_NONE); 918 const ui::Accelerator convert(ui::VKEY_CONVERT, ui::EF_NONE);
885 const ui::Accelerator non_convert(ui::VKEY_NONCONVERT, ui::EF_NONE); 919 const ui::Accelerator non_convert(ui::VKEY_NONCONVERT, ui::EF_NONE);
886 const ui::Accelerator wide_half_1(ui::VKEY_DBE_SBCSCHAR, ui::EF_NONE); 920 const ui::Accelerator wide_half_1(ui::VKEY_DBE_SBCSCHAR, ui::EF_NONE);
887 const ui::Accelerator wide_half_2(ui::VKEY_DBE_DBCSCHAR, ui::EF_NONE); 921 const ui::Accelerator wide_half_2(ui::VKEY_DBE_DBCSCHAR, ui::EF_NONE);
888 const ui::Accelerator hangul(ui::VKEY_HANGUL, ui::EF_NONE); 922 const ui::Accelerator hangul(ui::VKEY_HANGUL, ui::EF_NONE);
889 EXPECT_FALSE(ProcessWithContext(control_space)); 923 EXPECT_FALSE(GetController()->Process(control_space));
890 EXPECT_FALSE(ProcessWithContext(convert)); 924 EXPECT_FALSE(GetController()->Process(convert));
891 EXPECT_FALSE(ProcessWithContext(non_convert)); 925 EXPECT_FALSE(GetController()->Process(non_convert));
892 EXPECT_FALSE(ProcessWithContext(wide_half_1)); 926 EXPECT_FALSE(GetController()->Process(wide_half_1));
893 EXPECT_FALSE(ProcessWithContext(wide_half_2)); 927 EXPECT_FALSE(GetController()->Process(wide_half_2));
894 EXPECT_FALSE(ProcessWithContext(hangul)); 928 EXPECT_FALSE(GetController()->Process(hangul));
895 DummyImeControlDelegate* delegate = new DummyImeControlDelegate(true); 929 DummyImeControlDelegate* delegate = new DummyImeControlDelegate(true);
896 GetController()->SetImeControlDelegate( 930 GetController()->SetImeControlDelegate(
897 scoped_ptr<ImeControlDelegate>(delegate).Pass()); 931 scoped_ptr<ImeControlDelegate>(delegate).Pass());
898 EXPECT_EQ(0, delegate->handle_previous_ime_count()); 932 EXPECT_EQ(0, delegate->handle_previous_ime_count());
899 EXPECT_TRUE(ProcessWithContext(control_space)); 933 EXPECT_TRUE(GetController()->Process(control_space));
900 EXPECT_EQ(1, delegate->handle_previous_ime_count()); 934 EXPECT_EQ(1, delegate->handle_previous_ime_count());
901 EXPECT_EQ(0, delegate->handle_switch_ime_count()); 935 EXPECT_EQ(0, delegate->handle_switch_ime_count());
902 EXPECT_TRUE(ProcessWithContext(convert)); 936 EXPECT_TRUE(GetController()->Process(convert));
903 EXPECT_EQ(1, delegate->handle_switch_ime_count()); 937 EXPECT_EQ(1, delegate->handle_switch_ime_count());
904 EXPECT_TRUE(ProcessWithContext(non_convert)); 938 EXPECT_TRUE(GetController()->Process(non_convert));
905 EXPECT_EQ(2, delegate->handle_switch_ime_count()); 939 EXPECT_EQ(2, delegate->handle_switch_ime_count());
906 EXPECT_TRUE(ProcessWithContext(wide_half_1)); 940 EXPECT_TRUE(GetController()->Process(wide_half_1));
907 EXPECT_EQ(3, delegate->handle_switch_ime_count()); 941 EXPECT_EQ(3, delegate->handle_switch_ime_count());
908 EXPECT_TRUE(ProcessWithContext(wide_half_2)); 942 EXPECT_TRUE(GetController()->Process(wide_half_2));
909 EXPECT_EQ(4, delegate->handle_switch_ime_count()); 943 EXPECT_EQ(4, delegate->handle_switch_ime_count());
910 EXPECT_TRUE(ProcessWithContext(hangul)); 944 EXPECT_TRUE(GetController()->Process(hangul));
911 EXPECT_EQ(5, delegate->handle_switch_ime_count()); 945 EXPECT_EQ(5, delegate->handle_switch_ime_count());
912 } 946 }
913 947
914 // Test IME shortcuts that are triggered on key release. 948 // Test IME shortcuts that are triggered on key release.
915 { 949 {
916 const ui::Accelerator shift_alt_press(ui::VKEY_MENU, 950 const ui::Accelerator shift_alt_press(ui::VKEY_MENU,
917 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); 951 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN);
918 const ReleaseAccelerator shift_alt(ui::VKEY_MENU, ui::EF_SHIFT_DOWN); 952 const ReleaseAccelerator shift_alt(ui::VKEY_MENU, ui::EF_SHIFT_DOWN);
919 const ui::Accelerator alt_shift_press(ui::VKEY_SHIFT, 953 const ui::Accelerator alt_shift_press(ui::VKEY_SHIFT,
920 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); 954 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN);
921 const ReleaseAccelerator alt_shift(ui::VKEY_SHIFT, ui::EF_ALT_DOWN); 955 const ReleaseAccelerator alt_shift(ui::VKEY_SHIFT, ui::EF_ALT_DOWN);
922 956
923 DummyImeControlDelegate* delegate = new DummyImeControlDelegate(true); 957 DummyImeControlDelegate* delegate = new DummyImeControlDelegate(true);
924 GetController()->SetImeControlDelegate( 958 GetController()->SetImeControlDelegate(
925 scoped_ptr<ImeControlDelegate>(delegate).Pass()); 959 scoped_ptr<ImeControlDelegate>(delegate).Pass());
926 EXPECT_EQ(0, delegate->handle_next_ime_count()); 960 EXPECT_EQ(0, delegate->handle_next_ime_count());
927 EXPECT_FALSE(ProcessWithContext(shift_alt_press)); 961 EXPECT_FALSE(GetController()->Process(shift_alt_press));
928 EXPECT_TRUE(ProcessWithContext(shift_alt)); 962 EXPECT_TRUE(GetController()->Process(shift_alt));
929 EXPECT_EQ(1, delegate->handle_next_ime_count()); 963 EXPECT_EQ(1, delegate->handle_next_ime_count());
930 EXPECT_FALSE(ProcessWithContext(alt_shift_press)); 964 EXPECT_FALSE(GetController()->Process(alt_shift_press));
931 EXPECT_TRUE(ProcessWithContext(alt_shift)); 965 EXPECT_TRUE(GetController()->Process(alt_shift));
932 EXPECT_EQ(2, delegate->handle_next_ime_count()); 966 EXPECT_EQ(2, delegate->handle_next_ime_count());
933 967
934 // We should NOT switch IME when e.g. Shift+Alt+X is pressed and X is 968 // We should NOT switch IME when e.g. Shift+Alt+X is pressed and X is
935 // released. 969 // released.
936 const ui::Accelerator shift_alt_x_press( 970 const ui::Accelerator shift_alt_x_press(
937 ui::VKEY_X, 971 ui::VKEY_X,
938 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); 972 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN);
939 const ReleaseAccelerator shift_alt_x(ui::VKEY_X, 973 const ReleaseAccelerator shift_alt_x(ui::VKEY_X,
940 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); 974 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN);
941 975
942 EXPECT_FALSE(ProcessWithContext(shift_alt_press)); 976 EXPECT_FALSE(GetController()->Process(shift_alt_press));
943 EXPECT_FALSE(ProcessWithContext(shift_alt_x_press)); 977 EXPECT_FALSE(GetController()->Process(shift_alt_x_press));
944 EXPECT_FALSE(ProcessWithContext(shift_alt_x)); 978 EXPECT_FALSE(GetController()->Process(shift_alt_x));
945 EXPECT_FALSE(ProcessWithContext(shift_alt)); 979 EXPECT_FALSE(GetController()->Process(shift_alt));
946 EXPECT_EQ(2, delegate->handle_next_ime_count()); 980 EXPECT_EQ(2, delegate->handle_next_ime_count());
947 981
948 // But we _should_ if X is either VKEY_RETURN or VKEY_SPACE. 982 // But we _should_ if X is either VKEY_RETURN or VKEY_SPACE.
949 // TODO(nona|mazda): Remove this when crbug.com/139556 in a better way. 983 // TODO(nona|mazda): Remove this when crbug.com/139556 in a better way.
950 const ui::Accelerator shift_alt_return_press( 984 const ui::Accelerator shift_alt_return_press(
951 ui::VKEY_RETURN, 985 ui::VKEY_RETURN,
952 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); 986 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN);
953 const ReleaseAccelerator shift_alt_return( 987 const ReleaseAccelerator shift_alt_return(
954 ui::VKEY_RETURN, 988 ui::VKEY_RETURN,
955 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); 989 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN);
956 990
957 EXPECT_FALSE(ProcessWithContext(shift_alt_press)); 991 EXPECT_FALSE(GetController()->Process(shift_alt_press));
958 EXPECT_FALSE(ProcessWithContext(shift_alt_return_press)); 992 EXPECT_FALSE(GetController()->Process(shift_alt_return_press));
959 EXPECT_FALSE(ProcessWithContext(shift_alt_return)); 993 EXPECT_FALSE(GetController()->Process(shift_alt_return));
960 EXPECT_TRUE(ProcessWithContext(shift_alt)); 994 EXPECT_TRUE(GetController()->Process(shift_alt));
961 EXPECT_EQ(3, delegate->handle_next_ime_count()); 995 EXPECT_EQ(3, delegate->handle_next_ime_count());
962 996
963 const ui::Accelerator shift_alt_space_press( 997 const ui::Accelerator shift_alt_space_press(
964 ui::VKEY_SPACE, 998 ui::VKEY_SPACE,
965 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); 999 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN);
966 const ReleaseAccelerator shift_alt_space( 1000 const ReleaseAccelerator shift_alt_space(
967 ui::VKEY_SPACE, 1001 ui::VKEY_SPACE,
968 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); 1002 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN);
969 1003
970 EXPECT_FALSE(ProcessWithContext(shift_alt_press)); 1004 EXPECT_FALSE(GetController()->Process(shift_alt_press));
971 EXPECT_FALSE(ProcessWithContext(shift_alt_space_press)); 1005 EXPECT_FALSE(GetController()->Process(shift_alt_space_press));
972 EXPECT_FALSE(ProcessWithContext(shift_alt_space)); 1006 EXPECT_FALSE(GetController()->Process(shift_alt_space));
973 EXPECT_TRUE(ProcessWithContext(shift_alt)); 1007 EXPECT_TRUE(GetController()->Process(shift_alt));
974 EXPECT_EQ(4, delegate->handle_next_ime_count()); 1008 EXPECT_EQ(4, delegate->handle_next_ime_count());
975 } 1009 }
976 1010
977 #if defined(OS_CHROMEOS) 1011 #if defined(OS_CHROMEOS)
978 // Test IME shortcuts again with unnormalized accelerators (Chrome OS only). 1012 // Test IME shortcuts again with unnormalized accelerators (Chrome OS only).
979 { 1013 {
980 const ui::Accelerator shift_alt_press(ui::VKEY_MENU, ui::EF_SHIFT_DOWN); 1014 const ui::Accelerator shift_alt_press(ui::VKEY_MENU, ui::EF_SHIFT_DOWN);
981 const ReleaseAccelerator shift_alt(ui::VKEY_MENU, ui::EF_SHIFT_DOWN); 1015 const ReleaseAccelerator shift_alt(ui::VKEY_MENU, ui::EF_SHIFT_DOWN);
982 const ui::Accelerator alt_shift_press(ui::VKEY_SHIFT, ui::EF_ALT_DOWN); 1016 const ui::Accelerator alt_shift_press(ui::VKEY_SHIFT, ui::EF_ALT_DOWN);
983 const ReleaseAccelerator alt_shift(ui::VKEY_SHIFT, ui::EF_ALT_DOWN); 1017 const ReleaseAccelerator alt_shift(ui::VKEY_SHIFT, ui::EF_ALT_DOWN);
984 1018
985 DummyImeControlDelegate* delegate = new DummyImeControlDelegate(true); 1019 DummyImeControlDelegate* delegate = new DummyImeControlDelegate(true);
986 GetController()->SetImeControlDelegate( 1020 GetController()->SetImeControlDelegate(
987 scoped_ptr<ImeControlDelegate>(delegate).Pass()); 1021 scoped_ptr<ImeControlDelegate>(delegate).Pass());
988 EXPECT_EQ(0, delegate->handle_next_ime_count()); 1022 EXPECT_EQ(0, delegate->handle_next_ime_count());
989 EXPECT_FALSE(ProcessWithContext(shift_alt_press)); 1023 EXPECT_FALSE(GetController()->Process(shift_alt_press));
990 EXPECT_TRUE(ProcessWithContext(shift_alt)); 1024 EXPECT_TRUE(GetController()->Process(shift_alt));
991 EXPECT_EQ(1, delegate->handle_next_ime_count()); 1025 EXPECT_EQ(1, delegate->handle_next_ime_count());
992 EXPECT_FALSE(ProcessWithContext(alt_shift_press)); 1026 EXPECT_FALSE(GetController()->Process(alt_shift_press));
993 EXPECT_TRUE(ProcessWithContext(alt_shift)); 1027 EXPECT_TRUE(GetController()->Process(alt_shift));
994 EXPECT_EQ(2, delegate->handle_next_ime_count()); 1028 EXPECT_EQ(2, delegate->handle_next_ime_count());
995 1029
996 // We should NOT switch IME when e.g. Shift+Alt+X is pressed and X is 1030 // We should NOT switch IME when e.g. Shift+Alt+X is pressed and X is
997 // released. 1031 // released.
998 const ui::Accelerator shift_alt_x_press( 1032 const ui::Accelerator shift_alt_x_press(
999 ui::VKEY_X, 1033 ui::VKEY_X,
1000 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); 1034 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN);
1001 const ReleaseAccelerator shift_alt_x(ui::VKEY_X, 1035 const ReleaseAccelerator shift_alt_x(ui::VKEY_X,
1002 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); 1036 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN);
1003 1037
1004 EXPECT_FALSE(ProcessWithContext(shift_alt_press)); 1038 EXPECT_FALSE(GetController()->Process(shift_alt_press));
1005 EXPECT_FALSE(ProcessWithContext(shift_alt_x_press)); 1039 EXPECT_FALSE(GetController()->Process(shift_alt_x_press));
1006 EXPECT_FALSE(ProcessWithContext(shift_alt_x)); 1040 EXPECT_FALSE(GetController()->Process(shift_alt_x));
1007 EXPECT_FALSE(ProcessWithContext(shift_alt)); 1041 EXPECT_FALSE(GetController()->Process(shift_alt));
1008 EXPECT_EQ(2, delegate->handle_next_ime_count()); 1042 EXPECT_EQ(2, delegate->handle_next_ime_count());
1009 } 1043 }
1010 #endif 1044 #endif
1011 } 1045 }
1012 1046
1013 // TODO(nona|mazda): Remove this when crbug.com/139556 in a better way. 1047 // TODO(nona|mazda): Remove this when crbug.com/139556 in a better way.
1014 TEST_F(AcceleratorControllerTest, ImeGlobalAcceleratorsWorkaround139556) { 1048 TEST_F(AcceleratorControllerTest, ImeGlobalAcceleratorsWorkaround139556) {
1015 // The workaround for crbug.com/139556 depends on the fact that we don't 1049 // The workaround for crbug.com/139556 depends on the fact that we don't
1016 // use Shift+Alt+Enter/Space with ET_KEY_PRESSED as an accelerator. Test it. 1050 // use Shift+Alt+Enter/Space with ET_KEY_PRESSED as an accelerator. Test it.
1017 const ui::Accelerator shift_alt_return_press( 1051 const ui::Accelerator shift_alt_return_press(
1018 ui::VKEY_RETURN, 1052 ui::VKEY_RETURN,
1019 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); 1053 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN);
1020 EXPECT_FALSE(ProcessWithContext(shift_alt_return_press)); 1054 EXPECT_FALSE(GetController()->Process(shift_alt_return_press));
1021 const ui::Accelerator shift_alt_space_press( 1055 const ui::Accelerator shift_alt_space_press(
1022 ui::VKEY_SPACE, 1056 ui::VKEY_SPACE,
1023 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); 1057 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN);
1024 EXPECT_FALSE(ProcessWithContext(shift_alt_space_press)); 1058 EXPECT_FALSE(GetController()->Process(shift_alt_space_press));
1025 } 1059 }
1026 1060
1027 TEST_F(AcceleratorControllerTest, ReservedAccelerators) { 1061 TEST_F(AcceleratorControllerTest, ReservedAccelerators) {
1028 // (Shift+)Alt+Tab and Chrome OS top-row keys are reserved. 1062 // (Shift+)Alt+Tab and Chrome OS top-row keys are reserved.
1029 EXPECT_TRUE(GetController()->IsReservedAccelerator( 1063 EXPECT_TRUE(GetController()->IsReservedAccelerator(
1030 ui::Accelerator(ui::VKEY_TAB, ui::EF_ALT_DOWN))); 1064 ui::Accelerator(ui::VKEY_TAB, ui::EF_ALT_DOWN)));
1031 EXPECT_TRUE(GetController()->IsReservedAccelerator( 1065 EXPECT_TRUE(GetController()->IsReservedAccelerator(
1032 ui::Accelerator(ui::VKEY_TAB, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN))); 1066 ui::Accelerator(ui::VKEY_TAB, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN)));
1033 #if defined(OS_CHROMEOS) 1067 #if defined(OS_CHROMEOS)
1034 EXPECT_TRUE(GetController()->IsReservedAccelerator( 1068 EXPECT_TRUE(GetController()->IsReservedAccelerator(
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
1083 << " for action (disallowed at modal window): " << *it; 1117 << " for action (disallowed at modal window): " << *it;
1084 } 1118 }
1085 } 1119 }
1086 // Testing of top row (F5-F10) accelerators that should still work 1120 // Testing of top row (F5-F10) accelerators that should still work
1087 // when a modal window is open 1121 // when a modal window is open
1088 // 1122 //
1089 // Screenshot 1123 // Screenshot
1090 { 1124 {
1091 test::TestScreenshotDelegate* delegate = GetScreenshotDelegate(); 1125 test::TestScreenshotDelegate* delegate = GetScreenshotDelegate();
1092 delegate->set_can_take_screenshot(false); 1126 delegate->set_can_take_screenshot(false);
1093 EXPECT_TRUE(ProcessWithContext( 1127 EXPECT_TRUE(GetController()->Process(
1094 ui::Accelerator(ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_CONTROL_DOWN))); 1128 ui::Accelerator(ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_CONTROL_DOWN)));
1095 EXPECT_TRUE(ProcessWithContext( 1129 EXPECT_TRUE(
1096 ui::Accelerator(ui::VKEY_PRINT, ui::EF_NONE))); 1130 GetController()->Process(ui::Accelerator(ui::VKEY_PRINT, ui::EF_NONE)));
1097 EXPECT_TRUE(ProcessWithContext( 1131 EXPECT_TRUE(GetController()->Process(ui::Accelerator(
1098 ui::Accelerator(ui::VKEY_MEDIA_LAUNCH_APP1, 1132 ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN)));
1099 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN)));
1100 delegate->set_can_take_screenshot(true); 1133 delegate->set_can_take_screenshot(true);
1101 EXPECT_EQ(0, delegate->handle_take_screenshot_count()); 1134 EXPECT_EQ(0, delegate->handle_take_screenshot_count());
1102 EXPECT_TRUE(ProcessWithContext( 1135 EXPECT_TRUE(GetController()->Process(
1103 ui::Accelerator(ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_CONTROL_DOWN))); 1136 ui::Accelerator(ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_CONTROL_DOWN)));
1104 EXPECT_EQ(1, delegate->handle_take_screenshot_count()); 1137 EXPECT_EQ(1, delegate->handle_take_screenshot_count());
1105 EXPECT_TRUE(ProcessWithContext( 1138 EXPECT_TRUE(
1106 ui::Accelerator(ui::VKEY_PRINT, ui::EF_NONE))); 1139 GetController()->Process(ui::Accelerator(ui::VKEY_PRINT, ui::EF_NONE)));
1107 EXPECT_EQ(2, delegate->handle_take_screenshot_count()); 1140 EXPECT_EQ(2, delegate->handle_take_screenshot_count());
1108 EXPECT_TRUE(ProcessWithContext( 1141 EXPECT_TRUE(GetController()->Process(ui::Accelerator(
1109 ui::Accelerator(ui::VKEY_MEDIA_LAUNCH_APP1, 1142 ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN)));
1110 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN)));
1111 EXPECT_EQ(2, delegate->handle_take_screenshot_count()); 1143 EXPECT_EQ(2, delegate->handle_take_screenshot_count());
1112 } 1144 }
1113 // Brightness 1145 // Brightness
1114 const ui::Accelerator brightness_down(ui::VKEY_BRIGHTNESS_DOWN, ui::EF_NONE); 1146 const ui::Accelerator brightness_down(ui::VKEY_BRIGHTNESS_DOWN, ui::EF_NONE);
1115 const ui::Accelerator brightness_up(ui::VKEY_BRIGHTNESS_UP, ui::EF_NONE); 1147 const ui::Accelerator brightness_up(ui::VKEY_BRIGHTNESS_UP, ui::EF_NONE);
1116 { 1148 {
1117 DummyBrightnessControlDelegate* delegate = 1149 DummyBrightnessControlDelegate* delegate =
1118 new DummyBrightnessControlDelegate(false); 1150 new DummyBrightnessControlDelegate(false);
1119 GetController()->SetBrightnessControlDelegate( 1151 GetController()->SetBrightnessControlDelegate(
1120 scoped_ptr<BrightnessControlDelegate>(delegate).Pass()); 1152 scoped_ptr<BrightnessControlDelegate>(delegate).Pass());
1121 EXPECT_EQ(0, delegate->handle_brightness_down_count()); 1153 EXPECT_EQ(0, delegate->handle_brightness_down_count());
1122 EXPECT_FALSE(ProcessWithContext(brightness_down)); 1154 EXPECT_FALSE(GetController()->Process(brightness_down));
1123 EXPECT_EQ(1, delegate->handle_brightness_down_count()); 1155 EXPECT_EQ(1, delegate->handle_brightness_down_count());
1124 EXPECT_EQ(brightness_down, delegate->last_accelerator()); 1156 EXPECT_EQ(brightness_down, delegate->last_accelerator());
1125 EXPECT_EQ(0, delegate->handle_brightness_up_count()); 1157 EXPECT_EQ(0, delegate->handle_brightness_up_count());
1126 EXPECT_FALSE(ProcessWithContext(brightness_up)); 1158 EXPECT_FALSE(GetController()->Process(brightness_up));
1127 EXPECT_EQ(1, delegate->handle_brightness_up_count()); 1159 EXPECT_EQ(1, delegate->handle_brightness_up_count());
1128 EXPECT_EQ(brightness_up, delegate->last_accelerator()); 1160 EXPECT_EQ(brightness_up, delegate->last_accelerator());
1129 } 1161 }
1130 { 1162 {
1131 DummyBrightnessControlDelegate* delegate = 1163 DummyBrightnessControlDelegate* delegate =
1132 new DummyBrightnessControlDelegate(true); 1164 new DummyBrightnessControlDelegate(true);
1133 GetController()->SetBrightnessControlDelegate( 1165 GetController()->SetBrightnessControlDelegate(
1134 scoped_ptr<BrightnessControlDelegate>(delegate).Pass()); 1166 scoped_ptr<BrightnessControlDelegate>(delegate).Pass());
1135 EXPECT_EQ(0, delegate->handle_brightness_down_count()); 1167 EXPECT_EQ(0, delegate->handle_brightness_down_count());
1136 EXPECT_TRUE(ProcessWithContext(brightness_down)); 1168 EXPECT_TRUE(GetController()->Process(brightness_down));
1137 EXPECT_EQ(1, delegate->handle_brightness_down_count()); 1169 EXPECT_EQ(1, delegate->handle_brightness_down_count());
1138 EXPECT_EQ(brightness_down, delegate->last_accelerator()); 1170 EXPECT_EQ(brightness_down, delegate->last_accelerator());
1139 EXPECT_EQ(0, delegate->handle_brightness_up_count()); 1171 EXPECT_EQ(0, delegate->handle_brightness_up_count());
1140 EXPECT_TRUE(ProcessWithContext(brightness_up)); 1172 EXPECT_TRUE(GetController()->Process(brightness_up));
1141 EXPECT_EQ(1, delegate->handle_brightness_up_count()); 1173 EXPECT_EQ(1, delegate->handle_brightness_up_count());
1142 EXPECT_EQ(brightness_up, delegate->last_accelerator()); 1174 EXPECT_EQ(brightness_up, delegate->last_accelerator());
1143 } 1175 }
1144 // Volume 1176 // Volume
1145 const ui::Accelerator volume_mute(ui::VKEY_VOLUME_MUTE, ui::EF_NONE); 1177 const ui::Accelerator volume_mute(ui::VKEY_VOLUME_MUTE, ui::EF_NONE);
1146 const ui::Accelerator volume_down(ui::VKEY_VOLUME_DOWN, ui::EF_NONE); 1178 const ui::Accelerator volume_down(ui::VKEY_VOLUME_DOWN, ui::EF_NONE);
1147 const ui::Accelerator volume_up(ui::VKEY_VOLUME_UP, ui::EF_NONE); 1179 const ui::Accelerator volume_up(ui::VKEY_VOLUME_UP, ui::EF_NONE);
1148 { 1180 {
1149 EXPECT_TRUE(ProcessWithContext(volume_mute)); 1181 EXPECT_TRUE(GetController()->Process(volume_mute));
1150 EXPECT_TRUE(ProcessWithContext(volume_down)); 1182 EXPECT_TRUE(GetController()->Process(volume_down));
1151 EXPECT_TRUE(ProcessWithContext(volume_up)); 1183 EXPECT_TRUE(GetController()->Process(volume_up));
1152 TestVolumeControlDelegate* delegate = 1184 TestVolumeControlDelegate* delegate =
1153 new TestVolumeControlDelegate(false); 1185 new TestVolumeControlDelegate(false);
1154 ash::Shell::GetInstance()->system_tray_delegate()->SetVolumeControlDelegate( 1186 ash::Shell::GetInstance()->system_tray_delegate()->SetVolumeControlDelegate(
1155 scoped_ptr<VolumeControlDelegate>(delegate).Pass()); 1187 scoped_ptr<VolumeControlDelegate>(delegate).Pass());
1156 EXPECT_EQ(0, delegate->handle_volume_mute_count()); 1188 EXPECT_EQ(0, delegate->handle_volume_mute_count());
1157 EXPECT_FALSE(ProcessWithContext(volume_mute)); 1189 EXPECT_FALSE(GetController()->Process(volume_mute));
1158 EXPECT_EQ(1, delegate->handle_volume_mute_count()); 1190 EXPECT_EQ(1, delegate->handle_volume_mute_count());
1159 EXPECT_EQ(volume_mute, delegate->last_accelerator()); 1191 EXPECT_EQ(volume_mute, delegate->last_accelerator());
1160 EXPECT_EQ(0, delegate->handle_volume_down_count()); 1192 EXPECT_EQ(0, delegate->handle_volume_down_count());
1161 EXPECT_FALSE(ProcessWithContext(volume_down)); 1193 EXPECT_FALSE(GetController()->Process(volume_down));
1162 EXPECT_EQ(1, delegate->handle_volume_down_count()); 1194 EXPECT_EQ(1, delegate->handle_volume_down_count());
1163 EXPECT_EQ(volume_down, delegate->last_accelerator()); 1195 EXPECT_EQ(volume_down, delegate->last_accelerator());
1164 EXPECT_EQ(0, delegate->handle_volume_up_count()); 1196 EXPECT_EQ(0, delegate->handle_volume_up_count());
1165 EXPECT_FALSE(ProcessWithContext(volume_up)); 1197 EXPECT_FALSE(GetController()->Process(volume_up));
1166 EXPECT_EQ(1, delegate->handle_volume_up_count()); 1198 EXPECT_EQ(1, delegate->handle_volume_up_count());
1167 EXPECT_EQ(volume_up, delegate->last_accelerator()); 1199 EXPECT_EQ(volume_up, delegate->last_accelerator());
1168 } 1200 }
1169 { 1201 {
1170 TestVolumeControlDelegate* delegate = new TestVolumeControlDelegate(true); 1202 TestVolumeControlDelegate* delegate = new TestVolumeControlDelegate(true);
1171 ash::Shell::GetInstance()->system_tray_delegate()->SetVolumeControlDelegate( 1203 ash::Shell::GetInstance()->system_tray_delegate()->SetVolumeControlDelegate(
1172 scoped_ptr<VolumeControlDelegate>(delegate).Pass()); 1204 scoped_ptr<VolumeControlDelegate>(delegate).Pass());
1173 EXPECT_EQ(0, delegate->handle_volume_mute_count()); 1205 EXPECT_EQ(0, delegate->handle_volume_mute_count());
1174 EXPECT_TRUE(ProcessWithContext(volume_mute)); 1206 EXPECT_TRUE(GetController()->Process(volume_mute));
1175 EXPECT_EQ(1, delegate->handle_volume_mute_count()); 1207 EXPECT_EQ(1, delegate->handle_volume_mute_count());
1176 EXPECT_EQ(volume_mute, delegate->last_accelerator()); 1208 EXPECT_EQ(volume_mute, delegate->last_accelerator());
1177 EXPECT_EQ(0, delegate->handle_volume_down_count()); 1209 EXPECT_EQ(0, delegate->handle_volume_down_count());
1178 EXPECT_TRUE(ProcessWithContext(volume_down)); 1210 EXPECT_TRUE(GetController()->Process(volume_down));
1179 EXPECT_EQ(1, delegate->handle_volume_down_count()); 1211 EXPECT_EQ(1, delegate->handle_volume_down_count());
1180 EXPECT_EQ(volume_down, delegate->last_accelerator()); 1212 EXPECT_EQ(volume_down, delegate->last_accelerator());
1181 EXPECT_EQ(0, delegate->handle_volume_up_count()); 1213 EXPECT_EQ(0, delegate->handle_volume_up_count());
1182 EXPECT_TRUE(ProcessWithContext(volume_up)); 1214 EXPECT_TRUE(GetController()->Process(volume_up));
1183 EXPECT_EQ(1, delegate->handle_volume_up_count()); 1215 EXPECT_EQ(1, delegate->handle_volume_up_count());
1184 EXPECT_EQ(volume_up, delegate->last_accelerator()); 1216 EXPECT_EQ(volume_up, delegate->last_accelerator());
1185 } 1217 }
1186 } 1218 }
1187 #endif 1219 #endif
1188 1220
1189 TEST_F(AcceleratorControllerTest, DisallowedWithNoWindow) { 1221 TEST_F(AcceleratorControllerTest, DisallowedWithNoWindow) {
1190 const ui::Accelerator dummy; 1222 const ui::Accelerator dummy;
1191 AccessibilityDelegate* delegate = 1223 AccessibilityDelegate* delegate =
1192 ash::Shell::GetInstance()->accessibility_delegate(); 1224 ash::Shell::GetInstance()->accessibility_delegate();
(...skipping 18 matching lines...) Expand all
1211 // Don't alert if we have a minimized window either. 1243 // Don't alert if we have a minimized window either.
1212 GetController()->PerformAction(WINDOW_MINIMIZE, dummy); 1244 GetController()->PerformAction(WINDOW_MINIMIZE, dummy);
1213 for (size_t i = 0; i < kActionsNeedingWindowLength; ++i) { 1245 for (size_t i = 0; i < kActionsNeedingWindowLength; ++i) {
1214 delegate->TriggerAccessibilityAlert(A11Y_ALERT_NONE); 1246 delegate->TriggerAccessibilityAlert(A11Y_ALERT_NONE);
1215 GetController()->PerformAction(kActionsNeedingWindow[i], dummy); 1247 GetController()->PerformAction(kActionsNeedingWindow[i], dummy);
1216 EXPECT_NE(delegate->GetLastAccessibilityAlert(), A11Y_ALERT_WINDOW_NEEDED); 1248 EXPECT_NE(delegate->GetLastAccessibilityAlert(), A11Y_ALERT_WINDOW_NEEDED);
1217 } 1249 }
1218 } 1250 }
1219 1251
1220 } // namespace ash 1252 } // namespace ash
OLDNEW
« no previous file with comments | « ash/accelerators/accelerator_controller.cc ('k') | ash/accelerators/accelerator_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698