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

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

Issue 133273032: Guest Mode: input method should default to the underlying latin keyboard layout. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Removed bool login_layouts_only option from EnableLayouts(); EnableLayouts => EnableLoginLayouts. Created 6 years, 11 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
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 "chrome/browser/chromeos/input_method/input_method_manager_impl.h" 5 #include "chrome/browser/chromeos/input_method/input_method_manager_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 return false; 49 return false;
50 } 50 }
51 51
52 class InputMethodManagerImplTest : public testing::Test { 52 class InputMethodManagerImplTest : public testing::Test {
53 public: 53 public:
54 InputMethodManagerImplTest() 54 InputMethodManagerImplTest()
55 : delegate_(NULL), 55 : delegate_(NULL),
56 candidate_window_controller_(NULL), 56 candidate_window_controller_(NULL),
57 xkeyboard_(NULL) { 57 xkeyboard_(NULL) {
58 } 58 }
59 virtual ~InputMethodManagerImplTest() {} 59 virtual ~InputMethodManagerImplTest() {
60 InputMethodManager::Shutdown();
61 }
60 62
61 virtual void SetUp() OVERRIDE { 63 virtual void SetUp() OVERRIDE {
62 delegate_ = new FakeInputMethodDelegate(); 64 delegate_ = new FakeInputMethodDelegate();
63 manager_.reset(new InputMethodManagerImpl( 65 InputMethodManager::Shutdown();
64 scoped_ptr<InputMethodDelegate>(delegate_))); 66 InputMethodManager::Initialize(
67 new InputMethodManagerImpl(scoped_ptr<InputMethodDelegate>(delegate_)));
65 candidate_window_controller_ = new MockCandidateWindowController; 68 candidate_window_controller_ = new MockCandidateWindowController;
66 manager_->SetCandidateWindowControllerForTesting( 69 manager()->SetCandidateWindowControllerForTesting(
67 candidate_window_controller_); 70 candidate_window_controller_);
68 xkeyboard_ = new MockXKeyboard; 71 xkeyboard_ = new MockXKeyboard;
69 manager_->SetXKeyboardForTesting(xkeyboard_); 72 manager()->SetXKeyboardForTesting(xkeyboard_);
70 mock_engine_handler_.reset(new MockIMEEngineHandler()); 73 mock_engine_handler_.reset(new MockIMEEngineHandler());
71 IBusBridge::Initialize(); 74 IBusBridge::Initialize();
72 IBusBridge::Get()->SetCurrentEngineHandler(mock_engine_handler_.get()); 75 IBusBridge::Get()->SetCurrentEngineHandler(mock_engine_handler_.get());
73 76
74 ime_list_.clear(); 77 ime_list_.clear();
75 78
76 ComponentExtensionIME ext1; 79 ComponentExtensionIME ext1;
77 ext1.id = "fpfbhcjppmaeaijcidgiibchfbnhbelj"; 80 ext1.id = "fpfbhcjppmaeaijcidgiibchfbnhbelj";
78 ext1.description = "ext1_description"; 81 ext1.description = "ext1_description";
79 ext1.path = base::FilePath("ext1_file_path"); 82 ext1.path = base::FilePath("ext1_file_path");
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
113 ext2_engine2.layouts.push_back("us(dvorak)"); 116 ext2_engine2.layouts.push_back("us(dvorak)");
114 ext2.engines.push_back(ext2_engine2); 117 ext2.engines.push_back(ext2_engine2);
115 118
116 ime_list_.push_back(ext2); 119 ime_list_.push_back(ext2);
117 } 120 }
118 121
119 virtual void TearDown() OVERRIDE { 122 virtual void TearDown() OVERRIDE {
120 delegate_ = NULL; 123 delegate_ = NULL;
121 candidate_window_controller_ = NULL; 124 candidate_window_controller_ = NULL;
122 xkeyboard_ = NULL; 125 xkeyboard_ = NULL;
123 manager_.reset(); 126 InputMethodManager::Shutdown();
124 IBusBridge::Get()->SetCurrentEngineHandler(NULL); 127 IBusBridge::Get()->SetCurrentEngineHandler(NULL);
125 IBusBridge::Shutdown(); 128 IBusBridge::Shutdown();
126 } 129 }
127 130
128 protected: 131 protected:
129 // Helper function to initialize component extension stuff for testing. 132 // Helper function to initialize component extension stuff for testing.
130 void InitComponentExtension() { 133 void InitComponentExtension() {
131 mock_delegate_ = new MockComponentExtIMEManagerDelegate(); 134 mock_delegate_ = new MockComponentExtIMEManagerDelegate();
132 mock_delegate_->set_ime_list(ime_list_); 135 mock_delegate_->set_ime_list(ime_list_);
133 scoped_ptr<ComponentExtensionIMEManagerDelegate> delegate(mock_delegate_); 136 scoped_ptr<ComponentExtensionIMEManagerDelegate> delegate(mock_delegate_);
134 // Note, for production, these SetEngineHandler are called when 137 // Note, for production, these SetEngineHandler are called when
135 // IBusEngineHandlerInterface is initialized via 138 // IBusEngineHandlerInterface is initialized via
136 // InitializeComponentextension. 139 // InitializeComponentextension.
137 IBusBridge::Get()->SetEngineHandler(kNaclMozcUsId, 140 IBusBridge::Get()->SetEngineHandler(kNaclMozcUsId,
138 mock_engine_handler_.get()); 141 mock_engine_handler_.get());
139 IBusBridge::Get()->SetEngineHandler(kNaclMozcJpId, 142 IBusBridge::Get()->SetEngineHandler(kNaclMozcJpId,
140 mock_engine_handler_.get()); 143 mock_engine_handler_.get());
141 IBusBridge::Get()->SetEngineHandler(kExt2Engine1Id, 144 IBusBridge::Get()->SetEngineHandler(kExt2Engine1Id,
142 mock_engine_handler_.get()); 145 mock_engine_handler_.get());
143 IBusBridge::Get()->SetEngineHandler(kExt2Engine2Id, 146 IBusBridge::Get()->SetEngineHandler(kExt2Engine2Id,
144 mock_engine_handler_.get()); 147 mock_engine_handler_.get());
145 manager_->InitializeComponentExtensionForTesting(delegate.Pass()); 148 manager()->InitializeComponentExtensionForTesting(delegate.Pass());
146 } 149 }
147 150
148 scoped_ptr<InputMethodManagerImpl> manager_; 151 InputMethodManagerImpl* manager() const {
Hiro Komatsu 2014/01/27 05:12:21 If this is no longer necessary, please use manager
Alexander Alekseev 2014/01/27 12:50:14 Done.
152 return static_cast<InputMethodManagerImpl*>(InputMethodManager::Get());
153 }
154
149 FakeInputMethodDelegate* delegate_; 155 FakeInputMethodDelegate* delegate_;
150 MockCandidateWindowController* candidate_window_controller_; 156 MockCandidateWindowController* candidate_window_controller_;
151 scoped_ptr<MockIMEEngineHandler> mock_engine_handler_; 157 scoped_ptr<MockIMEEngineHandler> mock_engine_handler_;
152 MockXKeyboard* xkeyboard_; 158 MockXKeyboard* xkeyboard_;
153 base::MessageLoop message_loop_; 159 base::MessageLoop message_loop_;
154 MockComponentExtIMEManagerDelegate* mock_delegate_; 160 MockComponentExtIMEManagerDelegate* mock_delegate_;
155 std::vector<ComponentExtensionIME> ime_list_; 161 std::vector<ComponentExtensionIME> ime_list_;
156 162
157 private: 163 private:
158 DISALLOW_COPY_AND_ASSIGN(InputMethodManagerImplTest); 164 DISALLOW_COPY_AND_ASSIGN(InputMethodManagerImplTest);
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
203 209
204 int candidate_window_opened_count_; 210 int candidate_window_opened_count_;
205 int candidate_window_closed_count_; 211 int candidate_window_closed_count_;
206 212
207 private: 213 private:
208 DISALLOW_COPY_AND_ASSIGN(TestCandidateWindowObserver); 214 DISALLOW_COPY_AND_ASSIGN(TestCandidateWindowObserver);
209 }; 215 };
210 } // namespace 216 } // namespace
211 217
212 TEST_F(InputMethodManagerImplTest, TestGetXKeyboard) { 218 TEST_F(InputMethodManagerImplTest, TestGetXKeyboard) {
213 EXPECT_TRUE(manager_->GetXKeyboard()); 219 EXPECT_TRUE(manager()->GetXKeyboard());
214 EXPECT_EQ(xkeyboard_, manager_->GetXKeyboard()); 220 EXPECT_EQ(xkeyboard_, manager()->GetXKeyboard());
215 } 221 }
216 222
217 TEST_F(InputMethodManagerImplTest, TestCandidateWindowObserver) { 223 TEST_F(InputMethodManagerImplTest, TestCandidateWindowObserver) {
218 TestCandidateWindowObserver observer; 224 TestCandidateWindowObserver observer;
219 candidate_window_controller_->NotifyCandidateWindowOpened(); // nop 225 candidate_window_controller_->NotifyCandidateWindowOpened(); // nop
220 candidate_window_controller_->NotifyCandidateWindowClosed(); // nop 226 candidate_window_controller_->NotifyCandidateWindowClosed(); // nop
221 manager_->AddCandidateWindowObserver(&observer); 227 manager()->AddCandidateWindowObserver(&observer);
222 candidate_window_controller_->NotifyCandidateWindowOpened(); 228 candidate_window_controller_->NotifyCandidateWindowOpened();
223 EXPECT_EQ(1, observer.candidate_window_opened_count_); 229 EXPECT_EQ(1, observer.candidate_window_opened_count_);
224 candidate_window_controller_->NotifyCandidateWindowClosed(); 230 candidate_window_controller_->NotifyCandidateWindowClosed();
225 EXPECT_EQ(1, observer.candidate_window_closed_count_); 231 EXPECT_EQ(1, observer.candidate_window_closed_count_);
226 candidate_window_controller_->NotifyCandidateWindowOpened(); 232 candidate_window_controller_->NotifyCandidateWindowOpened();
227 EXPECT_EQ(2, observer.candidate_window_opened_count_); 233 EXPECT_EQ(2, observer.candidate_window_opened_count_);
228 candidate_window_controller_->NotifyCandidateWindowClosed(); 234 candidate_window_controller_->NotifyCandidateWindowClosed();
229 EXPECT_EQ(2, observer.candidate_window_closed_count_); 235 EXPECT_EQ(2, observer.candidate_window_closed_count_);
230 manager_->RemoveCandidateWindowObserver(&observer); 236 manager()->RemoveCandidateWindowObserver(&observer);
231 } 237 }
232 238
233 TEST_F(InputMethodManagerImplTest, TestObserver) { 239 TEST_F(InputMethodManagerImplTest, TestObserver) {
234 // For http://crbug.com/19655#c11 - (3). browser_state_monitor_unittest.cc is 240 // For http://crbug.com/19655#c11 - (3). browser_state_monitor_unittest.cc is
235 // also for the scenario. 241 // also for the scenario.
236 TestObserver observer; 242 TestObserver observer;
237 InitComponentExtension(); 243 InitComponentExtension();
238 manager_->AddObserver(&observer); 244 manager()->AddObserver(&observer);
239 EXPECT_EQ(0, observer.input_method_changed_count_); 245 EXPECT_EQ(0, observer.input_method_changed_count_);
240 manager_->EnableLayouts("en-US", "xkb:us::eng"); 246 manager()->EnableLoginLayouts("en-US", "xkb:us::eng");
241 EXPECT_EQ(1, observer.input_method_changed_count_); 247 EXPECT_EQ(1, observer.input_method_changed_count_);
242 EXPECT_EQ(1, observer.input_method_property_changed_count_); 248 EXPECT_EQ(1, observer.input_method_property_changed_count_);
243 manager_->ChangeInputMethod("xkb:us:dvorak:eng"); 249 manager()->ChangeInputMethod("xkb:us:dvorak:eng");
244 EXPECT_FALSE(observer.last_show_message_); 250 EXPECT_FALSE(observer.last_show_message_);
245 EXPECT_EQ(2, observer.input_method_changed_count_); 251 EXPECT_EQ(2, observer.input_method_changed_count_);
246 EXPECT_EQ(2, observer.input_method_property_changed_count_); 252 EXPECT_EQ(2, observer.input_method_property_changed_count_);
247 manager_->ChangeInputMethod("xkb:us:dvorak:eng"); 253 manager()->ChangeInputMethod("xkb:us:dvorak:eng");
248 EXPECT_FALSE(observer.last_show_message_); 254 EXPECT_FALSE(observer.last_show_message_);
249 255
250 // The observer is always notified even when the same input method ID is 256 // The observer is always notified even when the same input method ID is
251 // passed to ChangeInputMethod() more than twice. 257 // passed to ChangeInputMethod() more than twice.
252 // TODO(komatsu): Revisit if this is neccessary. 258 // TODO(komatsu): Revisit if this is neccessary.
253 EXPECT_EQ(3, observer.input_method_changed_count_); 259 EXPECT_EQ(3, observer.input_method_changed_count_);
254 260
255 // If the same input method ID is passed, PropertyChanged() is not 261 // If the same input method ID is passed, PropertyChanged() is not
256 // notified. 262 // notified.
257 EXPECT_EQ(2, observer.input_method_property_changed_count_); 263 EXPECT_EQ(2, observer.input_method_property_changed_count_);
258 264
259 manager_->RemoveObserver(&observer); 265 manager()->RemoveObserver(&observer);
260 } 266 }
261 267
262 TEST_F(InputMethodManagerImplTest, TestGetSupportedInputMethods) { 268 TEST_F(InputMethodManagerImplTest, TestGetSupportedInputMethods) {
263 InitComponentExtension(); 269 InitComponentExtension();
264 scoped_ptr<InputMethodDescriptors> methods( 270 scoped_ptr<InputMethodDescriptors> methods(
265 manager_->GetSupportedInputMethods()); 271 manager()->GetSupportedInputMethods());
266 ASSERT_TRUE(methods.get()); 272 ASSERT_TRUE(methods.get());
267 // Try to find random 4-5 layuts and IMEs to make sure the returned list is 273 // Try to find random 4-5 layuts and IMEs to make sure the returned list is
268 // correct. 274 // correct.
269 const InputMethodDescriptor* id_to_find = 275 const InputMethodDescriptor* id_to_find =
270 manager_->GetInputMethodUtil()->GetInputMethodDescriptorFromId( 276 manager()->GetInputMethodUtil()->GetInputMethodDescriptorFromId(
271 kNaclMozcUsId); 277 kNaclMozcUsId);
272 id_to_find = manager_->GetInputMethodUtil()->GetInputMethodDescriptorFromId( 278 id_to_find = manager()->GetInputMethodUtil()->GetInputMethodDescriptorFromId(
273 "xkb:us::eng"); 279 "xkb:us::eng");
274 EXPECT_TRUE(Contain(*methods.get(), *id_to_find)); 280 EXPECT_TRUE(Contain(*methods.get(), *id_to_find));
275 id_to_find = manager_->GetInputMethodUtil()->GetInputMethodDescriptorFromId( 281 id_to_find = manager()->GetInputMethodUtil()->GetInputMethodDescriptorFromId(
276 "xkb:us:dvorak:eng"); 282 "xkb:us:dvorak:eng");
277 EXPECT_TRUE(Contain(*methods.get(), *id_to_find)); 283 EXPECT_TRUE(Contain(*methods.get(), *id_to_find));
278 id_to_find = manager_->GetInputMethodUtil()->GetInputMethodDescriptorFromId( 284 id_to_find = manager()->GetInputMethodUtil()->GetInputMethodDescriptorFromId(
279 "xkb:fr::fra"); 285 "xkb:fr::fra");
280 EXPECT_TRUE(Contain(*methods.get(), *id_to_find)); 286 EXPECT_TRUE(Contain(*methods.get(), *id_to_find));
281 } 287 }
282 288
283 TEST_F(InputMethodManagerImplTest, TestEnableLayouts) { 289 TEST_F(InputMethodManagerImplTest, TestEnableLayouts) {
284 // Currently 5 keyboard layouts are supported for en-US, and 1 for ja. See 290 // Currently 5 keyboard layouts are supported for en-US, and 1 for ja. See
285 // ibus_input_method.txt. 291 // ibus_input_method.txt.
286 InitComponentExtension(); 292 InitComponentExtension();
287 manager_->EnableLayouts("en-US", ""); 293 manager()->EnableLoginLayouts("en-US", "");
288 EXPECT_EQ(5U, manager_->GetNumActiveInputMethods()); 294 EXPECT_EQ(5U, manager()->GetNumActiveInputMethods());
289 for (size_t i = 0; i < manager_->GetActiveInputMethodIds().size(); ++i) 295 for (size_t i = 0; i < manager()->GetActiveInputMethodIds().size(); ++i)
290 LOG(ERROR) << manager_->GetActiveInputMethodIds().at(i); 296 LOG(ERROR) << manager()->GetActiveInputMethodIds().at(i);
291 297
292 // For http://crbug.com/19655#c11 - (5) 298 // For http://crbug.com/19655#c11 - (5)
293 // The hardware keyboard layout "xkb:us::eng" is always active, hence 2U. 299 // The hardware keyboard layout "xkb:us::eng" is always active, hence 2U.
294 manager_->EnableLayouts("ja", ""); // Japanese 300 manager()->EnableLoginLayouts("ja", ""); // Japanese
295 EXPECT_EQ(2U, manager_->GetNumActiveInputMethods()); 301 EXPECT_EQ(2U, manager()->GetNumActiveInputMethods());
296 } 302 }
297 303
298 TEST_F(InputMethodManagerImplTest, TestEnableLayoutsAndCurrentInputMethod) { 304 TEST_F(InputMethodManagerImplTest, TestEnableLayoutsAndCurrentInputMethod) {
299 // For http://crbug.com/329061 305 // For http://crbug.com/329061
300 manager_->EnableLayouts("en-US", "xkb:se::swe"); 306 manager()->EnableLoginLayouts("en-US", "xkb:se::swe");
301 const std::string im_id = manager_->GetCurrentInputMethod().id(); 307 const std::string im_id = manager()->GetCurrentInputMethod().id();
302 EXPECT_EQ("xkb:se::swe", im_id); 308 EXPECT_EQ("xkb:se::swe", im_id);
303 } 309 }
304 310
305 TEST_F(InputMethodManagerImplTest, TestEnableLayoutsNonUsHardwareKeyboard) { 311 TEST_F(InputMethodManagerImplTest, TestEnableLayoutsNonUsHardwareKeyboard) {
306 // The physical layout is French. 312 // The physical layout is French.
307 delegate_->set_hardware_keyboard_layout("xkb:fr::fra"); 313 delegate_->set_hardware_keyboard_layout("xkb:fr::fra");
308 manager_->EnableLayouts("en-US", ""); 314 manager()->EnableLoginLayouts("en-US", "");
309 EXPECT_EQ(6U, manager_->GetNumActiveInputMethods()); // 5 + French 315 EXPECT_EQ(6U, manager()->GetNumActiveInputMethods()); // 5 + French
310 // The physical layout is Japanese. 316 // The physical layout is Japanese.
311 delegate_->set_hardware_keyboard_layout("xkb:jp::jpn"); 317 delegate_->set_hardware_keyboard_layout("xkb:jp::jpn");
312 manager_->EnableLayouts("ja", ""); 318 manager()->EnableLoginLayouts("ja", "");
313 // "xkb:us::eng" is not needed, hence 1. 319 // "xkb:us::eng" is not needed, hence 1.
314 EXPECT_EQ(1U, manager_->GetNumActiveInputMethods()); 320 EXPECT_EQ(1U, manager()->GetNumActiveInputMethods());
321
322 // The physical layout is Russian.
323 delegate_->set_hardware_keyboard_layout("xkb:ru::rus");
324 manager()->EnableLoginLayouts("ru", "");
325 // "xkb:us::eng" only.
326 EXPECT_EQ(1U, manager()->GetNumActiveInputMethods());
327 EXPECT_TRUE(manager()->GetActiveInputMethodIds().front() == "xkb:us::eng");
Hiro Komatsu 2014/01/27 05:12:21 EXPECT_EQ?
Alexander Alekseev 2014/01/27 12:50:14 Done.
315 } 328 }
316 329
317 TEST_F(InputMethodManagerImplTest, TestActiveInputMethods) { 330 TEST_F(InputMethodManagerImplTest, TestActiveInputMethods) {
318 manager_->EnableLayouts("ja", ""); // Japanese 331 manager()->EnableLoginLayouts("ja", ""); // Japanese
319 EXPECT_EQ(2U, manager_->GetNumActiveInputMethods()); 332 EXPECT_EQ(2U, manager()->GetNumActiveInputMethods());
320 scoped_ptr<InputMethodDescriptors> methods( 333 scoped_ptr<InputMethodDescriptors> methods(
321 manager_->GetActiveInputMethods()); 334 manager()->GetActiveInputMethods());
322 ASSERT_TRUE(methods.get()); 335 ASSERT_TRUE(methods.get());
323 EXPECT_EQ(2U, methods->size()); 336 EXPECT_EQ(2U, methods->size());
324 const InputMethodDescriptor* id_to_find = 337 const InputMethodDescriptor* id_to_find =
325 manager_->GetInputMethodUtil()->GetInputMethodDescriptorFromId( 338 manager()->GetInputMethodUtil()->GetInputMethodDescriptorFromId(
326 "xkb:us::eng"); 339 "xkb:us::eng");
327 EXPECT_TRUE(Contain(*methods.get(), *id_to_find)); 340 EXPECT_TRUE(Contain(*methods.get(), *id_to_find));
328 id_to_find = manager_->GetInputMethodUtil()->GetInputMethodDescriptorFromId( 341 id_to_find = manager()->GetInputMethodUtil()->GetInputMethodDescriptorFromId(
329 "xkb:jp::jpn"); 342 "xkb:jp::jpn");
330 EXPECT_TRUE(Contain(*methods.get(), *id_to_find)); 343 EXPECT_TRUE(Contain(*methods.get(), *id_to_find));
331 } 344 }
332 345
333 TEST_F(InputMethodManagerImplTest, TestEnableTwoLayouts) { 346 TEST_F(InputMethodManagerImplTest, TestEnableTwoLayouts) {
334 // For http://crbug.com/19655#c11 - (8), step 6. 347 // For http://crbug.com/19655#c11 - (8), step 6.
335 TestObserver observer; 348 TestObserver observer;
336 manager_->AddObserver(&observer); 349 manager()->AddObserver(&observer);
337 InitComponentExtension(); 350 InitComponentExtension();
338 manager_->SetState(InputMethodManager::STATE_BROWSER_SCREEN); 351 manager()->SetState(InputMethodManager::STATE_BROWSER_SCREEN);
339 std::vector<std::string> ids; 352 std::vector<std::string> ids;
340 ids.push_back("xkb:us:dvorak:eng"); 353 ids.push_back("xkb:us:dvorak:eng");
341 ids.push_back("xkb:us:colemak:eng"); 354 ids.push_back("xkb:us:colemak:eng");
342 EXPECT_TRUE(manager_->EnableInputMethods(ids)); 355 EXPECT_TRUE(manager()->EnableInputMethods(ids));
343 EXPECT_EQ(2U, manager_->GetNumActiveInputMethods()); 356 EXPECT_EQ(2U, manager()->GetNumActiveInputMethods());
344 // Since all the IDs added avobe are keyboard layouts, Start() should not be 357 // Since all the IDs added avobe are keyboard layouts, Start() should not be
345 // called. 358 // called.
346 EXPECT_EQ(1, observer.input_method_changed_count_); 359 EXPECT_EQ(1, observer.input_method_changed_count_);
347 EXPECT_EQ(ids[0], manager_->GetCurrentInputMethod().id()); 360 EXPECT_EQ(ids[0], manager()->GetCurrentInputMethod().id());
348 EXPECT_EQ("us(dvorak)", xkeyboard_->last_layout_); 361 EXPECT_EQ("us(dvorak)", xkeyboard_->last_layout_);
349 // Disable Dvorak. 362 // Disable Dvorak.
350 ids.erase(ids.begin()); 363 ids.erase(ids.begin());
351 EXPECT_TRUE(manager_->EnableInputMethods(ids)); 364 EXPECT_TRUE(manager()->EnableInputMethods(ids));
352 EXPECT_EQ(1U, manager_->GetNumActiveInputMethods()); 365 EXPECT_EQ(1U, manager()->GetNumActiveInputMethods());
353 EXPECT_EQ(2, observer.input_method_changed_count_); 366 EXPECT_EQ(2, observer.input_method_changed_count_);
354 EXPECT_EQ(ids[0], // colemak 367 EXPECT_EQ(ids[0], // colemak
355 manager_->GetCurrentInputMethod().id()); 368 manager()->GetCurrentInputMethod().id());
356 EXPECT_EQ("us(colemak)", xkeyboard_->last_layout_); 369 EXPECT_EQ("us(colemak)", xkeyboard_->last_layout_);
357 manager_->RemoveObserver(&observer); 370 manager()->RemoveObserver(&observer);
358 } 371 }
359 372
360 TEST_F(InputMethodManagerImplTest, TestEnableThreeLayouts) { 373 TEST_F(InputMethodManagerImplTest, TestEnableThreeLayouts) {
361 // For http://crbug.com/19655#c11 - (9). 374 // For http://crbug.com/19655#c11 - (9).
362 TestObserver observer; 375 TestObserver observer;
363 manager_->AddObserver(&observer); 376 manager()->AddObserver(&observer);
364 InitComponentExtension(); 377 InitComponentExtension();
365 manager_->SetState(InputMethodManager::STATE_BROWSER_SCREEN); 378 manager()->SetState(InputMethodManager::STATE_BROWSER_SCREEN);
366 std::vector<std::string> ids; 379 std::vector<std::string> ids;
367 ids.push_back("xkb:us::eng"); 380 ids.push_back("xkb:us::eng");
368 ids.push_back("xkb:us:dvorak:eng"); 381 ids.push_back("xkb:us:dvorak:eng");
369 ids.push_back("xkb:us:colemak:eng"); 382 ids.push_back("xkb:us:colemak:eng");
370 EXPECT_TRUE(manager_->EnableInputMethods(ids)); 383 EXPECT_TRUE(manager()->EnableInputMethods(ids));
371 EXPECT_EQ(3U, manager_->GetNumActiveInputMethods()); 384 EXPECT_EQ(3U, manager()->GetNumActiveInputMethods());
372 EXPECT_EQ(1, observer.input_method_changed_count_); 385 EXPECT_EQ(1, observer.input_method_changed_count_);
373 EXPECT_EQ(ids[0], manager_->GetCurrentInputMethod().id()); 386 EXPECT_EQ(ids[0], manager()->GetCurrentInputMethod().id());
374 EXPECT_EQ("us", xkeyboard_->last_layout_); 387 EXPECT_EQ("us", xkeyboard_->last_layout_);
375 // Switch to Dvorak. 388 // Switch to Dvorak.
376 manager_->SwitchToNextInputMethod(); 389 manager()->SwitchToNextInputMethod();
377 EXPECT_EQ(2, observer.input_method_changed_count_); 390 EXPECT_EQ(2, observer.input_method_changed_count_);
378 EXPECT_EQ(ids[1], manager_->GetCurrentInputMethod().id()); 391 EXPECT_EQ(ids[1], manager()->GetCurrentInputMethod().id());
379 EXPECT_EQ("us(dvorak)", xkeyboard_->last_layout_); 392 EXPECT_EQ("us(dvorak)", xkeyboard_->last_layout_);
380 // Disable Dvorak. 393 // Disable Dvorak.
381 ids.erase(ids.begin() + 1); 394 ids.erase(ids.begin() + 1);
382 EXPECT_TRUE(manager_->EnableInputMethods(ids)); 395 EXPECT_TRUE(manager()->EnableInputMethods(ids));
383 EXPECT_EQ(2U, manager_->GetNumActiveInputMethods()); 396 EXPECT_EQ(2U, manager()->GetNumActiveInputMethods());
384 EXPECT_EQ(3, observer.input_method_changed_count_); 397 EXPECT_EQ(3, observer.input_method_changed_count_);
385 EXPECT_EQ(ids[0], // US Qwerty 398 EXPECT_EQ(ids[0], // US Qwerty
386 manager_->GetCurrentInputMethod().id()); 399 manager()->GetCurrentInputMethod().id());
387 EXPECT_EQ("us", xkeyboard_->last_layout_); 400 EXPECT_EQ("us", xkeyboard_->last_layout_);
388 manager_->RemoveObserver(&observer); 401 manager()->RemoveObserver(&observer);
389 } 402 }
390 403
391 TEST_F(InputMethodManagerImplTest, TestEnableLayoutAndIme) { 404 TEST_F(InputMethodManagerImplTest, TestEnableLayoutAndIme) {
392 // For http://crbug.com/19655#c11 - (10). 405 // For http://crbug.com/19655#c11 - (10).
393 TestObserver observer; 406 TestObserver observer;
394 manager_->AddObserver(&observer); 407 manager()->AddObserver(&observer);
395 InitComponentExtension(); 408 InitComponentExtension();
396 manager_->SetState(InputMethodManager::STATE_BROWSER_SCREEN); 409 manager()->SetState(InputMethodManager::STATE_BROWSER_SCREEN);
397 std::vector<std::string> ids; 410 std::vector<std::string> ids;
398 ids.push_back("xkb:us:dvorak:eng"); 411 ids.push_back("xkb:us:dvorak:eng");
399 ids.push_back(kNaclMozcUsId); 412 ids.push_back(kNaclMozcUsId);
400 EXPECT_TRUE(manager_->EnableInputMethods(ids)); 413 EXPECT_TRUE(manager()->EnableInputMethods(ids));
401 EXPECT_EQ(1, observer.input_method_changed_count_); 414 EXPECT_EQ(1, observer.input_method_changed_count_);
402 EXPECT_EQ(ids[0], manager_->GetCurrentInputMethod().id()); 415 EXPECT_EQ(ids[0], manager()->GetCurrentInputMethod().id());
403 EXPECT_EQ("us(dvorak)", xkeyboard_->last_layout_); 416 EXPECT_EQ("us(dvorak)", xkeyboard_->last_layout_);
404 // Switch to Mozc 417 // Switch to Mozc
405 manager_->SwitchToNextInputMethod(); 418 manager()->SwitchToNextInputMethod();
406 EXPECT_EQ(2, observer.input_method_changed_count_); 419 EXPECT_EQ(2, observer.input_method_changed_count_);
407 EXPECT_EQ(ids[1], manager_->GetCurrentInputMethod().id()); 420 EXPECT_EQ(ids[1], manager()->GetCurrentInputMethod().id());
408 EXPECT_EQ("us", xkeyboard_->last_layout_); 421 EXPECT_EQ("us", xkeyboard_->last_layout_);
409 // Disable Mozc. 422 // Disable Mozc.
410 ids.erase(ids.begin() + 1); 423 ids.erase(ids.begin() + 1);
411 EXPECT_TRUE(manager_->EnableInputMethods(ids)); 424 EXPECT_TRUE(manager()->EnableInputMethods(ids));
412 EXPECT_EQ(1U, manager_->GetNumActiveInputMethods()); 425 EXPECT_EQ(1U, manager()->GetNumActiveInputMethods());
413 EXPECT_EQ(ids[0], manager_->GetCurrentInputMethod().id()); 426 EXPECT_EQ(ids[0], manager()->GetCurrentInputMethod().id());
414 EXPECT_EQ("us(dvorak)", xkeyboard_->last_layout_); 427 EXPECT_EQ("us(dvorak)", xkeyboard_->last_layout_);
415 } 428 }
416 429
417 TEST_F(InputMethodManagerImplTest, TestEnableLayoutAndIme2) { 430 TEST_F(InputMethodManagerImplTest, TestEnableLayoutAndIme2) {
418 // For http://crbug.com/19655#c11 - (11). 431 // For http://crbug.com/19655#c11 - (11).
419 TestObserver observer; 432 TestObserver observer;
420 manager_->AddObserver(&observer); 433 manager()->AddObserver(&observer);
421 InitComponentExtension(); 434 InitComponentExtension();
422 manager_->SetState(InputMethodManager::STATE_BROWSER_SCREEN); 435 manager()->SetState(InputMethodManager::STATE_BROWSER_SCREEN);
423 std::vector<std::string> ids; 436 std::vector<std::string> ids;
424 ids.push_back("xkb:us:dvorak:eng"); 437 ids.push_back("xkb:us:dvorak:eng");
425 ids.push_back(kNaclMozcUsId); 438 ids.push_back(kNaclMozcUsId);
426 EXPECT_TRUE(manager_->EnableInputMethods(ids)); 439 EXPECT_TRUE(manager()->EnableInputMethods(ids));
427 EXPECT_EQ(1, observer.input_method_changed_count_); 440 EXPECT_EQ(1, observer.input_method_changed_count_);
428 EXPECT_EQ(ids[0], manager_->GetCurrentInputMethod().id()); 441 EXPECT_EQ(ids[0], manager()->GetCurrentInputMethod().id());
429 EXPECT_EQ("us(dvorak)", xkeyboard_->last_layout_); 442 EXPECT_EQ("us(dvorak)", xkeyboard_->last_layout_);
430 443
431 // Disable Dvorak. 444 // Disable Dvorak.
432 ids.erase(ids.begin()); 445 ids.erase(ids.begin());
433 EXPECT_TRUE(manager_->EnableInputMethods(ids)); 446 EXPECT_TRUE(manager()->EnableInputMethods(ids));
434 EXPECT_EQ(1U, manager_->GetNumActiveInputMethods()); 447 EXPECT_EQ(1U, manager()->GetNumActiveInputMethods());
435 EXPECT_EQ(ids[0], // Mozc 448 EXPECT_EQ(ids[0], // Mozc
436 manager_->GetCurrentInputMethod().id()); 449 manager()->GetCurrentInputMethod().id());
437 EXPECT_EQ("us", xkeyboard_->last_layout_); 450 EXPECT_EQ("us", xkeyboard_->last_layout_);
438 manager_->RemoveObserver(&observer); 451 manager()->RemoveObserver(&observer);
439 } 452 }
440 453
441 TEST_F(InputMethodManagerImplTest, TestEnableImes) { 454 TEST_F(InputMethodManagerImplTest, TestEnableImes) {
442 TestObserver observer; 455 TestObserver observer;
443 manager_->AddObserver(&observer); 456 manager()->AddObserver(&observer);
444 InitComponentExtension(); 457 InitComponentExtension();
445 manager_->SetState(InputMethodManager::STATE_BROWSER_SCREEN); 458 manager()->SetState(InputMethodManager::STATE_BROWSER_SCREEN);
446 std::vector<std::string> ids; 459 std::vector<std::string> ids;
447 ids.push_back(kExt2Engine1Id); 460 ids.push_back(kExt2Engine1Id);
448 ids.push_back("mozc-dv"); 461 ids.push_back("mozc-dv");
449 EXPECT_TRUE(manager_->EnableInputMethods(ids)); 462 EXPECT_TRUE(manager()->EnableInputMethods(ids));
450 EXPECT_EQ(1, observer.input_method_changed_count_); 463 EXPECT_EQ(1, observer.input_method_changed_count_);
451 EXPECT_EQ(ids[0], manager_->GetCurrentInputMethod().id()); 464 EXPECT_EQ(ids[0], manager()->GetCurrentInputMethod().id());
452 EXPECT_EQ("us", xkeyboard_->last_layout_); 465 EXPECT_EQ("us", xkeyboard_->last_layout_);
453 manager_->RemoveObserver(&observer); 466 manager()->RemoveObserver(&observer);
454 } 467 }
455 468
456 TEST_F(InputMethodManagerImplTest, TestEnableUnknownIds) { 469 TEST_F(InputMethodManagerImplTest, TestEnableUnknownIds) {
457 TestObserver observer; 470 TestObserver observer;
458 manager_->AddObserver(&observer); 471 manager()->AddObserver(&observer);
459 manager_->SetState(InputMethodManager::STATE_BROWSER_SCREEN); 472 manager()->SetState(InputMethodManager::STATE_BROWSER_SCREEN);
460 std::vector<std::string> ids; 473 std::vector<std::string> ids;
461 ids.push_back("xkb:tl::tlh"); // Klingon, which is not supported. 474 ids.push_back("xkb:tl::tlh"); // Klingon, which is not supported.
462 ids.push_back("unknown-super-cool-ime"); 475 ids.push_back("unknown-super-cool-ime");
463 EXPECT_FALSE(manager_->EnableInputMethods(ids)); 476 EXPECT_FALSE(manager()->EnableInputMethods(ids));
464 477
465 // TODO(yusukes): Should we fall back to the hardware keyboard layout in this 478 // TODO(yusukes): Should we fall back to the hardware keyboard layout in this
466 // case? 479 // case?
467 EXPECT_EQ(0, observer.input_method_changed_count_); 480 EXPECT_EQ(0, observer.input_method_changed_count_);
468 481
469 manager_->RemoveObserver(&observer); 482 manager()->RemoveObserver(&observer);
470 } 483 }
471 484
472 TEST_F(InputMethodManagerImplTest, TestEnableLayoutsThenLock) { 485 TEST_F(InputMethodManagerImplTest, TestEnableLayoutsThenLock) {
473 // For http://crbug.com/19655#c11 - (14). 486 // For http://crbug.com/19655#c11 - (14).
474 TestObserver observer; 487 TestObserver observer;
475 manager_->AddObserver(&observer); 488 manager()->AddObserver(&observer);
476 InitComponentExtension(); 489 InitComponentExtension();
477 manager_->SetState(InputMethodManager::STATE_BROWSER_SCREEN); 490 manager()->SetState(InputMethodManager::STATE_BROWSER_SCREEN);
478 std::vector<std::string> ids; 491 std::vector<std::string> ids;
479 ids.push_back("xkb:us::eng"); 492 ids.push_back("xkb:us::eng");
480 ids.push_back("xkb:us:dvorak:eng"); 493 ids.push_back("xkb:us:dvorak:eng");
481 EXPECT_TRUE(manager_->EnableInputMethods(ids)); 494 EXPECT_TRUE(manager()->EnableInputMethods(ids));
482 EXPECT_EQ(2U, manager_->GetNumActiveInputMethods()); 495 EXPECT_EQ(2U, manager()->GetNumActiveInputMethods());
483 EXPECT_EQ(1, observer.input_method_changed_count_); 496 EXPECT_EQ(1, observer.input_method_changed_count_);
484 EXPECT_EQ(ids[0], manager_->GetCurrentInputMethod().id()); 497 EXPECT_EQ(ids[0], manager()->GetCurrentInputMethod().id());
485 EXPECT_EQ("us", xkeyboard_->last_layout_); 498 EXPECT_EQ("us", xkeyboard_->last_layout_);
486 499
487 // Switch to Dvorak. 500 // Switch to Dvorak.
488 manager_->SwitchToNextInputMethod(); 501 manager()->SwitchToNextInputMethod();
489 EXPECT_EQ(2, observer.input_method_changed_count_); 502 EXPECT_EQ(2, observer.input_method_changed_count_);
490 EXPECT_EQ(ids[1], manager_->GetCurrentInputMethod().id()); 503 EXPECT_EQ(ids[1], manager()->GetCurrentInputMethod().id());
491 EXPECT_EQ("us(dvorak)", xkeyboard_->last_layout_); 504 EXPECT_EQ("us(dvorak)", xkeyboard_->last_layout_);
492 505
493 // Lock screen 506 // Lock screen
494 manager_->SetState(InputMethodManager::STATE_LOCK_SCREEN); 507 manager()->SetState(InputMethodManager::STATE_LOCK_SCREEN);
495 EXPECT_EQ(2U, manager_->GetNumActiveInputMethods()); 508 EXPECT_EQ(2U, manager()->GetNumActiveInputMethods());
496 EXPECT_EQ(ids[1], // still Dvorak 509 EXPECT_EQ(ids[1], // still Dvorak
497 manager_->GetCurrentInputMethod().id()); 510 manager()->GetCurrentInputMethod().id());
498 EXPECT_EQ("us(dvorak)", xkeyboard_->last_layout_); 511 EXPECT_EQ("us(dvorak)", xkeyboard_->last_layout_);
499 // Switch back to Qwerty. 512 // Switch back to Qwerty.
500 manager_->SwitchToNextInputMethod(); 513 manager()->SwitchToNextInputMethod();
501 EXPECT_EQ(ids[0], manager_->GetCurrentInputMethod().id()); 514 EXPECT_EQ(ids[0], manager()->GetCurrentInputMethod().id());
502 EXPECT_EQ("us", xkeyboard_->last_layout_); 515 EXPECT_EQ("us", xkeyboard_->last_layout_);
503 516
504 // Unlock screen. The original state, Dvorak, is restored. 517 // Unlock screen. The original state, Dvorak, is restored.
505 manager_->SetState(InputMethodManager::STATE_BROWSER_SCREEN); 518 manager()->SetState(InputMethodManager::STATE_BROWSER_SCREEN);
506 EXPECT_EQ(2U, manager_->GetNumActiveInputMethods()); 519 EXPECT_EQ(2U, manager()->GetNumActiveInputMethods());
507 EXPECT_EQ(ids[1], manager_->GetCurrentInputMethod().id()); 520 EXPECT_EQ(ids[1], manager()->GetCurrentInputMethod().id());
508 EXPECT_EQ("us(dvorak)", xkeyboard_->last_layout_); 521 EXPECT_EQ("us(dvorak)", xkeyboard_->last_layout_);
509 522
510 manager_->RemoveObserver(&observer); 523 manager()->RemoveObserver(&observer);
511 } 524 }
512 525
513 TEST_F(InputMethodManagerImplTest, SwitchInputMethodTest) { 526 TEST_F(InputMethodManagerImplTest, SwitchInputMethodTest) {
514 // For http://crbug.com/19655#c11 - (15). 527 // For http://crbug.com/19655#c11 - (15).
515 TestObserver observer; 528 TestObserver observer;
516 manager_->AddObserver(&observer); 529 manager()->AddObserver(&observer);
517 InitComponentExtension(); 530 InitComponentExtension();
518 manager_->SetState(InputMethodManager::STATE_BROWSER_SCREEN); 531 manager()->SetState(InputMethodManager::STATE_BROWSER_SCREEN);
519 std::vector<std::string> ids; 532 std::vector<std::string> ids;
520 ids.push_back("xkb:us:dvorak:eng"); 533 ids.push_back("xkb:us:dvorak:eng");
521 ids.push_back(kExt2Engine2Id); 534 ids.push_back(kExt2Engine2Id);
522 ids.push_back(kExt2Engine1Id); 535 ids.push_back(kExt2Engine1Id);
523 EXPECT_TRUE(manager_->EnableInputMethods(ids)); 536 EXPECT_TRUE(manager()->EnableInputMethods(ids));
524 EXPECT_EQ(3U, manager_->GetNumActiveInputMethods()); 537 EXPECT_EQ(3U, manager()->GetNumActiveInputMethods());
525 EXPECT_EQ(1, observer.input_method_changed_count_); 538 EXPECT_EQ(1, observer.input_method_changed_count_);
526 EXPECT_EQ(ids[0], manager_->GetCurrentInputMethod().id()); 539 EXPECT_EQ(ids[0], manager()->GetCurrentInputMethod().id());
527 EXPECT_EQ("us(dvorak)", xkeyboard_->last_layout_); 540 EXPECT_EQ("us(dvorak)", xkeyboard_->last_layout_);
528 541
529 // Switch to Mozc. 542 // Switch to Mozc.
530 manager_->SwitchToNextInputMethod(); 543 manager()->SwitchToNextInputMethod();
531 EXPECT_EQ(2, observer.input_method_changed_count_); 544 EXPECT_EQ(2, observer.input_method_changed_count_);
532 EXPECT_EQ(ids[1], manager_->GetCurrentInputMethod().id()); 545 EXPECT_EQ(ids[1], manager()->GetCurrentInputMethod().id());
533 EXPECT_EQ("us(dvorak)", xkeyboard_->last_layout_); 546 EXPECT_EQ("us(dvorak)", xkeyboard_->last_layout_);
534 547
535 // Lock screen 548 // Lock screen
536 manager_->SetState(InputMethodManager::STATE_LOCK_SCREEN); 549 manager()->SetState(InputMethodManager::STATE_LOCK_SCREEN);
537 EXPECT_EQ(2U, manager_->GetNumActiveInputMethods()); // Qwerty+Dvorak. 550 EXPECT_EQ(2U, manager()->GetNumActiveInputMethods()); // Qwerty+Dvorak.
538 EXPECT_EQ("xkb:us:dvorak:eng", 551 EXPECT_EQ("xkb:us:dvorak:eng", manager()->GetCurrentInputMethod().id());
539 manager_->GetCurrentInputMethod().id()); 552 EXPECT_EQ("us(dvorak)", xkeyboard_->last_layout_);
540 EXPECT_EQ("us(dvorak)", xkeyboard_->last_layout_); 553 manager()->SwitchToNextInputMethod();
541 manager_->SwitchToNextInputMethod();
542 EXPECT_EQ("xkb:us::eng", // The hardware keyboard layout. 554 EXPECT_EQ("xkb:us::eng", // The hardware keyboard layout.
543 manager_->GetCurrentInputMethod().id()); 555 manager()->GetCurrentInputMethod().id());
544 EXPECT_EQ("us", xkeyboard_->last_layout_); 556 EXPECT_EQ("us", xkeyboard_->last_layout_);
545 557
546 // Unlock screen. The original state, pinyin-dv, is restored. 558 // Unlock screen. The original state, pinyin-dv, is restored.
547 manager_->SetState(InputMethodManager::STATE_BROWSER_SCREEN); 559 manager()->SetState(InputMethodManager::STATE_BROWSER_SCREEN);
548 EXPECT_EQ(3U, manager_->GetNumActiveInputMethods()); // Dvorak and 2 IMEs. 560 EXPECT_EQ(3U, manager()->GetNumActiveInputMethods()); // Dvorak and 2 IMEs.
549 EXPECT_EQ(ids[1], manager_->GetCurrentInputMethod().id()); 561 EXPECT_EQ(ids[1], manager()->GetCurrentInputMethod().id());
550 EXPECT_EQ("us(dvorak)", xkeyboard_->last_layout_); 562 EXPECT_EQ("us(dvorak)", xkeyboard_->last_layout_);
551 563
552 manager_->RemoveObserver(&observer); 564 manager()->RemoveObserver(&observer);
553 } 565 }
554 566
555 TEST_F(InputMethodManagerImplTest, TestXkbSetting) { 567 TEST_F(InputMethodManagerImplTest, TestXkbSetting) {
556 // For http://crbug.com/19655#c11 - (8), step 7-11. 568 // For http://crbug.com/19655#c11 - (8), step 7-11.
557 InitComponentExtension(); 569 InitComponentExtension();
558 manager_->SetState(InputMethodManager::STATE_BROWSER_SCREEN); 570 manager()->SetState(InputMethodManager::STATE_BROWSER_SCREEN);
559 std::vector<std::string> ids; 571 std::vector<std::string> ids;
560 ids.push_back("xkb:us:dvorak:eng"); 572 ids.push_back("xkb:us:dvorak:eng");
561 ids.push_back("xkb:us:colemak:eng"); 573 ids.push_back("xkb:us:colemak:eng");
562 ids.push_back(kNaclMozcJpId); 574 ids.push_back(kNaclMozcJpId);
563 ids.push_back(kNaclMozcUsId); 575 ids.push_back(kNaclMozcUsId);
564 EXPECT_TRUE(manager_->EnableInputMethods(ids)); 576 EXPECT_TRUE(manager()->EnableInputMethods(ids));
565 EXPECT_EQ(4U, manager_->GetNumActiveInputMethods()); 577 EXPECT_EQ(4U, manager()->GetNumActiveInputMethods());
566 EXPECT_EQ(1, xkeyboard_->set_current_keyboard_layout_by_name_count_); 578 EXPECT_EQ(1, xkeyboard_->set_current_keyboard_layout_by_name_count_);
567 // See input_methods.txt for an expected XKB layout name. 579 // See input_methods.txt for an expected XKB layout name.
568 EXPECT_EQ("us(dvorak)", xkeyboard_->last_layout_); 580 EXPECT_EQ("us(dvorak)", xkeyboard_->last_layout_);
569 manager_->SwitchToNextInputMethod(); 581 manager()->SwitchToNextInputMethod();
570 EXPECT_EQ(2, xkeyboard_->set_current_keyboard_layout_by_name_count_); 582 EXPECT_EQ(2, xkeyboard_->set_current_keyboard_layout_by_name_count_);
571 EXPECT_EQ("us(colemak)", xkeyboard_->last_layout_); 583 EXPECT_EQ("us(colemak)", xkeyboard_->last_layout_);
572 manager_->SwitchToNextInputMethod(); 584 manager()->SwitchToNextInputMethod();
573 EXPECT_EQ(3, xkeyboard_->set_current_keyboard_layout_by_name_count_); 585 EXPECT_EQ(3, xkeyboard_->set_current_keyboard_layout_by_name_count_);
574 EXPECT_EQ("jp", xkeyboard_->last_layout_); 586 EXPECT_EQ("jp", xkeyboard_->last_layout_);
575 manager_->SwitchToNextInputMethod(); 587 manager()->SwitchToNextInputMethod();
576 EXPECT_EQ(4, xkeyboard_->set_current_keyboard_layout_by_name_count_); 588 EXPECT_EQ(4, xkeyboard_->set_current_keyboard_layout_by_name_count_);
577 EXPECT_EQ("us", xkeyboard_->last_layout_); 589 EXPECT_EQ("us", xkeyboard_->last_layout_);
578 manager_->SwitchToNextInputMethod(); 590 manager()->SwitchToNextInputMethod();
579 EXPECT_EQ(5, xkeyboard_->set_current_keyboard_layout_by_name_count_); 591 EXPECT_EQ(5, xkeyboard_->set_current_keyboard_layout_by_name_count_);
580 EXPECT_EQ("us(dvorak)", xkeyboard_->last_layout_); 592 EXPECT_EQ("us(dvorak)", xkeyboard_->last_layout_);
581 // Disable Dvorak. 593 // Disable Dvorak.
582 ids.erase(ids.begin()); 594 ids.erase(ids.begin());
583 EXPECT_TRUE(manager_->EnableInputMethods(ids)); 595 EXPECT_TRUE(manager()->EnableInputMethods(ids));
584 EXPECT_EQ(3U, manager_->GetNumActiveInputMethods()); 596 EXPECT_EQ(3U, manager()->GetNumActiveInputMethods());
585 EXPECT_EQ(6, xkeyboard_->set_current_keyboard_layout_by_name_count_); 597 EXPECT_EQ(6, xkeyboard_->set_current_keyboard_layout_by_name_count_);
586 EXPECT_EQ("us(colemak)", xkeyboard_->last_layout_); 598 EXPECT_EQ("us(colemak)", xkeyboard_->last_layout_);
587 } 599 }
588 600
589 TEST_F(InputMethodManagerImplTest, TestActivateInputMethodProperty) { 601 TEST_F(InputMethodManagerImplTest, TestActivateInputMethodProperty) {
590 const std::string kKey = "key"; 602 const std::string kKey = "key";
591 InputMethodPropertyList property_list; 603 InputMethodPropertyList property_list;
592 property_list.push_back(InputMethodProperty(kKey, "label", false, false)); 604 property_list.push_back(InputMethodProperty(kKey, "label", false, false));
593 manager_->SetCurrentInputMethodProperties(property_list); 605 manager()->SetCurrentInputMethodProperties(property_list);
594 606
595 manager_->ActivateInputMethodProperty(kKey); 607 manager()->ActivateInputMethodProperty(kKey);
596 EXPECT_EQ(kKey, mock_engine_handler_->last_activated_property()); 608 EXPECT_EQ(kKey, mock_engine_handler_->last_activated_property());
597 609
598 // Key2 is not registered, so activated property should not be changed. 610 // Key2 is not registered, so activated property should not be changed.
599 manager_->ActivateInputMethodProperty("key2"); 611 manager()->ActivateInputMethodProperty("key2");
600 EXPECT_EQ(kKey, mock_engine_handler_->last_activated_property()); 612 EXPECT_EQ(kKey, mock_engine_handler_->last_activated_property());
601 } 613 }
602 614
603 TEST_F(InputMethodManagerImplTest, TestGetCurrentInputMethodProperties) { 615 TEST_F(InputMethodManagerImplTest, TestGetCurrentInputMethodProperties) {
604 InitComponentExtension(); 616 InitComponentExtension();
605 EXPECT_TRUE(manager_->GetCurrentInputMethodProperties().empty()); 617 EXPECT_TRUE(manager()->GetCurrentInputMethodProperties().empty());
606 618
607 manager_->SetState(InputMethodManager::STATE_BROWSER_SCREEN); 619 manager()->SetState(InputMethodManager::STATE_BROWSER_SCREEN);
608 std::vector<std::string> ids; 620 std::vector<std::string> ids;
609 ids.push_back("xkb:us::eng"); 621 ids.push_back("xkb:us::eng");
610 ids.push_back(kNaclMozcUsId); 622 ids.push_back(kNaclMozcUsId);
611 EXPECT_TRUE(manager_->EnableInputMethods(ids)); 623 EXPECT_TRUE(manager()->EnableInputMethods(ids));
612 EXPECT_EQ(2U, manager_->GetNumActiveInputMethods()); 624 EXPECT_EQ(2U, manager()->GetNumActiveInputMethods());
613 EXPECT_TRUE(manager_->GetCurrentInputMethodProperties().empty()); 625 EXPECT_TRUE(manager()->GetCurrentInputMethodProperties().empty());
614 manager_->ChangeInputMethod(kNaclMozcUsId); 626 manager()->ChangeInputMethod(kNaclMozcUsId);
615 627
616 InputMethodPropertyList current_property_list; 628 InputMethodPropertyList current_property_list;
617 current_property_list.push_back(InputMethodProperty("key", 629 current_property_list.push_back(InputMethodProperty("key",
618 "label", 630 "label",
619 false, 631 false,
620 false)); 632 false));
621 manager_->SetCurrentInputMethodProperties(current_property_list); 633 manager()->SetCurrentInputMethodProperties(current_property_list);
622 634
623 ASSERT_EQ(1U, manager_->GetCurrentInputMethodProperties().size()); 635 ASSERT_EQ(1U, manager()->GetCurrentInputMethodProperties().size());
624 EXPECT_EQ("key", manager_->GetCurrentInputMethodProperties().at(0).key); 636 EXPECT_EQ("key", manager()->GetCurrentInputMethodProperties().at(0).key);
625 637
626 manager_->ChangeInputMethod("xkb:us::eng"); 638 manager()->ChangeInputMethod("xkb:us::eng");
627 EXPECT_TRUE(manager_->GetCurrentInputMethodProperties().empty()); 639 EXPECT_TRUE(manager()->GetCurrentInputMethodProperties().empty());
628 } 640 }
629 641
630 TEST_F(InputMethodManagerImplTest, TestGetCurrentInputMethodPropertiesTwoImes) { 642 TEST_F(InputMethodManagerImplTest, TestGetCurrentInputMethodPropertiesTwoImes) {
631 InitComponentExtension(); 643 InitComponentExtension();
632 EXPECT_TRUE(manager_->GetCurrentInputMethodProperties().empty()); 644 EXPECT_TRUE(manager()->GetCurrentInputMethodProperties().empty());
633 645
634 manager_->SetState(InputMethodManager::STATE_BROWSER_SCREEN); 646 manager()->SetState(InputMethodManager::STATE_BROWSER_SCREEN);
635 std::vector<std::string> ids; 647 std::vector<std::string> ids;
636 ids.push_back(kNaclMozcUsId); // Japanese 648 ids.push_back(kNaclMozcUsId); // Japanese
637 ids.push_back(kExt2Engine1Id); // T-Chinese 649 ids.push_back(kExt2Engine1Id); // T-Chinese
638 EXPECT_TRUE(manager_->EnableInputMethods(ids)); 650 EXPECT_TRUE(manager()->EnableInputMethods(ids));
639 EXPECT_EQ(2U, manager_->GetNumActiveInputMethods()); 651 EXPECT_EQ(2U, manager()->GetNumActiveInputMethods());
640 EXPECT_TRUE(manager_->GetCurrentInputMethodProperties().empty()); 652 EXPECT_TRUE(manager()->GetCurrentInputMethodProperties().empty());
641 653
642 InputMethodPropertyList current_property_list; 654 InputMethodPropertyList current_property_list;
643 current_property_list.push_back(InputMethodProperty("key-mozc", 655 current_property_list.push_back(InputMethodProperty("key-mozc",
644 "label", 656 "label",
645 false, 657 false,
646 false)); 658 false));
647 manager_->SetCurrentInputMethodProperties(current_property_list); 659 manager()->SetCurrentInputMethodProperties(current_property_list);
648 660
649 ASSERT_EQ(1U, manager_->GetCurrentInputMethodProperties().size()); 661 ASSERT_EQ(1U, manager()->GetCurrentInputMethodProperties().size());
650 EXPECT_EQ("key-mozc", manager_->GetCurrentInputMethodProperties().at(0).key); 662 EXPECT_EQ("key-mozc", manager()->GetCurrentInputMethodProperties().at(0).key);
651 663
652 manager_->ChangeInputMethod(kExt2Engine1Id); 664 manager()->ChangeInputMethod(kExt2Engine1Id);
653 // Since the IME is changed, the property for mozc Japanese should be hidden. 665 // Since the IME is changed, the property for mozc Japanese should be hidden.
654 EXPECT_TRUE(manager_->GetCurrentInputMethodProperties().empty()); 666 EXPECT_TRUE(manager()->GetCurrentInputMethodProperties().empty());
655 667
656 // Asynchronous property update signal from mozc-chewing. 668 // Asynchronous property update signal from mozc-chewing.
657 current_property_list.clear(); 669 current_property_list.clear();
658 current_property_list.push_back(InputMethodProperty("key-chewing", 670 current_property_list.push_back(InputMethodProperty("key-chewing",
659 "label", 671 "label",
660 false, 672 false,
661 false)); 673 false));
662 manager_->SetCurrentInputMethodProperties(current_property_list); 674 manager()->SetCurrentInputMethodProperties(current_property_list);
663 ASSERT_EQ(1U, manager_->GetCurrentInputMethodProperties().size()); 675 ASSERT_EQ(1U, manager()->GetCurrentInputMethodProperties().size());
664 EXPECT_EQ("key-chewing", 676 EXPECT_EQ("key-chewing",
665 manager_->GetCurrentInputMethodProperties().at(0).key); 677 manager()->GetCurrentInputMethodProperties().at(0).key);
666 } 678 }
667 679
668 TEST_F(InputMethodManagerImplTest, TestNextInputMethod) { 680 TEST_F(InputMethodManagerImplTest, TestNextInputMethod) {
669 TestObserver observer; 681 TestObserver observer;
670 manager_->AddObserver(&observer); 682 manager()->AddObserver(&observer);
671 InitComponentExtension(); 683 InitComponentExtension();
672 // For http://crbug.com/19655#c11 - (1) 684 // For http://crbug.com/19655#c11 - (1)
673 manager_->EnableLayouts("en-US", "xkb:us::eng"); 685 manager()->EnableLoginLayouts("en-US", "xkb:us::eng");
674 EXPECT_EQ(5U, manager_->GetNumActiveInputMethods()); 686 EXPECT_EQ(5U, manager()->GetNumActiveInputMethods());
675 EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id()); 687 EXPECT_EQ("xkb:us::eng", manager()->GetCurrentInputMethod().id());
676 EXPECT_EQ("us", xkeyboard_->last_layout_); 688 EXPECT_EQ("us", xkeyboard_->last_layout_);
677 manager_->SwitchToNextInputMethod(); 689 manager()->SwitchToNextInputMethod();
678 EXPECT_TRUE(observer.last_show_message_); 690 EXPECT_TRUE(observer.last_show_message_);
679 EXPECT_EQ("xkb:us:intl:eng", manager_->GetCurrentInputMethod().id()); 691 EXPECT_EQ("xkb:us:intl:eng", manager()->GetCurrentInputMethod().id());
680 EXPECT_EQ("us(intl)", xkeyboard_->last_layout_); 692 EXPECT_EQ("us(intl)", xkeyboard_->last_layout_);
681 manager_->SwitchToNextInputMethod(); 693 manager()->SwitchToNextInputMethod();
682 EXPECT_TRUE(observer.last_show_message_); 694 EXPECT_TRUE(observer.last_show_message_);
683 EXPECT_EQ("xkb:us:altgr-intl:eng", manager_->GetCurrentInputMethod().id()); 695 EXPECT_EQ("xkb:us:altgr-intl:eng", manager()->GetCurrentInputMethod().id());
684 EXPECT_EQ("us(altgr-intl)", xkeyboard_->last_layout_); 696 EXPECT_EQ("us(altgr-intl)", xkeyboard_->last_layout_);
685 manager_->SwitchToNextInputMethod(); 697 manager()->SwitchToNextInputMethod();
686 EXPECT_TRUE(observer.last_show_message_); 698 EXPECT_TRUE(observer.last_show_message_);
687 EXPECT_EQ("xkb:us:dvorak:eng", manager_->GetCurrentInputMethod().id()); 699 EXPECT_EQ("xkb:us:dvorak:eng", manager()->GetCurrentInputMethod().id());
688 EXPECT_EQ("us(dvorak)", xkeyboard_->last_layout_); 700 EXPECT_EQ("us(dvorak)", xkeyboard_->last_layout_);
689 manager_->SwitchToNextInputMethod(); 701 manager()->SwitchToNextInputMethod();
690 EXPECT_TRUE(observer.last_show_message_); 702 EXPECT_TRUE(observer.last_show_message_);
691 EXPECT_EQ("xkb:us:colemak:eng", manager_->GetCurrentInputMethod().id()); 703 EXPECT_EQ("xkb:us:colemak:eng", manager()->GetCurrentInputMethod().id());
692 EXPECT_EQ("us(colemak)", xkeyboard_->last_layout_); 704 EXPECT_EQ("us(colemak)", xkeyboard_->last_layout_);
693 manager_->SwitchToNextInputMethod(); 705 manager()->SwitchToNextInputMethod();
694 EXPECT_TRUE(observer.last_show_message_); 706 EXPECT_TRUE(observer.last_show_message_);
695 EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id()); 707 EXPECT_EQ("xkb:us::eng", manager()->GetCurrentInputMethod().id());
696 EXPECT_EQ("us", xkeyboard_->last_layout_); 708 EXPECT_EQ("us", xkeyboard_->last_layout_);
697 709
698 manager_->RemoveObserver(&observer); 710 manager()->RemoveObserver(&observer);
699 } 711 }
700 712
701 TEST_F(InputMethodManagerImplTest, TestPreviousInputMethod) { 713 TEST_F(InputMethodManagerImplTest, TestPreviousInputMethod) {
702 TestObserver observer; 714 TestObserver observer;
703 manager_->AddObserver(&observer); 715 manager()->AddObserver(&observer);
704 InitComponentExtension(); 716 InitComponentExtension();
705 717
706 ui::Accelerator keydown_accelerator(ui::VKEY_SPACE, ui::EF_CONTROL_DOWN); 718 ui::Accelerator keydown_accelerator(ui::VKEY_SPACE, ui::EF_CONTROL_DOWN);
707 keydown_accelerator.set_type(ui::ET_KEY_PRESSED); 719 keydown_accelerator.set_type(ui::ET_KEY_PRESSED);
708 ui::Accelerator keyup_accelerator(ui::VKEY_SPACE, ui::EF_CONTROL_DOWN); 720 ui::Accelerator keyup_accelerator(ui::VKEY_SPACE, ui::EF_CONTROL_DOWN);
709 keyup_accelerator.set_type(ui::ET_KEY_RELEASED); 721 keyup_accelerator.set_type(ui::ET_KEY_RELEASED);
710 722
711 manager_->EnableLayouts("en-US", "xkb:us::eng"); 723 manager()->EnableLoginLayouts("en-US", "xkb:us::eng");
712 EXPECT_EQ(5U, manager_->GetNumActiveInputMethods()); 724 EXPECT_EQ(5U, manager()->GetNumActiveInputMethods());
713 EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id()); 725 EXPECT_EQ("xkb:us::eng", manager()->GetCurrentInputMethod().id());
714 EXPECT_EQ("us", xkeyboard_->last_layout_); 726 EXPECT_EQ("us", xkeyboard_->last_layout_);
715 EXPECT_TRUE(manager_->SwitchToNextInputMethod()); 727 EXPECT_TRUE(manager()->SwitchToNextInputMethod());
716 EXPECT_TRUE(observer.last_show_message_); 728 EXPECT_TRUE(observer.last_show_message_);
717 EXPECT_EQ("xkb:us:intl:eng", manager_->GetCurrentInputMethod().id()); 729 EXPECT_EQ("xkb:us:intl:eng", manager()->GetCurrentInputMethod().id());
718 EXPECT_EQ("us(intl)", xkeyboard_->last_layout_); 730 EXPECT_EQ("us(intl)", xkeyboard_->last_layout_);
719 EXPECT_TRUE(manager_->SwitchToPreviousInputMethod(keydown_accelerator)); 731 EXPECT_TRUE(manager()->SwitchToPreviousInputMethod(keydown_accelerator));
720 EXPECT_TRUE(manager_->SwitchToPreviousInputMethod(keyup_accelerator)); 732 EXPECT_TRUE(manager()->SwitchToPreviousInputMethod(keyup_accelerator));
721 EXPECT_TRUE(observer.last_show_message_); 733 EXPECT_TRUE(observer.last_show_message_);
722 EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id()); 734 EXPECT_EQ("xkb:us::eng", manager()->GetCurrentInputMethod().id());
723 EXPECT_EQ("us", xkeyboard_->last_layout_); 735 EXPECT_EQ("us", xkeyboard_->last_layout_);
724 EXPECT_TRUE(manager_->SwitchToPreviousInputMethod(keydown_accelerator)); 736 EXPECT_TRUE(manager()->SwitchToPreviousInputMethod(keydown_accelerator));
725 EXPECT_TRUE(manager_->SwitchToPreviousInputMethod(keyup_accelerator)); 737 EXPECT_TRUE(manager()->SwitchToPreviousInputMethod(keyup_accelerator));
726 EXPECT_TRUE(observer.last_show_message_); 738 EXPECT_TRUE(observer.last_show_message_);
727 EXPECT_EQ("xkb:us:intl:eng", manager_->GetCurrentInputMethod().id()); 739 EXPECT_EQ("xkb:us:intl:eng", manager()->GetCurrentInputMethod().id());
728 EXPECT_EQ("us(intl)", xkeyboard_->last_layout_); 740 EXPECT_EQ("us(intl)", xkeyboard_->last_layout_);
729 EXPECT_TRUE(manager_->SwitchToPreviousInputMethod(keydown_accelerator)); 741 EXPECT_TRUE(manager()->SwitchToPreviousInputMethod(keydown_accelerator));
730 EXPECT_TRUE(manager_->SwitchToPreviousInputMethod(keyup_accelerator)); 742 EXPECT_TRUE(manager()->SwitchToPreviousInputMethod(keyup_accelerator));
731 EXPECT_TRUE(observer.last_show_message_); 743 EXPECT_TRUE(observer.last_show_message_);
732 EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id()); 744 EXPECT_EQ("xkb:us::eng", manager()->GetCurrentInputMethod().id());
733 EXPECT_EQ("us", xkeyboard_->last_layout_); 745 EXPECT_EQ("us", xkeyboard_->last_layout_);
734 EXPECT_TRUE(manager_->SwitchToNextInputMethod()); 746 EXPECT_TRUE(manager()->SwitchToNextInputMethod());
735 EXPECT_TRUE(observer.last_show_message_); 747 EXPECT_TRUE(observer.last_show_message_);
736 EXPECT_EQ("xkb:us:intl:eng", manager_->GetCurrentInputMethod().id()); 748 EXPECT_EQ("xkb:us:intl:eng", manager()->GetCurrentInputMethod().id());
737 EXPECT_EQ("us(intl)", xkeyboard_->last_layout_); 749 EXPECT_EQ("us(intl)", xkeyboard_->last_layout_);
738 EXPECT_TRUE(manager_->SwitchToNextInputMethod()); 750 EXPECT_TRUE(manager()->SwitchToNextInputMethod());
739 EXPECT_TRUE(observer.last_show_message_); 751 EXPECT_TRUE(observer.last_show_message_);
740 EXPECT_EQ("xkb:us:altgr-intl:eng", manager_->GetCurrentInputMethod().id()); 752 EXPECT_EQ("xkb:us:altgr-intl:eng", manager()->GetCurrentInputMethod().id());
741 EXPECT_EQ("us(altgr-intl)", xkeyboard_->last_layout_); 753 EXPECT_EQ("us(altgr-intl)", xkeyboard_->last_layout_);
742 EXPECT_TRUE(manager_->SwitchToPreviousInputMethod(keydown_accelerator)); 754 EXPECT_TRUE(manager()->SwitchToPreviousInputMethod(keydown_accelerator));
743 EXPECT_TRUE(manager_->SwitchToPreviousInputMethod(keyup_accelerator)); 755 EXPECT_TRUE(manager()->SwitchToPreviousInputMethod(keyup_accelerator));
744 EXPECT_TRUE(observer.last_show_message_); 756 EXPECT_TRUE(observer.last_show_message_);
745 EXPECT_EQ("xkb:us:intl:eng", manager_->GetCurrentInputMethod().id()); 757 EXPECT_EQ("xkb:us:intl:eng", manager()->GetCurrentInputMethod().id());
746 EXPECT_EQ("us(intl)", xkeyboard_->last_layout_); 758 EXPECT_EQ("us(intl)", xkeyboard_->last_layout_);
747 EXPECT_TRUE(manager_->SwitchToPreviousInputMethod(keydown_accelerator)); 759 EXPECT_TRUE(manager()->SwitchToPreviousInputMethod(keydown_accelerator));
748 EXPECT_TRUE(manager_->SwitchToPreviousInputMethod(keyup_accelerator)); 760 EXPECT_TRUE(manager()->SwitchToPreviousInputMethod(keyup_accelerator));
749 EXPECT_TRUE(observer.last_show_message_); 761 EXPECT_TRUE(observer.last_show_message_);
750 EXPECT_EQ("xkb:us:altgr-intl:eng", manager_->GetCurrentInputMethod().id()); 762 EXPECT_EQ("xkb:us:altgr-intl:eng", manager()->GetCurrentInputMethod().id());
751 EXPECT_EQ("us(altgr-intl)", xkeyboard_->last_layout_); 763 EXPECT_EQ("us(altgr-intl)", xkeyboard_->last_layout_);
752 764
753 manager_->RemoveObserver(&observer); 765 manager()->RemoveObserver(&observer);
754 } 766 }
755 767
756 TEST_F(InputMethodManagerImplTest, 768 TEST_F(InputMethodManagerImplTest,
757 TestSwitchToPreviousInputMethodForOneActiveInputMethod) { 769 TestSwitchToPreviousInputMethodForOneActiveInputMethod) {
758 TestObserver observer; 770 TestObserver observer;
759 manager_->AddObserver(&observer); 771 manager()->AddObserver(&observer);
760 InitComponentExtension(); 772 InitComponentExtension();
761 773
762 ui::Accelerator keydown_accelerator(ui::VKEY_SPACE, ui::EF_CONTROL_DOWN); 774 ui::Accelerator keydown_accelerator(ui::VKEY_SPACE, ui::EF_CONTROL_DOWN);
763 keydown_accelerator.set_type(ui::ET_KEY_PRESSED); 775 keydown_accelerator.set_type(ui::ET_KEY_PRESSED);
764 ui::Accelerator keyup_accelerator(ui::VKEY_SPACE, ui::EF_CONTROL_DOWN); 776 ui::Accelerator keyup_accelerator(ui::VKEY_SPACE, ui::EF_CONTROL_DOWN);
765 keyup_accelerator.set_type(ui::ET_KEY_RELEASED); 777 keyup_accelerator.set_type(ui::ET_KEY_RELEASED);
766 778
767 std::vector<std::string> ids; 779 std::vector<std::string> ids;
768 ids.push_back("xkb:us:dvorak:eng"); 780 ids.push_back("xkb:us:dvorak:eng");
769 EXPECT_TRUE(manager_->EnableInputMethods(ids)); 781 EXPECT_TRUE(manager()->EnableInputMethods(ids));
770 EXPECT_EQ(1U, manager_->GetNumActiveInputMethods()); 782 EXPECT_EQ(1U, manager()->GetNumActiveInputMethods());
771 783
772 // Ctrl+Space accelerator should not be consumed if there is only one active 784 // Ctrl+Space accelerator should not be consumed if there is only one active
773 // input method. 785 // input method.
774 EXPECT_FALSE(manager_->SwitchToPreviousInputMethod(keydown_accelerator)); 786 EXPECT_FALSE(manager()->SwitchToPreviousInputMethod(keydown_accelerator));
775 EXPECT_FALSE(manager_->SwitchToPreviousInputMethod(keyup_accelerator)); 787 EXPECT_FALSE(manager()->SwitchToPreviousInputMethod(keyup_accelerator));
776 788
777 manager_->RemoveObserver(&observer); 789 manager()->RemoveObserver(&observer);
778 } 790 }
779 791
780 TEST_F(InputMethodManagerImplTest, TestSwitchInputMethodWithUsLayouts) { 792 TEST_F(InputMethodManagerImplTest, TestSwitchInputMethodWithUsLayouts) {
781 TestObserver observer; 793 TestObserver observer;
782 manager_->AddObserver(&observer); 794 manager()->AddObserver(&observer);
783 InitComponentExtension(); 795 InitComponentExtension();
784 manager_->EnableLayouts("en-US", "xkb:us::eng"); 796 manager()->EnableLoginLayouts("en-US", "xkb:us::eng");
785 EXPECT_EQ(5U, manager_->GetNumActiveInputMethods()); 797 EXPECT_EQ(5U, manager()->GetNumActiveInputMethods());
786 EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id()); 798 EXPECT_EQ("xkb:us::eng", manager()->GetCurrentInputMethod().id());
787 EXPECT_EQ("us", xkeyboard_->last_layout_); 799 EXPECT_EQ("us", xkeyboard_->last_layout_);
788 800
789 // Henkan, Muhenkan, ZenkakuHankaku should be ignored when no Japanese IMEs 801 // Henkan, Muhenkan, ZenkakuHankaku should be ignored when no Japanese IMEs
790 // and keyboards are enabled. 802 // and keyboards are enabled.
791 EXPECT_FALSE(manager_->SwitchInputMethod( 803 EXPECT_FALSE(manager()->SwitchInputMethod(
792 ui::Accelerator(ui::VKEY_CONVERT, ui::EF_NONE))); 804 ui::Accelerator(ui::VKEY_CONVERT, ui::EF_NONE)));
793 EXPECT_FALSE(observer.last_show_message_); 805 EXPECT_FALSE(observer.last_show_message_);
794 EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id()); 806 EXPECT_EQ("xkb:us::eng", manager()->GetCurrentInputMethod().id());
795 EXPECT_EQ("us", xkeyboard_->last_layout_); 807 EXPECT_EQ("us", xkeyboard_->last_layout_);
796 EXPECT_FALSE(manager_->SwitchInputMethod( 808 EXPECT_FALSE(manager()->SwitchInputMethod(
797 ui::Accelerator(ui::VKEY_NONCONVERT, ui::EF_NONE))); 809 ui::Accelerator(ui::VKEY_NONCONVERT, ui::EF_NONE)));
798 EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id()); 810 EXPECT_EQ("xkb:us::eng", manager()->GetCurrentInputMethod().id());
799 EXPECT_EQ("us", xkeyboard_->last_layout_); 811 EXPECT_EQ("us", xkeyboard_->last_layout_);
800 EXPECT_FALSE(manager_->SwitchInputMethod( 812 EXPECT_FALSE(manager()->SwitchInputMethod(
801 ui::Accelerator(ui::VKEY_DBE_SBCSCHAR, ui::EF_NONE))); 813 ui::Accelerator(ui::VKEY_DBE_SBCSCHAR, ui::EF_NONE)));
802 EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id()); 814 EXPECT_EQ("xkb:us::eng", manager()->GetCurrentInputMethod().id());
803 EXPECT_EQ("us", xkeyboard_->last_layout_); 815 EXPECT_EQ("us", xkeyboard_->last_layout_);
804 EXPECT_FALSE(manager_->SwitchInputMethod( 816 EXPECT_FALSE(manager()->SwitchInputMethod(
805 ui::Accelerator(ui::VKEY_DBE_DBCSCHAR, ui::EF_NONE))); 817 ui::Accelerator(ui::VKEY_DBE_DBCSCHAR, ui::EF_NONE)));
806 EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id()); 818 EXPECT_EQ("xkb:us::eng", manager()->GetCurrentInputMethod().id());
807 EXPECT_EQ("us", xkeyboard_->last_layout_); 819 EXPECT_EQ("us", xkeyboard_->last_layout_);
808 820
809 manager_->RemoveObserver(&observer); 821 manager()->RemoveObserver(&observer);
810 } 822 }
811 823
812 TEST_F(InputMethodManagerImplTest, TestSwitchInputMethodWithJpLayout) { 824 TEST_F(InputMethodManagerImplTest, TestSwitchInputMethodWithJpLayout) {
813 // Enable "xkb:jp::jpn" and press Muhenkan/ZenkakuHankaku. 825 // Enable "xkb:jp::jpn" and press Muhenkan/ZenkakuHankaku.
814 InitComponentExtension(); 826 InitComponentExtension();
815 827
816 ui::Accelerator keydown_accelerator(ui::VKEY_SPACE, ui::EF_CONTROL_DOWN); 828 ui::Accelerator keydown_accelerator(ui::VKEY_SPACE, ui::EF_CONTROL_DOWN);
817 keydown_accelerator.set_type(ui::ET_KEY_PRESSED); 829 keydown_accelerator.set_type(ui::ET_KEY_PRESSED);
818 ui::Accelerator keyup_accelerator(ui::VKEY_SPACE, ui::EF_CONTROL_DOWN); 830 ui::Accelerator keyup_accelerator(ui::VKEY_SPACE, ui::EF_CONTROL_DOWN);
819 keyup_accelerator.set_type(ui::ET_KEY_RELEASED); 831 keyup_accelerator.set_type(ui::ET_KEY_RELEASED);
820 832
821 manager_->EnableLayouts("ja", "xkb:us::eng"); 833 manager()->EnableLoginLayouts("ja", "xkb:us::eng");
822 EXPECT_EQ(2U, manager_->GetNumActiveInputMethods()); 834 EXPECT_EQ(2U, manager()->GetNumActiveInputMethods());
823 EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id()); 835 EXPECT_EQ("xkb:us::eng", manager()->GetCurrentInputMethod().id());
824 EXPECT_EQ("us", xkeyboard_->last_layout_); 836 EXPECT_EQ("us", xkeyboard_->last_layout_);
825 EXPECT_TRUE(manager_->SwitchInputMethod( 837 EXPECT_TRUE(manager()->SwitchInputMethod(
826 ui::Accelerator(ui::VKEY_NONCONVERT, ui::EF_NONE))); 838 ui::Accelerator(ui::VKEY_NONCONVERT, ui::EF_NONE)));
827 EXPECT_EQ("xkb:jp::jpn", manager_->GetCurrentInputMethod().id()); 839 EXPECT_EQ("xkb:jp::jpn", manager()->GetCurrentInputMethod().id());
828 EXPECT_EQ("jp", xkeyboard_->last_layout_); 840 EXPECT_EQ("jp", xkeyboard_->last_layout_);
829 EXPECT_TRUE(manager_->SwitchToPreviousInputMethod(keydown_accelerator)); 841 EXPECT_TRUE(manager()->SwitchToPreviousInputMethod(keydown_accelerator));
830 EXPECT_TRUE(manager_->SwitchToPreviousInputMethod(keyup_accelerator)); 842 EXPECT_TRUE(manager()->SwitchToPreviousInputMethod(keyup_accelerator));
831 EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id()); 843 EXPECT_EQ("xkb:us::eng", manager()->GetCurrentInputMethod().id());
832 EXPECT_EQ("us", xkeyboard_->last_layout_); 844 EXPECT_EQ("us", xkeyboard_->last_layout_);
833 EXPECT_TRUE(manager_->SwitchInputMethod( 845 EXPECT_TRUE(manager()->SwitchInputMethod(
834 ui::Accelerator(ui::VKEY_DBE_SBCSCHAR, ui::EF_NONE))); 846 ui::Accelerator(ui::VKEY_DBE_SBCSCHAR, ui::EF_NONE)));
835 EXPECT_EQ("xkb:jp::jpn", manager_->GetCurrentInputMethod().id()); 847 EXPECT_EQ("xkb:jp::jpn", manager()->GetCurrentInputMethod().id());
836 EXPECT_EQ("jp", xkeyboard_->last_layout_); 848 EXPECT_EQ("jp", xkeyboard_->last_layout_);
837 EXPECT_TRUE(manager_->SwitchToPreviousInputMethod(keydown_accelerator)); 849 EXPECT_TRUE(manager()->SwitchToPreviousInputMethod(keydown_accelerator));
838 EXPECT_TRUE(manager_->SwitchToPreviousInputMethod(keyup_accelerator)); 850 EXPECT_TRUE(manager()->SwitchToPreviousInputMethod(keyup_accelerator));
839 EXPECT_EQ("xkb:us::eng", manager_->GetCurrentInputMethod().id()); 851 EXPECT_EQ("xkb:us::eng", manager()->GetCurrentInputMethod().id());
840 EXPECT_EQ("us", xkeyboard_->last_layout_); 852 EXPECT_EQ("us", xkeyboard_->last_layout_);
841 EXPECT_TRUE(manager_->SwitchInputMethod( 853 EXPECT_TRUE(manager()->SwitchInputMethod(
842 ui::Accelerator(ui::VKEY_DBE_DBCSCHAR, ui::EF_NONE))); 854 ui::Accelerator(ui::VKEY_DBE_DBCSCHAR, ui::EF_NONE)));
843 EXPECT_EQ("xkb:jp::jpn", manager_->GetCurrentInputMethod().id()); 855 EXPECT_EQ("xkb:jp::jpn", manager()->GetCurrentInputMethod().id());
844 EXPECT_EQ("jp", xkeyboard_->last_layout_); 856 EXPECT_EQ("jp", xkeyboard_->last_layout_);
845 } 857 }
846 858
847 TEST_F(InputMethodManagerImplTest, TestSwitchInputMethodWithJpIme) { 859 TEST_F(InputMethodManagerImplTest, TestSwitchInputMethodWithJpIme) {
848 InitComponentExtension(); 860 InitComponentExtension();
849 manager_->SetState(InputMethodManager::STATE_BROWSER_SCREEN); 861 manager()->SetState(InputMethodManager::STATE_BROWSER_SCREEN);
850 std::vector<std::string> ids; 862 std::vector<std::string> ids;
851 ids.push_back("xkb:jp::jpn"); 863 ids.push_back("xkb:jp::jpn");
852 ids.push_back(kNaclMozcJpId); 864 ids.push_back(kNaclMozcJpId);
853 EXPECT_TRUE(manager_->EnableInputMethods(ids)); 865 EXPECT_TRUE(manager()->EnableInputMethods(ids));
854 EXPECT_EQ("xkb:jp::jpn", manager_->GetCurrentInputMethod().id()); 866 EXPECT_EQ("xkb:jp::jpn", manager()->GetCurrentInputMethod().id());
855 EXPECT_EQ("jp", xkeyboard_->last_layout_); 867 EXPECT_EQ("jp", xkeyboard_->last_layout_);
856 EXPECT_TRUE(manager_->SwitchInputMethod( 868 EXPECT_TRUE(manager()->SwitchInputMethod(
857 ui::Accelerator(ui::VKEY_DBE_DBCSCHAR, ui::EF_NONE))); 869 ui::Accelerator(ui::VKEY_DBE_DBCSCHAR, ui::EF_NONE)));
858 EXPECT_EQ(kNaclMozcJpId, manager_->GetCurrentInputMethod().id()); 870 EXPECT_EQ(kNaclMozcJpId, manager()->GetCurrentInputMethod().id());
859 EXPECT_EQ("jp", xkeyboard_->last_layout_); 871 EXPECT_EQ("jp", xkeyboard_->last_layout_);
860 EXPECT_TRUE(manager_->SwitchInputMethod( 872 EXPECT_TRUE(manager()->SwitchInputMethod(
861 ui::Accelerator(ui::VKEY_DBE_DBCSCHAR, ui::EF_NONE))); 873 ui::Accelerator(ui::VKEY_DBE_DBCSCHAR, ui::EF_NONE)));
862 EXPECT_EQ("xkb:jp::jpn", manager_->GetCurrentInputMethod().id()); 874 EXPECT_EQ("xkb:jp::jpn", manager()->GetCurrentInputMethod().id());
863 EXPECT_EQ("jp", xkeyboard_->last_layout_); 875 EXPECT_EQ("jp", xkeyboard_->last_layout_);
864 EXPECT_TRUE(manager_->SwitchInputMethod( 876 EXPECT_TRUE(manager()->SwitchInputMethod(
865 ui::Accelerator(ui::VKEY_CONVERT, ui::EF_NONE))); 877 ui::Accelerator(ui::VKEY_CONVERT, ui::EF_NONE)));
866 EXPECT_EQ(kNaclMozcJpId, manager_->GetCurrentInputMethod().id()); 878 EXPECT_EQ(kNaclMozcJpId, manager()->GetCurrentInputMethod().id());
867 EXPECT_EQ("jp", xkeyboard_->last_layout_); 879 EXPECT_EQ("jp", xkeyboard_->last_layout_);
868 EXPECT_TRUE(manager_->SwitchInputMethod( 880 EXPECT_TRUE(manager()->SwitchInputMethod(
869 ui::Accelerator(ui::VKEY_CONVERT, ui::EF_NONE))); 881 ui::Accelerator(ui::VKEY_CONVERT, ui::EF_NONE)));
870 EXPECT_EQ(kNaclMozcJpId, manager_->GetCurrentInputMethod().id()); 882 EXPECT_EQ(kNaclMozcJpId, manager()->GetCurrentInputMethod().id());
871 EXPECT_EQ("jp", xkeyboard_->last_layout_); 883 EXPECT_EQ("jp", xkeyboard_->last_layout_);
872 EXPECT_TRUE(manager_->SwitchInputMethod( 884 EXPECT_TRUE(manager()->SwitchInputMethod(
873 ui::Accelerator(ui::VKEY_NONCONVERT, ui::EF_NONE))); 885 ui::Accelerator(ui::VKEY_NONCONVERT, ui::EF_NONE)));
874 EXPECT_EQ("xkb:jp::jpn", manager_->GetCurrentInputMethod().id()); 886 EXPECT_EQ("xkb:jp::jpn", manager()->GetCurrentInputMethod().id());
875 EXPECT_EQ("jp", xkeyboard_->last_layout_); 887 EXPECT_EQ("jp", xkeyboard_->last_layout_);
876 EXPECT_TRUE(manager_->SwitchInputMethod( 888 EXPECT_TRUE(manager()->SwitchInputMethod(
877 ui::Accelerator(ui::VKEY_NONCONVERT, ui::EF_NONE))); 889 ui::Accelerator(ui::VKEY_NONCONVERT, ui::EF_NONE)));
878 EXPECT_EQ("xkb:jp::jpn", manager_->GetCurrentInputMethod().id()); 890 EXPECT_EQ("xkb:jp::jpn", manager()->GetCurrentInputMethod().id());
879 EXPECT_EQ("jp", xkeyboard_->last_layout_); 891 EXPECT_EQ("jp", xkeyboard_->last_layout_);
880 892
881 // Add Dvorak. 893 // Add Dvorak.
882 ids.push_back("xkb:us:dvorak:eng"); 894 ids.push_back("xkb:us:dvorak:eng");
883 EXPECT_TRUE(manager_->EnableInputMethods(ids)); 895 EXPECT_TRUE(manager()->EnableInputMethods(ids));
884 EXPECT_EQ("xkb:jp::jpn", manager_->GetCurrentInputMethod().id()); 896 EXPECT_EQ("xkb:jp::jpn", manager()->GetCurrentInputMethod().id());
885 EXPECT_EQ("jp", xkeyboard_->last_layout_); 897 EXPECT_EQ("jp", xkeyboard_->last_layout_);
886 EXPECT_TRUE(manager_->SwitchInputMethod( 898 EXPECT_TRUE(manager()->SwitchInputMethod(
887 ui::Accelerator(ui::VKEY_DBE_SBCSCHAR, ui::EF_NONE))); 899 ui::Accelerator(ui::VKEY_DBE_SBCSCHAR, ui::EF_NONE)));
888 EXPECT_EQ(kNaclMozcJpId, manager_->GetCurrentInputMethod().id()); 900 EXPECT_EQ(kNaclMozcJpId, manager()->GetCurrentInputMethod().id());
889 EXPECT_EQ("jp", xkeyboard_->last_layout_); 901 EXPECT_EQ("jp", xkeyboard_->last_layout_);
890 EXPECT_TRUE(manager_->SwitchInputMethod( 902 EXPECT_TRUE(manager()->SwitchInputMethod(
891 ui::Accelerator(ui::VKEY_DBE_SBCSCHAR, ui::EF_NONE))); 903 ui::Accelerator(ui::VKEY_DBE_SBCSCHAR, ui::EF_NONE)));
892 EXPECT_EQ("xkb:jp::jpn", manager_->GetCurrentInputMethod().id()); 904 EXPECT_EQ("xkb:jp::jpn", manager()->GetCurrentInputMethod().id());
893 EXPECT_EQ("jp", xkeyboard_->last_layout_); 905 EXPECT_EQ("jp", xkeyboard_->last_layout_);
894 } 906 }
895 907
896 TEST_F(InputMethodManagerImplTest, TestAddRemoveExtensionInputMethods) { 908 TEST_F(InputMethodManagerImplTest, TestAddRemoveExtensionInputMethods) {
897 TestObserver observer; 909 TestObserver observer;
898 manager_->AddObserver(&observer); 910 manager()->AddObserver(&observer);
899 InitComponentExtension(); 911 InitComponentExtension();
900 manager_->SetState(InputMethodManager::STATE_BROWSER_SCREEN); 912 manager()->SetState(InputMethodManager::STATE_BROWSER_SCREEN);
901 std::vector<std::string> ids; 913 std::vector<std::string> ids;
902 ids.push_back("xkb:us:dvorak:eng"); 914 ids.push_back("xkb:us:dvorak:eng");
903 EXPECT_TRUE(manager_->EnableInputMethods(ids)); 915 EXPECT_TRUE(manager()->EnableInputMethods(ids));
904 EXPECT_EQ(1U, manager_->GetNumActiveInputMethods()); 916 EXPECT_EQ(1U, manager()->GetNumActiveInputMethods());
905 EXPECT_EQ(1, observer.input_method_changed_count_); 917 EXPECT_EQ(1, observer.input_method_changed_count_);
906 EXPECT_EQ(ids[0], 918 EXPECT_EQ(ids[0], manager()->GetCurrentInputMethod().id());
907 manager_->GetCurrentInputMethod().id());
908 EXPECT_EQ("us(dvorak)", xkeyboard_->last_layout_); 919 EXPECT_EQ("us(dvorak)", xkeyboard_->last_layout_);
909 920
910 // Add two Extension IMEs. 921 // Add two Extension IMEs.
911 std::vector<std::string> layouts; 922 std::vector<std::string> layouts;
912 layouts.push_back("us"); 923 layouts.push_back("us");
913 std::vector<std::string> languages; 924 std::vector<std::string> languages;
914 languages.push_back("en-US"); 925 languages.push_back("en-US");
915 926
916 const std::string ext1_id = 927 const std::string ext1_id =
917 extension_ime_util::GetInputMethodID("deadbeef", "engine_id"); 928 extension_ime_util::GetInputMethodID("deadbeef", "engine_id");
918 const InputMethodDescriptor descriptor1(ext1_id, 929 const InputMethodDescriptor descriptor1(ext1_id,
919 "deadbeef input method", 930 "deadbeef input method",
920 layouts, 931 layouts,
921 languages, 932 languages,
922 false, // is_login_keyboard 933 false, // is_login_keyboard
923 GURL(), 934 GURL(),
924 GURL()); 935 GURL());
925 MockInputMethodEngine engine(descriptor1); 936 MockInputMethodEngine engine(descriptor1);
926 manager_->AddInputMethodExtension(ext1_id, &engine); 937 manager()->AddInputMethodExtension(ext1_id, &engine);
927 938
928 // Extension IMEs are not enabled by default. 939 // Extension IMEs are not enabled by default.
929 EXPECT_EQ(1U, manager_->GetNumActiveInputMethods()); 940 EXPECT_EQ(1U, manager()->GetNumActiveInputMethods());
930 941
931 std::vector<std::string> extension_ime_ids; 942 std::vector<std::string> extension_ime_ids;
932 extension_ime_ids.push_back(ext1_id); 943 extension_ime_ids.push_back(ext1_id);
933 manager_->SetEnabledExtensionImes(&extension_ime_ids); 944 manager()->SetEnabledExtensionImes(&extension_ime_ids);
934 EXPECT_EQ(2U, manager_->GetNumActiveInputMethods()); 945 EXPECT_EQ(2U, manager()->GetNumActiveInputMethods());
935 946
936 { 947 {
937 scoped_ptr<InputMethodDescriptors> methods( 948 scoped_ptr<InputMethodDescriptors> methods(
938 manager_->GetActiveInputMethods()); 949 manager()->GetActiveInputMethods());
939 ASSERT_EQ(2U, methods->size()); 950 ASSERT_EQ(2U, methods->size());
940 // Ext IMEs should be at the end of the list. 951 // Ext IMEs should be at the end of the list.
941 EXPECT_EQ(ext1_id, methods->at(1).id()); 952 EXPECT_EQ(ext1_id, methods->at(1).id());
942 } 953 }
943 954
944 const std::string ext2_id = 955 const std::string ext2_id =
945 extension_ime_util::GetInputMethodID("cafebabe", "engine_id"); 956 extension_ime_util::GetInputMethodID("cafebabe", "engine_id");
946 const InputMethodDescriptor descriptor2(ext2_id, 957 const InputMethodDescriptor descriptor2(ext2_id,
947 "cafebabe input method", 958 "cafebabe input method",
948 layouts, 959 layouts,
949 languages, 960 languages,
950 false, // is_login_keyboard 961 false, // is_login_keyboard
951 GURL(), 962 GURL(),
952 GURL()); 963 GURL());
953 MockInputMethodEngine engine2(descriptor2); 964 MockInputMethodEngine engine2(descriptor2);
954 manager_->AddInputMethodExtension(ext2_id, &engine2); 965 manager()->AddInputMethodExtension(ext2_id, &engine2);
955 EXPECT_EQ(2U, manager_->GetNumActiveInputMethods()); 966 EXPECT_EQ(2U, manager()->GetNumActiveInputMethods());
956 967
957 extension_ime_ids.push_back(ext2_id); 968 extension_ime_ids.push_back(ext2_id);
958 manager_->SetEnabledExtensionImes(&extension_ime_ids); 969 manager()->SetEnabledExtensionImes(&extension_ime_ids);
959 EXPECT_EQ(3U, manager_->GetNumActiveInputMethods()); 970 EXPECT_EQ(3U, manager()->GetNumActiveInputMethods());
960 { 971 {
961 scoped_ptr<InputMethodDescriptors> methods( 972 scoped_ptr<InputMethodDescriptors> methods(
962 manager_->GetActiveInputMethods()); 973 manager()->GetActiveInputMethods());
963 ASSERT_EQ(3U, methods->size()); 974 ASSERT_EQ(3U, methods->size());
964 // Ext IMEs should be at the end of the list. 975 // Ext IMEs should be at the end of the list.
965 EXPECT_EQ(ext1_id, methods->at(1).id()); 976 EXPECT_EQ(ext1_id, methods->at(1).id());
966 EXPECT_EQ(ext2_id, methods->at(2).id()); 977 EXPECT_EQ(ext2_id, methods->at(2).id());
967 } 978 }
968 979
969 // Remove them. 980 // Remove them.
970 manager_->RemoveInputMethodExtension(ext1_id); 981 manager()->RemoveInputMethodExtension(ext1_id);
971 EXPECT_EQ(2U, manager_->GetNumActiveInputMethods()); 982 EXPECT_EQ(2U, manager()->GetNumActiveInputMethods());
972 manager_->RemoveInputMethodExtension(ext2_id); 983 manager()->RemoveInputMethodExtension(ext2_id);
973 EXPECT_EQ(1U, manager_->GetNumActiveInputMethods()); 984 EXPECT_EQ(1U, manager()->GetNumActiveInputMethods());
974 } 985 }
975 986
976 TEST_F(InputMethodManagerImplTest, TestAddExtensionInputThenLockScreen) { 987 TEST_F(InputMethodManagerImplTest, TestAddExtensionInputThenLockScreen) {
977 TestObserver observer; 988 TestObserver observer;
978 InitComponentExtension(); 989 InitComponentExtension();
979 manager_->AddObserver(&observer); 990 manager()->AddObserver(&observer);
980 manager_->SetState(InputMethodManager::STATE_BROWSER_SCREEN); 991 manager()->SetState(InputMethodManager::STATE_BROWSER_SCREEN);
981 std::vector<std::string> ids; 992 std::vector<std::string> ids;
982 ids.push_back("xkb:us::eng"); 993 ids.push_back("xkb:us::eng");
983 EXPECT_TRUE(manager_->EnableInputMethods(ids)); 994 EXPECT_TRUE(manager()->EnableInputMethods(ids));
984 EXPECT_EQ(1U, manager_->GetNumActiveInputMethods()); 995 EXPECT_EQ(1U, manager()->GetNumActiveInputMethods());
985 EXPECT_EQ(1, observer.input_method_changed_count_); 996 EXPECT_EQ(1, observer.input_method_changed_count_);
986 EXPECT_EQ(ids[0], manager_->GetCurrentInputMethod().id()); 997 EXPECT_EQ(ids[0], manager()->GetCurrentInputMethod().id());
987 EXPECT_EQ("us", xkeyboard_->last_layout_); 998 EXPECT_EQ("us", xkeyboard_->last_layout_);
988 999
989 // Add an Extension IME. 1000 // Add an Extension IME.
990 std::vector<std::string> layouts; 1001 std::vector<std::string> layouts;
991 layouts.push_back("us(dvorak)"); 1002 layouts.push_back("us(dvorak)");
992 std::vector<std::string> languages; 1003 std::vector<std::string> languages;
993 languages.push_back("en-US"); 1004 languages.push_back("en-US");
994 1005
995 const std::string ext_id = 1006 const std::string ext_id =
996 extension_ime_util::GetInputMethodID("deadbeef", "engine_id"); 1007 extension_ime_util::GetInputMethodID("deadbeef", "engine_id");
997 const InputMethodDescriptor descriptor(ext_id, 1008 const InputMethodDescriptor descriptor(ext_id,
998 "deadbeef input method", 1009 "deadbeef input method",
999 layouts, 1010 layouts,
1000 languages, 1011 languages,
1001 false, // is_login_keyboard 1012 false, // is_login_keyboard
1002 GURL(), 1013 GURL(),
1003 GURL()); 1014 GURL());
1004 MockInputMethodEngine engine(descriptor); 1015 MockInputMethodEngine engine(descriptor);
1005 manager_->AddInputMethodExtension(ext_id, &engine); 1016 manager()->AddInputMethodExtension(ext_id, &engine);
1006 1017
1007 // Extension IME is not enabled by default. 1018 // Extension IME is not enabled by default.
1008 EXPECT_EQ(1U, manager_->GetNumActiveInputMethods()); 1019 EXPECT_EQ(1U, manager()->GetNumActiveInputMethods());
1009 EXPECT_EQ(1, observer.input_method_changed_count_); 1020 EXPECT_EQ(1, observer.input_method_changed_count_);
1010 1021
1011 std::vector<std::string> extension_ime_ids; 1022 std::vector<std::string> extension_ime_ids;
1012 extension_ime_ids.push_back(ext_id); 1023 extension_ime_ids.push_back(ext_id);
1013 manager_->SetEnabledExtensionImes(&extension_ime_ids); 1024 manager()->SetEnabledExtensionImes(&extension_ime_ids);
1014 EXPECT_EQ(2U, manager_->GetNumActiveInputMethods()); 1025 EXPECT_EQ(2U, manager()->GetNumActiveInputMethods());
1015 1026
1016 // Switch to the IME. 1027 // Switch to the IME.
1017 manager_->SwitchToNextInputMethod(); 1028 manager()->SwitchToNextInputMethod();
1018 EXPECT_EQ(3, observer.input_method_changed_count_); 1029 EXPECT_EQ(3, observer.input_method_changed_count_);
1019 EXPECT_EQ(ext_id, manager_->GetCurrentInputMethod().id()); 1030 EXPECT_EQ(ext_id, manager()->GetCurrentInputMethod().id());
1020 EXPECT_EQ("us(dvorak)", xkeyboard_->last_layout_); 1031 EXPECT_EQ("us(dvorak)", xkeyboard_->last_layout_);
1021 1032
1022 // Lock the screen. This is for crosbug.com/27049. 1033 // Lock the screen. This is for crosbug.com/27049.
1023 manager_->SetState(InputMethodManager::STATE_LOCK_SCREEN); 1034 manager()->SetState(InputMethodManager::STATE_LOCK_SCREEN);
1024 EXPECT_EQ(1U, manager_->GetNumActiveInputMethods()); // Qwerty. No Ext. IME 1035 EXPECT_EQ(1U, manager()->GetNumActiveInputMethods()); // Qwerty. No Ext. IME
1025 EXPECT_EQ("xkb:us::eng", 1036 EXPECT_EQ("xkb:us::eng", manager()->GetCurrentInputMethod().id());
1026 manager_->GetCurrentInputMethod().id());
1027 EXPECT_EQ("us", xkeyboard_->last_layout_); 1037 EXPECT_EQ("us", xkeyboard_->last_layout_);
1028 1038
1029 // Unlock the screen. 1039 // Unlock the screen.
1030 manager_->SetState(InputMethodManager::STATE_BROWSER_SCREEN); 1040 manager()->SetState(InputMethodManager::STATE_BROWSER_SCREEN);
1031 EXPECT_EQ(2U, manager_->GetNumActiveInputMethods()); 1041 EXPECT_EQ(2U, manager()->GetNumActiveInputMethods());
1032 EXPECT_EQ(ext_id, manager_->GetCurrentInputMethod().id()); 1042 EXPECT_EQ(ext_id, manager()->GetCurrentInputMethod().id());
1033 EXPECT_EQ("us(dvorak)", xkeyboard_->last_layout_); 1043 EXPECT_EQ("us(dvorak)", xkeyboard_->last_layout_);
1034 { 1044 {
1035 // This is for crosbug.com/27052. 1045 // This is for crosbug.com/27052.
1036 scoped_ptr<InputMethodDescriptors> methods( 1046 scoped_ptr<InputMethodDescriptors> methods(
1037 manager_->GetActiveInputMethods()); 1047 manager()->GetActiveInputMethods());
1038 ASSERT_EQ(2U, methods->size()); 1048 ASSERT_EQ(2U, methods->size());
1039 // Ext. IMEs should be at the end of the list. 1049 // Ext. IMEs should be at the end of the list.
1040 EXPECT_EQ(ext_id, methods->at(1).id()); 1050 EXPECT_EQ(ext_id, methods->at(1).id());
1041 } 1051 }
1042 manager_->RemoveObserver(&observer); 1052 manager()->RemoveObserver(&observer);
1043 } 1053 }
1044 1054
1045 TEST_F(InputMethodManagerImplTest, 1055 TEST_F(InputMethodManagerImplTest,
1046 ChangeInputMethodBeforeComponentExtensionInitialization_OneIME) { 1056 ChangeInputMethodBeforeComponentExtensionInitialization_OneIME) {
1047 manager_->SetState(InputMethodManager::STATE_BROWSER_SCREEN); 1057 manager()->SetState(InputMethodManager::STATE_BROWSER_SCREEN);
1048 std::vector<std::string> ids; 1058 std::vector<std::string> ids;
1049 ids.push_back(kNaclMozcUsId); 1059 ids.push_back(kNaclMozcUsId);
1050 EXPECT_TRUE(manager_->EnableInputMethods(ids)); 1060 EXPECT_TRUE(manager()->EnableInputMethods(ids));
1051 EXPECT_EQ(1U, manager_->GetNumActiveInputMethods()); 1061 EXPECT_EQ(1U, manager()->GetNumActiveInputMethods());
1052 manager_->ChangeInputMethod(kNaclMozcUsId); 1062 manager()->ChangeInputMethod(kNaclMozcUsId);
1053 1063
1054 InitComponentExtension(); 1064 InitComponentExtension();
1055 EXPECT_EQ(kNaclMozcUsId, manager_->GetCurrentInputMethod().id()); 1065 EXPECT_EQ(kNaclMozcUsId, manager()->GetCurrentInputMethod().id());
1056 } 1066 }
1057 1067
1058 TEST_F(InputMethodManagerImplTest, 1068 TEST_F(InputMethodManagerImplTest,
1059 ChangeInputMethodBeforeComponentExtensionInitialization_TwoIME) { 1069 ChangeInputMethodBeforeComponentExtensionInitialization_TwoIME) {
1060 manager_->SetState(InputMethodManager::STATE_BROWSER_SCREEN); 1070 manager()->SetState(InputMethodManager::STATE_BROWSER_SCREEN);
1061 std::vector<std::string> ids; 1071 std::vector<std::string> ids;
1062 ids.push_back(kNaclMozcUsId); 1072 ids.push_back(kNaclMozcUsId);
1063 ids.push_back(kNaclMozcJpId); 1073 ids.push_back(kNaclMozcJpId);
1064 EXPECT_TRUE(manager_->EnableInputMethods(ids)); 1074 EXPECT_TRUE(manager()->EnableInputMethods(ids));
1065 EXPECT_EQ(2U, manager_->GetNumActiveInputMethods()); 1075 EXPECT_EQ(2U, manager()->GetNumActiveInputMethods());
1066 manager_->ChangeInputMethod(kNaclMozcUsId); 1076 manager()->ChangeInputMethod(kNaclMozcUsId);
1067 manager_->ChangeInputMethod(kNaclMozcJpId); 1077 manager()->ChangeInputMethod(kNaclMozcJpId);
1068 1078
1069 InitComponentExtension(); 1079 InitComponentExtension();
1070 EXPECT_EQ(kNaclMozcJpId, manager_->GetCurrentInputMethod().id()); 1080 EXPECT_EQ(kNaclMozcJpId, manager()->GetCurrentInputMethod().id());
1071 } 1081 }
1072 1082
1073 TEST_F(InputMethodManagerImplTest, 1083 TEST_F(InputMethodManagerImplTest,
1074 ChangeInputMethodBeforeComponentExtensionInitialization_CompOneIME) { 1084 ChangeInputMethodBeforeComponentExtensionInitialization_CompOneIME) {
1075 manager_->SetState(InputMethodManager::STATE_BROWSER_SCREEN); 1085 manager()->SetState(InputMethodManager::STATE_BROWSER_SCREEN);
1076 const std::string ext_id = extension_ime_util::GetComponentInputMethodID( 1086 const std::string ext_id = extension_ime_util::GetComponentInputMethodID(
1077 ime_list_[0].id, 1087 ime_list_[0].id,
1078 ime_list_[0].engines[0].engine_id); 1088 ime_list_[0].engines[0].engine_id);
1079 std::vector<std::string> ids; 1089 std::vector<std::string> ids;
1080 ids.push_back(ext_id); 1090 ids.push_back(ext_id);
1081 EXPECT_TRUE(manager_->EnableInputMethods(ids)); 1091 EXPECT_TRUE(manager()->EnableInputMethods(ids));
1082 EXPECT_EQ(1U, manager_->GetNumActiveInputMethods()); 1092 EXPECT_EQ(1U, manager()->GetNumActiveInputMethods());
1083 manager_->ChangeInputMethod(ext_id); 1093 manager()->ChangeInputMethod(ext_id);
1084 1094
1085 InitComponentExtension(); 1095 InitComponentExtension();
1086 EXPECT_EQ(ext_id, manager_->GetCurrentInputMethod().id()); 1096 EXPECT_EQ(ext_id, manager()->GetCurrentInputMethod().id());
1087 } 1097 }
1088 1098
1089 TEST_F(InputMethodManagerImplTest, 1099 TEST_F(InputMethodManagerImplTest,
1090 ChangeInputMethodBeforeComponentExtensionInitialization_CompTwoIME) { 1100 ChangeInputMethodBeforeComponentExtensionInitialization_CompTwoIME) {
1091 manager_->SetState(InputMethodManager::STATE_BROWSER_SCREEN); 1101 manager()->SetState(InputMethodManager::STATE_BROWSER_SCREEN);
1092 const std::string ext_id1 = extension_ime_util::GetComponentInputMethodID( 1102 const std::string ext_id1 = extension_ime_util::GetComponentInputMethodID(
1093 ime_list_[0].id, 1103 ime_list_[0].id,
1094 ime_list_[0].engines[0].engine_id); 1104 ime_list_[0].engines[0].engine_id);
1095 const std::string ext_id2 = extension_ime_util::GetComponentInputMethodID( 1105 const std::string ext_id2 = extension_ime_util::GetComponentInputMethodID(
1096 ime_list_[1].id, 1106 ime_list_[1].id,
1097 ime_list_[1].engines[0].engine_id); 1107 ime_list_[1].engines[0].engine_id);
1098 std::vector<std::string> ids; 1108 std::vector<std::string> ids;
1099 ids.push_back(ext_id1); 1109 ids.push_back(ext_id1);
1100 ids.push_back(ext_id2); 1110 ids.push_back(ext_id2);
1101 EXPECT_TRUE(manager_->EnableInputMethods(ids)); 1111 EXPECT_TRUE(manager()->EnableInputMethods(ids));
1102 EXPECT_EQ(2U, manager_->GetNumActiveInputMethods()); 1112 EXPECT_EQ(2U, manager()->GetNumActiveInputMethods());
1103 manager_->ChangeInputMethod(ext_id1); 1113 manager()->ChangeInputMethod(ext_id1);
1104 manager_->ChangeInputMethod(ext_id2); 1114 manager()->ChangeInputMethod(ext_id2);
1105 1115
1106 InitComponentExtension(); 1116 InitComponentExtension();
1107 EXPECT_EQ(ext_id2, manager_->GetCurrentInputMethod().id()); 1117 EXPECT_EQ(ext_id2, manager()->GetCurrentInputMethod().id());
1108 } 1118 }
1109 1119
1110 TEST_F(InputMethodManagerImplTest, 1120 TEST_F(InputMethodManagerImplTest,
1111 ChangeInputMethod_ComponenteExtensionOneIME) { 1121 ChangeInputMethod_ComponenteExtensionOneIME) {
1112 InitComponentExtension(); 1122 InitComponentExtension();
1113 manager_->SetState(InputMethodManager::STATE_BROWSER_SCREEN); 1123 manager()->SetState(InputMethodManager::STATE_BROWSER_SCREEN);
1114 const std::string ext_id = extension_ime_util::GetComponentInputMethodID( 1124 const std::string ext_id = extension_ime_util::GetComponentInputMethodID(
1115 ime_list_[0].id, 1125 ime_list_[0].id,
1116 ime_list_[0].engines[0].engine_id); 1126 ime_list_[0].engines[0].engine_id);
1117 std::vector<std::string> ids; 1127 std::vector<std::string> ids;
1118 ids.push_back(ext_id); 1128 ids.push_back(ext_id);
1119 EXPECT_TRUE(manager_->EnableInputMethods(ids)); 1129 EXPECT_TRUE(manager()->EnableInputMethods(ids));
1120 EXPECT_EQ(1U, manager_->GetNumActiveInputMethods()); 1130 EXPECT_EQ(1U, manager()->GetNumActiveInputMethods());
1121 EXPECT_EQ(ext_id, manager_->GetCurrentInputMethod().id()); 1131 EXPECT_EQ(ext_id, manager()->GetCurrentInputMethod().id());
1122 } 1132 }
1123 1133
1124 TEST_F(InputMethodManagerImplTest, 1134 TEST_F(InputMethodManagerImplTest,
1125 ChangeInputMethod_ComponenteExtensionTwoIME) { 1135 ChangeInputMethod_ComponenteExtensionTwoIME) {
1126 InitComponentExtension(); 1136 InitComponentExtension();
1127 manager_->SetState(InputMethodManager::STATE_BROWSER_SCREEN); 1137 manager()->SetState(InputMethodManager::STATE_BROWSER_SCREEN);
1128 const std::string ext_id1 = extension_ime_util::GetComponentInputMethodID( 1138 const std::string ext_id1 = extension_ime_util::GetComponentInputMethodID(
1129 ime_list_[0].id, 1139 ime_list_[0].id,
1130 ime_list_[0].engines[0].engine_id); 1140 ime_list_[0].engines[0].engine_id);
1131 const std::string ext_id2 = extension_ime_util::GetComponentInputMethodID( 1141 const std::string ext_id2 = extension_ime_util::GetComponentInputMethodID(
1132 ime_list_[1].id, 1142 ime_list_[1].id,
1133 ime_list_[1].engines[0].engine_id); 1143 ime_list_[1].engines[0].engine_id);
1134 std::vector<std::string> ids; 1144 std::vector<std::string> ids;
1135 ids.push_back(ext_id1); 1145 ids.push_back(ext_id1);
1136 ids.push_back(ext_id2); 1146 ids.push_back(ext_id2);
1137 EXPECT_TRUE(manager_->EnableInputMethods(ids)); 1147 EXPECT_TRUE(manager()->EnableInputMethods(ids));
1138 EXPECT_EQ(2U, manager_->GetNumActiveInputMethods()); 1148 EXPECT_EQ(2U, manager()->GetNumActiveInputMethods());
1139 EXPECT_EQ(ext_id1, manager_->GetCurrentInputMethod().id()); 1149 EXPECT_EQ(ext_id1, manager()->GetCurrentInputMethod().id());
1140 manager_->ChangeInputMethod(ext_id2); 1150 manager()->ChangeInputMethod(ext_id2);
1141 EXPECT_EQ(ext_id2, manager_->GetCurrentInputMethod().id()); 1151 EXPECT_EQ(ext_id2, manager()->GetCurrentInputMethod().id());
1142 } 1152 }
1143 1153
1144 } // namespace input_method 1154 } // namespace input_method
1145 } // namespace chromeos 1155 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698