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

Side by Side Diff: chrome/browser/chromeos/input_method/input_method_manager_browsertest.cc

Issue 9999018: chrome/browser/chromeos/input_method/ refactoring [part 6 of 6] (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 8 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
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "chrome/browser/chromeos/input_method/input_method_manager.h"
6
7 #include "chrome/test/base/in_process_browser_test.h"
8 #include "ui/base/accelerators/accelerator.h"
9 #include "ui/base/keycodes/keyboard_codes.h"
10
11 namespace chromeos {
12 namespace input_method {
13
14 class InputMethodManagerTest : public InProcessBrowserTest {
15 public:
16 InputMethodManagerTest() : manager_(InputMethodManager::GetInstance()) {}
17
18 protected:
19 virtual void SetUpOnMainThread() OVERRIDE {
20 manager_->SetEnableAutoImeShutdown(true);
21 }
22 virtual void CleanUpOnMainThread() OVERRIDE {
23 manager_->EnableLayouts("en-US", "xkb:us::eng");
24 manager_->StopInputMethodDaemon();
25 }
26
27 InputMethodManager* manager_;
28
29 DISALLOW_COPY_AND_ASSIGN(InputMethodManagerTest);
30 };
31
32 IN_PROC_BROWSER_TEST_F(InputMethodManagerTest, TestEnableLayouts) {
33 // Currently 5 keyboard layouts are supported for en-US, and 1 for ja. See
34 // ibus_input_method.txt.
35 manager_->EnableLayouts("en-US", "");
36 EXPECT_EQ(5U, manager_->GetNumActiveInputMethods());
37 // The hardware keyboard layout "xkb:us::eng" is always active, hence 2U.
38 manager_->EnableLayouts("ja", "");
39 EXPECT_EQ(2U, manager_->GetNumActiveInputMethods());
40 }
41
42 IN_PROC_BROWSER_TEST_F(InputMethodManagerTest, TestNextInputMethod) {
43 manager_->EnableLayouts("en-US", "xkb:us::eng");
44 EXPECT_EQ(5U, manager_->GetNumActiveInputMethods());
45 EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id());
46 manager_->SwitchToNextInputMethod();
47 EXPECT_EQ("xkb:us:intl:eng", manager_->GetCurrentInputMethod().id());
48 manager_->SwitchToNextInputMethod();
49 EXPECT_EQ("xkb:us:altgr-intl:eng", manager_->GetCurrentInputMethod().id());
50 manager_->SwitchToNextInputMethod();
51 EXPECT_EQ("xkb:us:dvorak:eng", manager_->GetCurrentInputMethod().id());
52 manager_->SwitchToNextInputMethod();
53 EXPECT_EQ("xkb:us:colemak:eng", manager_->GetCurrentInputMethod().id());
54 manager_->SwitchToNextInputMethod();
55 EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id());
56 }
57
58 IN_PROC_BROWSER_TEST_F(InputMethodManagerTest, TestPreviousInputMethod) {
59 manager_->EnableLayouts("en-US", "xkb:us::eng");
60 EXPECT_EQ(5U, manager_->GetNumActiveInputMethods());
61 EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id());
62 manager_->SwitchToNextInputMethod();
63 EXPECT_EQ("xkb:us:intl:eng", manager_->GetCurrentInputMethod().id());
64 manager_->SwitchToPreviousInputMethod();
65 EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id());
66 manager_->SwitchToPreviousInputMethod();
67 EXPECT_EQ("xkb:us:intl:eng", manager_->GetCurrentInputMethod().id());
68 manager_->SwitchToPreviousInputMethod();
69 EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id());
70 manager_->SwitchToNextInputMethod();
71 EXPECT_EQ("xkb:us:intl:eng", manager_->GetCurrentInputMethod().id());
72 manager_->SwitchToNextInputMethod();
73 EXPECT_EQ("xkb:us:altgr-intl:eng", manager_->GetCurrentInputMethod().id());
74 manager_->SwitchToPreviousInputMethod();
75 EXPECT_EQ("xkb:us:intl:eng", manager_->GetCurrentInputMethod().id());
76 manager_->SwitchToPreviousInputMethod();
77 EXPECT_EQ("xkb:us:altgr-intl:eng", manager_->GetCurrentInputMethod().id());
78 }
79
80 IN_PROC_BROWSER_TEST_F(InputMethodManagerTest, TestSwitchInputMethod) {
81 manager_->EnableLayouts("en-US", "xkb:us::eng");
82 EXPECT_EQ(5U, manager_->GetNumActiveInputMethods());
83 EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id());
84
85 // Henkan, Muhenkan, ZenkakuHankaku should be ignored when no Japanese IMEs
86 // and keyboards are enabled.
87 EXPECT_FALSE(manager_->SwitchInputMethod(
88 ui::Accelerator(ui::VKEY_CONVERT, false, false, false)));
89 EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id());
90 EXPECT_FALSE(manager_->SwitchInputMethod(
91 ui::Accelerator(ui::VKEY_NONCONVERT, false, false, false)));
92 EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id());
93 EXPECT_FALSE(manager_->SwitchInputMethod(
94 ui::Accelerator(ui::VKEY_DBE_SBCSCHAR, false, false, false)));
95 EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id());
96 EXPECT_FALSE(manager_->SwitchInputMethod(
97 ui::Accelerator(ui::VKEY_DBE_DBCSCHAR, false, false, false)));
98 EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id());
99
100 // Do the same tests for Korean.
101 EXPECT_FALSE(manager_->SwitchInputMethod(
102 ui::Accelerator(ui::VKEY_HANGUL, false, false, false)));
103 EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id());
104 EXPECT_FALSE(manager_->SwitchInputMethod(
105 ui::Accelerator(ui::VKEY_SPACE, true, false, false)));
106 EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id());
107
108 // Enable "xkb:jp::jpn" and press Muhenkan/ZenkakuHankaku.
109 manager_->EnableLayouts("ja", "xkb:us::eng");
110 EXPECT_EQ(2U, manager_->GetNumActiveInputMethods());
111 EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id());
112 EXPECT_TRUE(manager_->SwitchInputMethod(
113 ui::Accelerator(ui::VKEY_NONCONVERT, false, false, false)));
114 EXPECT_EQ("xkb:jp::jpn", manager_->GetCurrentInputMethod().id());
115 manager_->SwitchToPreviousInputMethod();
116 EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id());
117 EXPECT_TRUE(manager_->SwitchInputMethod(
118 ui::Accelerator(ui::VKEY_DBE_SBCSCHAR, false, false, false)));
119 EXPECT_EQ("xkb:jp::jpn", manager_->GetCurrentInputMethod().id());
120 manager_->SwitchToPreviousInputMethod();
121 EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id());
122 EXPECT_TRUE(manager_->SwitchInputMethod(
123 ui::Accelerator(ui::VKEY_DBE_DBCSCHAR, false, false, false)));
124 EXPECT_EQ("xkb:jp::jpn", manager_->GetCurrentInputMethod().id());
125
126 // Do the same tests for Korean.
127 manager_->EnableLayouts("ko", "xkb:us::eng");
128 EXPECT_EQ(2U, manager_->GetNumActiveInputMethods());
129 EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id());
130 EXPECT_TRUE(manager_->SwitchInputMethod(
131 ui::Accelerator(ui::VKEY_HANGUL, false, false, false)));
132 EXPECT_EQ("xkb:kr:kr104:kor", manager_->GetCurrentInputMethod().id());
133 manager_->SwitchToPreviousInputMethod();
134 EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id());
135 EXPECT_TRUE(manager_->SwitchInputMethod(
136 ui::Accelerator(ui::VKEY_SPACE, true, false, false)));
137 EXPECT_EQ("xkb:kr:kr104:kor", manager_->GetCurrentInputMethod().id());
138 }
139
140 } // namespace input_method
141 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698