diff options
author | shuchen@chromium.org <shuchen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-10 06:19:35 +0000 |
---|---|---|
committer | shuchen@chromium.org <shuchen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-10 06:19:35 +0000 |
commit | 372ba214ade15c3acf64cd53972d91f8c6b0acad (patch) | |
tree | 12fc05edd12e9663df5b1bad7665a790c790e51f /chromeos | |
parent | 0f8f5b473542e30930101eb61d044849fcaa17e3 (diff) | |
download | chromium_src-372ba214ade15c3acf64cd53972d91f8c6b0acad.zip chromium_src-372ba214ade15c3acf64cd53972d91f8c6b0acad.tar.gz chromium_src-372ba214ade15c3acf64cd53972d91f8c6b0acad.tar.bz2 |
[IME] Removes the duplicated IMEs in chrome://settings/languages, and support async component IMEs loading in oobe network screen, and fix the wrong indicator issue.
BUG=345604,349829
TEST=None
TBR=nona@chromium.org
Review URL: https://codereview.chromium.org/190033005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@255879 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chromeos')
-rw-r--r-- | chromeos/ime/component_extension_ime_manager.cc | 23 | ||||
-rw-r--r-- | chromeos/ime/component_extension_ime_manager.h | 10 | ||||
-rw-r--r-- | chromeos/ime/component_extension_ime_manager_unittest.cc | 4 |
3 files changed, 32 insertions, 5 deletions
diff --git a/chromeos/ime/component_extension_ime_manager.cc b/chromeos/ime/component_extension_ime_manager.cc index 3037326..e33ce3e 100644 --- a/chromeos/ime/component_extension_ime_manager.cc +++ b/chromeos/ime/component_extension_ime_manager.cc @@ -76,7 +76,7 @@ ComponentExtensionIMEManagerDelegate::~ComponentExtensionIMEManagerDelegate() { } ComponentExtensionIMEManager::ComponentExtensionIMEManager() - : is_initialized_(false) { + : is_initialized_(false), was_initialization_notified_(false) { for (size_t i = 0; i < arraysize(kLoginLayoutWhitelist); ++i) { login_layout_set_.insert(kLoginLayoutWhitelist[i]); } @@ -90,7 +90,14 @@ void ComponentExtensionIMEManager::Initialize( delegate_ = delegate.Pass(); component_extension_imes_ = delegate_->ListIME(); is_initialized_ = true; - FOR_EACH_OBSERVER(Observer, observers_, OnInitialized()); +} + +void ComponentExtensionIMEManager::NotifyInitialized() { + if (is_initialized_ && !was_initialization_notified_) { + FOR_EACH_OBSERVER( + Observer, observers_, OnImeComponentExtensionInitialized()); + was_initialization_notified_ = true; + } } bool ComponentExtensionIMEManager::IsInitialized() { @@ -203,6 +210,18 @@ input_method::InputMethodDescriptors return result; } +input_method::InputMethodDescriptors +ComponentExtensionIMEManager::GetXkbIMEAsInputMethodDescriptor() { + input_method::InputMethodDescriptors result; + const input_method::InputMethodDescriptors& descriptors = + GetAllIMEAsInputMethodDescriptor(); + for (size_t i = 0; i < descriptors.size(); ++i) { + if (extension_ime_util::IsKeyboardLayoutExtension(descriptors[i].id())) + result.push_back(descriptors[i]); + } + return result; +} + void ComponentExtensionIMEManager::AddObserver(Observer* observer) { observers_.AddObserver(observer); } diff --git a/chromeos/ime/component_extension_ime_manager.h b/chromeos/ime/component_extension_ime_manager.h index 8d79758..fad81d3 100644 --- a/chromeos/ime/component_extension_ime_manager.h +++ b/chromeos/ime/component_extension_ime_manager.h @@ -66,7 +66,7 @@ class CHROMEOS_EXPORT ComponentExtensionIMEManager { class Observer { public: // Called when the initialization is done. - virtual void OnInitialized() = 0; + virtual void OnImeComponentExtensionInitialized() = 0; }; ComponentExtensionIMEManager(); @@ -77,6 +77,9 @@ class CHROMEOS_EXPORT ComponentExtensionIMEManager { // be called before using any other function. void Initialize(scoped_ptr<ComponentExtensionIMEManagerDelegate> delegate); + // Notifies the observers for the component extension IMEs are initialized. + void NotifyInitialized(); + // Returns true if the initialization is done, otherwise returns false. bool IsInitialized(); @@ -114,6 +117,9 @@ class CHROMEOS_EXPORT ComponentExtensionIMEManager { // Returns all IME as InputMethodDescriptors. input_method::InputMethodDescriptors GetAllIMEAsInputMethodDescriptor(); + // Returns all XKB keyboard IME as InputMethodDescriptors. + input_method::InputMethodDescriptors GetXkbIMEAsInputMethodDescriptor(); + void AddObserver(Observer* observer); void RemoveObserver(Observer* observer); @@ -135,6 +141,8 @@ class CHROMEOS_EXPORT ComponentExtensionIMEManager { bool is_initialized_; + bool was_initialization_notified_; + std::set<std::string> login_layout_set_; DISALLOW_COPY_AND_ASSIGN(ComponentExtensionIMEManager); diff --git a/chromeos/ime/component_extension_ime_manager_unittest.cc b/chromeos/ime/component_extension_ime_manager_unittest.cc index d9182e0..98571d2 100644 --- a/chromeos/ime/component_extension_ime_manager_unittest.cc +++ b/chromeos/ime/component_extension_ime_manager_unittest.cc @@ -122,7 +122,7 @@ class ComponentExtensionIMEManagerTest : scoped_ptr<ComponentExtensionIMEManagerDelegate>( mock_delegate_).Pass()); EXPECT_TRUE(component_ext_mgr_->IsInitialized()); - + component_ext_mgr_->NotifyInitialized(); } virtual void TearDown() { @@ -136,7 +136,7 @@ class ComponentExtensionIMEManagerTest : std::vector<ComponentExtensionIME> ime_list_; private: - virtual void OnInitialized() OVERRIDE { + virtual void OnImeComponentExtensionInitialized() OVERRIDE { ++on_initialized_callcount_; } |