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

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

Issue 419293002: IME refactoring: ChromeOS introduce input methods State. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Cleanup. Created 6 years, 4 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 "ash/ime/input_method_menu_item.h" 9 #include "ash/ime/input_method_menu_item.h"
10 #include "ash/ime/input_method_menu_manager.h" 10 #include "ash/ime/input_method_menu_manager.h"
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
161 profile_manager_.reset(); 161 profile_manager_.reset();
162 } 162 }
163 163
164 protected: 164 protected:
165 // Helper function to initialize component extension stuff for testing. 165 // Helper function to initialize component extension stuff for testing.
166 void InitComponentExtension() { 166 void InitComponentExtension() {
167 mock_delegate_ = new MockComponentExtIMEManagerDelegate(); 167 mock_delegate_ = new MockComponentExtIMEManagerDelegate();
168 mock_delegate_->set_ime_list(ime_list_); 168 mock_delegate_->set_ime_list(ime_list_);
169 scoped_ptr<ComponentExtensionIMEManagerDelegate> delegate(mock_delegate_); 169 scoped_ptr<ComponentExtensionIMEManagerDelegate> delegate(mock_delegate_);
170 170
171 manager_->SetState(manager_->GetDefaultState(NULL /* profile */));
172
171 std::vector<std::string> layouts; 173 std::vector<std::string> layouts;
172 layouts.push_back("us"); 174 layouts.push_back("us");
173 std::vector<std::string> languages; 175 std::vector<std::string> languages;
174 languages.push_back("en-US"); 176 languages.push_back("en-US");
175 177
176 // Note, for production, these SetEngineHandler are called when 178 // Note, for production, these SetEngineHandler are called when
177 // IMEEngineHandlerInterface is initialized via 179 // IMEEngineHandlerInterface is initialized via
178 // InitializeComponentextension. 180 // InitializeComponentextension.
179 InputMethodDescriptors descriptors; 181 InputMethodDescriptors descriptors;
180 manager_->AddInputMethodExtension(ImeIdFromEngineId(kNaclMozcUsId), 182 manager_->GetActiveIMEState()->AddInputMethodExtension(
181 descriptors, 183 ImeIdFromEngineId(kNaclMozcUsId),
182 mock_engine_handler_.get()); 184 descriptors,
183 manager_->AddInputMethodExtension(ImeIdFromEngineId(kExt2Engine1Id), 185 mock_engine_handler_.get());
184 descriptors, 186 manager_->GetActiveIMEState()->AddInputMethodExtension(
185 mock_engine_handler_.get()); 187 ImeIdFromEngineId(kExt2Engine1Id),
188 descriptors,
189 mock_engine_handler_.get());
186 manager_->InitializeComponentExtensionForTesting(delegate.Pass()); 190 manager_->InitializeComponentExtensionForTesting(delegate.Pass());
187 } 191 }
188 192
189 void InitImeList() { 193 void InitImeList() {
190 ime_list_.clear(); 194 ime_list_.clear();
191 195
192 ComponentExtensionIME ext_xkb; 196 ComponentExtensionIME ext_xkb;
193 ext_xkb.id = extension_ime_util::kXkbExtensionId; 197 ext_xkb.id = extension_ime_util::kXkbExtensionId;
194 ext_xkb.description = "ext_xkb_description"; 198 ext_xkb.description = "ext_xkb_description";
195 ext_xkb.path = base::FilePath("ext_xkb_file_path"); 199 ext_xkb.path = base::FilePath("ext_xkb_file_path");
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
352 // For http://crbug.com/19655#c11 - (3). browser_state_monitor_unittest.cc is 356 // For http://crbug.com/19655#c11 - (3). browser_state_monitor_unittest.cc is
353 // also for the scenario. 357 // also for the scenario.
354 std::vector<std::string> keyboard_layouts; 358 std::vector<std::string> keyboard_layouts;
355 keyboard_layouts.push_back("xkb:us::eng"); 359 keyboard_layouts.push_back("xkb:us::eng");
356 360
357 TestObserver observer; 361 TestObserver observer;
358 InitComponentExtension(); 362 InitComponentExtension();
359 manager_->AddObserver(&observer); 363 manager_->AddObserver(&observer);
360 menu_manager_->AddObserver(&observer); 364 menu_manager_->AddObserver(&observer);
361 EXPECT_EQ(0, observer.input_method_changed_count_); 365 EXPECT_EQ(0, observer.input_method_changed_count_);
362 manager_->EnableLoginLayouts("en-US", keyboard_layouts); 366 manager_->GetActiveIMEState()->EnableLoginLayouts("en-US", keyboard_layouts);
363 EXPECT_EQ(5U, manager_->GetActiveInputMethods()->size()); 367 EXPECT_EQ(5U, manager_->GetActiveIMEState()->GetActiveInputMethods()->size());
364 EXPECT_EQ(1, observer.input_method_changed_count_); 368 EXPECT_EQ(1, observer.input_method_changed_count_);
365 EXPECT_EQ(1, observer.input_method_menu_item_changed_count_); 369 EXPECT_EQ(1, observer.input_method_menu_item_changed_count_);
366 manager_->ChangeInputMethod(ImeIdFromEngineId("xkb:us:dvorak:eng")); 370 manager_->GetActiveIMEState()->ChangeInputMethod(
371 ImeIdFromEngineId("xkb:us:dvorak:eng"), false /* show_message */);
367 EXPECT_FALSE(observer.last_show_message_); 372 EXPECT_FALSE(observer.last_show_message_);
368 EXPECT_EQ(2, observer.input_method_changed_count_); 373 EXPECT_EQ(2, observer.input_method_changed_count_);
369 EXPECT_EQ(2, observer.input_method_menu_item_changed_count_); 374 EXPECT_EQ(2, observer.input_method_menu_item_changed_count_);
370 manager_->ChangeInputMethod(ImeIdFromEngineId("xkb:us:dvorak:eng")); 375 manager_->GetActiveIMEState()->ChangeInputMethod(
376 ImeIdFromEngineId("xkb:us:dvorak:eng"), false /* show_message */);
371 EXPECT_FALSE(observer.last_show_message_); 377 EXPECT_FALSE(observer.last_show_message_);
372 378
373 // The observer is always notified even when the same input method ID is 379 // The observer is always notified even when the same input method ID is
374 // passed to ChangeInputMethod() more than twice. 380 // passed to ChangeInputMethod() more than twice.
375 // TODO(komatsu): Revisit if this is neccessary. 381 // TODO(komatsu): Revisit if this is neccessary.
376 EXPECT_EQ(3, observer.input_method_changed_count_); 382 EXPECT_EQ(3, observer.input_method_changed_count_);
377 383
378 // If the same input method ID is passed, PropertyChanged() is not 384 // If the same input method ID is passed, PropertyChanged() is not
379 // notified. 385 // notified.
380 EXPECT_EQ(2, observer.input_method_menu_item_changed_count_); 386 EXPECT_EQ(2, observer.input_method_menu_item_changed_count_);
(...skipping 22 matching lines...) Expand all
403 ImeIdFromEngineId("xkb:fr::fra")); 409 ImeIdFromEngineId("xkb:fr::fra"));
404 EXPECT_TRUE(Contain(methods, *id_to_find)); 410 EXPECT_TRUE(Contain(methods, *id_to_find));
405 } 411 }
406 412
407 TEST_F(InputMethodManagerImplTest, TestEnableLayouts) { 413 TEST_F(InputMethodManagerImplTest, TestEnableLayouts) {
408 // Currently 5 keyboard layouts are supported for en-US, and 1 for ja. See 414 // Currently 5 keyboard layouts are supported for en-US, and 1 for ja. See
409 // ibus_input_method.txt. 415 // ibus_input_method.txt.
410 std::vector<std::string> keyboard_layouts; 416 std::vector<std::string> keyboard_layouts;
411 417
412 InitComponentExtension(); 418 InitComponentExtension();
413 manager_->EnableLoginLayouts("en-US", keyboard_layouts); 419 manager_->GetActiveIMEState()->EnableLoginLayouts("en-US", keyboard_layouts);
414 EXPECT_EQ(5U, manager_->GetNumActiveInputMethods()); 420 EXPECT_EQ(5U, manager_->GetActiveIMEState()->GetNumActiveInputMethods());
415 421
416 // For http://crbug.com/19655#c11 - (5) 422 // For http://crbug.com/19655#c11 - (5)
417 // The hardware keyboard layout "xkb:us::eng" is always active, hence 2U. 423 // The hardware keyboard layout "xkb:us::eng" is always active, hence 2U.
418 manager_->EnableLoginLayouts("ja", keyboard_layouts); // Japanese 424 manager_->GetActiveIMEState()->EnableLoginLayouts(
419 EXPECT_EQ(2U, manager_->GetNumActiveInputMethods()); 425 "ja", keyboard_layouts); // Japanese
426 EXPECT_EQ(2U, manager_->GetActiveIMEState()->GetNumActiveInputMethods());
420 } 427 }
421 428
422 TEST_F(InputMethodManagerImplTest, TestEnableLayoutsAndCurrentInputMethod) { 429 TEST_F(InputMethodManagerImplTest, TestEnableLayoutsAndCurrentInputMethod) {
423 // For http://crbug.com/329061 430 // For http://crbug.com/329061
424 std::vector<std::string> keyboard_layouts; 431 std::vector<std::string> keyboard_layouts;
425 keyboard_layouts.push_back(ImeIdFromEngineId("xkb:se::swe")); 432 keyboard_layouts.push_back(ImeIdFromEngineId("xkb:se::swe"));
426 433
427 InitComponentExtension(); 434 InitComponentExtension();
428 manager_->EnableLoginLayouts("en-US", keyboard_layouts); 435 manager_->GetActiveIMEState()->EnableLoginLayouts("en-US", keyboard_layouts);
429 const std::string im_id = manager_->GetCurrentInputMethod().id(); 436 const std::string im_id =
437 manager_->GetActiveIMEState()->GetCurrentInputMethod().id();
430 EXPECT_EQ(ImeIdFromEngineId("xkb:se::swe"), im_id); 438 EXPECT_EQ(ImeIdFromEngineId("xkb:se::swe"), im_id);
431 } 439 }
432 440
433 TEST_F(InputMethodManagerImplTest, TestEnableLayoutsNonUsHardwareKeyboard) { 441 TEST_F(InputMethodManagerImplTest, TestEnableLayoutsNonUsHardwareKeyboard) {
434 InitComponentExtension(); 442 InitComponentExtension();
435 // The physical layout is French. 443 // The physical layout is French.
436 manager_->GetInputMethodUtil()->SetHardwareKeyboardLayoutForTesting( 444 manager_->GetInputMethodUtil()->SetHardwareKeyboardLayoutForTesting(
437 "xkb:fr::fra"); 445 "xkb:fr::fra");
438 manager_->EnableLoginLayouts( 446 manager_->GetActiveIMEState()->EnableLoginLayouts(
439 "en-US", 447 "en-US",
440 manager_->GetInputMethodUtil()->GetHardwareLoginInputMethodIds()); 448 manager_->GetInputMethodUtil()->GetHardwareLoginInputMethodIds());
441 EXPECT_EQ(6U, manager_->GetNumActiveInputMethods()); // 5 + French 449 EXPECT_EQ(
450 6U,
451 manager_->GetActiveIMEState()->GetNumActiveInputMethods()); // 5 + French
442 // The physical layout is Japanese. 452 // The physical layout is Japanese.
443 manager_->GetInputMethodUtil()->SetHardwareKeyboardLayoutForTesting( 453 manager_->GetInputMethodUtil()->SetHardwareKeyboardLayoutForTesting(
444 "xkb:jp::jpn"); 454 "xkb:jp::jpn");
445 manager_->EnableLoginLayouts( 455 manager_->GetActiveIMEState()->EnableLoginLayouts(
446 "ja", 456 "ja", manager_->GetInputMethodUtil()->GetHardwareLoginInputMethodIds());
447 manager_->GetInputMethodUtil()->GetHardwareLoginInputMethodIds());
448 // "xkb:us::eng" is not needed, hence 1. 457 // "xkb:us::eng" is not needed, hence 1.
449 EXPECT_EQ(1U, manager_->GetNumActiveInputMethods()); 458 EXPECT_EQ(1U, manager_->GetActiveIMEState()->GetNumActiveInputMethods());
450 459
451 // The physical layout is Russian. 460 // The physical layout is Russian.
452 manager_->GetInputMethodUtil()->SetHardwareKeyboardLayoutForTesting( 461 manager_->GetInputMethodUtil()->SetHardwareKeyboardLayoutForTesting(
453 "xkb:ru::rus"); 462 "xkb:ru::rus");
454 manager_->EnableLoginLayouts( 463 manager_->GetActiveIMEState()->EnableLoginLayouts(
455 "ru", 464 "ru", manager_->GetInputMethodUtil()->GetHardwareLoginInputMethodIds());
456 manager_->GetInputMethodUtil()->GetHardwareLoginInputMethodIds());
457 // "xkb:us::eng" only. 465 // "xkb:us::eng" only.
458 EXPECT_EQ(1U, manager_->GetNumActiveInputMethods()); 466 EXPECT_EQ(1U, manager_->GetActiveIMEState()->GetNumActiveInputMethods());
459 EXPECT_EQ(ImeIdFromEngineId("xkb:us::eng"), 467 EXPECT_EQ(ImeIdFromEngineId("xkb:us::eng"),
460 manager_->GetActiveInputMethodIds().front()); 468 manager_->GetActiveIMEState()->GetActiveInputMethodIds().front());
461 } 469 }
462 470
463 TEST_F(InputMethodManagerImplTest, TestEnableMultipleHardwareKeyboardLayout) { 471 TEST_F(InputMethodManagerImplTest, TestEnableMultipleHardwareKeyboardLayout) {
464 InitComponentExtension(); 472 InitComponentExtension();
465 // The physical layouts are French and Hungarian. 473 // The physical layouts are French and Hungarian.
466 manager_->GetInputMethodUtil()->SetHardwareKeyboardLayoutForTesting( 474 manager_->GetInputMethodUtil()->SetHardwareKeyboardLayoutForTesting(
467 "xkb:fr::fra,xkb:hu::hun"); 475 "xkb:fr::fra,xkb:hu::hun");
468 manager_->EnableLoginLayouts( 476 manager_->GetActiveIMEState()->EnableLoginLayouts(
469 "en-US", 477 "en-US",
470 manager_->GetInputMethodUtil()->GetHardwareLoginInputMethodIds()); 478 manager_->GetInputMethodUtil()->GetHardwareLoginInputMethodIds());
471 // 5 + French + Hungarian 479 // 5 + French + Hungarian
472 EXPECT_EQ(7U, manager_->GetNumActiveInputMethods()); 480 EXPECT_EQ(7U, manager_->GetActiveIMEState()->GetNumActiveInputMethods());
473 } 481 }
474 482
475 TEST_F(InputMethodManagerImplTest, 483 TEST_F(InputMethodManagerImplTest,
476 TestEnableMultipleHardwareKeyboardLayout_NoLoginKeyboard) { 484 TestEnableMultipleHardwareKeyboardLayout_NoLoginKeyboard) {
477 InitComponentExtension(); 485 InitComponentExtension();
478 // The physical layouts are English (US) and Russian. 486 // The physical layouts are English (US) and Russian.
479 manager_->GetInputMethodUtil()->SetHardwareKeyboardLayoutForTesting( 487 manager_->GetInputMethodUtil()->SetHardwareKeyboardLayoutForTesting(
480 "xkb:us::eng,xkb:ru::rus"); 488 "xkb:us::eng,xkb:ru::rus");
481 manager_->EnableLoginLayouts( 489 manager_->GetActiveIMEState()->EnableLoginLayouts(
482 "ru", 490 "ru", manager_->GetInputMethodUtil()->GetHardwareLoginInputMethodIds());
483 manager_->GetInputMethodUtil()->GetHardwareLoginInputMethodIds());
484 // xkb:us:eng 491 // xkb:us:eng
485 EXPECT_EQ(1U, manager_->GetNumActiveInputMethods()); 492 EXPECT_EQ(1U, manager_->GetActiveIMEState()->GetNumActiveInputMethods());
486 } 493 }
487 494
488 TEST_F(InputMethodManagerImplTest, TestActiveInputMethods) { 495 TEST_F(InputMethodManagerImplTest, TestActiveInputMethods) {
489 InitComponentExtension(); 496 InitComponentExtension();
490 std::vector<std::string> keyboard_layouts; 497 std::vector<std::string> keyboard_layouts;
491 manager_->EnableLoginLayouts("ja", keyboard_layouts); // Japanese 498 manager_->GetActiveIMEState()->EnableLoginLayouts(
492 EXPECT_EQ(2U, manager_->GetNumActiveInputMethods()); 499 "ja", keyboard_layouts); // Japanese
500 EXPECT_EQ(2U, manager_->GetActiveIMEState()->GetNumActiveInputMethods());
493 scoped_ptr<InputMethodDescriptors> methods( 501 scoped_ptr<InputMethodDescriptors> methods(
494 manager_->GetActiveInputMethods()); 502 manager_->GetActiveIMEState()->GetActiveInputMethods());
495 ASSERT_TRUE(methods.get()); 503 ASSERT_TRUE(methods.get());
496 EXPECT_EQ(2U, methods->size()); 504 EXPECT_EQ(2U, methods->size());
497 const InputMethodDescriptor* id_to_find = 505 const InputMethodDescriptor* id_to_find =
498 manager_->GetInputMethodUtil()->GetInputMethodDescriptorFromId( 506 manager_->GetInputMethodUtil()->GetInputMethodDescriptorFromId(
499 ImeIdFromEngineId("xkb:us::eng")); 507 ImeIdFromEngineId("xkb:us::eng"));
500 EXPECT_TRUE(id_to_find && Contain(*methods.get(), *id_to_find)); 508 EXPECT_TRUE(id_to_find && Contain(*methods.get(), *id_to_find));
501 id_to_find = manager_->GetInputMethodUtil()->GetInputMethodDescriptorFromId( 509 id_to_find = manager_->GetInputMethodUtil()->GetInputMethodDescriptorFromId(
502 ImeIdFromEngineId("xkb:jp::jpn")); 510 ImeIdFromEngineId("xkb:jp::jpn"));
503 EXPECT_TRUE(id_to_find && Contain(*methods.get(), *id_to_find)); 511 EXPECT_TRUE(id_to_find && Contain(*methods.get(), *id_to_find));
504 } 512 }
505 513
506 TEST_F(InputMethodManagerImplTest, TestEnableTwoLayouts) { 514 TEST_F(InputMethodManagerImplTest, TestEnableTwoLayouts) {
507 // For http://crbug.com/19655#c11 - (8), step 6. 515 // For http://crbug.com/19655#c11 - (8), step 6.
508 TestObserver observer; 516 TestObserver observer;
509 manager_->AddObserver(&observer); 517 manager_->AddObserver(&observer);
510 InitComponentExtension(); 518 InitComponentExtension();
511 manager_->SetState(InputMethodManager::STATE_BROWSER_SCREEN); 519 manager_->SetUISessionState(InputMethodManager::STATE_BROWSER_SCREEN);
512 std::vector<std::string> ids; 520 std::vector<std::string> ids;
513 ids.push_back(ImeIdFromEngineId("xkb:us:dvorak:eng")); 521 ids.push_back(ImeIdFromEngineId("xkb:us:dvorak:eng"));
514 ids.push_back(ImeIdFromEngineId("xkb:us:colemak:eng")); 522 ids.push_back(ImeIdFromEngineId("xkb:us:colemak:eng"));
515 EXPECT_TRUE(manager_->ReplaceEnabledInputMethods(ids)); 523 EXPECT_TRUE(manager_->GetActiveIMEState()->ReplaceEnabledInputMethods(ids));
516 EXPECT_EQ(2U, manager_->GetNumActiveInputMethods()); 524 EXPECT_EQ(2U, manager_->GetActiveIMEState()->GetNumActiveInputMethods());
517 // Since all the IDs added avobe are keyboard layouts, Start() should not be 525 // Since all the IDs added avobe are keyboard layouts, Start() should not be
518 // called. 526 // called.
519 EXPECT_EQ(1, observer.input_method_changed_count_); 527 EXPECT_EQ(1, observer.input_method_changed_count_);
520 EXPECT_EQ(ImeIdFromEngineId(ids[0]), manager_->GetCurrentInputMethod().id()); 528 EXPECT_EQ(ImeIdFromEngineId(ids[0]),
529 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
521 EXPECT_EQ("us(dvorak)", keyboard_->last_layout_); 530 EXPECT_EQ("us(dvorak)", keyboard_->last_layout_);
522 // Disable Dvorak. 531 // Disable Dvorak.
523 ids.erase(ids.begin()); 532 ids.erase(ids.begin());
524 EXPECT_TRUE(manager_->ReplaceEnabledInputMethods(ids)); 533 EXPECT_TRUE(manager_->GetActiveIMEState()->ReplaceEnabledInputMethods(ids));
525 EXPECT_EQ(1U, manager_->GetNumActiveInputMethods()); 534 EXPECT_EQ(1U, manager_->GetActiveIMEState()->GetNumActiveInputMethods());
526 EXPECT_EQ(2, observer.input_method_changed_count_); 535 EXPECT_EQ(2, observer.input_method_changed_count_);
527 EXPECT_EQ(ImeIdFromEngineId(ids[0]), // colemak 536 EXPECT_EQ(ImeIdFromEngineId(ids[0]), // colemak
528 manager_->GetCurrentInputMethod().id()); 537 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
529 EXPECT_EQ("us(colemak)", keyboard_->last_layout_); 538 EXPECT_EQ("us(colemak)", keyboard_->last_layout_);
530 manager_->RemoveObserver(&observer); 539 manager_->RemoveObserver(&observer);
531 } 540 }
532 541
533 TEST_F(InputMethodManagerImplTest, TestEnableThreeLayouts) { 542 TEST_F(InputMethodManagerImplTest, TestEnableThreeLayouts) {
534 // For http://crbug.com/19655#c11 - (9). 543 // For http://crbug.com/19655#c11 - (9).
535 TestObserver observer; 544 TestObserver observer;
536 manager_->AddObserver(&observer); 545 manager_->AddObserver(&observer);
537 InitComponentExtension(); 546 InitComponentExtension();
538 manager_->SetState(InputMethodManager::STATE_BROWSER_SCREEN); 547 manager_->SetUISessionState(InputMethodManager::STATE_BROWSER_SCREEN);
539 std::vector<std::string> ids; 548 std::vector<std::string> ids;
540 ids.push_back(ImeIdFromEngineId("xkb:us::eng")); 549 ids.push_back(ImeIdFromEngineId("xkb:us::eng"));
541 ids.push_back(ImeIdFromEngineId("xkb:us:dvorak:eng")); 550 ids.push_back(ImeIdFromEngineId("xkb:us:dvorak:eng"));
542 ids.push_back(ImeIdFromEngineId("xkb:us:colemak:eng")); 551 ids.push_back(ImeIdFromEngineId("xkb:us:colemak:eng"));
543 EXPECT_TRUE(manager_->ReplaceEnabledInputMethods(ids)); 552 EXPECT_TRUE(manager_->GetActiveIMEState()->ReplaceEnabledInputMethods(ids));
544 EXPECT_EQ(3U, manager_->GetNumActiveInputMethods()); 553 EXPECT_EQ(3U, manager_->GetActiveIMEState()->GetNumActiveInputMethods());
545 EXPECT_EQ(1, observer.input_method_changed_count_); 554 EXPECT_EQ(1, observer.input_method_changed_count_);
546 EXPECT_EQ(ImeIdFromEngineId(ids[0]), manager_->GetCurrentInputMethod().id()); 555 EXPECT_EQ(ImeIdFromEngineId(ids[0]),
556 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
547 EXPECT_EQ("us", keyboard_->last_layout_); 557 EXPECT_EQ("us", keyboard_->last_layout_);
548 // Switch to Dvorak. 558 // Switch to Dvorak.
549 manager_->SwitchToNextInputMethod(); 559 manager_->GetActiveIMEState()->SwitchToNextInputMethod();
550 EXPECT_EQ(2, observer.input_method_changed_count_); 560 EXPECT_EQ(2, observer.input_method_changed_count_);
551 EXPECT_EQ(ImeIdFromEngineId(ids[1]), manager_->GetCurrentInputMethod().id()); 561 EXPECT_EQ(ImeIdFromEngineId(ids[1]),
562 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
552 EXPECT_EQ("us(dvorak)", keyboard_->last_layout_); 563 EXPECT_EQ("us(dvorak)", keyboard_->last_layout_);
553 // Disable Dvorak. 564 // Disable Dvorak.
554 ids.erase(ids.begin() + 1); 565 ids.erase(ids.begin() + 1);
555 EXPECT_TRUE(manager_->ReplaceEnabledInputMethods(ids)); 566 EXPECT_TRUE(manager_->GetActiveIMEState()->ReplaceEnabledInputMethods(ids));
556 EXPECT_EQ(2U, manager_->GetNumActiveInputMethods()); 567 EXPECT_EQ(2U, manager_->GetActiveIMEState()->GetNumActiveInputMethods());
557 EXPECT_EQ(3, observer.input_method_changed_count_); 568 EXPECT_EQ(3, observer.input_method_changed_count_);
558 EXPECT_EQ(ImeIdFromEngineId(ids[0]), // US Qwerty 569 EXPECT_EQ(ImeIdFromEngineId(ids[0]), // US Qwerty
559 manager_->GetCurrentInputMethod().id()); 570 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
560 EXPECT_EQ("us", keyboard_->last_layout_); 571 EXPECT_EQ("us", keyboard_->last_layout_);
561 manager_->RemoveObserver(&observer); 572 manager_->RemoveObserver(&observer);
562 } 573 }
563 574
564 TEST_F(InputMethodManagerImplTest, TestEnableLayoutAndIme) { 575 TEST_F(InputMethodManagerImplTest, TestEnableLayoutAndIme) {
565 // For http://crbug.com/19655#c11 - (10). 576 // For http://crbug.com/19655#c11 - (10).
566 TestObserver observer; 577 TestObserver observer;
567 manager_->AddObserver(&observer); 578 manager_->AddObserver(&observer);
568 InitComponentExtension(); 579 InitComponentExtension();
569 manager_->SetState(InputMethodManager::STATE_BROWSER_SCREEN); 580 manager_->SetUISessionState(InputMethodManager::STATE_BROWSER_SCREEN);
570 std::vector<std::string> ids; 581 std::vector<std::string> ids;
571 ids.push_back(ImeIdFromEngineId("xkb:us:dvorak:eng")); 582 ids.push_back(ImeIdFromEngineId("xkb:us:dvorak:eng"));
572 ids.push_back(ImeIdFromEngineId(kNaclMozcUsId)); 583 ids.push_back(ImeIdFromEngineId(kNaclMozcUsId));
573 EXPECT_TRUE(manager_->ReplaceEnabledInputMethods(ids)); 584 EXPECT_TRUE(manager_->GetActiveIMEState()->ReplaceEnabledInputMethods(ids));
574 EXPECT_EQ(1, observer.input_method_changed_count_); 585 EXPECT_EQ(1, observer.input_method_changed_count_);
575 EXPECT_EQ(ImeIdFromEngineId(ids[0]), manager_->GetCurrentInputMethod().id()); 586 EXPECT_EQ(ImeIdFromEngineId(ids[0]),
587 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
576 EXPECT_EQ("us(dvorak)", keyboard_->last_layout_); 588 EXPECT_EQ("us(dvorak)", keyboard_->last_layout_);
577 // Switch to Mozc 589 // Switch to Mozc
578 manager_->SwitchToNextInputMethod(); 590 manager_->GetActiveIMEState()->SwitchToNextInputMethod();
579 EXPECT_EQ(2, observer.input_method_changed_count_); 591 EXPECT_EQ(2, observer.input_method_changed_count_);
580 EXPECT_EQ(ImeIdFromEngineId(ids[1]), manager_->GetCurrentInputMethod().id()); 592 EXPECT_EQ(ImeIdFromEngineId(ids[1]),
593 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
581 EXPECT_EQ("us", keyboard_->last_layout_); 594 EXPECT_EQ("us", keyboard_->last_layout_);
582 // Disable Mozc. 595 // Disable Mozc.
583 ids.erase(ids.begin() + 1); 596 ids.erase(ids.begin() + 1);
584 EXPECT_TRUE(manager_->ReplaceEnabledInputMethods(ids)); 597 EXPECT_TRUE(manager_->GetActiveIMEState()->ReplaceEnabledInputMethods(ids));
585 EXPECT_EQ(1U, manager_->GetNumActiveInputMethods()); 598 EXPECT_EQ(1U, manager_->GetActiveIMEState()->GetNumActiveInputMethods());
586 EXPECT_EQ(ImeIdFromEngineId(ids[0]), manager_->GetCurrentInputMethod().id()); 599 EXPECT_EQ(ImeIdFromEngineId(ids[0]),
600 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
587 EXPECT_EQ("us(dvorak)", keyboard_->last_layout_); 601 EXPECT_EQ("us(dvorak)", keyboard_->last_layout_);
588 } 602 }
589 603
590 TEST_F(InputMethodManagerImplTest, TestEnableLayoutAndIme2) { 604 TEST_F(InputMethodManagerImplTest, TestEnableLayoutAndIme2) {
591 // For http://crbug.com/19655#c11 - (11). 605 // For http://crbug.com/19655#c11 - (11).
592 TestObserver observer; 606 TestObserver observer;
593 manager_->AddObserver(&observer); 607 manager_->AddObserver(&observer);
594 InitComponentExtension(); 608 InitComponentExtension();
595 manager_->SetState(InputMethodManager::STATE_BROWSER_SCREEN); 609 manager_->SetUISessionState(InputMethodManager::STATE_BROWSER_SCREEN);
596 std::vector<std::string> ids; 610 std::vector<std::string> ids;
597 ids.push_back(ImeIdFromEngineId("xkb:us:dvorak:eng")); 611 ids.push_back(ImeIdFromEngineId("xkb:us:dvorak:eng"));
598 ids.push_back(ImeIdFromEngineId(kNaclMozcUsId)); 612 ids.push_back(ImeIdFromEngineId(kNaclMozcUsId));
599 EXPECT_TRUE(manager_->ReplaceEnabledInputMethods(ids)); 613 EXPECT_TRUE(manager_->GetActiveIMEState()->ReplaceEnabledInputMethods(ids));
600 EXPECT_EQ(1, observer.input_method_changed_count_); 614 EXPECT_EQ(1, observer.input_method_changed_count_);
601 EXPECT_EQ(ImeIdFromEngineId(ids[0]), manager_->GetCurrentInputMethod().id()); 615 EXPECT_EQ(ImeIdFromEngineId(ids[0]),
616 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
602 EXPECT_EQ("us(dvorak)", keyboard_->last_layout_); 617 EXPECT_EQ("us(dvorak)", keyboard_->last_layout_);
603 618
604 // Disable Dvorak. 619 // Disable Dvorak.
605 ids.erase(ids.begin()); 620 ids.erase(ids.begin());
606 EXPECT_TRUE(manager_->ReplaceEnabledInputMethods(ids)); 621 EXPECT_TRUE(manager_->GetActiveIMEState()->ReplaceEnabledInputMethods(ids));
607 EXPECT_EQ(1U, manager_->GetNumActiveInputMethods()); 622 EXPECT_EQ(1U, manager_->GetActiveIMEState()->GetNumActiveInputMethods());
608 EXPECT_EQ(ImeIdFromEngineId(ids[0]), // Mozc 623 EXPECT_EQ(ImeIdFromEngineId(ids[0]), // Mozc
609 manager_->GetCurrentInputMethod().id()); 624 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
610 EXPECT_EQ("us", keyboard_->last_layout_); 625 EXPECT_EQ("us", keyboard_->last_layout_);
611 manager_->RemoveObserver(&observer); 626 manager_->RemoveObserver(&observer);
612 } 627 }
613 628
614 TEST_F(InputMethodManagerImplTest, TestEnableImes) { 629 TEST_F(InputMethodManagerImplTest, TestEnableImes) {
615 TestObserver observer; 630 TestObserver observer;
616 manager_->AddObserver(&observer); 631 manager_->AddObserver(&observer);
617 InitComponentExtension(); 632 InitComponentExtension();
618 manager_->SetState(InputMethodManager::STATE_BROWSER_SCREEN); 633 manager_->SetUISessionState(InputMethodManager::STATE_BROWSER_SCREEN);
619 std::vector<std::string> ids; 634 std::vector<std::string> ids;
620 ids.push_back(ImeIdFromEngineId(kExt2Engine1Id)); 635 ids.push_back(ImeIdFromEngineId(kExt2Engine1Id));
621 ids.push_back("mozc-dv"); 636 ids.push_back("mozc-dv");
622 EXPECT_TRUE(manager_->ReplaceEnabledInputMethods(ids)); 637 EXPECT_TRUE(manager_->GetActiveIMEState()->ReplaceEnabledInputMethods(ids));
623 EXPECT_EQ(1, observer.input_method_changed_count_); 638 EXPECT_EQ(1, observer.input_method_changed_count_);
624 EXPECT_EQ(ImeIdFromEngineId(ids[0]), manager_->GetCurrentInputMethod().id()); 639 EXPECT_EQ(ImeIdFromEngineId(ids[0]),
640 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
625 EXPECT_EQ("us", keyboard_->last_layout_); 641 EXPECT_EQ("us", keyboard_->last_layout_);
626 manager_->RemoveObserver(&observer); 642 manager_->RemoveObserver(&observer);
627 } 643 }
628 644
629 TEST_F(InputMethodManagerImplTest, TestEnableUnknownIds) { 645 TEST_F(InputMethodManagerImplTest, TestEnableUnknownIds) {
630 TestObserver observer; 646 TestObserver observer;
631 manager_->AddObserver(&observer); 647 manager_->AddObserver(&observer);
632 manager_->SetState(InputMethodManager::STATE_BROWSER_SCREEN); 648 InitComponentExtension();
649 manager_->SetUISessionState(InputMethodManager::STATE_BROWSER_SCREEN);
633 std::vector<std::string> ids; 650 std::vector<std::string> ids;
634 ids.push_back("xkb:tl::tlh"); // Klingon, which is not supported. 651 ids.push_back("xkb:tl::tlh"); // Klingon, which is not supported.
635 ids.push_back("unknown-super-cool-ime"); 652 ids.push_back("unknown-super-cool-ime");
636 EXPECT_FALSE(manager_->ReplaceEnabledInputMethods(ids)); 653 EXPECT_FALSE(manager_->GetActiveIMEState()->ReplaceEnabledInputMethods(ids));
637 654
638 // TODO(yusukes): Should we fall back to the hardware keyboard layout in this 655 // TODO(yusukes): Should we fall back to the hardware keyboard layout in this
639 // case? 656 // case?
640 EXPECT_EQ(0, observer.input_method_changed_count_); 657 EXPECT_EQ(0, observer.input_method_changed_count_);
641 658
642 manager_->RemoveObserver(&observer); 659 manager_->RemoveObserver(&observer);
643 } 660 }
644 661
645 TEST_F(InputMethodManagerImplTest, TestEnableLayoutsThenLock) { 662 TEST_F(InputMethodManagerImplTest, TestEnableLayoutsThenLock) {
646 // For http://crbug.com/19655#c11 - (14). 663 // For http://crbug.com/19655#c11 - (14).
647 TestObserver observer; 664 TestObserver observer;
648 manager_->AddObserver(&observer); 665 manager_->AddObserver(&observer);
649 InitComponentExtension(); 666 InitComponentExtension();
650 manager_->SetState(InputMethodManager::STATE_BROWSER_SCREEN); 667 manager_->SetUISessionState(InputMethodManager::STATE_BROWSER_SCREEN);
651 std::vector<std::string> ids; 668 std::vector<std::string> ids;
652 ids.push_back(ImeIdFromEngineId("xkb:us::eng")); 669 ids.push_back(ImeIdFromEngineId("xkb:us::eng"));
653 ids.push_back(ImeIdFromEngineId("xkb:us:dvorak:eng")); 670 ids.push_back(ImeIdFromEngineId("xkb:us:dvorak:eng"));
654 EXPECT_TRUE(manager_->ReplaceEnabledInputMethods(ids)); 671 EXPECT_TRUE(manager_->GetActiveIMEState()->ReplaceEnabledInputMethods(ids));
655 EXPECT_EQ(2U, manager_->GetNumActiveInputMethods()); 672 EXPECT_EQ(2U, manager_->GetActiveIMEState()->GetNumActiveInputMethods());
656 EXPECT_EQ(1, observer.input_method_changed_count_); 673 EXPECT_EQ(1, observer.input_method_changed_count_);
657 EXPECT_EQ(ImeIdFromEngineId(ids[0]), manager_->GetCurrentInputMethod().id()); 674 EXPECT_EQ(ImeIdFromEngineId(ids[0]),
675 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
658 EXPECT_EQ("us", keyboard_->last_layout_); 676 EXPECT_EQ("us", keyboard_->last_layout_);
659 677
660 // Switch to Dvorak. 678 // Switch to Dvorak.
661 manager_->SwitchToNextInputMethod(); 679 manager_->GetActiveIMEState()->SwitchToNextInputMethod();
662 EXPECT_EQ(2, observer.input_method_changed_count_); 680 EXPECT_EQ(2, observer.input_method_changed_count_);
663 EXPECT_EQ(ImeIdFromEngineId(ids[1]), manager_->GetCurrentInputMethod().id()); 681 EXPECT_EQ(ImeIdFromEngineId(ids[1]),
682 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
664 EXPECT_EQ("us(dvorak)", keyboard_->last_layout_); 683 EXPECT_EQ("us(dvorak)", keyboard_->last_layout_);
665 684
666 // Lock screen 685 // Lock screen
667 manager_->SetState(InputMethodManager::STATE_LOCK_SCREEN); 686 manager_->SetUISessionState(InputMethodManager::STATE_LOCK_SCREEN);
668 EXPECT_EQ(2U, manager_->GetNumActiveInputMethods()); 687 EXPECT_EQ(2U, manager_->GetActiveIMEState()->GetNumActiveInputMethods());
669 EXPECT_EQ(ImeIdFromEngineId(ids[1]), // still Dvorak 688 EXPECT_EQ(ImeIdFromEngineId(ids[1]), // still Dvorak
670 manager_->GetCurrentInputMethod().id()); 689 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
671 EXPECT_EQ("us(dvorak)", keyboard_->last_layout_); 690 EXPECT_EQ("us(dvorak)", keyboard_->last_layout_);
672 // Switch back to Qwerty. 691 // Switch back to Qwerty.
673 manager_->SwitchToNextInputMethod(); 692 manager_->GetActiveIMEState()->SwitchToNextInputMethod();
674 EXPECT_EQ(ImeIdFromEngineId(ids[0]), manager_->GetCurrentInputMethod().id()); 693 EXPECT_EQ(ImeIdFromEngineId(ids[0]),
694 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
675 EXPECT_EQ("us", keyboard_->last_layout_); 695 EXPECT_EQ("us", keyboard_->last_layout_);
676 696
677 // Unlock screen. The original state, Dvorak, is restored. 697 // Unlock screen. The original state, Dvorak, is restored.
678 manager_->SetState(InputMethodManager::STATE_BROWSER_SCREEN); 698 manager_->SetUISessionState(InputMethodManager::STATE_BROWSER_SCREEN);
679 EXPECT_EQ(2U, manager_->GetNumActiveInputMethods()); 699 EXPECT_EQ(2U, manager_->GetActiveIMEState()->GetNumActiveInputMethods());
680 EXPECT_EQ(ImeIdFromEngineId(ids[1]), manager_->GetCurrentInputMethod().id()); 700 EXPECT_EQ(ImeIdFromEngineId(ids[1]),
701 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
681 EXPECT_EQ("us(dvorak)", keyboard_->last_layout_); 702 EXPECT_EQ("us(dvorak)", keyboard_->last_layout_);
682 703
683 manager_->RemoveObserver(&observer); 704 manager_->RemoveObserver(&observer);
684 } 705 }
685 706
686 TEST_F(InputMethodManagerImplTest, SwitchInputMethodTest) { 707 TEST_F(InputMethodManagerImplTest, SwitchInputMethodTest) {
687 // For http://crbug.com/19655#c11 - (15). 708 // For http://crbug.com/19655#c11 - (15).
688 TestObserver observer; 709 TestObserver observer;
689 manager_->AddObserver(&observer); 710 manager_->AddObserver(&observer);
690 InitComponentExtension(); 711 InitComponentExtension();
691 manager_->SetState(InputMethodManager::STATE_BROWSER_SCREEN); 712 manager_->SetUISessionState(InputMethodManager::STATE_BROWSER_SCREEN);
692 std::vector<std::string> ids; 713 std::vector<std::string> ids;
693 ids.push_back(ImeIdFromEngineId("xkb:us:dvorak:eng")); 714 ids.push_back(ImeIdFromEngineId("xkb:us:dvorak:eng"));
694 ids.push_back(ImeIdFromEngineId(kExt2Engine2Id)); 715 ids.push_back(ImeIdFromEngineId(kExt2Engine2Id));
695 ids.push_back(ImeIdFromEngineId(kExt2Engine1Id)); 716 ids.push_back(ImeIdFromEngineId(kExt2Engine1Id));
696 EXPECT_TRUE(manager_->ReplaceEnabledInputMethods(ids)); 717 EXPECT_TRUE(manager_->GetActiveIMEState()->ReplaceEnabledInputMethods(ids));
697 EXPECT_EQ(3U, manager_->GetNumActiveInputMethods()); 718 EXPECT_EQ(3U, manager_->GetActiveIMEState()->GetNumActiveInputMethods());
698 EXPECT_EQ(1, observer.input_method_changed_count_); 719 EXPECT_EQ(1, observer.input_method_changed_count_);
699 EXPECT_EQ(ImeIdFromEngineId(ids[0]), manager_->GetCurrentInputMethod().id()); 720 EXPECT_EQ(ImeIdFromEngineId(ids[0]),
721 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
700 EXPECT_EQ("us(dvorak)", keyboard_->last_layout_); 722 EXPECT_EQ("us(dvorak)", keyboard_->last_layout_);
701 723
702 // Switch to Mozc. 724 // Switch to Mozc.
703 manager_->SwitchToNextInputMethod(); 725 manager_->GetActiveIMEState()->SwitchToNextInputMethod();
704 EXPECT_EQ(2, observer.input_method_changed_count_); 726 EXPECT_EQ(2, observer.input_method_changed_count_);
705 EXPECT_EQ(ImeIdFromEngineId(ids[1]), manager_->GetCurrentInputMethod().id()); 727 EXPECT_EQ(ImeIdFromEngineId(ids[1]),
728 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
706 EXPECT_EQ("us(dvorak)", keyboard_->last_layout_); 729 EXPECT_EQ("us(dvorak)", keyboard_->last_layout_);
707 730
708 // Lock screen 731 // Lock screen
709 manager_->SetState(InputMethodManager::STATE_LOCK_SCREEN); 732 manager_->SetUISessionState(InputMethodManager::STATE_LOCK_SCREEN);
710 EXPECT_EQ(2U, manager_->GetNumActiveInputMethods()); // Qwerty+Dvorak. 733 EXPECT_EQ(2U,
734 manager_->GetActiveIMEState()
735 ->GetNumActiveInputMethods()); // Qwerty+Dvorak.
711 EXPECT_EQ(ImeIdFromEngineId("xkb:us:dvorak:eng"), 736 EXPECT_EQ(ImeIdFromEngineId("xkb:us:dvorak:eng"),
712 manager_->GetCurrentInputMethod().id()); 737 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
713 EXPECT_EQ("us(dvorak)", keyboard_->last_layout_); 738 EXPECT_EQ("us(dvorak)", keyboard_->last_layout_);
714 manager_->SwitchToNextInputMethod(); 739 manager_->GetActiveIMEState()->SwitchToNextInputMethod();
715 EXPECT_EQ(ImeIdFromEngineId("xkb:us::eng"), // The hardware keyboard layout. 740 EXPECT_EQ(ImeIdFromEngineId("xkb:us::eng"), // The hardware keyboard layout.
716 manager_->GetCurrentInputMethod().id()); 741 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
717 EXPECT_EQ("us", keyboard_->last_layout_); 742 EXPECT_EQ("us", keyboard_->last_layout_);
718 743
719 // Unlock screen. The original state, pinyin-dv, is restored. 744 // Unlock screen. The original state, pinyin-dv, is restored.
720 manager_->SetState(InputMethodManager::STATE_BROWSER_SCREEN); 745 manager_->SetUISessionState(InputMethodManager::STATE_BROWSER_SCREEN);
721 EXPECT_EQ(3U, manager_->GetNumActiveInputMethods()); // Dvorak and 2 IMEs. 746 EXPECT_EQ(3U,
722 EXPECT_EQ(ImeIdFromEngineId(ids[1]), manager_->GetCurrentInputMethod().id()); 747 manager_->GetActiveIMEState()
748 ->GetNumActiveInputMethods()); // Dvorak and 2 IMEs.
749 EXPECT_EQ(ImeIdFromEngineId(ids[1]),
750 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
723 EXPECT_EQ("us(dvorak)", keyboard_->last_layout_); 751 EXPECT_EQ("us(dvorak)", keyboard_->last_layout_);
724 752
725 manager_->RemoveObserver(&observer); 753 manager_->RemoveObserver(&observer);
726 } 754 }
727 755
728 TEST_F(InputMethodManagerImplTest, TestXkbSetting) { 756 TEST_F(InputMethodManagerImplTest, TestXkbSetting) {
729 // For http://crbug.com/19655#c11 - (8), step 7-11. 757 // For http://crbug.com/19655#c11 - (8), step 7-11.
730 InitComponentExtension(); 758 InitComponentExtension();
731 manager_->SetState(InputMethodManager::STATE_BROWSER_SCREEN); 759 manager_->SetUISessionState(InputMethodManager::STATE_BROWSER_SCREEN);
732 std::vector<std::string> ids; 760 std::vector<std::string> ids;
733 ids.push_back(ImeIdFromEngineId("xkb:us:dvorak:eng")); 761 ids.push_back(ImeIdFromEngineId("xkb:us:dvorak:eng"));
734 ids.push_back(ImeIdFromEngineId("xkb:us:colemak:eng")); 762 ids.push_back(ImeIdFromEngineId("xkb:us:colemak:eng"));
735 ids.push_back(ImeIdFromEngineId(kNaclMozcJpId)); 763 ids.push_back(ImeIdFromEngineId(kNaclMozcJpId));
736 ids.push_back(ImeIdFromEngineId(kNaclMozcUsId)); 764 ids.push_back(ImeIdFromEngineId(kNaclMozcUsId));
737 EXPECT_TRUE(manager_->ReplaceEnabledInputMethods(ids)); 765 EXPECT_TRUE(manager_->GetActiveIMEState()->ReplaceEnabledInputMethods(ids));
738 EXPECT_EQ(4U, manager_->GetNumActiveInputMethods()); 766 EXPECT_EQ(4U, manager_->GetActiveIMEState()->GetNumActiveInputMethods());
739 EXPECT_EQ(1, keyboard_->set_current_keyboard_layout_by_name_count_); 767 EXPECT_EQ(1, keyboard_->set_current_keyboard_layout_by_name_count_);
740 // See input_methods.txt for an expected XKB layout name. 768 // See input_methods.txt for an expected XKB layout name.
741 EXPECT_EQ("us(dvorak)", keyboard_->last_layout_); 769 EXPECT_EQ("us(dvorak)", keyboard_->last_layout_);
742 manager_->SwitchToNextInputMethod(); 770 manager_->GetActiveIMEState()->SwitchToNextInputMethod();
743 EXPECT_EQ(2, keyboard_->set_current_keyboard_layout_by_name_count_); 771 EXPECT_EQ(2, keyboard_->set_current_keyboard_layout_by_name_count_);
744 EXPECT_EQ("us(colemak)", keyboard_->last_layout_); 772 EXPECT_EQ("us(colemak)", keyboard_->last_layout_);
745 manager_->SwitchToNextInputMethod(); 773 manager_->GetActiveIMEState()->SwitchToNextInputMethod();
746 EXPECT_EQ(3, keyboard_->set_current_keyboard_layout_by_name_count_); 774 EXPECT_EQ(3, keyboard_->set_current_keyboard_layout_by_name_count_);
747 EXPECT_EQ("jp", keyboard_->last_layout_); 775 EXPECT_EQ("jp", keyboard_->last_layout_);
748 manager_->SwitchToNextInputMethod(); 776 manager_->GetActiveIMEState()->SwitchToNextInputMethod();
749 EXPECT_EQ(4, keyboard_->set_current_keyboard_layout_by_name_count_); 777 EXPECT_EQ(4, keyboard_->set_current_keyboard_layout_by_name_count_);
750 EXPECT_EQ("us", keyboard_->last_layout_); 778 EXPECT_EQ("us", keyboard_->last_layout_);
751 manager_->SwitchToNextInputMethod(); 779 manager_->GetActiveIMEState()->SwitchToNextInputMethod();
752 EXPECT_EQ(5, keyboard_->set_current_keyboard_layout_by_name_count_); 780 EXPECT_EQ(5, keyboard_->set_current_keyboard_layout_by_name_count_);
753 EXPECT_EQ("us(dvorak)", keyboard_->last_layout_); 781 EXPECT_EQ("us(dvorak)", keyboard_->last_layout_);
754 // Disable Dvorak. 782 // Disable Dvorak.
755 ids.erase(ids.begin()); 783 ids.erase(ids.begin());
756 EXPECT_TRUE(manager_->ReplaceEnabledInputMethods(ids)); 784 EXPECT_TRUE(manager_->GetActiveIMEState()->ReplaceEnabledInputMethods(ids));
757 EXPECT_EQ(3U, manager_->GetNumActiveInputMethods()); 785 EXPECT_EQ(3U, manager_->GetActiveIMEState()->GetNumActiveInputMethods());
758 EXPECT_EQ(6, keyboard_->set_current_keyboard_layout_by_name_count_); 786 EXPECT_EQ(6, keyboard_->set_current_keyboard_layout_by_name_count_);
759 EXPECT_EQ("us(colemak)", keyboard_->last_layout_); 787 EXPECT_EQ("us(colemak)", keyboard_->last_layout_);
760 } 788 }
761 789
762 TEST_F(InputMethodManagerImplTest, TestActivateInputMethodMenuItem) { 790 TEST_F(InputMethodManagerImplTest, TestActivateInputMethodMenuItem) {
763 const std::string kKey = "key"; 791 const std::string kKey = "key";
764 ash::ime::InputMethodMenuItemList menu_list; 792 ash::ime::InputMethodMenuItemList menu_list;
765 menu_list.push_back(ash::ime::InputMethodMenuItem( 793 menu_list.push_back(ash::ime::InputMethodMenuItem(
766 kKey, "label", false, false)); 794 kKey, "label", false, false));
767 menu_manager_->SetCurrentInputMethodMenuItemList(menu_list); 795 menu_manager_->SetCurrentInputMethodMenuItemList(menu_list);
768 796
769 manager_->ActivateInputMethodMenuItem(kKey); 797 manager_->ActivateInputMethodMenuItem(kKey);
770 EXPECT_EQ(kKey, mock_engine_handler_->last_activated_property()); 798 EXPECT_EQ(kKey, mock_engine_handler_->last_activated_property());
771 799
772 // Key2 is not registered, so activated property should not be changed. 800 // Key2 is not registered, so activated property should not be changed.
773 manager_->ActivateInputMethodMenuItem("key2"); 801 manager_->ActivateInputMethodMenuItem("key2");
774 EXPECT_EQ(kKey, mock_engine_handler_->last_activated_property()); 802 EXPECT_EQ(kKey, mock_engine_handler_->last_activated_property());
775 } 803 }
776 804
777 TEST_F(InputMethodManagerImplTest, TestGetCurrentInputMethodProperties) { 805 TEST_F(InputMethodManagerImplTest, TestGetCurrentInputMethodProperties) {
778 InitComponentExtension(); 806 InitComponentExtension();
779 EXPECT_TRUE(menu_manager_->GetCurrentInputMethodMenuItemList().empty()); 807 EXPECT_TRUE(menu_manager_->GetCurrentInputMethodMenuItemList().empty());
780 808
781 manager_->SetState(InputMethodManager::STATE_BROWSER_SCREEN); 809 manager_->SetUISessionState(InputMethodManager::STATE_BROWSER_SCREEN);
782 std::vector<std::string> ids; 810 std::vector<std::string> ids;
783 ids.push_back(ImeIdFromEngineId("xkb:us::eng")); 811 ids.push_back(ImeIdFromEngineId("xkb:us::eng"));
784 ids.push_back(ImeIdFromEngineId(kNaclMozcUsId)); 812 ids.push_back(ImeIdFromEngineId(kNaclMozcUsId));
785 EXPECT_TRUE(manager_->ReplaceEnabledInputMethods(ids)); 813 EXPECT_TRUE(manager_->GetActiveIMEState()->ReplaceEnabledInputMethods(ids));
786 EXPECT_EQ(2U, manager_->GetNumActiveInputMethods()); 814 EXPECT_EQ(2U, manager_->GetActiveIMEState()->GetNumActiveInputMethods());
787 EXPECT_TRUE(menu_manager_->GetCurrentInputMethodMenuItemList().empty()); 815 EXPECT_TRUE(menu_manager_->GetCurrentInputMethodMenuItemList().empty());
788 manager_->ChangeInputMethod(ImeIdFromEngineId(kNaclMozcUsId)); 816 manager_->GetActiveIMEState()->ChangeInputMethod(
817 ImeIdFromEngineId(kNaclMozcUsId), false /* show_message */);
789 818
790 ash::ime::InputMethodMenuItemList current_property_list; 819 ash::ime::InputMethodMenuItemList current_property_list;
791 current_property_list.push_back(ash::ime::InputMethodMenuItem( 820 current_property_list.push_back(ash::ime::InputMethodMenuItem(
792 "key", "label", false, false)); 821 "key", "label", false, false));
793 menu_manager_->SetCurrentInputMethodMenuItemList(current_property_list); 822 menu_manager_->SetCurrentInputMethodMenuItemList(current_property_list);
794 823
795 ASSERT_EQ(1U, menu_manager_->GetCurrentInputMethodMenuItemList().size()); 824 ASSERT_EQ(1U, menu_manager_->GetCurrentInputMethodMenuItemList().size());
796 EXPECT_EQ("key", 825 EXPECT_EQ("key",
797 menu_manager_->GetCurrentInputMethodMenuItemList().at(0).key); 826 menu_manager_->GetCurrentInputMethodMenuItemList().at(0).key);
798 827
799 manager_->ChangeInputMethod("xkb:us::eng"); 828 manager_->GetActiveIMEState()->ChangeInputMethod("xkb:us::eng",
829 false /* show_message */);
800 EXPECT_TRUE(menu_manager_->GetCurrentInputMethodMenuItemList().empty()); 830 EXPECT_TRUE(menu_manager_->GetCurrentInputMethodMenuItemList().empty());
801 } 831 }
802 832
803 TEST_F(InputMethodManagerImplTest, TestGetCurrentInputMethodPropertiesTwoImes) { 833 TEST_F(InputMethodManagerImplTest, TestGetCurrentInputMethodPropertiesTwoImes) {
804 InitComponentExtension(); 834 InitComponentExtension();
805 EXPECT_TRUE(menu_manager_->GetCurrentInputMethodMenuItemList().empty()); 835 EXPECT_TRUE(menu_manager_->GetCurrentInputMethodMenuItemList().empty());
806 836
807 manager_->SetState(InputMethodManager::STATE_BROWSER_SCREEN); 837 manager_->SetUISessionState(InputMethodManager::STATE_BROWSER_SCREEN);
808 std::vector<std::string> ids; 838 std::vector<std::string> ids;
809 ids.push_back(ImeIdFromEngineId(kNaclMozcUsId)); // Japanese 839 ids.push_back(ImeIdFromEngineId(kNaclMozcUsId)); // Japanese
810 ids.push_back(ImeIdFromEngineId(kExt2Engine1Id)); // T-Chinese 840 ids.push_back(ImeIdFromEngineId(kExt2Engine1Id)); // T-Chinese
811 EXPECT_TRUE(manager_->ReplaceEnabledInputMethods(ids)); 841 EXPECT_TRUE(manager_->GetActiveIMEState()->ReplaceEnabledInputMethods(ids));
812 EXPECT_EQ(2U, manager_->GetNumActiveInputMethods()); 842 EXPECT_EQ(2U, manager_->GetActiveIMEState()->GetNumActiveInputMethods());
813 EXPECT_TRUE(menu_manager_->GetCurrentInputMethodMenuItemList().empty()); 843 EXPECT_TRUE(menu_manager_->GetCurrentInputMethodMenuItemList().empty());
814 844
815 ash::ime::InputMethodMenuItemList current_property_list; 845 ash::ime::InputMethodMenuItemList current_property_list;
816 current_property_list.push_back(ash::ime::InputMethodMenuItem("key-mozc", 846 current_property_list.push_back(ash::ime::InputMethodMenuItem("key-mozc",
817 "label", 847 "label",
818 false, 848 false,
819 false)); 849 false));
820 menu_manager_->SetCurrentInputMethodMenuItemList(current_property_list); 850 menu_manager_->SetCurrentInputMethodMenuItemList(current_property_list);
821 851
822 ASSERT_EQ(1U, menu_manager_->GetCurrentInputMethodMenuItemList().size()); 852 ASSERT_EQ(1U, menu_manager_->GetCurrentInputMethodMenuItemList().size());
823 EXPECT_EQ("key-mozc", 853 EXPECT_EQ("key-mozc",
824 menu_manager_->GetCurrentInputMethodMenuItemList().at(0).key); 854 menu_manager_->GetCurrentInputMethodMenuItemList().at(0).key);
825 855
826 manager_->ChangeInputMethod(ImeIdFromEngineId(kExt2Engine1Id)); 856 manager_->GetActiveIMEState()->ChangeInputMethod(
857 ImeIdFromEngineId(kExt2Engine1Id), false /* show_message */);
827 // Since the IME is changed, the property for mozc Japanese should be hidden. 858 // Since the IME is changed, the property for mozc Japanese should be hidden.
828 EXPECT_TRUE(menu_manager_->GetCurrentInputMethodMenuItemList().empty()); 859 EXPECT_TRUE(menu_manager_->GetCurrentInputMethodMenuItemList().empty());
829 860
830 // Asynchronous property update signal from mozc-chewing. 861 // Asynchronous property update signal from mozc-chewing.
831 current_property_list.clear(); 862 current_property_list.clear();
832 current_property_list.push_back(ash::ime::InputMethodMenuItem( 863 current_property_list.push_back(ash::ime::InputMethodMenuItem(
833 "key-chewing", "label", false, false)); 864 "key-chewing", "label", false, false));
834 menu_manager_->SetCurrentInputMethodMenuItemList(current_property_list); 865 menu_manager_->SetCurrentInputMethodMenuItemList(current_property_list);
835 ASSERT_EQ(1U, menu_manager_->GetCurrentInputMethodMenuItemList().size()); 866 ASSERT_EQ(1U, menu_manager_->GetCurrentInputMethodMenuItemList().size());
836 EXPECT_EQ("key-chewing", 867 EXPECT_EQ("key-chewing",
837 menu_manager_->GetCurrentInputMethodMenuItemList().at(0).key); 868 menu_manager_->GetCurrentInputMethodMenuItemList().at(0).key);
838 } 869 }
839 870
840 TEST_F(InputMethodManagerImplTest, TestNextInputMethod) { 871 TEST_F(InputMethodManagerImplTest, TestNextInputMethod) {
841 TestObserver observer; 872 TestObserver observer;
842 manager_->AddObserver(&observer); 873 manager_->AddObserver(&observer);
843 InitComponentExtension(); 874 InitComponentExtension();
844 std::vector<std::string> keyboard_layouts; 875 std::vector<std::string> keyboard_layouts;
845 keyboard_layouts.push_back(ImeIdFromEngineId("xkb:us::eng")); 876 keyboard_layouts.push_back(ImeIdFromEngineId("xkb:us::eng"));
846 // For http://crbug.com/19655#c11 - (1) 877 // For http://crbug.com/19655#c11 - (1)
847 manager_->EnableLoginLayouts("en-US", keyboard_layouts); 878 manager_->GetActiveIMEState()->EnableLoginLayouts("en-US", keyboard_layouts);
848 EXPECT_EQ(5U, manager_->GetNumActiveInputMethods()); 879 EXPECT_EQ(5U, manager_->GetActiveIMEState()->GetNumActiveInputMethods());
849 EXPECT_EQ(ImeIdFromEngineId("xkb:us::eng"), 880 EXPECT_EQ(ImeIdFromEngineId("xkb:us::eng"),
850 manager_->GetCurrentInputMethod().id()); 881 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
851 EXPECT_EQ("us", keyboard_->last_layout_); 882 EXPECT_EQ("us", keyboard_->last_layout_);
852 manager_->SwitchToNextInputMethod(); 883 manager_->GetActiveIMEState()->SwitchToNextInputMethod();
853 EXPECT_TRUE(observer.last_show_message_); 884 EXPECT_TRUE(observer.last_show_message_);
854 EXPECT_EQ(ImeIdFromEngineId("xkb:us:intl:eng"), 885 EXPECT_EQ(ImeIdFromEngineId("xkb:us:intl:eng"),
855 manager_->GetCurrentInputMethod().id()); 886 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
856 EXPECT_EQ("us(intl)", keyboard_->last_layout_); 887 EXPECT_EQ("us(intl)", keyboard_->last_layout_);
857 manager_->SwitchToNextInputMethod(); 888 manager_->GetActiveIMEState()->SwitchToNextInputMethod();
858 EXPECT_TRUE(observer.last_show_message_); 889 EXPECT_TRUE(observer.last_show_message_);
859 EXPECT_EQ(ImeIdFromEngineId("xkb:us:altgr-intl:eng"), 890 EXPECT_EQ(ImeIdFromEngineId("xkb:us:altgr-intl:eng"),
860 manager_->GetCurrentInputMethod().id()); 891 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
861 EXPECT_EQ("us(altgr-intl)", keyboard_->last_layout_); 892 EXPECT_EQ("us(altgr-intl)", keyboard_->last_layout_);
862 manager_->SwitchToNextInputMethod(); 893 manager_->GetActiveIMEState()->SwitchToNextInputMethod();
863 EXPECT_TRUE(observer.last_show_message_); 894 EXPECT_TRUE(observer.last_show_message_);
864 EXPECT_EQ(ImeIdFromEngineId("xkb:us:dvorak:eng"), 895 EXPECT_EQ(ImeIdFromEngineId("xkb:us:dvorak:eng"),
865 manager_->GetCurrentInputMethod().id()); 896 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
866 EXPECT_EQ("us(dvorak)", keyboard_->last_layout_); 897 EXPECT_EQ("us(dvorak)", keyboard_->last_layout_);
867 manager_->SwitchToNextInputMethod(); 898 manager_->GetActiveIMEState()->SwitchToNextInputMethod();
868 EXPECT_TRUE(observer.last_show_message_); 899 EXPECT_TRUE(observer.last_show_message_);
869 EXPECT_EQ(ImeIdFromEngineId("xkb:us:colemak:eng"), 900 EXPECT_EQ(ImeIdFromEngineId("xkb:us:colemak:eng"),
870 manager_->GetCurrentInputMethod().id()); 901 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
871 EXPECT_EQ("us(colemak)", keyboard_->last_layout_); 902 EXPECT_EQ("us(colemak)", keyboard_->last_layout_);
872 manager_->SwitchToNextInputMethod(); 903 manager_->GetActiveIMEState()->SwitchToNextInputMethod();
873 EXPECT_TRUE(observer.last_show_message_); 904 EXPECT_TRUE(observer.last_show_message_);
874 EXPECT_EQ(ImeIdFromEngineId("xkb:us::eng"), 905 EXPECT_EQ(ImeIdFromEngineId("xkb:us::eng"),
875 manager_->GetCurrentInputMethod().id()); 906 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
876 EXPECT_EQ("us", keyboard_->last_layout_); 907 EXPECT_EQ("us", keyboard_->last_layout_);
877 908
878 manager_->RemoveObserver(&observer); 909 manager_->RemoveObserver(&observer);
879 } 910 }
880 911
881 TEST_F(InputMethodManagerImplTest, TestPreviousInputMethod) { 912 TEST_F(InputMethodManagerImplTest, TestPreviousInputMethod) {
882 TestObserver observer; 913 TestObserver observer;
883 manager_->AddObserver(&observer); 914 manager_->AddObserver(&observer);
884 InitComponentExtension(); 915 InitComponentExtension();
885 916
886 ui::Accelerator keydown_accelerator(ui::VKEY_SPACE, ui::EF_CONTROL_DOWN); 917 ui::Accelerator keydown_accelerator(ui::VKEY_SPACE, ui::EF_CONTROL_DOWN);
887 keydown_accelerator.set_type(ui::ET_KEY_PRESSED); 918 keydown_accelerator.set_type(ui::ET_KEY_PRESSED);
888 ui::Accelerator keyup_accelerator(ui::VKEY_SPACE, ui::EF_CONTROL_DOWN); 919 ui::Accelerator keyup_accelerator(ui::VKEY_SPACE, ui::EF_CONTROL_DOWN);
889 keyup_accelerator.set_type(ui::ET_KEY_RELEASED); 920 keyup_accelerator.set_type(ui::ET_KEY_RELEASED);
890 921
891 std::vector<std::string> keyboard_layouts; 922 std::vector<std::string> keyboard_layouts;
892 keyboard_layouts.push_back(ImeIdFromEngineId("xkb:us::eng")); 923 keyboard_layouts.push_back(ImeIdFromEngineId("xkb:us::eng"));
893 manager_->EnableLoginLayouts("en-US", keyboard_layouts); 924 manager_->GetActiveIMEState()->EnableLoginLayouts("en-US", keyboard_layouts);
894 EXPECT_EQ(5U, manager_->GetNumActiveInputMethods()); 925 EXPECT_EQ(5U, manager_->GetActiveIMEState()->GetNumActiveInputMethods());
895 EXPECT_EQ(ImeIdFromEngineId("xkb:us::eng"), 926 EXPECT_EQ(ImeIdFromEngineId("xkb:us::eng"),
896 manager_->GetCurrentInputMethod().id()); 927 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
897 EXPECT_EQ("us", keyboard_->last_layout_); 928 EXPECT_EQ("us", keyboard_->last_layout_);
898 EXPECT_TRUE(manager_->SwitchToNextInputMethod()); 929 EXPECT_TRUE(manager_->GetActiveIMEState()->SwitchToNextInputMethod());
899 EXPECT_TRUE(observer.last_show_message_); 930 EXPECT_TRUE(observer.last_show_message_);
900 EXPECT_EQ(ImeIdFromEngineId("xkb:us:intl:eng"), 931 EXPECT_EQ(ImeIdFromEngineId("xkb:us:intl:eng"),
901 manager_->GetCurrentInputMethod().id()); 932 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
902 EXPECT_EQ("us(intl)", keyboard_->last_layout_); 933 EXPECT_EQ("us(intl)", keyboard_->last_layout_);
903 EXPECT_TRUE(manager_->SwitchToPreviousInputMethod(keydown_accelerator)); 934 EXPECT_TRUE(manager_->GetActiveIMEState()->SwitchToPreviousInputMethod(
904 EXPECT_TRUE(manager_->SwitchToPreviousInputMethod(keyup_accelerator)); 935 keydown_accelerator));
936 EXPECT_TRUE(manager_->GetActiveIMEState()->SwitchToPreviousInputMethod(
937 keyup_accelerator));
905 EXPECT_TRUE(observer.last_show_message_); 938 EXPECT_TRUE(observer.last_show_message_);
906 EXPECT_EQ(ImeIdFromEngineId("xkb:us::eng"), 939 EXPECT_EQ(ImeIdFromEngineId("xkb:us::eng"),
907 manager_->GetCurrentInputMethod().id()); 940 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
908 EXPECT_EQ("us", keyboard_->last_layout_); 941 EXPECT_EQ("us", keyboard_->last_layout_);
909 EXPECT_TRUE(manager_->SwitchToPreviousInputMethod(keydown_accelerator)); 942 EXPECT_TRUE(manager_->GetActiveIMEState()->SwitchToPreviousInputMethod(
910 EXPECT_TRUE(manager_->SwitchToPreviousInputMethod(keyup_accelerator)); 943 keydown_accelerator));
944 EXPECT_TRUE(manager_->GetActiveIMEState()->SwitchToPreviousInputMethod(
945 keyup_accelerator));
911 EXPECT_TRUE(observer.last_show_message_); 946 EXPECT_TRUE(observer.last_show_message_);
912 EXPECT_EQ(ImeIdFromEngineId("xkb:us:intl:eng"), 947 EXPECT_EQ(ImeIdFromEngineId("xkb:us:intl:eng"),
913 manager_->GetCurrentInputMethod().id()); 948 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
914 EXPECT_EQ("us(intl)", keyboard_->last_layout_); 949 EXPECT_EQ("us(intl)", keyboard_->last_layout_);
915 EXPECT_TRUE(manager_->SwitchToPreviousInputMethod(keydown_accelerator)); 950 EXPECT_TRUE(manager_->GetActiveIMEState()->SwitchToPreviousInputMethod(
916 EXPECT_TRUE(manager_->SwitchToPreviousInputMethod(keyup_accelerator)); 951 keydown_accelerator));
952 EXPECT_TRUE(manager_->GetActiveIMEState()->SwitchToPreviousInputMethod(
953 keyup_accelerator));
917 EXPECT_TRUE(observer.last_show_message_); 954 EXPECT_TRUE(observer.last_show_message_);
918 EXPECT_EQ(ImeIdFromEngineId("xkb:us::eng"), 955 EXPECT_EQ(ImeIdFromEngineId("xkb:us::eng"),
919 manager_->GetCurrentInputMethod().id()); 956 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
920 EXPECT_EQ("us", keyboard_->last_layout_); 957 EXPECT_EQ("us", keyboard_->last_layout_);
921 EXPECT_TRUE(manager_->SwitchToNextInputMethod()); 958 EXPECT_TRUE(manager_->GetActiveIMEState()->SwitchToNextInputMethod());
922 EXPECT_TRUE(observer.last_show_message_); 959 EXPECT_TRUE(observer.last_show_message_);
923 EXPECT_EQ(ImeIdFromEngineId("xkb:us:intl:eng"), 960 EXPECT_EQ(ImeIdFromEngineId("xkb:us:intl:eng"),
924 manager_->GetCurrentInputMethod().id()); 961 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
925 EXPECT_EQ("us(intl)", keyboard_->last_layout_); 962 EXPECT_EQ("us(intl)", keyboard_->last_layout_);
926 EXPECT_TRUE(manager_->SwitchToNextInputMethod()); 963 EXPECT_TRUE(manager_->GetActiveIMEState()->SwitchToNextInputMethod());
927 EXPECT_TRUE(observer.last_show_message_); 964 EXPECT_TRUE(observer.last_show_message_);
928 EXPECT_EQ(ImeIdFromEngineId("xkb:us:altgr-intl:eng"), 965 EXPECT_EQ(ImeIdFromEngineId("xkb:us:altgr-intl:eng"),
929 manager_->GetCurrentInputMethod().id()); 966 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
930 EXPECT_EQ("us(altgr-intl)", keyboard_->last_layout_); 967 EXPECT_EQ("us(altgr-intl)", keyboard_->last_layout_);
931 EXPECT_TRUE(manager_->SwitchToPreviousInputMethod(keydown_accelerator)); 968 EXPECT_TRUE(manager_->GetActiveIMEState()->SwitchToPreviousInputMethod(
932 EXPECT_TRUE(manager_->SwitchToPreviousInputMethod(keyup_accelerator)); 969 keydown_accelerator));
970 EXPECT_TRUE(manager_->GetActiveIMEState()->SwitchToPreviousInputMethod(
971 keyup_accelerator));
933 EXPECT_TRUE(observer.last_show_message_); 972 EXPECT_TRUE(observer.last_show_message_);
934 EXPECT_EQ(ImeIdFromEngineId("xkb:us:intl:eng"), 973 EXPECT_EQ(ImeIdFromEngineId("xkb:us:intl:eng"),
935 manager_->GetCurrentInputMethod().id()); 974 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
936 EXPECT_EQ("us(intl)", keyboard_->last_layout_); 975 EXPECT_EQ("us(intl)", keyboard_->last_layout_);
937 EXPECT_TRUE(manager_->SwitchToPreviousInputMethod(keydown_accelerator)); 976 EXPECT_TRUE(manager_->GetActiveIMEState()->SwitchToPreviousInputMethod(
938 EXPECT_TRUE(manager_->SwitchToPreviousInputMethod(keyup_accelerator)); 977 keydown_accelerator));
978 EXPECT_TRUE(manager_->GetActiveIMEState()->SwitchToPreviousInputMethod(
979 keyup_accelerator));
939 EXPECT_TRUE(observer.last_show_message_); 980 EXPECT_TRUE(observer.last_show_message_);
940 EXPECT_EQ(ImeIdFromEngineId("xkb:us:altgr-intl:eng"), 981 EXPECT_EQ(ImeIdFromEngineId("xkb:us:altgr-intl:eng"),
941 manager_->GetCurrentInputMethod().id()); 982 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
942 EXPECT_EQ("us(altgr-intl)", keyboard_->last_layout_); 983 EXPECT_EQ("us(altgr-intl)", keyboard_->last_layout_);
943 984
944 manager_->RemoveObserver(&observer); 985 manager_->RemoveObserver(&observer);
945 } 986 }
946 987
947 TEST_F(InputMethodManagerImplTest, 988 TEST_F(InputMethodManagerImplTest,
948 TestSwitchToPreviousInputMethodForOneActiveInputMethod) { 989 TestSwitchToPreviousInputMethodForOneActiveInputMethod) {
949 TestObserver observer; 990 TestObserver observer;
950 manager_->AddObserver(&observer); 991 manager_->AddObserver(&observer);
951 InitComponentExtension(); 992 InitComponentExtension();
952 993
953 ui::Accelerator keydown_accelerator(ui::VKEY_SPACE, ui::EF_CONTROL_DOWN); 994 ui::Accelerator keydown_accelerator(ui::VKEY_SPACE, ui::EF_CONTROL_DOWN);
954 keydown_accelerator.set_type(ui::ET_KEY_PRESSED); 995 keydown_accelerator.set_type(ui::ET_KEY_PRESSED);
955 ui::Accelerator keyup_accelerator(ui::VKEY_SPACE, ui::EF_CONTROL_DOWN); 996 ui::Accelerator keyup_accelerator(ui::VKEY_SPACE, ui::EF_CONTROL_DOWN);
956 keyup_accelerator.set_type(ui::ET_KEY_RELEASED); 997 keyup_accelerator.set_type(ui::ET_KEY_RELEASED);
957 998
958 std::vector<std::string> ids; 999 std::vector<std::string> ids;
959 ids.push_back(ImeIdFromEngineId("xkb:us:dvorak:eng")); 1000 ids.push_back(ImeIdFromEngineId("xkb:us:dvorak:eng"));
960 EXPECT_TRUE(manager_->ReplaceEnabledInputMethods(ids)); 1001 EXPECT_TRUE(manager_->GetActiveIMEState()->ReplaceEnabledInputMethods(ids));
961 EXPECT_EQ(1U, manager_->GetNumActiveInputMethods()); 1002 EXPECT_EQ(1U, manager_->GetActiveIMEState()->GetNumActiveInputMethods());
962 1003
963 // Ctrl+Space accelerator should not be consumed if there is only one active 1004 // Ctrl+Space accelerator should not be consumed if there is only one active
964 // input method. 1005 // input method.
965 EXPECT_FALSE(manager_->SwitchToPreviousInputMethod(keydown_accelerator)); 1006 EXPECT_FALSE(manager_->GetActiveIMEState()->SwitchToPreviousInputMethod(
966 EXPECT_FALSE(manager_->SwitchToPreviousInputMethod(keyup_accelerator)); 1007 keydown_accelerator));
1008 EXPECT_FALSE(manager_->GetActiveIMEState()->SwitchToPreviousInputMethod(
1009 keyup_accelerator));
967 1010
968 manager_->RemoveObserver(&observer); 1011 manager_->RemoveObserver(&observer);
969 } 1012 }
970 1013
971 TEST_F(InputMethodManagerImplTest, TestSwitchInputMethodWithUsLayouts) { 1014 TEST_F(InputMethodManagerImplTest, TestSwitchInputMethodWithUsLayouts) {
972 std::string expect_id = ImeIdFromEngineId("xkb:us::eng"); 1015 std::string expect_id = ImeIdFromEngineId("xkb:us::eng");
973 TestObserver observer; 1016 TestObserver observer;
974 manager_->AddObserver(&observer); 1017 manager_->AddObserver(&observer);
975 InitComponentExtension(); 1018 InitComponentExtension();
976 std::vector<std::string> keyboard_layouts; 1019 std::vector<std::string> keyboard_layouts;
977 keyboard_layouts.push_back(ImeIdFromEngineId("xkb:us::eng")); 1020 keyboard_layouts.push_back(ImeIdFromEngineId("xkb:us::eng"));
978 manager_->EnableLoginLayouts("en-US", keyboard_layouts); 1021 manager_->GetActiveIMEState()->EnableLoginLayouts("en-US", keyboard_layouts);
979 EXPECT_EQ(5U, manager_->GetNumActiveInputMethods()); 1022 EXPECT_EQ(5U, manager_->GetActiveIMEState()->GetNumActiveInputMethods());
980 EXPECT_EQ(expect_id, manager_->GetCurrentInputMethod().id()); 1023 EXPECT_EQ(expect_id,
1024 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
981 EXPECT_EQ("us", keyboard_->last_layout_); 1025 EXPECT_EQ("us", keyboard_->last_layout_);
982 1026
983 // Henkan, Muhenkan, ZenkakuHankaku should be ignored when no Japanese IMEs 1027 // Henkan, Muhenkan, ZenkakuHankaku should be ignored when no Japanese IMEs
984 // and keyboards are enabled. 1028 // and keyboards are enabled.
985 EXPECT_FALSE(manager_->SwitchInputMethod( 1029 EXPECT_FALSE(manager_->GetActiveIMEState()->SwitchInputMethod(
986 ui::Accelerator(ui::VKEY_CONVERT, ui::EF_NONE))); 1030 ui::Accelerator(ui::VKEY_CONVERT, ui::EF_NONE)));
987 EXPECT_FALSE(observer.last_show_message_); 1031 EXPECT_FALSE(observer.last_show_message_);
988 EXPECT_EQ(expect_id, manager_->GetCurrentInputMethod().id()); 1032 EXPECT_EQ(expect_id,
1033 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
989 EXPECT_EQ("us", keyboard_->last_layout_); 1034 EXPECT_EQ("us", keyboard_->last_layout_);
990 EXPECT_FALSE(manager_->SwitchInputMethod( 1035 EXPECT_FALSE(manager_->GetActiveIMEState()->SwitchInputMethod(
991 ui::Accelerator(ui::VKEY_NONCONVERT, ui::EF_NONE))); 1036 ui::Accelerator(ui::VKEY_NONCONVERT, ui::EF_NONE)));
992 EXPECT_EQ(expect_id, manager_->GetCurrentInputMethod().id()); 1037 EXPECT_EQ(expect_id,
1038 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
993 EXPECT_EQ("us", keyboard_->last_layout_); 1039 EXPECT_EQ("us", keyboard_->last_layout_);
994 EXPECT_FALSE(manager_->SwitchInputMethod( 1040 EXPECT_FALSE(manager_->GetActiveIMEState()->SwitchInputMethod(
995 ui::Accelerator(ui::VKEY_DBE_SBCSCHAR, ui::EF_NONE))); 1041 ui::Accelerator(ui::VKEY_DBE_SBCSCHAR, ui::EF_NONE)));
996 EXPECT_EQ(expect_id, manager_->GetCurrentInputMethod().id()); 1042 EXPECT_EQ(expect_id,
1043 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
997 EXPECT_EQ("us", keyboard_->last_layout_); 1044 EXPECT_EQ("us", keyboard_->last_layout_);
998 EXPECT_FALSE(manager_->SwitchInputMethod( 1045 EXPECT_FALSE(manager_->GetActiveIMEState()->SwitchInputMethod(
999 ui::Accelerator(ui::VKEY_DBE_DBCSCHAR, ui::EF_NONE))); 1046 ui::Accelerator(ui::VKEY_DBE_DBCSCHAR, ui::EF_NONE)));
1000 EXPECT_EQ(expect_id, manager_->GetCurrentInputMethod().id()); 1047 EXPECT_EQ(expect_id,
1048 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
1001 EXPECT_EQ("us", keyboard_->last_layout_); 1049 EXPECT_EQ("us", keyboard_->last_layout_);
1002 1050
1003 manager_->RemoveObserver(&observer); 1051 manager_->RemoveObserver(&observer);
1004 } 1052 }
1005 1053
1006 TEST_F(InputMethodManagerImplTest, TestSwitchInputMethodWithJpLayout) { 1054 TEST_F(InputMethodManagerImplTest, TestSwitchInputMethodWithJpLayout) {
1007 // Enable "xkb:jp::jpn" and press Muhenkan/ZenkakuHankaku. 1055 // Enable "xkb:jp::jpn" and press Muhenkan/ZenkakuHankaku.
1008 InitComponentExtension(); 1056 InitComponentExtension();
1009 1057
1010 ui::Accelerator keydown_accelerator(ui::VKEY_SPACE, ui::EF_CONTROL_DOWN); 1058 ui::Accelerator keydown_accelerator(ui::VKEY_SPACE, ui::EF_CONTROL_DOWN);
1011 keydown_accelerator.set_type(ui::ET_KEY_PRESSED); 1059 keydown_accelerator.set_type(ui::ET_KEY_PRESSED);
1012 ui::Accelerator keyup_accelerator(ui::VKEY_SPACE, ui::EF_CONTROL_DOWN); 1060 ui::Accelerator keyup_accelerator(ui::VKEY_SPACE, ui::EF_CONTROL_DOWN);
1013 keyup_accelerator.set_type(ui::ET_KEY_RELEASED); 1061 keyup_accelerator.set_type(ui::ET_KEY_RELEASED);
1014 1062
1015 std::vector<std::string> keyboard_layouts; 1063 std::vector<std::string> keyboard_layouts;
1016 keyboard_layouts.push_back(ImeIdFromEngineId("xkb:us::eng")); 1064 keyboard_layouts.push_back(ImeIdFromEngineId("xkb:us::eng"));
1017 manager_->EnableLoginLayouts("ja", keyboard_layouts); 1065 manager_->GetActiveIMEState()->EnableLoginLayouts("ja", keyboard_layouts);
1018 EXPECT_EQ(2U, manager_->GetNumActiveInputMethods()); 1066 EXPECT_EQ(2U, manager_->GetActiveIMEState()->GetNumActiveInputMethods());
1019 EXPECT_EQ(ImeIdFromEngineId("xkb:us::eng"), 1067 EXPECT_EQ(ImeIdFromEngineId("xkb:us::eng"),
1020 manager_->GetCurrentInputMethod().id()); 1068 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
1021 EXPECT_EQ("us", keyboard_->last_layout_); 1069 EXPECT_EQ("us", keyboard_->last_layout_);
1022 EXPECT_TRUE(manager_->SwitchInputMethod( 1070 EXPECT_TRUE(manager_->GetActiveIMEState()->SwitchInputMethod(
1023 ui::Accelerator(ui::VKEY_NONCONVERT, ui::EF_NONE))); 1071 ui::Accelerator(ui::VKEY_NONCONVERT, ui::EF_NONE)));
1024 EXPECT_EQ(ImeIdFromEngineId("xkb:jp::jpn"), 1072 EXPECT_EQ(ImeIdFromEngineId("xkb:jp::jpn"),
1025 manager_->GetCurrentInputMethod().id()); 1073 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
1026 EXPECT_EQ("jp", keyboard_->last_layout_); 1074 EXPECT_EQ("jp", keyboard_->last_layout_);
1027 EXPECT_TRUE(manager_->SwitchToPreviousInputMethod(keydown_accelerator)); 1075 EXPECT_TRUE(manager_->GetActiveIMEState()->SwitchToPreviousInputMethod(
1028 EXPECT_TRUE(manager_->SwitchToPreviousInputMethod(keyup_accelerator)); 1076 keydown_accelerator));
1077 EXPECT_TRUE(manager_->GetActiveIMEState()->SwitchToPreviousInputMethod(
1078 keyup_accelerator));
1029 EXPECT_EQ(ImeIdFromEngineId("xkb:us::eng"), 1079 EXPECT_EQ(ImeIdFromEngineId("xkb:us::eng"),
1030 manager_->GetCurrentInputMethod().id()); 1080 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
1031 EXPECT_EQ("us", keyboard_->last_layout_); 1081 EXPECT_EQ("us", keyboard_->last_layout_);
1032 EXPECT_TRUE(manager_->SwitchInputMethod( 1082 EXPECT_TRUE(manager_->GetActiveIMEState()->SwitchInputMethod(
1033 ui::Accelerator(ui::VKEY_DBE_SBCSCHAR, ui::EF_NONE))); 1083 ui::Accelerator(ui::VKEY_DBE_SBCSCHAR, ui::EF_NONE)));
1034 EXPECT_EQ(ImeIdFromEngineId("xkb:jp::jpn"), 1084 EXPECT_EQ(ImeIdFromEngineId("xkb:jp::jpn"),
1035 manager_->GetCurrentInputMethod().id()); 1085 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
1036 EXPECT_EQ("jp", keyboard_->last_layout_); 1086 EXPECT_EQ("jp", keyboard_->last_layout_);
1037 EXPECT_TRUE(manager_->SwitchToPreviousInputMethod(keydown_accelerator)); 1087 EXPECT_TRUE(manager_->GetActiveIMEState()->SwitchToPreviousInputMethod(
1038 EXPECT_TRUE(manager_->SwitchToPreviousInputMethod(keyup_accelerator)); 1088 keydown_accelerator));
1089 EXPECT_TRUE(manager_->GetActiveIMEState()->SwitchToPreviousInputMethod(
1090 keyup_accelerator));
1039 EXPECT_EQ(ImeIdFromEngineId("xkb:us::eng"), 1091 EXPECT_EQ(ImeIdFromEngineId("xkb:us::eng"),
1040 manager_->GetCurrentInputMethod().id()); 1092 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
1041 EXPECT_EQ("us", keyboard_->last_layout_); 1093 EXPECT_EQ("us", keyboard_->last_layout_);
1042 EXPECT_TRUE(manager_->SwitchInputMethod( 1094 EXPECT_TRUE(manager_->GetActiveIMEState()->SwitchInputMethod(
1043 ui::Accelerator(ui::VKEY_DBE_DBCSCHAR, ui::EF_NONE))); 1095 ui::Accelerator(ui::VKEY_DBE_DBCSCHAR, ui::EF_NONE)));
1044 EXPECT_EQ(ImeIdFromEngineId("xkb:jp::jpn"), 1096 EXPECT_EQ(ImeIdFromEngineId("xkb:jp::jpn"),
1045 manager_->GetCurrentInputMethod().id()); 1097 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
1046 EXPECT_EQ("jp", keyboard_->last_layout_); 1098 EXPECT_EQ("jp", keyboard_->last_layout_);
1047 } 1099 }
1048 1100
1049 TEST_F(InputMethodManagerImplTest, TestSwitchInputMethodWithJpIme) { 1101 TEST_F(InputMethodManagerImplTest, TestSwitchInputMethodWithJpIme) {
1050 InitComponentExtension(); 1102 InitComponentExtension();
1051 manager_->SetState(InputMethodManager::STATE_BROWSER_SCREEN); 1103 manager_->SetUISessionState(InputMethodManager::STATE_BROWSER_SCREEN);
1052 std::vector<std::string> ids; 1104 std::vector<std::string> ids;
1053 ids.push_back(ImeIdFromEngineId("xkb:jp::jpn")); 1105 ids.push_back(ImeIdFromEngineId("xkb:jp::jpn"));
1054 ids.push_back(ImeIdFromEngineId(kNaclMozcJpId)); 1106 ids.push_back(ImeIdFromEngineId(kNaclMozcJpId));
1055 EXPECT_TRUE(manager_->ReplaceEnabledInputMethods(ids)); 1107 EXPECT_TRUE(manager_->GetActiveIMEState()->ReplaceEnabledInputMethods(ids));
1056 EXPECT_EQ(ImeIdFromEngineId("xkb:jp::jpn"), 1108 EXPECT_EQ(ImeIdFromEngineId("xkb:jp::jpn"),
1057 manager_->GetCurrentInputMethod().id()); 1109 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
1058 EXPECT_EQ("jp", keyboard_->last_layout_); 1110 EXPECT_EQ("jp", keyboard_->last_layout_);
1059 EXPECT_TRUE(manager_->SwitchInputMethod( 1111 EXPECT_TRUE(manager_->GetActiveIMEState()->SwitchInputMethod(
1060 ui::Accelerator(ui::VKEY_DBE_DBCSCHAR, ui::EF_NONE))); 1112 ui::Accelerator(ui::VKEY_DBE_DBCSCHAR, ui::EF_NONE)));
1061 EXPECT_EQ(ImeIdFromEngineId(kNaclMozcJpId), 1113 EXPECT_EQ(ImeIdFromEngineId(kNaclMozcJpId),
1062 manager_->GetCurrentInputMethod().id()); 1114 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
1063 EXPECT_EQ("jp", keyboard_->last_layout_); 1115 EXPECT_EQ("jp", keyboard_->last_layout_);
1064 EXPECT_TRUE(manager_->SwitchInputMethod( 1116 EXPECT_TRUE(manager_->GetActiveIMEState()->SwitchInputMethod(
1065 ui::Accelerator(ui::VKEY_DBE_DBCSCHAR, ui::EF_NONE))); 1117 ui::Accelerator(ui::VKEY_DBE_DBCSCHAR, ui::EF_NONE)));
1066 EXPECT_EQ(ImeIdFromEngineId("xkb:jp::jpn"), 1118 EXPECT_EQ(ImeIdFromEngineId("xkb:jp::jpn"),
1067 manager_->GetCurrentInputMethod().id()); 1119 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
1068 EXPECT_EQ("jp", keyboard_->last_layout_); 1120 EXPECT_EQ("jp", keyboard_->last_layout_);
1069 EXPECT_TRUE(manager_->SwitchInputMethod( 1121 EXPECT_TRUE(manager_->GetActiveIMEState()->SwitchInputMethod(
1070 ui::Accelerator(ui::VKEY_CONVERT, ui::EF_NONE))); 1122 ui::Accelerator(ui::VKEY_CONVERT, ui::EF_NONE)));
1071 EXPECT_EQ(ImeIdFromEngineId(kNaclMozcJpId), 1123 EXPECT_EQ(ImeIdFromEngineId(kNaclMozcJpId),
1072 manager_->GetCurrentInputMethod().id()); 1124 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
1073 EXPECT_EQ("jp", keyboard_->last_layout_); 1125 EXPECT_EQ("jp", keyboard_->last_layout_);
1074 EXPECT_TRUE(manager_->SwitchInputMethod( 1126 EXPECT_TRUE(manager_->GetActiveIMEState()->SwitchInputMethod(
1075 ui::Accelerator(ui::VKEY_CONVERT, ui::EF_NONE))); 1127 ui::Accelerator(ui::VKEY_CONVERT, ui::EF_NONE)));
1076 EXPECT_EQ(ImeIdFromEngineId(kNaclMozcJpId), 1128 EXPECT_EQ(ImeIdFromEngineId(kNaclMozcJpId),
1077 manager_->GetCurrentInputMethod().id()); 1129 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
1078 EXPECT_EQ("jp", keyboard_->last_layout_); 1130 EXPECT_EQ("jp", keyboard_->last_layout_);
1079 EXPECT_TRUE(manager_->SwitchInputMethod( 1131 EXPECT_TRUE(manager_->GetActiveIMEState()->SwitchInputMethod(
1080 ui::Accelerator(ui::VKEY_NONCONVERT, ui::EF_NONE))); 1132 ui::Accelerator(ui::VKEY_NONCONVERT, ui::EF_NONE)));
1081 EXPECT_EQ(ImeIdFromEngineId("xkb:jp::jpn"), 1133 EXPECT_EQ(ImeIdFromEngineId("xkb:jp::jpn"),
1082 manager_->GetCurrentInputMethod().id()); 1134 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
1083 EXPECT_EQ("jp", keyboard_->last_layout_); 1135 EXPECT_EQ("jp", keyboard_->last_layout_);
1084 EXPECT_TRUE(manager_->SwitchInputMethod( 1136 EXPECT_TRUE(manager_->GetActiveIMEState()->SwitchInputMethod(
1085 ui::Accelerator(ui::VKEY_NONCONVERT, ui::EF_NONE))); 1137 ui::Accelerator(ui::VKEY_NONCONVERT, ui::EF_NONE)));
1086 EXPECT_EQ(ImeIdFromEngineId("xkb:jp::jpn"), 1138 EXPECT_EQ(ImeIdFromEngineId("xkb:jp::jpn"),
1087 manager_->GetCurrentInputMethod().id()); 1139 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
1088 EXPECT_EQ("jp", keyboard_->last_layout_); 1140 EXPECT_EQ("jp", keyboard_->last_layout_);
1089 1141
1090 // Add Dvorak. 1142 // Add Dvorak.
1091 ids.push_back(ImeIdFromEngineId("xkb:us:dvorak:eng")); 1143 ids.push_back(ImeIdFromEngineId("xkb:us:dvorak:eng"));
1092 EXPECT_TRUE(manager_->ReplaceEnabledInputMethods(ids)); 1144 EXPECT_TRUE(manager_->GetActiveIMEState()->ReplaceEnabledInputMethods(ids));
1093 EXPECT_EQ(ImeIdFromEngineId("xkb:jp::jpn"), 1145 EXPECT_EQ(ImeIdFromEngineId("xkb:jp::jpn"),
1094 manager_->GetCurrentInputMethod().id()); 1146 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
1095 EXPECT_EQ("jp", keyboard_->last_layout_); 1147 EXPECT_EQ("jp", keyboard_->last_layout_);
1096 EXPECT_TRUE(manager_->SwitchInputMethod( 1148 EXPECT_TRUE(manager_->GetActiveIMEState()->SwitchInputMethod(
1097 ui::Accelerator(ui::VKEY_DBE_SBCSCHAR, ui::EF_NONE))); 1149 ui::Accelerator(ui::VKEY_DBE_SBCSCHAR, ui::EF_NONE)));
1098 EXPECT_EQ(ImeIdFromEngineId(kNaclMozcJpId), 1150 EXPECT_EQ(ImeIdFromEngineId(kNaclMozcJpId),
1099 manager_->GetCurrentInputMethod().id()); 1151 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
1100 EXPECT_EQ("jp", keyboard_->last_layout_); 1152 EXPECT_EQ("jp", keyboard_->last_layout_);
1101 EXPECT_TRUE(manager_->SwitchInputMethod( 1153 EXPECT_TRUE(manager_->GetActiveIMEState()->SwitchInputMethod(
1102 ui::Accelerator(ui::VKEY_DBE_SBCSCHAR, ui::EF_NONE))); 1154 ui::Accelerator(ui::VKEY_DBE_SBCSCHAR, ui::EF_NONE)));
1103 EXPECT_EQ(ImeIdFromEngineId("xkb:jp::jpn"), 1155 EXPECT_EQ(ImeIdFromEngineId("xkb:jp::jpn"),
1104 manager_->GetCurrentInputMethod().id()); 1156 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
1105 EXPECT_EQ("jp", keyboard_->last_layout_); 1157 EXPECT_EQ("jp", keyboard_->last_layout_);
1106 } 1158 }
1107 1159
1108 TEST_F(InputMethodManagerImplTest, TestAddRemoveExtensionInputMethods) { 1160 TEST_F(InputMethodManagerImplTest, TestAddRemoveExtensionInputMethods) {
1109 TestObserver observer; 1161 TestObserver observer;
1110 manager_->AddObserver(&observer); 1162 manager_->AddObserver(&observer);
1111 InitComponentExtension(); 1163 InitComponentExtension();
1112 manager_->SetState(InputMethodManager::STATE_BROWSER_SCREEN); 1164 manager_->SetUISessionState(InputMethodManager::STATE_BROWSER_SCREEN);
1113 std::vector<std::string> ids; 1165 std::vector<std::string> ids;
1114 ids.push_back(ImeIdFromEngineId("xkb:us:dvorak:eng")); 1166 ids.push_back(ImeIdFromEngineId("xkb:us:dvorak:eng"));
1115 EXPECT_TRUE(manager_->ReplaceEnabledInputMethods(ids)); 1167 EXPECT_TRUE(manager_->GetActiveIMEState()->ReplaceEnabledInputMethods(ids));
1116 EXPECT_EQ(1U, manager_->GetNumActiveInputMethods()); 1168 EXPECT_EQ(1U, manager_->GetActiveIMEState()->GetNumActiveInputMethods());
1117 EXPECT_EQ(1, observer.input_method_changed_count_); 1169 EXPECT_EQ(1, observer.input_method_changed_count_);
1118 EXPECT_EQ(ImeIdFromEngineId(ids[0]), manager_->GetCurrentInputMethod().id()); 1170 EXPECT_EQ(ImeIdFromEngineId(ids[0]),
1171 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
1119 EXPECT_EQ("us(dvorak)", keyboard_->last_layout_); 1172 EXPECT_EQ("us(dvorak)", keyboard_->last_layout_);
1120 1173
1121 // Add two Extension IMEs. 1174 // Add two Extension IMEs.
1122 std::vector<std::string> layouts; 1175 std::vector<std::string> layouts;
1123 layouts.push_back("us"); 1176 layouts.push_back("us");
1124 std::vector<std::string> languages; 1177 std::vector<std::string> languages;
1125 languages.push_back("en-US"); 1178 languages.push_back("en-US");
1126 1179
1127 const std::string ext1_id = 1180 const std::string ext1_id =
1128 extension_ime_util::GetInputMethodID(kExtensionId1, "engine_id"); 1181 extension_ime_util::GetInputMethodID(kExtensionId1, "engine_id");
1129 const InputMethodDescriptor descriptor1(ext1_id, 1182 const InputMethodDescriptor descriptor1(ext1_id,
1130 "deadbeef input method", 1183 "deadbeef input method",
1131 "DB", 1184 "DB",
1132 layouts, 1185 layouts,
1133 languages, 1186 languages,
1134 false, // is_login_keyboard 1187 false, // is_login_keyboard
1135 GURL(), 1188 GURL(),
1136 GURL()); 1189 GURL());
1137 MockInputMethodEngine engine; 1190 MockInputMethodEngine engine;
1138 InputMethodDescriptors descriptors; 1191 InputMethodDescriptors descriptors;
1139 descriptors.push_back(descriptor1); 1192 descriptors.push_back(descriptor1);
1140 manager_->AddInputMethodExtension(kExtensionId1, descriptors, &engine); 1193 manager_->GetActiveIMEState()->AddInputMethodExtension(
1194 kExtensionId1, descriptors, &engine);
1141 1195
1142 // Extension IMEs are not enabled by default. 1196 // Extension IMEs are not enabled by default.
1143 EXPECT_EQ(1U, manager_->GetNumActiveInputMethods()); 1197 EXPECT_EQ(1U, manager_->GetActiveIMEState()->GetNumActiveInputMethods());
1144 1198
1145 std::vector<std::string> extension_ime_ids; 1199 std::vector<std::string> extension_ime_ids;
1146 extension_ime_ids.push_back(ext1_id); 1200 extension_ime_ids.push_back(ext1_id);
1147 manager_->SetEnabledExtensionImes(&extension_ime_ids); 1201 manager_->GetActiveIMEState()->SetEnabledExtensionImes(&extension_ime_ids);
1148 EXPECT_EQ(2U, manager_->GetNumActiveInputMethods()); 1202 EXPECT_EQ(2U, manager_->GetActiveIMEState()->GetNumActiveInputMethods());
1149 1203
1150 { 1204 {
1151 scoped_ptr<InputMethodDescriptors> methods( 1205 scoped_ptr<InputMethodDescriptors> methods(
1152 manager_->GetActiveInputMethods()); 1206 manager_->GetActiveIMEState()->GetActiveInputMethods());
1153 ASSERT_EQ(2U, methods->size()); 1207 ASSERT_EQ(2U, methods->size());
1154 // Ext IMEs should be at the end of the list. 1208 // Ext IMEs should be at the end of the list.
1155 EXPECT_EQ(ext1_id, methods->at(1).id()); 1209 EXPECT_EQ(ext1_id, methods->at(1).id());
1156 } 1210 }
1157 1211
1158 const std::string ext2_id = 1212 const std::string ext2_id =
1159 extension_ime_util::GetInputMethodID(kExtensionId2, "engine_id"); 1213 extension_ime_util::GetInputMethodID(kExtensionId2, "engine_id");
1160 const InputMethodDescriptor descriptor2(ext2_id, 1214 const InputMethodDescriptor descriptor2(ext2_id,
1161 "cafebabe input method", 1215 "cafebabe input method",
1162 "CB", 1216 "CB",
1163 layouts, 1217 layouts,
1164 languages, 1218 languages,
1165 false, // is_login_keyboard 1219 false, // is_login_keyboard
1166 GURL(), 1220 GURL(),
1167 GURL()); 1221 GURL());
1168 descriptors.clear(); 1222 descriptors.clear();
1169 descriptors.push_back(descriptor2); 1223 descriptors.push_back(descriptor2);
1170 MockInputMethodEngine engine2; 1224 MockInputMethodEngine engine2;
1171 manager_->AddInputMethodExtension(kExtensionId2, descriptors, &engine2); 1225 manager_->GetActiveIMEState()->AddInputMethodExtension(
1172 EXPECT_EQ(2U, manager_->GetNumActiveInputMethods()); 1226 kExtensionId2, descriptors, &engine2);
1227 EXPECT_EQ(2U, manager_->GetActiveIMEState()->GetNumActiveInputMethods());
1173 1228
1174 extension_ime_ids.push_back(ext2_id); 1229 extension_ime_ids.push_back(ext2_id);
1175 manager_->SetEnabledExtensionImes(&extension_ime_ids); 1230 manager_->GetActiveIMEState()->SetEnabledExtensionImes(&extension_ime_ids);
1176 EXPECT_EQ(3U, manager_->GetNumActiveInputMethods()); 1231 EXPECT_EQ(3U, manager_->GetActiveIMEState()->GetNumActiveInputMethods());
1177 { 1232 {
1178 scoped_ptr<InputMethodDescriptors> methods( 1233 scoped_ptr<InputMethodDescriptors> methods(
1179 manager_->GetActiveInputMethods()); 1234 manager_->GetActiveIMEState()->GetActiveInputMethods());
1180 ASSERT_EQ(3U, methods->size()); 1235 ASSERT_EQ(3U, methods->size());
1181 // Ext IMEs should be at the end of the list. 1236 // Ext IMEs should be at the end of the list.
1182 EXPECT_EQ(ext1_id, methods->at(1).id()); 1237 EXPECT_EQ(ext1_id, methods->at(1).id());
1183 EXPECT_EQ(ext2_id, methods->at(2).id()); 1238 EXPECT_EQ(ext2_id, methods->at(2).id());
1184 } 1239 }
1185 1240
1186 // Remove them. 1241 // Remove them.
1187 manager_->RemoveInputMethodExtension(kExtensionId1); 1242 manager_->GetActiveIMEState()->RemoveInputMethodExtension(kExtensionId1);
1188 EXPECT_EQ(2U, manager_->GetNumActiveInputMethods()); 1243 EXPECT_EQ(2U, manager_->GetActiveIMEState()->GetNumActiveInputMethods());
1189 manager_->RemoveInputMethodExtension(kExtensionId2); 1244 manager_->GetActiveIMEState()->RemoveInputMethodExtension(kExtensionId2);
1190 EXPECT_EQ(1U, manager_->GetNumActiveInputMethods()); 1245 EXPECT_EQ(1U, manager_->GetActiveIMEState()->GetNumActiveInputMethods());
1191 } 1246 }
1192 1247
1193 TEST_F(InputMethodManagerImplTest, TestAddExtensionInputThenLockScreen) { 1248 TEST_F(InputMethodManagerImplTest, TestAddExtensionInputThenLockScreen) {
1194 TestObserver observer; 1249 TestObserver observer;
1195 InitComponentExtension(); 1250 InitComponentExtension();
1196 manager_->AddObserver(&observer); 1251 manager_->AddObserver(&observer);
1197 manager_->SetState(InputMethodManager::STATE_BROWSER_SCREEN); 1252 manager_->SetUISessionState(InputMethodManager::STATE_BROWSER_SCREEN);
1198 std::vector<std::string> ids; 1253 std::vector<std::string> ids;
1199 ids.push_back(ImeIdFromEngineId("xkb:us::eng")); 1254 ids.push_back(ImeIdFromEngineId("xkb:us::eng"));
1200 EXPECT_TRUE(manager_->ReplaceEnabledInputMethods(ids)); 1255 EXPECT_TRUE(manager_->GetActiveIMEState()->ReplaceEnabledInputMethods(ids));
1201 EXPECT_EQ(1U, manager_->GetNumActiveInputMethods()); 1256 EXPECT_EQ(1U, manager_->GetActiveIMEState()->GetNumActiveInputMethods());
1202 EXPECT_EQ(1, observer.input_method_changed_count_); 1257 EXPECT_EQ(1, observer.input_method_changed_count_);
1203 EXPECT_EQ(ImeIdFromEngineId(ids[0]), manager_->GetCurrentInputMethod().id()); 1258 EXPECT_EQ(ImeIdFromEngineId(ids[0]),
1259 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
1204 EXPECT_EQ("us", keyboard_->last_layout_); 1260 EXPECT_EQ("us", keyboard_->last_layout_);
1205 1261
1206 // Add an Extension IME. 1262 // Add an Extension IME.
1207 std::vector<std::string> layouts; 1263 std::vector<std::string> layouts;
1208 layouts.push_back("us(dvorak)"); 1264 layouts.push_back("us(dvorak)");
1209 std::vector<std::string> languages; 1265 std::vector<std::string> languages;
1210 languages.push_back("en-US"); 1266 languages.push_back("en-US");
1211 1267
1212 const std::string ext_id = 1268 const std::string ext_id =
1213 extension_ime_util::GetInputMethodID(kExtensionId1, "engine_id"); 1269 extension_ime_util::GetInputMethodID(kExtensionId1, "engine_id");
1214 const InputMethodDescriptor descriptor(ext_id, 1270 const InputMethodDescriptor descriptor(ext_id,
1215 "deadbeef input method", 1271 "deadbeef input method",
1216 "DB", 1272 "DB",
1217 layouts, 1273 layouts,
1218 languages, 1274 languages,
1219 false, // is_login_keyboard 1275 false, // is_login_keyboard
1220 GURL(), 1276 GURL(),
1221 GURL()); 1277 GURL());
1222 MockInputMethodEngine engine; 1278 MockInputMethodEngine engine;
1223 InputMethodDescriptors descriptors; 1279 InputMethodDescriptors descriptors;
1224 descriptors.push_back(descriptor); 1280 descriptors.push_back(descriptor);
1225 manager_->AddInputMethodExtension(kExtensionId1, descriptors, &engine); 1281 manager_->GetActiveIMEState()->AddInputMethodExtension(
1282 kExtensionId1, descriptors, &engine);
1226 1283
1227 // Extension IME is not enabled by default. 1284 // Extension IME is not enabled by default.
1228 EXPECT_EQ(1U, manager_->GetNumActiveInputMethods()); 1285 EXPECT_EQ(1U, manager_->GetActiveIMEState()->GetNumActiveInputMethods());
1229 EXPECT_EQ(1, observer.input_method_changed_count_); 1286 EXPECT_EQ(1, observer.input_method_changed_count_);
1230 1287
1231 std::vector<std::string> extension_ime_ids; 1288 std::vector<std::string> extension_ime_ids;
1232 extension_ime_ids.push_back(ext_id); 1289 extension_ime_ids.push_back(ext_id);
1233 manager_->SetEnabledExtensionImes(&extension_ime_ids); 1290 manager_->GetActiveIMEState()->SetEnabledExtensionImes(&extension_ime_ids);
1234 EXPECT_EQ(2U, manager_->GetNumActiveInputMethods()); 1291 EXPECT_EQ(2U, manager_->GetActiveIMEState()->GetNumActiveInputMethods());
1235 1292
1236 // Switch to the IME. 1293 // Switch to the IME.
1237 manager_->SwitchToNextInputMethod(); 1294 manager_->GetActiveIMEState()->SwitchToNextInputMethod();
1238 EXPECT_EQ(3, observer.input_method_changed_count_); 1295 EXPECT_EQ(3, observer.input_method_changed_count_);
1239 EXPECT_EQ(ext_id, manager_->GetCurrentInputMethod().id()); 1296 EXPECT_EQ(ext_id,
1297 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
1240 EXPECT_EQ("us(dvorak)", keyboard_->last_layout_); 1298 EXPECT_EQ("us(dvorak)", keyboard_->last_layout_);
1241 1299
1242 // Lock the screen. This is for crosbug.com/27049. 1300 // Lock the screen. This is for crosbug.com/27049.
1243 manager_->SetState(InputMethodManager::STATE_LOCK_SCREEN); 1301 manager_->SetUISessionState(InputMethodManager::STATE_LOCK_SCREEN);
1244 EXPECT_EQ(1U, manager_->GetNumActiveInputMethods()); // Qwerty. No Ext. IME 1302 EXPECT_EQ(1U,
1303 manager_->GetActiveIMEState()
1304 ->GetNumActiveInputMethods()); // Qwerty. No Ext. IME
1245 EXPECT_EQ(ImeIdFromEngineId("xkb:us::eng"), 1305 EXPECT_EQ(ImeIdFromEngineId("xkb:us::eng"),
1246 manager_->GetCurrentInputMethod().id()); 1306 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
1247 EXPECT_EQ("us", keyboard_->last_layout_); 1307 EXPECT_EQ("us", keyboard_->last_layout_);
1248 1308
1249 // Unlock the screen. 1309 // Unlock the screen.
1250 manager_->SetState(InputMethodManager::STATE_BROWSER_SCREEN); 1310 manager_->SetUISessionState(InputMethodManager::STATE_BROWSER_SCREEN);
1251 EXPECT_EQ(2U, manager_->GetNumActiveInputMethods()); 1311 EXPECT_EQ(2U, manager_->GetActiveIMEState()->GetNumActiveInputMethods());
1252 EXPECT_EQ(ext_id, manager_->GetCurrentInputMethod().id()); 1312 EXPECT_EQ(ext_id,
1313 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
1253 EXPECT_EQ("us(dvorak)", keyboard_->last_layout_); 1314 EXPECT_EQ("us(dvorak)", keyboard_->last_layout_);
1254 { 1315 {
1255 // This is for crosbug.com/27052. 1316 // This is for crosbug.com/27052.
1256 scoped_ptr<InputMethodDescriptors> methods( 1317 scoped_ptr<InputMethodDescriptors> methods(
1257 manager_->GetActiveInputMethods()); 1318 manager_->GetActiveIMEState()->GetActiveInputMethods());
1258 ASSERT_EQ(2U, methods->size()); 1319 ASSERT_EQ(2U, methods->size());
1259 // Ext. IMEs should be at the end of the list. 1320 // Ext. IMEs should be at the end of the list.
1260 EXPECT_EQ(ext_id, methods->at(1).id()); 1321 EXPECT_EQ(ext_id, methods->at(1).id());
1261 } 1322 }
1262 manager_->RemoveObserver(&observer); 1323 manager_->RemoveObserver(&observer);
1263 } 1324 }
1264 1325
1265 TEST_F(InputMethodManagerImplTest, 1326 TEST_F(InputMethodManagerImplTest,
1266 ChangeInputMethod_ComponenteExtensionOneIME) { 1327 ChangeInputMethod_ComponenteExtensionOneIME) {
1267 InitComponentExtension(); 1328 InitComponentExtension();
1268 manager_->SetState(InputMethodManager::STATE_BROWSER_SCREEN); 1329 manager_->SetUISessionState(InputMethodManager::STATE_BROWSER_SCREEN);
1269 const std::string ext_id = extension_ime_util::GetComponentInputMethodID( 1330 const std::string ext_id = extension_ime_util::GetComponentInputMethodID(
1270 ime_list_[1].id, 1331 ime_list_[1].id,
1271 ime_list_[1].engines[0].engine_id); 1332 ime_list_[1].engines[0].engine_id);
1272 std::vector<std::string> ids; 1333 std::vector<std::string> ids;
1273 ids.push_back(ext_id); 1334 ids.push_back(ext_id);
1274 EXPECT_TRUE(manager_->ReplaceEnabledInputMethods(ids)); 1335 EXPECT_TRUE(manager_->GetActiveIMEState()->ReplaceEnabledInputMethods(ids));
1275 EXPECT_EQ(1U, manager_->GetNumActiveInputMethods()); 1336 EXPECT_EQ(1U, manager_->GetActiveIMEState()->GetNumActiveInputMethods());
1276 EXPECT_EQ(ext_id, manager_->GetCurrentInputMethod().id()); 1337 EXPECT_EQ(ext_id,
1338 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
1277 } 1339 }
1278 1340
1279 TEST_F(InputMethodManagerImplTest, 1341 TEST_F(InputMethodManagerImplTest,
1280 ChangeInputMethod_ComponenteExtensionTwoIME) { 1342 ChangeInputMethod_ComponenteExtensionTwoIME) {
1281 InitComponentExtension(); 1343 InitComponentExtension();
1282 manager_->SetState(InputMethodManager::STATE_BROWSER_SCREEN); 1344 manager_->SetUISessionState(InputMethodManager::STATE_BROWSER_SCREEN);
1283 const std::string ext_id1 = extension_ime_util::GetComponentInputMethodID( 1345 const std::string ext_id1 = extension_ime_util::GetComponentInputMethodID(
1284 ime_list_[1].id, 1346 ime_list_[1].id,
1285 ime_list_[1].engines[0].engine_id); 1347 ime_list_[1].engines[0].engine_id);
1286 const std::string ext_id2 = extension_ime_util::GetComponentInputMethodID( 1348 const std::string ext_id2 = extension_ime_util::GetComponentInputMethodID(
1287 ime_list_[2].id, 1349 ime_list_[2].id,
1288 ime_list_[2].engines[0].engine_id); 1350 ime_list_[2].engines[0].engine_id);
1289 std::vector<std::string> ids; 1351 std::vector<std::string> ids;
1290 ids.push_back(ext_id1); 1352 ids.push_back(ext_id1);
1291 ids.push_back(ext_id2); 1353 ids.push_back(ext_id2);
1292 EXPECT_TRUE(manager_->ReplaceEnabledInputMethods(ids)); 1354 EXPECT_TRUE(manager_->GetActiveIMEState()->ReplaceEnabledInputMethods(ids));
1293 EXPECT_EQ(2U, manager_->GetNumActiveInputMethods()); 1355 EXPECT_EQ(2U, manager_->GetActiveIMEState()->GetNumActiveInputMethods());
1294 EXPECT_EQ(ext_id1, manager_->GetCurrentInputMethod().id()); 1356 EXPECT_EQ(ext_id1,
1295 manager_->ChangeInputMethod(ext_id2); 1357 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
1296 EXPECT_EQ(ext_id2, manager_->GetCurrentInputMethod().id()); 1358 manager_->GetActiveIMEState()->ChangeInputMethod(ext_id2,
1359 false /* show_message */);
1360 EXPECT_EQ(ext_id2,
1361 manager_->GetActiveIMEState()->GetCurrentInputMethod().id());
1297 } 1362 }
1298 1363
1299 TEST_F(InputMethodManagerImplTest, MigrateInputMethodTest) { 1364 TEST_F(InputMethodManagerImplTest, MigrateInputMethodTest) {
1300 std::vector<std::string> input_method_ids; 1365 std::vector<std::string> input_method_ids;
1301 input_method_ids.push_back("xkb:us::eng"); 1366 input_method_ids.push_back("xkb:us::eng");
1302 input_method_ids.push_back("xkb:fr::fra"); 1367 input_method_ids.push_back("xkb:fr::fra");
1303 input_method_ids.push_back(ImeIdFromEngineId("xkb:us::eng")); 1368 input_method_ids.push_back(ImeIdFromEngineId("xkb:us::eng"));
1304 input_method_ids.push_back("xkb:fr::fra"); 1369 input_method_ids.push_back("xkb:fr::fra");
1305 input_method_ids.push_back(ImeIdFromEngineId("xkb:us::eng")); 1370 input_method_ids.push_back(ImeIdFromEngineId("xkb:us::eng"));
1306 input_method_ids.push_back("_comp_ime_asdf_pinyin"); 1371 input_method_ids.push_back("_comp_ime_asdf_pinyin");
1307 input_method_ids.push_back(ImeIdFromEngineId(kPinyinImeId)); 1372 input_method_ids.push_back(ImeIdFromEngineId(kPinyinImeId));
1308 1373
1309 manager_->MigrateInputMethods(&input_method_ids); 1374 manager_->MigrateInputMethods(&input_method_ids);
1310 1375
1311 ASSERT_EQ(4U, input_method_ids.size()); 1376 ASSERT_EQ(4U, input_method_ids.size());
1312 1377
1313 EXPECT_EQ(ImeIdFromEngineId("xkb:us::eng"), input_method_ids[0]); 1378 EXPECT_EQ(ImeIdFromEngineId("xkb:us::eng"), input_method_ids[0]);
1314 EXPECT_EQ(ImeIdFromEngineId("xkb:fr::fra"), input_method_ids[1]); 1379 EXPECT_EQ(ImeIdFromEngineId("xkb:fr::fra"), input_method_ids[1]);
1315 EXPECT_EQ("_comp_ime_asdf_pinyin", input_method_ids[2]); 1380 EXPECT_EQ("_comp_ime_asdf_pinyin", input_method_ids[2]);
1316 EXPECT_EQ(ImeIdFromEngineId("zh-t-i0-pinyin"), input_method_ids[3]); 1381 EXPECT_EQ(ImeIdFromEngineId("zh-t-i0-pinyin"), input_method_ids[3]);
1317 } 1382 }
1318 1383
1319 } // namespace input_method 1384 } // namespace input_method
1320 } // namespace chromeos 1385 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698