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

Side by Side Diff: trunk/src/chrome/browser/chromeos/input_method/input_method_manager_impl.cc

Issue 165453002: Revert 251164 "Split out InputMethodMenuManager from InputMethod..." (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (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> // std::find 7 #include <algorithm> // std::find
8 8
9 #include "ash/ime/input_method_menu_item.h"
10 #include "ash/ime/input_method_menu_manager.h"
11 #include "base/basictypes.h" 9 #include "base/basictypes.h"
12 #include "base/bind.h" 10 #include "base/bind.h"
13 #include "base/location.h" 11 #include "base/location.h"
14 #include "base/memory/scoped_ptr.h" 12 #include "base/memory/scoped_ptr.h"
15 #include "base/prefs/pref_service.h" 13 #include "base/prefs/pref_service.h"
16 #include "base/strings/string_util.h" 14 #include "base/strings/string_util.h"
17 #include "base/strings/stringprintf.h" 15 #include "base/strings/stringprintf.h"
18 #include "base/sys_info.h" 16 #include "base/sys_info.h"
19 #include "chrome/browser/browser_process.h" 17 #include "chrome/browser/browser_process.h"
20 #include "chrome/browser/chromeos/input_method/candidate_window_controller.h" 18 #include "chrome/browser/chromeos/input_method/candidate_window_controller.h"
(...skipping 29 matching lines...) Expand all
50 return util_.IsLoginKeyboard(layout); 48 return util_.IsLoginKeyboard(layout);
51 } 49 }
52 50
53 InputMethodManagerImpl::InputMethodManagerImpl( 51 InputMethodManagerImpl::InputMethodManagerImpl(
54 scoped_ptr<InputMethodDelegate> delegate) 52 scoped_ptr<InputMethodDelegate> delegate)
55 : delegate_(delegate.Pass()), 53 : delegate_(delegate.Pass()),
56 state_(STATE_LOGIN_SCREEN), 54 state_(STATE_LOGIN_SCREEN),
57 util_(delegate_.get(), GetSupportedInputMethods()), 55 util_(delegate_.get(), GetSupportedInputMethods()),
58 component_extension_ime_manager_(new ComponentExtensionIMEManager()), 56 component_extension_ime_manager_(new ComponentExtensionIMEManager()),
59 weak_ptr_factory_(this) { 57 weak_ptr_factory_(this) {
60 ash::ime::InputMethodMenuManager::Initialize();
61 } 58 }
62 59
63 InputMethodManagerImpl::~InputMethodManagerImpl() { 60 InputMethodManagerImpl::~InputMethodManagerImpl() {
64 if (candidate_window_controller_.get()) 61 if (candidate_window_controller_.get())
65 candidate_window_controller_->RemoveObserver(this); 62 candidate_window_controller_->RemoveObserver(this);
66 ash::ime::InputMethodMenuManager::Shutdown();
67 } 63 }
68 64
69 void InputMethodManagerImpl::AddObserver( 65 void InputMethodManagerImpl::AddObserver(
70 InputMethodManager::Observer* observer) { 66 InputMethodManager::Observer* observer) {
71 observers_.AddObserver(observer); 67 observers_.AddObserver(observer);
72 } 68 }
73 69
74 void InputMethodManagerImpl::AddCandidateWindowObserver( 70 void InputMethodManagerImpl::AddCandidateWindowObserver(
75 InputMethodManager::CandidateWindowObserver* observer) { 71 InputMethodManager::CandidateWindowObserver* observer) {
76 candidate_window_observers_.AddObserver(observer); 72 candidate_window_observers_.AddObserver(observer);
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after
347 next_engine->Enable(); 343 next_engine->Enable();
348 } 344 }
349 345
350 // TODO(komatsu): Check if it is necessary to perform the above routine 346 // TODO(komatsu): Check if it is necessary to perform the above routine
351 // when the current input method is equal to |input_method_id_to_swich|. 347 // when the current input method is equal to |input_method_id_to_swich|.
352 if (current_input_method_.id() != input_method_id_to_switch) { 348 if (current_input_method_.id() != input_method_id_to_switch) {
353 // Clear property list. Property list would be updated by 349 // Clear property list. Property list would be updated by
354 // extension IMEs via InputMethodEngine::(Set|Update)MenuItems. 350 // extension IMEs via InputMethodEngine::(Set|Update)MenuItems.
355 // If the current input method is a keyboard layout, empty 351 // If the current input method is a keyboard layout, empty
356 // properties are sufficient. 352 // properties are sufficient.
357 const ash::ime::InputMethodMenuItemList empty_menu_item_list; 353 const InputMethodPropertyList empty_property_list;
358 ash::ime::InputMethodMenuManager* input_method_menu_manager = 354 SetCurrentInputMethodProperties(empty_property_list);
359 ash::ime::InputMethodMenuManager::Get();
360 input_method_menu_manager->SetCurrentInputMethodMenuItemList(
361 empty_menu_item_list);
362 355
363 const InputMethodDescriptor* descriptor = NULL; 356 const InputMethodDescriptor* descriptor = NULL;
364 if (extension_ime_util::IsExtensionIME(input_method_id_to_switch)) { 357 if (extension_ime_util::IsExtensionIME(input_method_id_to_switch)) {
365 DCHECK(extra_input_methods_.find(input_method_id_to_switch) != 358 DCHECK(extra_input_methods_.find(input_method_id_to_switch) !=
366 extra_input_methods_.end()); 359 extra_input_methods_.end());
367 descriptor = &(extra_input_methods_[input_method_id_to_switch]); 360 descriptor = &(extra_input_methods_[input_method_id_to_switch]);
368 } else { 361 } else {
369 descriptor = 362 descriptor =
370 util_.GetInputMethodDescriptorFromId(input_method_id_to_switch); 363 util_.GetInputMethodDescriptorFromId(input_method_id_to_switch);
371 } 364 }
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
419 active_input_method_ids_.push_back(unfiltered_input_method_ids[i]); 412 active_input_method_ids_.push_back(unfiltered_input_method_ids[i]);
420 } else if (component_extension_ime_manager_->IsWhitelisted( 413 } else if (component_extension_ime_manager_->IsWhitelisted(
421 unfiltered_input_method_ids[i])) { 414 unfiltered_input_method_ids[i])) {
422 component_extension_ime_manager_->LoadComponentExtensionIME( 415 component_extension_ime_manager_->LoadComponentExtensionIME(
423 unfiltered_input_method_ids[i]); 416 unfiltered_input_method_ids[i]);
424 active_input_method_ids_.push_back(unfiltered_input_method_ids[i]); 417 active_input_method_ids_.push_back(unfiltered_input_method_ids[i]);
425 } 418 }
426 } 419 }
427 } 420 }
428 421
429 void InputMethodManagerImpl::ActivateInputMethodMenuItem( 422 void InputMethodManagerImpl::ActivateInputMethodProperty(
430 const std::string& key) { 423 const std::string& key) {
431 DCHECK(!key.empty()); 424 DCHECK(!key.empty());
432 425
433 if (ash::ime::InputMethodMenuManager::Get()-> 426 for (size_t i = 0; i < property_list_.size(); ++i) {
434 HasInputMethodMenuItemForKey(key)) { 427 if (property_list_[i].key == key) {
435 IMEEngineHandlerInterface* engine = 428 IMEEngineHandlerInterface* engine =
436 IMEBridge::Get()->GetCurrentEngineHandler(); 429 IMEBridge::Get()->GetCurrentEngineHandler();
437 if (engine) 430 if (engine)
438 engine->PropertyActivate(key); 431 engine->PropertyActivate(key);
439 return; 432 return;
433 }
440 } 434 }
441 435
442 DVLOG(1) << "ActivateInputMethodMenuItem: unknown key: " << key; 436 DVLOG(1) << "ActivateInputMethodProperty: unknown key: " << key;
443 } 437 }
444 438
445 void InputMethodManagerImpl::AddInputMethodExtension( 439 void InputMethodManagerImpl::AddInputMethodExtension(
446 const std::string& id, 440 const std::string& id,
447 InputMethodEngineInterface* engine) { 441 InputMethodEngineInterface* engine) {
448 if (state_ == STATE_TERMINATING) 442 if (state_ == STATE_TERMINATING)
449 return; 443 return;
450 444
451 if (!extension_ime_util::IsExtensionIME(id) && 445 if (!extension_ime_util::IsExtensionIME(id) &&
452 !extension_ime_util::IsComponentExtensionIME(id)) { 446 !extension_ime_util::IsComponentExtensionIME(id)) {
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after
686 ChangeInputMethodInternal(*iter, true); 680 ChangeInputMethodInternal(*iter, true);
687 } 681 }
688 682
689 InputMethodDescriptor InputMethodManagerImpl::GetCurrentInputMethod() const { 683 InputMethodDescriptor InputMethodManagerImpl::GetCurrentInputMethod() const {
690 if (current_input_method_.id().empty()) 684 if (current_input_method_.id().empty())
691 return InputMethodUtil::GetFallbackInputMethodDescriptor(); 685 return InputMethodUtil::GetFallbackInputMethodDescriptor();
692 686
693 return current_input_method_; 687 return current_input_method_;
694 } 688 }
695 689
690 InputMethodPropertyList
691 InputMethodManagerImpl::GetCurrentInputMethodProperties() const {
692 // This check is necessary since an IME property (e.g. for Pinyin) might be
693 // sent from ibus-daemon AFTER the current input method is switched to XKB.
694 if (InputMethodUtil::IsKeyboardLayout(GetCurrentInputMethod().id()))
695 return InputMethodPropertyList(); // Empty list.
696 return property_list_;
697 }
698
699 void InputMethodManagerImpl::SetCurrentInputMethodProperties(
700 const InputMethodPropertyList& property_list) {
701 property_list_ = property_list;
702 PropertyChanged();
703 }
704
696 XKeyboard* InputMethodManagerImpl::GetXKeyboard() { 705 XKeyboard* InputMethodManagerImpl::GetXKeyboard() {
697 return xkeyboard_.get(); 706 return xkeyboard_.get();
698 } 707 }
699 708
700 InputMethodUtil* InputMethodManagerImpl::GetInputMethodUtil() { 709 InputMethodUtil* InputMethodManagerImpl::GetInputMethodUtil() {
701 return &util_; 710 return &util_;
702 } 711 }
703 712
704 ComponentExtensionIMEManager* 713 ComponentExtensionIMEManager*
705 InputMethodManagerImpl::GetComponentExtensionIMEManager() { 714 InputMethodManagerImpl::GetComponentExtensionIMEManager() {
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
741 750
742 void InputMethodManagerImpl::SetXKeyboardForTesting(XKeyboard* xkeyboard) { 751 void InputMethodManagerImpl::SetXKeyboardForTesting(XKeyboard* xkeyboard) {
743 xkeyboard_.reset(xkeyboard); 752 xkeyboard_.reset(xkeyboard);
744 } 753 }
745 754
746 void InputMethodManagerImpl::InitializeComponentExtensionForTesting( 755 void InputMethodManagerImpl::InitializeComponentExtensionForTesting(
747 scoped_ptr<ComponentExtensionIMEManagerDelegate> delegate) { 756 scoped_ptr<ComponentExtensionIMEManagerDelegate> delegate) {
748 OnComponentExtensionInitialized(delegate.Pass()); 757 OnComponentExtensionInitialized(delegate.Pass());
749 } 758 }
750 759
760 void InputMethodManagerImpl::PropertyChanged() {
761 FOR_EACH_OBSERVER(InputMethodManager::Observer,
762 observers_,
763 InputMethodPropertyChanged(this));
764 }
765
751 void InputMethodManagerImpl::CandidateClicked(int index) { 766 void InputMethodManagerImpl::CandidateClicked(int index) {
752 IMEEngineHandlerInterface* engine = 767 IMEEngineHandlerInterface* engine =
753 IMEBridge::Get()->GetCurrentEngineHandler(); 768 IMEBridge::Get()->GetCurrentEngineHandler();
754 if (engine) 769 if (engine)
755 engine->CandidateClicked(index); 770 engine->CandidateClicked(index);
756 } 771 }
757 772
758 void InputMethodManagerImpl::CandidateWindowOpened() { 773 void InputMethodManagerImpl::CandidateWindowOpened() {
759 FOR_EACH_OBSERVER(InputMethodManager::CandidateWindowObserver, 774 FOR_EACH_OBSERVER(InputMethodManager::CandidateWindowObserver,
760 candidate_window_observers_, 775 candidate_window_observers_,
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
821 if (candidate_window_controller_.get()) 836 if (candidate_window_controller_.get())
822 return; 837 return;
823 838
824 candidate_window_controller_.reset( 839 candidate_window_controller_.reset(
825 CandidateWindowController::CreateCandidateWindowController()); 840 CandidateWindowController::CreateCandidateWindowController());
826 candidate_window_controller_->AddObserver(this); 841 candidate_window_controller_->AddObserver(this);
827 } 842 }
828 843
829 } // namespace input_method 844 } // namespace input_method
830 } // namespace chromeos 845 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698