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

Unified Diff: chrome/browser/ui/webui/chromeos/login/network_screen_handler.cc

Issue 190033005: [IME] Removes the duplicated IMEs in chrome://settings/languages, and support async component IMEs … (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: .. Created 6 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/webui/chromeos/login/network_screen_handler.cc
diff --git a/chrome/browser/ui/webui/chromeos/login/network_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/network_screen_handler.cc
index a976a3737499a4df4722832230dc1ab84f7ad0ab..98be0377adf1e75933967f65a36c0df1b0098a2d 100644
--- a/chrome/browser/ui/webui/chromeos/login/network_screen_handler.cc
+++ b/chrome/browser/ui/webui/chromeos/login/network_screen_handler.cc
@@ -85,11 +85,17 @@ NetworkScreenHandler::NetworkScreenHandler(CoreOobeActor* core_oobe_actor)
weak_ptr_factory_(this) {
DCHECK(core_oobe_actor_);
SetupTimeouts();
+
+ input_method::InputMethodManager::Get()->
+ GetComponentExtensionIMEManager()->AddObserver(this);
}
NetworkScreenHandler::~NetworkScreenHandler() {
if (screen_)
screen_->OnActorDestroyed(this);
+
+ input_method::InputMethodManager::Get()->
+ GetComponentExtensionIMEManager()->RemoveObserver(this);
}
// NetworkScreenHandler, NetworkScreenActor implementation: --------------------
@@ -373,11 +379,17 @@ base::ListValue* NetworkScreenHandler::GetLanguageList() {
const std::string app_locale = g_browser_process->GetApplicationLocale();
input_method::InputMethodManager* manager =
input_method::InputMethodManager::Get();
- // GetSupportedInputMethods() never returns NULL.
- scoped_ptr<input_method::InputMethodDescriptors> descriptors(
- manager->GetSupportedInputMethods());
+ ComponentExtensionIMEManager* comp_manager =
+ manager->GetComponentExtensionIMEManager();
+ input_method::InputMethodDescriptors descriptors;
+ if (extension_ime_util::UseWrappedExtensionKeyboardLayouts()) {
+ if (comp_manager->IsInitialized())
+ descriptors = comp_manager->GetXkbIMEAsInputMethodDescriptor();
+ } else {
+ descriptors = *(manager->GetSupportedInputMethods());
+ }
base::ListValue* languages_list =
- options::CrosLanguageOptionsHandler::GetUILanguageList(*descriptors);
+ options::CrosLanguageOptionsHandler::GetUILanguageList(descriptors);
for (size_t i = 0; i < languages_list->GetSize(); ++i) {
base::DictionaryValue* language_info = NULL;
if (!languages_list->GetDictionary(i, &language_info))
@@ -422,23 +434,42 @@ base::DictionaryValue* CreateInputMethodsEntry(
return input_method.release();
}
+void NetworkScreenHandler::OnInitialized() {
+ LOG(ERROR) << "------NetworkScreenHandler::OnInitialized";
Seigo Nonaka 2014/03/07 07:50:05 Please remove debug code.
Shu Chen 2014/03/07 08:25:32 Done.
+ input_method::InputMethodManager* manager =
+ input_method::InputMethodManager::Get();
+ manager->SetInputMethodLoginDefault();
+ LOG(ERROR) << "------NetworkScreenHandler::OnInitialized, set login layouts";
+
+ base::DictionaryValue localized_strings;
+ static_cast<OobeUI*>(this->web_ui()->GetController())
+ ->GetLocalizedStrings(&localized_strings);
+ this->core_oobe_actor_->ReloadContent(localized_strings);
Seigo Nonaka 2014/03/07 07:50:05 Question: does ReloadContent cause display blink a
Shu Chen 2014/03/07 08:25:32 ReloadContent() methods will just call a JS functi
+ LOG(ERROR) << "------NetworkScreenHandler::OnInitialized, reload content";
+
+ // Buttons are recreated, updated "Continue" button state.
+ this->EnableContinue(this->is_continue_enabled_);
+}
+
// static
base::ListValue* NetworkScreenHandler::GetInputMethods() {
base::ListValue* input_methods_list = new base::ListValue;
input_method::InputMethodManager* manager =
input_method::InputMethodManager::Get();
input_method::InputMethodUtil* util = manager->GetInputMethodUtil();
+ ComponentExtensionIMEManager* comp_manager =
+ manager->GetComponentExtensionIMEManager();
+ if (!comp_manager->IsInitialized()) {
+ input_method::InputMethodDescriptor fallback =
+ util->GetFallbackInputMethodDescriptor();
+ input_methods_list->Append(
+ CreateInputMethodsEntry(fallback, fallback.id()));
+ return input_methods_list;
+ }
+
scoped_ptr<input_method::InputMethodDescriptors> input_methods(
manager->GetActiveInputMethods());
- // Uses extension_ime_util::MaybeGetLegacyXkbId() to make sure the input
- // method id is in legacy xkb id format (e.g. xkb:us::eng), instead of
- // extension based xkd id format (e.g. _comp_ime_...xkb:us::eng).
- // Same for the rests.
- // TODO(shuchen): support wait for component extension loading, and then show
- // OOBE window. So that extension_ime_util::MaybeGetLegacyXkbId() can be
- // removed.
- std::string current_input_method_id = extension_ime_util::MaybeGetLegacyXkbId(
- manager->GetCurrentInputMethod().id());
+ std::string current_input_method_id = manager->GetCurrentInputMethod().id();
const std::vector<std::string>& hardware_login_input_methods =
util->GetHardwareLoginInputMethodIds();
std::set<std::string> input_methods_added;
@@ -447,14 +478,12 @@ base::ListValue* NetworkScreenHandler::GetInputMethods() {
hardware_login_input_methods.begin();
i != hardware_login_input_methods.end();
++i) {
- // Makes sure the id is in legacy xkb id format.
- const std::string id = extension_ime_util::MaybeGetLegacyXkbId(*i);
- input_methods_added.insert(id);
const input_method::InputMethodDescriptor* ime =
- util->GetInputMethodDescriptorFromId(id);
+ util->GetInputMethodDescriptorFromId(*i);
DCHECK(ime != NULL);
// Do not crash in case of misconfiguration.
if (ime != NULL) {
+ input_methods_added.insert(*i);
input_methods_list->Append(
CreateInputMethodsEntry(*ime, current_input_method_id));
}
@@ -463,8 +492,7 @@ base::ListValue* NetworkScreenHandler::GetInputMethods() {
bool optgroup_added = false;
for (size_t i = 0; i < input_methods->size(); ++i) {
// Makes sure the id is in legacy xkb id format.
- const std::string& ime_id = extension_ime_util::MaybeGetLegacyXkbId(
- (*input_methods)[i].id());
+ const std::string& ime_id = (*input_methods)[i].id();
if (!InsertString(ime_id, input_methods_added))
continue;
if (!optgroup_added) {
@@ -475,9 +503,11 @@ base::ListValue* NetworkScreenHandler::GetInputMethods() {
CreateInputMethodsEntry((*input_methods)[i], current_input_method_id));
}
// "xkb:us::eng" should always be in the list of available layouts.
- if (input_methods_added.count(kUSlayout) == 0) {
+ std::string us_keyboard_id =
+ extension_ime_util::GetInputMethodIDByKeyboardLayout(kUSlayout);
+ if (input_methods_added.count(us_keyboard_id) == 0) {
const input_method::InputMethodDescriptor* us_eng_descriptor =
- util->GetInputMethodDescriptorFromId(kUSlayout);
+ util->GetInputMethodDescriptorFromId(us_keyboard_id);
DCHECK(us_eng_descriptor != NULL);
if (!optgroup_added) {
optgroup_added = true;
« no previous file with comments | « chrome/browser/ui/webui/chromeos/login/network_screen_handler.h ('k') | chromeos/ime/component_extension_ime_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698