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/stringprintf.h" | 9 #include "base/stringprintf.h" |
9 #include "chrome/browser/api/prefs/pref_member.h" | 10 #include "chrome/browser/api/prefs/pref_member.h" |
10 #include "chrome/common/pref_names.h" | 11 #include "chrome/common/pref_names.h" |
| 12 #include "chrome/common/chrome_switches.h" |
11 #include "chrome/test/base/testing_pref_service.h" | 13 #include "chrome/test/base/testing_pref_service.h" |
12 #include "testing/gtest/include/gtest/gtest.h" | 14 #include "testing/gtest/include/gtest/gtest.h" |
13 #include "ui/base/events/event.h" | 15 #include "ui/base/events/event.h" |
14 | 16 |
15 #if defined(OS_CHROMEOS) | 17 #if defined(OS_CHROMEOS) |
16 #include <X11/keysym.h> | 18 #include <X11/keysym.h> |
17 #include <X11/XF86keysym.h> | 19 #include <X11/XF86keysym.h> |
18 #include <X11/Xlib.h> | 20 #include <X11/Xlib.h> |
19 | 21 |
20 #include "chrome/browser/chromeos/input_method/mock_input_method_manager.h" | 22 #include "chrome/browser/chromeos/input_method/mock_input_method_manager.h" |
(...skipping 1480 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1501 ui::ET_KEY_PRESSED, | 1503 ui::ET_KEY_PRESSED, |
1502 keycode_caps_lock_, | 1504 keycode_caps_lock_, |
1503 0U, | 1505 0U, |
1504 KeyPress), | 1506 KeyPress), |
1505 GetRewrittenEventAsString(&rewriter, | 1507 GetRewrittenEventAsString(&rewriter, |
1506 ui::VKEY_F16, | 1508 ui::VKEY_F16, |
1507 0, | 1509 0, |
1508 ui::ET_KEY_PRESSED, | 1510 ui::ET_KEY_PRESSED, |
1509 keycode_launch7_, | 1511 keycode_launch7_, |
1510 0U)); | 1512 0U)); |
1511 | |
1512 EXPECT_TRUE(xkeyboard.caps_lock_is_enabled_); | 1513 EXPECT_TRUE(xkeyboard.caps_lock_is_enabled_); |
1513 } | 1514 } |
1514 | 1515 |
| 1516 TEST_F(EventRewriterTest, DISABLED_TestRewriteCapsLockWithFlag) { |
| 1517 // TODO(yusukes): Reenable the test once build servers are upgraded. |
| 1518 TestingPrefService prefs; |
| 1519 chromeos::Preferences::RegisterUserPrefs(&prefs); |
| 1520 |
| 1521 chromeos::input_method::MockXKeyboard xkeyboard; |
| 1522 EventRewriter rewriter; |
| 1523 rewriter.set_pref_service_for_testing(&prefs); |
| 1524 rewriter.set_xkeyboard_for_testing(&xkeyboard); |
| 1525 EXPECT_FALSE(xkeyboard.caps_lock_is_enabled_); |
| 1526 |
| 1527 // F16 should work as CapsLock even when --has-chromeos-keyboard is specified. |
| 1528 const CommandLine original_cl(*CommandLine::ForCurrentProcess()); |
| 1529 CommandLine::ForCurrentProcess()->AppendSwitchASCII( |
| 1530 switches::kHasChromeOSKeyboard, ""); |
| 1531 |
| 1532 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_CAPITAL, |
| 1533 ui::EF_CAPS_LOCK_DOWN, |
| 1534 ui::ET_KEY_PRESSED, |
| 1535 keycode_caps_lock_, |
| 1536 0U, |
| 1537 KeyPress), |
| 1538 GetRewrittenEventAsString(&rewriter, |
| 1539 ui::VKEY_F16, |
| 1540 0, |
| 1541 ui::ET_KEY_PRESSED, |
| 1542 keycode_launch7_, |
| 1543 0U)); |
| 1544 EXPECT_TRUE(xkeyboard.caps_lock_is_enabled_); |
| 1545 |
| 1546 *CommandLine::ForCurrentProcess() = original_cl; |
| 1547 } |
| 1548 |
1515 TEST_F(EventRewriterTest, TestRewriteCapsLockToControl) { | 1549 TEST_F(EventRewriterTest, TestRewriteCapsLockToControl) { |
1516 TestingPrefService prefs; | 1550 TestingPrefService prefs; |
1517 chromeos::Preferences::RegisterUserPrefs(&prefs); | 1551 chromeos::Preferences::RegisterUserPrefs(&prefs); |
1518 IntegerPrefMember control; | 1552 IntegerPrefMember control; |
1519 control.Init(prefs::kLanguageRemapCapsLockKeyTo, &prefs, NULL); | 1553 control.Init(prefs::kLanguageRemapCapsLockKeyTo, &prefs, NULL); |
1520 control.SetValue(chromeos::input_method::kControlKey); | 1554 control.SetValue(chromeos::input_method::kControlKey); |
1521 | 1555 |
1522 EventRewriter rewriter; | 1556 EventRewriter rewriter; |
1523 rewriter.set_pref_service_for_testing(&prefs); | 1557 rewriter.set_pref_service_for_testing(&prefs); |
1524 | 1558 |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1559 Mod1Mask | ControlMask, | 1593 Mod1Mask | ControlMask, |
1560 KeyPress), | 1594 KeyPress), |
1561 GetRewrittenEventAsString(&rewriter, | 1595 GetRewrittenEventAsString(&rewriter, |
1562 ui::VKEY_A, | 1596 ui::VKEY_A, |
1563 ui::EF_ALT_DOWN, | 1597 ui::EF_ALT_DOWN, |
1564 ui::ET_KEY_PRESSED, | 1598 ui::ET_KEY_PRESSED, |
1565 keycode_a_, | 1599 keycode_a_, |
1566 Mod1Mask | Mod3Mask)); | 1600 Mod1Mask | Mod3Mask)); |
1567 } | 1601 } |
1568 | 1602 |
| 1603 TEST_F(EventRewriterTest, DISABLED_TestRewriteCapsLockToControlWithFlag) { |
| 1604 // TODO(yusukes): Reenable the test once build servers are upgraded. |
| 1605 TestingPrefService prefs; |
| 1606 chromeos::Preferences::RegisterUserPrefs(&prefs); |
| 1607 IntegerPrefMember control; |
| 1608 control.Init(prefs::kLanguageRemapCapsLockKeyTo, &prefs, NULL); |
| 1609 control.SetValue(chromeos::input_method::kControlKey); |
| 1610 |
| 1611 EventRewriter rewriter; |
| 1612 rewriter.set_pref_service_for_testing(&prefs); |
| 1613 |
| 1614 // The prefs::kLanguageRemapCapsLockKeyTo pref should be ignored when |
| 1615 // --has-chromeos-keyboard is set. |
| 1616 const CommandLine original_cl(*CommandLine::ForCurrentProcess()); |
| 1617 CommandLine::ForCurrentProcess()->AppendSwitchASCII( |
| 1618 switches::kHasChromeOSKeyboard, ""); |
| 1619 |
| 1620 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_CAPITAL, |
| 1621 ui::EF_CAPS_LOCK_DOWN, |
| 1622 ui::ET_KEY_PRESSED, |
| 1623 keycode_caps_lock_, |
| 1624 0U, |
| 1625 KeyPress), |
| 1626 GetRewrittenEventAsString(&rewriter, |
| 1627 ui::VKEY_F16, |
| 1628 0, |
| 1629 ui::ET_KEY_PRESSED, |
| 1630 keycode_launch7_, |
| 1631 0U)); |
| 1632 |
| 1633 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_A, |
| 1634 0, |
| 1635 ui::ET_KEY_PRESSED, |
| 1636 keycode_a_, |
| 1637 Mod3Mask, |
| 1638 KeyPress), |
| 1639 GetRewrittenEventAsString(&rewriter, |
| 1640 ui::VKEY_A, |
| 1641 0, |
| 1642 ui::ET_KEY_PRESSED, |
| 1643 keycode_a_, |
| 1644 Mod3Mask)); |
| 1645 |
| 1646 *CommandLine::ForCurrentProcess() = original_cl; |
| 1647 } |
| 1648 |
1569 TEST_F(EventRewriterTest, TestRewriteCapsLockMod3InUse) { | 1649 TEST_F(EventRewriterTest, TestRewriteCapsLockMod3InUse) { |
1570 // Remap CapsLock to Control. | 1650 // Remap CapsLock to Control. |
1571 TestingPrefService prefs; | 1651 TestingPrefService prefs; |
1572 chromeos::Preferences::RegisterUserPrefs(&prefs); | 1652 chromeos::Preferences::RegisterUserPrefs(&prefs); |
1573 IntegerPrefMember control; | 1653 IntegerPrefMember control; |
1574 control.Init(prefs::kLanguageRemapCapsLockKeyTo, &prefs, NULL); | 1654 control.Init(prefs::kLanguageRemapCapsLockKeyTo, &prefs, NULL); |
1575 control.SetValue(chromeos::input_method::kControlKey); | 1655 control.SetValue(chromeos::input_method::kControlKey); |
1576 | 1656 |
1577 EventRewriter rewriter; | 1657 EventRewriter rewriter; |
1578 rewriter.set_pref_service_for_testing(&prefs); | 1658 rewriter.set_pref_service_for_testing(&prefs); |
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1772 // flag in the event is True. | 1852 // flag in the event is True. |
1773 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_CONTROL, | 1853 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_CONTROL, |
1774 ui::EF_CONTROL_DOWN, | 1854 ui::EF_CONTROL_DOWN, |
1775 ui::ET_KEY_PRESSED, | 1855 ui::ET_KEY_PRESSED, |
1776 keycode_control_l_, | 1856 keycode_control_l_, |
1777 0U, | 1857 0U, |
1778 KeyPress), | 1858 KeyPress), |
1779 rewritten_event); | 1859 rewritten_event); |
1780 } | 1860 } |
1781 #endif // OS_CHROMEOS | 1861 #endif // OS_CHROMEOS |
OLD | NEW |