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

Side by Side Diff: chrome/browser/chromeos/events/event_rewriter_unittest.cc

Issue 232333002: ozone: Rename XKeyboard to KeyboardController & use fake under ozone (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rename to ImeKeyboard & rebase Created 6 years, 8 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/chromeos/events/event_rewriter.h" 5 #include "chrome/browser/chromeos/events/event_rewriter.h"
6 6
7 #include <X11/keysym.h> 7 #include <X11/keysym.h>
8 #include <X11/XF86keysym.h> 8 #include <X11/XF86keysym.h>
9 #include <X11/Xlib.h> 9 #include <X11/Xlib.h>
10 #undef Bool 10 #undef Bool
11 #undef None 11 #undef None
12 #undef RootWindow 12 #undef RootWindow
13 13
14 #include "ash/test/ash_test_base.h" 14 #include "ash/test/ash_test_base.h"
15 #include "ash/wm/window_state.h" 15 #include "ash/wm/window_state.h"
16 #include "base/basictypes.h" 16 #include "base/basictypes.h"
17 #include "base/command_line.h" 17 #include "base/command_line.h"
18 #include "base/prefs/pref_member.h" 18 #include "base/prefs/pref_member.h"
19 #include "base/strings/stringprintf.h" 19 #include "base/strings/stringprintf.h"
20 #include "chrome/browser/chromeos/input_method/input_method_configuration.h" 20 #include "chrome/browser/chromeos/input_method/input_method_configuration.h"
21 #include "chrome/browser/chromeos/input_method/mock_input_method_manager.h" 21 #include "chrome/browser/chromeos/input_method/mock_input_method_manager.h"
22 #include "chrome/browser/chromeos/login/mock_user_manager.h" 22 #include "chrome/browser/chromeos/login/mock_user_manager.h"
23 #include "chrome/browser/chromeos/login/user_manager.h" 23 #include "chrome/browser/chromeos/login/user_manager.h"
24 #include "chrome/browser/chromeos/preferences.h" 24 #include "chrome/browser/chromeos/preferences.h"
25 #include "chrome/common/pref_names.h" 25 #include "chrome/common/pref_names.h"
26 #include "chrome/test/base/testing_pref_service_syncable.h" 26 #include "chrome/test/base/testing_pref_service_syncable.h"
27 #include "chromeos/chromeos_switches.h" 27 #include "chromeos/chromeos_switches.h"
28 #include "chromeos/ime/fake_xkeyboard.h" 28 #include "chromeos/ime/fake_ime_keyboard.h"
29 #include "testing/gtest/include/gtest/gtest.h" 29 #include "testing/gtest/include/gtest/gtest.h"
30 #include "ui/aura/window.h" 30 #include "ui/aura/window.h"
31 #include "ui/events/event.h" 31 #include "ui/events/event.h"
32 #include "ui/events/test/events_test_utils_x11.h" 32 #include "ui/events/test/events_test_utils_x11.h"
33 #include "ui/events/x/touch_factory_x11.h" 33 #include "ui/events/x/touch_factory_x11.h"
34 #include "ui/gfx/x/x11_types.h" 34 #include "ui/gfx/x/x11_types.h"
35 35
36 namespace { 36 namespace {
37 37
38 std::string GetRewrittenEventAsString(chromeos::EventRewriter* rewriter, 38 std::string GetRewrittenEventAsString(chromeos::EventRewriter* rewriter,
(...skipping 1480 matching lines...) Expand 10 before | Expand all | Expand 10 after
1519 } 1519 }
1520 1520
1521 TEST_F(EventRewriterTest, TestRewriteModifiersRemapToCapsLock) { 1521 TEST_F(EventRewriterTest, TestRewriteModifiersRemapToCapsLock) {
1522 // Remap Search to Caps Lock. 1522 // Remap Search to Caps Lock.
1523 TestingPrefServiceSyncable prefs; 1523 TestingPrefServiceSyncable prefs;
1524 chromeos::Preferences::RegisterProfilePrefs(prefs.registry()); 1524 chromeos::Preferences::RegisterProfilePrefs(prefs.registry());
1525 IntegerPrefMember search; 1525 IntegerPrefMember search;
1526 search.Init(prefs::kLanguageRemapSearchKeyTo, &prefs); 1526 search.Init(prefs::kLanguageRemapSearchKeyTo, &prefs);
1527 search.SetValue(chromeos::input_method::kCapsLockKey); 1527 search.SetValue(chromeos::input_method::kCapsLockKey);
1528 1528
1529 chromeos::input_method::FakeXKeyboard xkeyboard; 1529 chromeos::input_method::FakeImeKeyboard keyboard;
1530 EventRewriter rewriter; 1530 EventRewriter rewriter;
1531 rewriter.set_pref_service_for_testing(&prefs); 1531 rewriter.set_pref_service_for_testing(&prefs);
1532 rewriter.set_xkeyboard_for_testing(&xkeyboard); 1532 rewriter.set_keyboard_for_testing(&keyboard);
1533 EXPECT_FALSE(xkeyboard.caps_lock_is_enabled_); 1533 EXPECT_FALSE(keyboard.caps_lock_is_enabled_);
1534 1534
1535 // Press Search. 1535 // Press Search.
1536 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_CAPITAL, 1536 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_CAPITAL,
1537 ui::EF_CAPS_LOCK_DOWN, 1537 ui::EF_CAPS_LOCK_DOWN,
1538 ui::ET_KEY_PRESSED, 1538 ui::ET_KEY_PRESSED,
1539 keycode_caps_lock_, 1539 keycode_caps_lock_,
1540 0U, 1540 0U,
1541 KeyPress), 1541 KeyPress),
1542 GetRewrittenEventAsString(&rewriter, 1542 GetRewrittenEventAsString(&rewriter,
1543 ui::VKEY_LWIN, 1543 ui::VKEY_LWIN,
1544 0, 1544 0,
1545 ui::ET_KEY_PRESSED, 1545 ui::ET_KEY_PRESSED,
1546 keycode_super_l_, 1546 keycode_super_l_,
1547 0U)); 1547 0U));
1548 // Confirm that the Caps Lock status is changed. 1548 // Confirm that the Caps Lock status is changed.
1549 EXPECT_TRUE(xkeyboard.caps_lock_is_enabled_); 1549 EXPECT_TRUE(keyboard.caps_lock_is_enabled_);
1550 1550
1551 // Release Search. 1551 // Release Search.
1552 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_CAPITAL, 1552 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_CAPITAL,
1553 ui::EF_NONE, 1553 ui::EF_NONE,
1554 ui::ET_KEY_RELEASED, 1554 ui::ET_KEY_RELEASED,
1555 keycode_caps_lock_, 1555 keycode_caps_lock_,
1556 LockMask, 1556 LockMask,
1557 KeyRelease), 1557 KeyRelease),
1558 GetRewrittenEventAsString(&rewriter, 1558 GetRewrittenEventAsString(&rewriter,
1559 ui::VKEY_LWIN, 1559 ui::VKEY_LWIN,
1560 ui::EF_CAPS_LOCK_DOWN, 1560 ui::EF_CAPS_LOCK_DOWN,
1561 ui::ET_KEY_RELEASED, 1561 ui::ET_KEY_RELEASED,
1562 keycode_super_l_, 1562 keycode_super_l_,
1563 Mod4Mask | LockMask)); 1563 Mod4Mask | LockMask));
1564 // Confirm that the Caps Lock status is not changed. 1564 // Confirm that the Caps Lock status is not changed.
1565 EXPECT_TRUE(xkeyboard.caps_lock_is_enabled_); 1565 EXPECT_TRUE(keyboard.caps_lock_is_enabled_);
1566 1566
1567 // Press Search. 1567 // Press Search.
1568 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_CAPITAL, 1568 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_CAPITAL,
1569 ui::EF_CAPS_LOCK_DOWN, 1569 ui::EF_CAPS_LOCK_DOWN,
1570 ui::ET_KEY_PRESSED, 1570 ui::ET_KEY_PRESSED,
1571 keycode_caps_lock_, 1571 keycode_caps_lock_,
1572 LockMask, 1572 LockMask,
1573 KeyPress), 1573 KeyPress),
1574 GetRewrittenEventAsString(&rewriter, 1574 GetRewrittenEventAsString(&rewriter,
1575 ui::VKEY_LWIN, 1575 ui::VKEY_LWIN,
1576 ui::EF_CAPS_LOCK_DOWN, 1576 ui::EF_CAPS_LOCK_DOWN,
1577 ui::ET_KEY_PRESSED, 1577 ui::ET_KEY_PRESSED,
1578 keycode_super_l_, 1578 keycode_super_l_,
1579 LockMask)); 1579 LockMask));
1580 // Confirm that the Caps Lock status is changed. 1580 // Confirm that the Caps Lock status is changed.
1581 EXPECT_FALSE(xkeyboard.caps_lock_is_enabled_); 1581 EXPECT_FALSE(keyboard.caps_lock_is_enabled_);
1582 1582
1583 // Release Search. 1583 // Release Search.
1584 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_CAPITAL, 1584 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_CAPITAL,
1585 ui::EF_NONE, 1585 ui::EF_NONE,
1586 ui::ET_KEY_RELEASED, 1586 ui::ET_KEY_RELEASED,
1587 keycode_caps_lock_, 1587 keycode_caps_lock_,
1588 LockMask, 1588 LockMask,
1589 KeyRelease), 1589 KeyRelease),
1590 GetRewrittenEventAsString(&rewriter, 1590 GetRewrittenEventAsString(&rewriter,
1591 ui::VKEY_LWIN, 1591 ui::VKEY_LWIN,
1592 ui::EF_CAPS_LOCK_DOWN, 1592 ui::EF_CAPS_LOCK_DOWN,
1593 ui::ET_KEY_RELEASED, 1593 ui::ET_KEY_RELEASED,
1594 keycode_super_l_, 1594 keycode_super_l_,
1595 Mod4Mask | LockMask)); 1595 Mod4Mask | LockMask));
1596 // Confirm that the Caps Lock status is not changed. 1596 // Confirm that the Caps Lock status is not changed.
1597 EXPECT_FALSE(xkeyboard.caps_lock_is_enabled_); 1597 EXPECT_FALSE(keyboard.caps_lock_is_enabled_);
1598 1598
1599 // Press Caps Lock (on an external keyboard). 1599 // Press Caps Lock (on an external keyboard).
1600 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_CAPITAL, 1600 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_CAPITAL,
1601 ui::EF_CAPS_LOCK_DOWN, 1601 ui::EF_CAPS_LOCK_DOWN,
1602 ui::ET_KEY_PRESSED, 1602 ui::ET_KEY_PRESSED,
1603 keycode_caps_lock_, 1603 keycode_caps_lock_,
1604 0U, 1604 0U,
1605 KeyPress), 1605 KeyPress),
1606 GetRewrittenEventAsString(&rewriter, 1606 GetRewrittenEventAsString(&rewriter,
1607 ui::VKEY_CAPITAL, 1607 ui::VKEY_CAPITAL,
1608 ui::EF_NONE, 1608 ui::EF_NONE,
1609 ui::ET_KEY_PRESSED, 1609 ui::ET_KEY_PRESSED,
1610 keycode_caps_lock_, 1610 keycode_caps_lock_,
1611 0U)); 1611 0U));
1612 1612
1613 // Confirm that calling RewriteForTesting() does not change the state of 1613 // Confirm that calling RewriteForTesting() does not change the state of
1614 // |xkeyboard|. In this case, X Window system itself should change the 1614 // |keyboard|. In this case, X Window system itself should change the
1615 // Caps Lock state, not ash::EventRewriter. 1615 // Caps Lock state, not ash::EventRewriter.
1616 EXPECT_FALSE(xkeyboard.caps_lock_is_enabled_); 1616 EXPECT_FALSE(keyboard.caps_lock_is_enabled_);
1617 1617
1618 // Release Caps Lock (on an external keyboard). 1618 // Release Caps Lock (on an external keyboard).
1619 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_CAPITAL, 1619 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_CAPITAL,
1620 ui::EF_NONE, 1620 ui::EF_NONE,
1621 ui::ET_KEY_RELEASED, 1621 ui::ET_KEY_RELEASED,
1622 keycode_caps_lock_, 1622 keycode_caps_lock_,
1623 LockMask, 1623 LockMask,
1624 KeyRelease), 1624 KeyRelease),
1625 GetRewrittenEventAsString(&rewriter, 1625 GetRewrittenEventAsString(&rewriter,
1626 ui::VKEY_CAPITAL, 1626 ui::VKEY_CAPITAL,
1627 ui::EF_CAPS_LOCK_DOWN, 1627 ui::EF_CAPS_LOCK_DOWN,
1628 ui::ET_KEY_RELEASED, 1628 ui::ET_KEY_RELEASED,
1629 keycode_caps_lock_, 1629 keycode_caps_lock_,
1630 LockMask)); 1630 LockMask));
1631 EXPECT_FALSE(xkeyboard.caps_lock_is_enabled_); 1631 EXPECT_FALSE(keyboard.caps_lock_is_enabled_);
1632 } 1632 }
1633 1633
1634 TEST_F(EventRewriterTest, DISABLED_TestRewriteCapsLock) { 1634 TEST_F(EventRewriterTest, DISABLED_TestRewriteCapsLock) {
1635 // It seems that the X server running on build servers is too old and does not 1635 // It seems that the X server running on build servers is too old and does not
1636 // support F16 (i.e. 'XKeysymToKeycode(display_, XF86XK_Launch7)' call). 1636 // support F16 (i.e. 'XKeysymToKeycode(display_, XF86XK_Launch7)' call).
1637 // TODO(yusukes): Reenable the test once build servers are upgraded. 1637 // TODO(yusukes): Reenable the test once build servers are upgraded.
1638 1638
1639 TestingPrefServiceSyncable prefs; 1639 TestingPrefServiceSyncable prefs;
1640 chromeos::Preferences::RegisterProfilePrefs(prefs.registry()); 1640 chromeos::Preferences::RegisterProfilePrefs(prefs.registry());
1641 1641
1642 chromeos::input_method::FakeXKeyboard xkeyboard; 1642 chromeos::input_method::FakeImeKeyboard keyboard;
1643 EventRewriter rewriter; 1643 EventRewriter rewriter;
1644 rewriter.set_pref_service_for_testing(&prefs); 1644 rewriter.set_pref_service_for_testing(&prefs);
1645 rewriter.set_xkeyboard_for_testing(&xkeyboard); 1645 rewriter.set_keyboard_for_testing(&keyboard);
1646 EXPECT_FALSE(xkeyboard.caps_lock_is_enabled_); 1646 EXPECT_FALSE(keyboard.caps_lock_is_enabled_);
1647 1647
1648 // On Chrome OS, CapsLock is mapped to F16 with Mod3Mask. 1648 // On Chrome OS, CapsLock is mapped to F16 with Mod3Mask.
1649 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_CAPITAL, 1649 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_CAPITAL,
1650 ui::EF_CAPS_LOCK_DOWN, 1650 ui::EF_CAPS_LOCK_DOWN,
1651 ui::ET_KEY_PRESSED, 1651 ui::ET_KEY_PRESSED,
1652 keycode_caps_lock_, 1652 keycode_caps_lock_,
1653 0U, 1653 0U,
1654 KeyPress), 1654 KeyPress),
1655 GetRewrittenEventAsString(&rewriter, 1655 GetRewrittenEventAsString(&rewriter,
1656 ui::VKEY_F16, 1656 ui::VKEY_F16,
1657 0, 1657 0,
1658 ui::ET_KEY_PRESSED, 1658 ui::ET_KEY_PRESSED,
1659 keycode_launch7_, 1659 keycode_launch7_,
1660 0U)); 1660 0U));
1661 EXPECT_TRUE(xkeyboard.caps_lock_is_enabled_); 1661 EXPECT_TRUE(keyboard.caps_lock_is_enabled_);
1662 } 1662 }
1663 1663
1664 TEST_F(EventRewriterTest, DISABLED_TestRewriteDiamondKey) { 1664 TEST_F(EventRewriterTest, DISABLED_TestRewriteDiamondKey) {
1665 // TODO(yusukes): Reenable the test once build servers are upgraded. 1665 // TODO(yusukes): Reenable the test once build servers are upgraded.
1666 1666
1667 TestingPrefServiceSyncable prefs; 1667 TestingPrefServiceSyncable prefs;
1668 chromeos::Preferences::RegisterProfilePrefs(prefs.registry()); 1668 chromeos::Preferences::RegisterProfilePrefs(prefs.registry());
1669 1669
1670 chromeos::input_method::FakeXKeyboard xkeyboard; 1670 chromeos::input_method::FakeImeKeyboard keyboard;
1671 EventRewriter rewriter; 1671 EventRewriter rewriter;
1672 rewriter.set_pref_service_for_testing(&prefs); 1672 rewriter.set_pref_service_for_testing(&prefs);
1673 rewriter.set_xkeyboard_for_testing(&xkeyboard); 1673 rewriter.set_keyboard_for_testing(&keyboard);
1674 1674
1675 // F15 should work as Ctrl when --has-chromeos-diamond-key is not specified. 1675 // F15 should work as Ctrl when --has-chromeos-diamond-key is not specified.
1676 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_CONTROL, 1676 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_CONTROL,
1677 ui::EF_CONTROL_DOWN, 1677 ui::EF_CONTROL_DOWN,
1678 ui::ET_KEY_PRESSED, 1678 ui::ET_KEY_PRESSED,
1679 keycode_control_l_, 1679 keycode_control_l_,
1680 0U, 1680 0U,
1681 KeyPress), 1681 KeyPress),
1682 GetRewrittenEventAsString(&rewriter, 1682 GetRewrittenEventAsString(&rewriter,
1683 ui::VKEY_F15, 1683 ui::VKEY_F15,
(...skipping 21 matching lines...) Expand all
1705 TEST_F(EventRewriterTest, DISABLED_TestRewriteDiamondKeyWithFlag) { 1705 TEST_F(EventRewriterTest, DISABLED_TestRewriteDiamondKeyWithFlag) {
1706 // TODO(yusukes): Reenable the test once build servers are upgraded. 1706 // TODO(yusukes): Reenable the test once build servers are upgraded.
1707 1707
1708 const CommandLine original_cl(*CommandLine::ForCurrentProcess()); 1708 const CommandLine original_cl(*CommandLine::ForCurrentProcess());
1709 CommandLine::ForCurrentProcess()->AppendSwitchASCII( 1709 CommandLine::ForCurrentProcess()->AppendSwitchASCII(
1710 chromeos::switches::kHasChromeOSDiamondKey, ""); 1710 chromeos::switches::kHasChromeOSDiamondKey, "");
1711 1711
1712 TestingPrefServiceSyncable prefs; 1712 TestingPrefServiceSyncable prefs;
1713 chromeos::Preferences::RegisterProfilePrefs(prefs.registry()); 1713 chromeos::Preferences::RegisterProfilePrefs(prefs.registry());
1714 1714
1715 chromeos::input_method::FakeXKeyboard xkeyboard; 1715 chromeos::input_method::FakeImeKeyboard keyboard;
1716 EventRewriter rewriter; 1716 EventRewriter rewriter;
1717 rewriter.set_pref_service_for_testing(&prefs); 1717 rewriter.set_pref_service_for_testing(&prefs);
1718 rewriter.set_xkeyboard_for_testing(&xkeyboard); 1718 rewriter.set_keyboard_for_testing(&keyboard);
1719 1719
1720 // By default, F15 should work as Control. 1720 // By default, F15 should work as Control.
1721 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_CONTROL, 1721 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_CONTROL,
1722 ui::EF_CONTROL_DOWN, 1722 ui::EF_CONTROL_DOWN,
1723 ui::ET_KEY_PRESSED, 1723 ui::ET_KEY_PRESSED,
1724 keycode_control_l_, 1724 keycode_control_l_,
1725 0U, 1725 0U,
1726 KeyPress), 1726 KeyPress),
1727 GetRewrittenEventAsString(&rewriter, 1727 GetRewrittenEventAsString(&rewriter,
1728 ui::VKEY_F15, 1728 ui::VKEY_F15,
(...skipping 743 matching lines...) Expand 10 before | Expand all | Expand 10 after
2472 ui::ScopedXI2Event xev; 2472 ui::ScopedXI2Event xev;
2473 xev.InitGenericButtonEvent( 2473 xev.InitGenericButtonEvent(
2474 11, ui::ET_MOUSE_RELEASED, gfx::Point(), kLeftAndAltFlag); 2474 11, ui::ET_MOUSE_RELEASED, gfx::Point(), kLeftAndAltFlag);
2475 ui::MouseEvent release(xev); 2475 ui::MouseEvent release(xev);
2476 RewriteMouseEvent(&rewriter, &release); 2476 RewriteMouseEvent(&rewriter, &release);
2477 EXPECT_TRUE(ui::EF_RIGHT_MOUSE_BUTTON & release.flags()); 2477 EXPECT_TRUE(ui::EF_RIGHT_MOUSE_BUTTON & release.flags());
2478 } 2478 }
2479 } 2479 }
2480 2480
2481 } // namespace chromeos 2481 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/events/event_rewriter.cc ('k') | chrome/browser/chromeos/events/system_key_event_listener.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698