Chromium Code Reviews| Index: chrome/browser/chromeos/input_method/input_method_manager_impl.h |
| diff --git a/chrome/browser/chromeos/input_method/input_method_manager_impl.h b/chrome/browser/chromeos/input_method/input_method_manager_impl.h |
| index 54698e400be37fecc4bbeed613df313fabfd0fd2..4db24406f694d549521e3045a869d450747d0358 100644 |
| --- a/chrome/browser/chromeos/input_method/input_method_manager_impl.h |
| +++ b/chrome/browser/chromeos/input_method/input_method_manager_impl.h |
| @@ -30,13 +30,48 @@ class ImeKeyboard; |
| class InputMethodManagerImpl : public InputMethodManager, |
| public CandidateWindowController::Observer { |
| public: |
| + class State : public InputMethodManager::State { |
| + public: |
| + State(); |
| + |
| + // Init new state as a copy of other. |
| + void InitFrom(const State& other); |
| + |
| + std::string Dump() const; |
| + |
| + std::string state_name; |
| + |
| + // The input method which was/is selected. |
| + InputMethodDescriptor previous_input_method_; |
| + InputMethodDescriptor current_input_method_; |
| + // The active input method ids cache. |
| + std::vector<std::string> active_input_method_ids_; |
| + |
| + // For screen locker. When the screen is locked, |previous_input_method_|, |
| + // |current_input_method_|, and |active_input_method_ids_| above are copied |
| + // to these "saved" variables. |
| + InputMethodDescriptor saved_previous_input_method_; |
| + InputMethodDescriptor saved_current_input_method_; |
| + std::vector<std::string> saved_active_input_method_ids_; |
| + |
| + // The engine map: |
| + // { input_method_id : Engine }. |
|
Shu Chen
2014/08/07 15:40:19
s/input_method_id/extension_id
Alexander Alekseev
2014/08/13 10:14:15
Done.
|
| + typedef std::map<std::string, InputMethodEngineInterface*> EngineMap; |
| + EngineMap engine_map_; |
|
Shu Chen
2014/08/07 15:40:19
The engine_map_ is not profile based now, and it's
Alexander Alekseev
2014/08/13 10:14:15
Done.
|
| + |
| + protected: |
| + friend base::RefCounted<chromeos::input_method::InputMethodManager::State>; |
| + virtual ~State(); |
| + }; |
| + |
| // Constructs an InputMethodManager instance. The client is responsible for |
| - // calling |SetState| in response to relevant changes in browser state. |
| + // calling |SetUISessionState| in response to relevant changes in browser |
| + // state. |
| explicit InputMethodManagerImpl(scoped_ptr<InputMethodDelegate> delegate); |
| virtual ~InputMethodManagerImpl(); |
| - // Receives notification of an InputMethodManager::State transition. |
| - void SetState(State new_state); |
| + // Receives notification of an InputMethodManager::UISessionState transition. |
| + void SetUISessionState(UISessionState new_ui_session); |
| // InputMethodManager override: |
| virtual void InitializeComponentExtension() OVERRIDE; |
| @@ -93,6 +128,11 @@ class InputMethodManagerImpl : public InputMethodManager, |
| virtual bool MigrateInputMethods( |
| std::vector<std::string>* input_method_ids) OVERRIDE; |
| + virtual scoped_refptr<InputMethodManager::State> CreateNewState( |
| + const std::string& debug_name) const OVERRIDE; |
| + virtual void SetState( |
| + scoped_refptr<InputMethodManager::State> state) OVERRIDE; |
| + |
| // Sets |candidate_window_controller_|. |
| void SetCandidateWindowControllerForTesting( |
| CandidateWindowController* candidate_window_controller); |
| @@ -138,11 +178,14 @@ class InputMethodManagerImpl : public InputMethodManager, |
| const std::vector<std::string>& input_method_ids, |
| const std::string& current_input_method_id); |
| - // Change system input method. |
| - // Returns true if the system input method is changed. |
| - bool ChangeInputMethodInternal(const std::string& input_method_id, |
| + // Change system input method and inform observers. Doesn't modify state. |
| + void ChangeInputMethodInternal(const InputMethodDescriptor& input_method_id, |
| bool show_message); |
| + // Change system input method. |
| + void LookupAndChangeInputMethodInternal(const std::string& input_method_id, |
| + bool show_message); |
| + |
| // Loads necessary component extensions. |
| // TODO(nona): Support dynamical unloading. |
| void LoadNecessaryComponentExtensions(); |
| @@ -159,27 +202,16 @@ class InputMethodManagerImpl : public InputMethodManager, |
| scoped_ptr<InputMethodDelegate> delegate_; |
| // The current browser status. |
| - State state_; |
| + UISessionState ui_session_; |
| // A list of objects that monitor the manager. |
| ObserverList<InputMethodManager::Observer> observers_; |
| ObserverList<CandidateWindowObserver> candidate_window_observers_; |
| - // The input method which was/is selected. |
| - InputMethodDescriptor previous_input_method_; |
| - InputMethodDescriptor current_input_method_; |
| - // The active input method ids cache. |
| - std::vector<std::string> active_input_method_ids_; |
| - |
| // The list of enabled extension IMEs. |
| std::vector<std::string> enabled_extension_imes_; |
| - // For screen locker. When the screen is locked, |previous_input_method_|, |
| - // |current_input_method_|, and |active_input_method_ids_| above are copied |
| - // to these "saved" variables. |
| - InputMethodDescriptor saved_previous_input_method_; |
| - InputMethodDescriptor saved_current_input_method_; |
| - std::vector<std::string> saved_active_input_method_ids_; |
| + scoped_refptr<InputMethodManagerImpl::State> state_; |
| // Extra input methods that have been explicitly added to the menu, such as |
| // those created by extension. |
| @@ -204,9 +236,6 @@ class InputMethodManagerImpl : public InputMethodManager, |
| base::WeakPtrFactory<InputMethodManagerImpl> weak_ptr_factory_; |
| - // The engine map from extension_id to an engine. |
| - std::map<std::string, InputMethodEngineInterface*> engine_map_; |
| - |
| DISALLOW_COPY_AND_ASSIGN(InputMethodManagerImpl); |
| }; |