OLD | NEW |
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 "chrome/browser/ui/ash/event_rewriter.h" | 5 #include "chrome/browser/ui/ash/event_rewriter.h" |
6 | 6 |
7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
9 #include "base/prefs/pref_member.h" | 9 #include "base/prefs/pref_member.h" |
10 #include "base/strings/stringprintf.h" | 10 #include "base/strings/stringprintf.h" |
11 #include "chrome/common/pref_names.h" | 11 #include "chrome/common/pref_names.h" |
12 #include "chrome/test/base/testing_pref_service_syncable.h" | 12 #include "chrome/test/base/testing_pref_service_syncable.h" |
13 #include "testing/gtest/include/gtest/gtest.h" | 13 #include "testing/gtest/include/gtest/gtest.h" |
14 #include "ui/events/event.h" | 14 #include "ui/events/event.h" |
15 | 15 |
16 #if defined(OS_CHROMEOS) | 16 #if defined(OS_CHROMEOS) |
17 #include <X11/keysym.h> | 17 #include <X11/keysym.h> |
18 #include <X11/XF86keysym.h> | 18 #include <X11/XF86keysym.h> |
19 #include <X11/Xlib.h> | 19 #include <X11/Xlib.h> |
20 | 20 |
| 21 #include "ash/magnifier/magnification_controller.h" |
| 22 #include "ash/shell.h" |
21 #include "ash/test/ash_test_base.h" | 23 #include "ash/test/ash_test_base.h" |
22 #include "ash/wm/window_state.h" | 24 #include "ash/wm/window_state.h" |
23 #include "chrome/browser/chromeos/input_method/input_method_configuration.h" | 25 #include "chrome/browser/chromeos/input_method/input_method_configuration.h" |
24 #include "chrome/browser/chromeos/input_method/mock_input_method_manager.h" | 26 #include "chrome/browser/chromeos/input_method/mock_input_method_manager.h" |
25 #include "chrome/browser/chromeos/login/mock_user_manager.h" | 27 #include "chrome/browser/chromeos/login/mock_user_manager.h" |
26 #include "chrome/browser/chromeos/login/user_manager.h" | 28 #include "chrome/browser/chromeos/login/user_manager.h" |
27 #include "chrome/browser/chromeos/preferences.h" | 29 #include "chrome/browser/chromeos/preferences.h" |
28 #include "chromeos/chromeos_switches.h" | 30 #include "chromeos/chromeos_switches.h" |
29 #include "chromeos/ime/mock_xkeyboard.h" | 31 #include "chromeos/ime/mock_xkeyboard.h" |
30 #include "ui/aura/window.h" | 32 #include "ui/aura/window.h" |
(...skipping 2301 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2332 EventRewriterAshTest() { | 2334 EventRewriterAshTest() { |
2333 chromeos::Preferences::RegisterProfilePrefs(prefs_.registry()); | 2335 chromeos::Preferences::RegisterProfilePrefs(prefs_.registry()); |
2334 rewriter_.set_pref_service_for_testing(&prefs_); | 2336 rewriter_.set_pref_service_for_testing(&prefs_); |
2335 } | 2337 } |
2336 virtual ~EventRewriterAshTest() {} | 2338 virtual ~EventRewriterAshTest() {} |
2337 | 2339 |
2338 bool RewriteFunctionKeys(ui::KeyEvent* event) { | 2340 bool RewriteFunctionKeys(ui::KeyEvent* event) { |
2339 return rewriter_.RewriteFunctionKeys(event); | 2341 return rewriter_.RewriteFunctionKeys(event); |
2340 } | 2342 } |
2341 | 2343 |
| 2344 bool RewriteAccessibilityKey( |
| 2345 ui::KeyEvent* event, |
| 2346 ash::EventRewriterDelegate::Action* action) { |
| 2347 return rewriter_.RewriteAccessibilityKeys(event, action); |
| 2348 } |
| 2349 |
2342 protected: | 2350 protected: |
2343 TestingPrefServiceSyncable prefs_; | 2351 TestingPrefServiceSyncable prefs_; |
2344 | 2352 |
2345 private: | 2353 private: |
2346 EventRewriter rewriter_; | 2354 EventRewriter rewriter_; |
2347 | 2355 |
2348 DISALLOW_COPY_AND_ASSIGN(EventRewriterAshTest); | 2356 DISALLOW_COPY_AND_ASSIGN(EventRewriterAshTest); |
2349 }; | 2357 }; |
2350 | 2358 |
2351 TEST_F(EventRewriterAshTest, TopRowKeysAreFunctionKeys) { | 2359 TEST_F(EventRewriterAshTest, TopRowKeysAreFunctionKeys) { |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2452 } | 2460 } |
2453 { | 2461 { |
2454 ui::ScopedXI2Event xev; | 2462 ui::ScopedXI2Event xev; |
2455 xev.InitGenericButtonEvent(11, ui::ET_MOUSE_RELEASED, kLeftAndAltFlag); | 2463 xev.InitGenericButtonEvent(11, ui::ET_MOUSE_RELEASED, kLeftAndAltFlag); |
2456 ui::MouseEvent release(xev); | 2464 ui::MouseEvent release(xev); |
2457 RewriteLocatedEvent(&rewriter, &release); | 2465 RewriteLocatedEvent(&rewriter, &release); |
2458 EXPECT_TRUE(ui::EF_RIGHT_MOUSE_BUTTON & release.flags()); | 2466 EXPECT_TRUE(ui::EF_RIGHT_MOUSE_BUTTON & release.flags()); |
2459 } | 2467 } |
2460 } | 2468 } |
2461 | 2469 |
| 2470 TEST_F(EventRewriterAshTest, MagnifierAccelerators) { |
| 2471 ash::MagnificationController::ScopedMagnifierAcceleratorsEnablerForTest |
| 2472 enabler; |
| 2473 ash::Shell::GetInstance()->magnification_controller()->SetEnabled(true); |
| 2474 |
| 2475 ui::ScopedXI2Event xev_up; |
| 2476 ash::EventRewriterDelegate::Action action = |
| 2477 ash::EventRewriterDelegate::ACTION_REWRITE_EVENT; |
| 2478 |
| 2479 // Press and hold. |
| 2480 { |
| 2481 xev_up.InitKeyEvent(ui::ET_KEY_PRESSED, ui::VKEY_UP, ui::EF_SHIFT_DOWN); |
| 2482 ui::KeyEvent press_up(xev_up, false); |
| 2483 EXPECT_TRUE(RewriteAccessibilityKey(&press_up, &action)); |
| 2484 EXPECT_EQ(ash::EventRewriterDelegate::ACTION_DROP_EVENT, action); |
| 2485 } |
| 2486 { |
| 2487 xev_up.InitKeyEvent(ui::ET_KEY_PRESSED, ui::VKEY_UP, ui::EF_SHIFT_DOWN); |
| 2488 ui::KeyEvent press_hold_up(xev_up, false); |
| 2489 EXPECT_TRUE(RewriteAccessibilityKey(&press_hold_up, &action)); |
| 2490 EXPECT_EQ(ash::EventRewriterDelegate::ACTION_REWRITE_EVENT, action); |
| 2491 |
| 2492 EXPECT_EQ(ui::VKEY_NUMPAD6, press_hold_up.key_code()); |
| 2493 EXPECT_TRUE(press_hold_up.flags() & ui::EF_SHIFT_DOWN); |
| 2494 } |
| 2495 { |
| 2496 xev_up.InitKeyEvent(ui::ET_KEY_RELEASED, ui::VKEY_UP, 0); |
| 2497 ui::KeyEvent release_up(xev_up, false); |
| 2498 EXPECT_TRUE(RewriteAccessibilityKey(&release_up, &action)); |
| 2499 EXPECT_EQ(ash::EventRewriterDelegate::ACTION_REWRITE_EVENT, action); |
| 2500 |
| 2501 EXPECT_EQ(ui::VKEY_NUMPAD6, release_up.key_code()); |
| 2502 EXPECT_FALSE(release_up.flags() & ui::EF_SHIFT_DOWN); |
| 2503 } |
| 2504 |
| 2505 // Press and Release |
| 2506 { |
| 2507 xev_up.InitKeyEvent(ui::ET_KEY_PRESSED, ui::VKEY_UP, ui::EF_SHIFT_DOWN); |
| 2508 ui::KeyEvent press_up(xev_up, false); |
| 2509 EXPECT_TRUE(RewriteAccessibilityKey(&press_up, &action)); |
| 2510 EXPECT_EQ(ash::EventRewriterDelegate::ACTION_DROP_EVENT, action); |
| 2511 } |
| 2512 { |
| 2513 xev_up.InitKeyEvent(ui::ET_KEY_RELEASED, ui::VKEY_UP, 0); |
| 2514 ui::KeyEvent release_up(xev_up, false); |
| 2515 EXPECT_TRUE(RewriteAccessibilityKey(&release_up, &action)); |
| 2516 EXPECT_EQ(ash::EventRewriterDelegate::ACTION_REWRITE_EVENT, action); |
| 2517 |
| 2518 EXPECT_EQ(ui::VKEY_UP, release_up.key_code()); |
| 2519 EXPECT_EQ(ui::ET_KEY_PRESSED, release_up.type()); |
| 2520 // The press event should have shift-down even if the release event |
| 2521 // didn't. |
| 2522 EXPECT_TRUE(release_up.flags() & ui::EF_SHIFT_DOWN); |
| 2523 } |
| 2524 |
| 2525 // Make sure that we don't rewrite events when the magnifier is off. |
| 2526 ash::Shell::GetInstance()->magnification_controller()->SetEnabled(false); |
| 2527 { |
| 2528 xev_up.InitKeyEvent(ui::ET_KEY_PRESSED, ui::VKEY_UP, ui::EF_SHIFT_DOWN); |
| 2529 ui::KeyEvent press_up(xev_up, false); |
| 2530 EXPECT_FALSE(RewriteAccessibilityKey(&press_up, &action)); |
| 2531 EXPECT_EQ(ui::ET_KEY_PRESSED, press_up.type()); |
| 2532 EXPECT_EQ(ui::VKEY_UP, press_up.key_code()); |
| 2533 } |
| 2534 { |
| 2535 xev_up.InitKeyEvent(ui::ET_KEY_RELEASED, ui::VKEY_UP, ui::EF_SHIFT_DOWN); |
| 2536 ui::KeyEvent release_up(xev_up, false); |
| 2537 EXPECT_FALSE(RewriteAccessibilityKey(&release_up, &action)); |
| 2538 EXPECT_EQ(ui::ET_KEY_RELEASED, release_up.type()); |
| 2539 EXPECT_EQ(ui::VKEY_UP, release_up.key_code()); |
| 2540 } |
| 2541 } |
| 2542 |
2462 #endif // OS_CHROMEOS | 2543 #endif // OS_CHROMEOS |
OLD | NEW |