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..44eb28535d27f54e03aab52d942fd2b67471d066 100644 |
--- a/chrome/browser/chromeos/input_method/input_method_manager_impl.h |
+++ b/chrome/browser/chromeos/input_method/input_method_manager_impl.h |
@@ -30,16 +30,108 @@ class ImeKeyboard; |
class InputMethodManagerImpl : public InputMethodManager, |
public CandidateWindowController::Observer { |
public: |
+ class State : public InputMethodManager::State { |
Nikita (slow)
2014/08/13 10:56:41
As discussed, makes sense to rename as StateImpl.
Alexander Alekseev
2014/08/13 23:29:32
Done.
|
+ public: |
+ State(InputMethodManagerImpl* manager, Profile* profile); |
+ |
+ // Init new state as a copy of other. |
+ void InitFrom(const State& other); |
+ |
+ // Returns true if (manager_->state_ == this). |
+ bool IsActive() const; |
+ |
+ // Returns human-readable dump (for debug). |
+ std::string Dump() const; |
+ |
+ // Adds new input method to given list if possible |
+ bool EnableInputMethodImpl( |
+ const std::string& input_method_id, |
+ std::vector<std::string>* new_active_input_method_ids) const; |
+ |
+ // Returns true if |input_method_id| is in |active_input_method_ids|. |
+ bool InputMethodIsActivated(const std::string& input_method_id); |
+ |
+ // If |current_input_methodid_| is not in |input_method_ids|, switch to |
+ // input_method_ids[0]. If the ID is equal to input_method_ids[N], switch to |
+ // input_method_ids[N+1]. |
+ void SwitchToNextInputMethodInternal( |
+ const std::vector<std::string>& input_method_ids, |
+ const std::string& current_input_methodid); |
+ |
+ // InputMethodManager::State overrides. |
+ virtual void AddInputMethodExtension( |
+ const std::string& extension_id, |
+ const InputMethodDescriptors& descriptors, |
+ InputMethodEngineInterface* instance) OVERRIDE; |
+ virtual void RemoveInputMethodExtension( |
+ const std::string& extension_id) OVERRIDE; |
+ virtual void ChangeInputMethod(const std::string& input_method_id, |
+ bool show_message) OVERRIDE; |
+ virtual bool EnableInputMethod( |
+ const std::string& new_active_input_method_id) OVERRIDE; |
+ virtual void EnableLoginLayouts( |
+ const std::string& language_code, |
+ const std::vector<std::string>& initial_layouts) OVERRIDE; |
+ virtual void EnableLockScreenLayouts() OVERRIDE; |
+ virtual void GetInputMethodExtensions( |
+ InputMethodDescriptors* result) OVERRIDE; |
+ virtual scoped_ptr<InputMethodDescriptors> GetActiveInputMethods() |
+ const OVERRIDE; |
+ virtual const std::vector<std::string>& GetActiveInputMethodIds() |
+ const OVERRIDE; |
+ virtual const InputMethodDescriptor* GetInputMethodFromId( |
+ const std::string& input_method_id) const OVERRIDE; |
+ virtual size_t GetNumActiveInputMethods() const OVERRIDE; |
+ virtual void SetEnabledExtensionImes( |
+ std::vector<std::string>* ids) OVERRIDE; |
+ virtual void SetInputMethodLoginDefault() OVERRIDE; |
+ virtual void SetInputMethodLoginDefaultFromVPD( |
+ const std::string& locale, |
+ const std::string& layout) OVERRIDE; |
+ virtual bool SwitchToNextInputMethod() OVERRIDE; |
+ virtual bool SwitchToPreviousInputMethod( |
+ const ui::Accelerator& accelerator) OVERRIDE; |
+ virtual bool SwitchInputMethod(const ui::Accelerator& accelerator) OVERRIDE; |
+ virtual InputMethodDescriptor GetCurrentInputMethod() const OVERRIDE; |
+ virtual bool ReplaceEnabledInputMethods( |
+ const std::vector<std::string>& new_active_input_method_ids) OVERRIDE; |
+ |
+ // ------------------------- Data members. |
+ Profile* const profile; |
+ |
+ // 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; |
+ |
+ // Extra input methods that have been explicitly added to the menu, such as |
+ // those created by extension. |
+ std::map<std::string, InputMethodDescriptor> extra_input_methods; |
+ |
+ private: |
+ InputMethodManagerImpl* const manager_; |
+ |
+ 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; |
+ virtual void InitializeComponentExtension(Profile* profile) OVERRIDE; |
virtual void AddObserver(InputMethodManager::Observer* observer) OVERRIDE; |
virtual void AddCandidateWindowObserver( |
InputMethodManager::CandidateWindowObserver* observer) OVERRIDE; |
@@ -48,39 +140,7 @@ class InputMethodManagerImpl : public InputMethodManager, |
InputMethodManager::CandidateWindowObserver* observer) OVERRIDE; |
virtual scoped_ptr<InputMethodDescriptors> |
GetSupportedInputMethods() const OVERRIDE; |
- virtual scoped_ptr<InputMethodDescriptors> |
- GetActiveInputMethods() const OVERRIDE; |
- virtual const std::vector<std::string>& GetActiveInputMethodIds() const |
- OVERRIDE; |
- virtual size_t GetNumActiveInputMethods() const OVERRIDE; |
- virtual const InputMethodDescriptor* GetInputMethodFromId( |
- const std::string& input_method_id) const OVERRIDE; |
- virtual void EnableLoginLayouts( |
- const std::string& language_code, |
- const std::vector<std::string>& initial_layouts) OVERRIDE; |
- virtual bool ReplaceEnabledInputMethods( |
- const std::vector<std::string>& new_active_input_method_ids) OVERRIDE; |
- virtual bool EnableInputMethod(const std::string& new_active_input_method_id) |
- OVERRIDE; |
- virtual void ChangeInputMethod(const std::string& input_method_id) OVERRIDE; |
virtual void ActivateInputMethodMenuItem(const std::string& key) OVERRIDE; |
- virtual void AddInputMethodExtension( |
- const std::string& extension_id, |
- const InputMethodDescriptors& descriptors, |
- InputMethodEngineInterface* instance) OVERRIDE; |
- virtual void RemoveInputMethodExtension( |
- const std::string& extension_id) OVERRIDE; |
- virtual void GetInputMethodExtensions( |
- InputMethodDescriptors* result) OVERRIDE; |
- virtual void SetEnabledExtensionImes(std::vector<std::string>* ids) OVERRIDE; |
- virtual void SetInputMethodLoginDefault() OVERRIDE; |
- virtual void SetInputMethodLoginDefaultFromVPD( |
- const std::string& locale, const std::string& layout) OVERRIDE; |
- virtual bool SwitchToNextInputMethod() OVERRIDE; |
- virtual bool SwitchToPreviousInputMethod( |
- const ui::Accelerator& accelerator) OVERRIDE; |
- virtual bool SwitchInputMethod(const ui::Accelerator& accelerator) OVERRIDE; |
- virtual InputMethodDescriptor GetCurrentInputMethod() const OVERRIDE; |
virtual bool IsISOLevel5ShiftUsedByCurrentInputMethod() const OVERRIDE; |
virtual bool IsAltGrUsedByCurrentInputMethod() const OVERRIDE; |
@@ -93,6 +153,15 @@ class InputMethodManagerImpl : public InputMethodManager, |
virtual bool MigrateInputMethods( |
std::vector<std::string>* input_method_ids) OVERRIDE; |
+ virtual scoped_refptr<InputMethodManager::State> GetDefaultState( |
+ Profile* profile) OVERRIDE; |
+ |
+ virtual scoped_refptr<InputMethodManager::State> GetActiveIMEState() OVERRIDE; |
+ virtual scoped_refptr<InputMethodManager::State> CloneState( |
+ const InputMethodManager::State* state) OVERRIDE; |
+ virtual void SetState( |
+ scoped_refptr<InputMethodManager::State> state) OVERRIDE; |
+ |
// Sets |candidate_window_controller_|. |
void SetCandidateWindowControllerForTesting( |
CandidateWindowController* candidate_window_controller); |
@@ -120,9 +189,6 @@ class InputMethodManagerImpl : public InputMethodManager, |
// current input method as needed. |
void OnScreenUnlocked(); |
- // Returns true if |input_method_id| is in |active_input_method_ids_|. |
- bool InputMethodIsActivated(const std::string& input_method_id); |
- |
// Returns true if the given input method config value is a string list |
// that only contains an input method ID of a keyboard layout. |
bool ContainsOnlyKeyboardLayout(const std::vector<std::string>& value); |
@@ -131,59 +197,35 @@ class InputMethodManagerImpl : public InputMethodManager, |
// done. |
void MaybeInitializeCandidateWindowController(); |
- // If |current_input_method_id_| is not in |input_method_ids|, switch to |
- // input_method_ids[0]. If the ID is equal to input_method_ids[N], switch to |
- // input_method_ids[N+1]. |
- void SwitchToNextInputMethodInternal( |
- const std::vector<std::string>& input_method_ids, |
- const std::string& current_input_method_id); |
+ // Returns Input Method that best matches given id. |
+ const InputMethodDescriptor* LookupInputMethod( |
+ const std::string& input_method_id, |
+ State* state); |
// Change system input method. |
- // Returns true if the system input method is changed. |
- bool ChangeInputMethodInternal(const std::string& input_method_id, |
- bool show_message); |
+ void ChangeInputMethodInternal(const InputMethodDescriptor& descriptor, |
+ bool show_message, |
+ bool notify_menu); |
// Loads necessary component extensions. |
// TODO(nona): Support dynamical unloading. |
- void LoadNecessaryComponentExtensions(); |
- |
- // Adds new input method to given list if possible |
- bool EnableInputMethodImpl( |
- const std::string& input_method_id, |
- std::vector<std::string>* new_active_input_method_ids) const; |
+ void LoadNecessaryComponentExtensions(State*); |
// Starts or stops the system input method framework as needed. |
- // (after list of enabled input methods has been updated) |
- void ReconfigureIMFramework(); |
+ // (after list of enabled input methods has been updated). |
+ // If state is active, active input method is updated. |
+ void ReconfigureIMFramework(State* state); |
scoped_ptr<InputMethodDelegate> delegate_; |
// The current browser status. |
- State state_; |
+ UISessionState ui_session_; |
Shu Chen
2014/08/13 16:15:34
pls update the comment.
Alexander Alekseev
2014/08/13 23:29:32
Done.
|
// 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_; |
- |
- // Extra input methods that have been explicitly added to the menu, such as |
- // those created by extension. |
- std::map<std::string, InputMethodDescriptor> extra_input_methods_; |
+ scoped_refptr<State> state_; |
// The candidate window. This will be deleted when the APP_TERMINATING |
// message is sent. |
@@ -203,9 +245,12 @@ class InputMethodManagerImpl : public InputMethodManager, |
base::ThreadChecker thread_checker_; |
base::WeakPtrFactory<InputMethodManagerImpl> weak_ptr_factory_; |
Shu Chen
2014/08/13 16:15:33
add a blank line.
Alexander Alekseev
2014/08/13 23:29:32
Done.
|
- |
// The engine map from extension_id to an engine. |
- std::map<std::string, InputMethodEngineInterface*> engine_map_; |
+ typedef std::map<std::string, InputMethodEngineInterface*> EngineMap; |
+ EngineMap engine_map_; |
+ |
+ // Default profile states. |
+ std::map<Profile*, scoped_refptr<State> > default_states_; |
Shu Chen
2014/08/13 16:15:34
Can you please add comments to explain for what do
Alexander Alekseev
2014/08/13 23:29:32
Before your recent CL, there were two independant
|
DISALLOW_COPY_AND_ASSIGN(InputMethodManagerImpl); |
}; |