summaryrefslogtreecommitdiffstats
path: root/chromeos
diff options
context:
space:
mode:
authorshuchen@chromium.org <shuchen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-10 06:19:35 +0000
committershuchen@chromium.org <shuchen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-10 06:19:35 +0000
commit372ba214ade15c3acf64cd53972d91f8c6b0acad (patch)
tree12fc05edd12e9663df5b1bad7665a790c790e51f /chromeos
parent0f8f5b473542e30930101eb61d044849fcaa17e3 (diff)
downloadchromium_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.cc23
-rw-r--r--chromeos/ime/component_extension_ime_manager.h10
-rw-r--r--chromeos/ime/component_extension_ime_manager_unittest.cc4
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_;
}