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

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

Powered by Google App Engine
This is Rietveld 408576698