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

Side by Side Diff: chrome/browser/ui/webui/options/chromeos/cros_language_options_handler.cc

Issue 389913002: Moving IME manifests to chrome resources. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: removed duplicated XKB extension loading. Created 6 years, 4 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/webui/options/chromeos/cros_language_options_handler .h" 5 #include "chrome/browser/ui/webui/options/chromeos/cros_language_options_handler .h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/bind_helpers.h" 8 #include "base/bind_helpers.h"
9 #include "base/strings/stringprintf.h" 9 #include "base/strings/stringprintf.h"
10 #include "base/strings/utf_string_conversions.h" 10 #include "base/strings/utf_string_conversions.h"
(...skipping 22 matching lines...) Expand all
33 #include "extensions/common/extension.h" 33 #include "extensions/common/extension.h"
34 #include "grit/chromium_strings.h" 34 #include "grit/chromium_strings.h"
35 #include "grit/generated_resources.h" 35 #include "grit/generated_resources.h"
36 #include "ui/base/l10n/l10n_util.h" 36 #include "ui/base/l10n/l10n_util.h"
37 37
38 using base::UserMetricsAction; 38 using base::UserMetricsAction;
39 39
40 namespace chromeos { 40 namespace chromeos {
41 namespace options { 41 namespace options {
42 42
43 CrosLanguageOptionsHandler::CrosLanguageOptionsHandler() 43 CrosLanguageOptionsHandler::CrosLanguageOptionsHandler() {
44 : composition_extension_appended_(false),
45 is_page_initialized_(false) {
46 input_method::InputMethodManager::Get()->GetComponentExtensionIMEManager()->
47 AddObserver(this);
48 } 44 }
49 45
50 CrosLanguageOptionsHandler::~CrosLanguageOptionsHandler() { 46 CrosLanguageOptionsHandler::~CrosLanguageOptionsHandler() {
51 input_method::InputMethodManager::Get()->GetComponentExtensionIMEManager()->
52 RemoveObserver(this);
53 } 47 }
54 48
55 void CrosLanguageOptionsHandler::GetLocalizedValues( 49 void CrosLanguageOptionsHandler::GetLocalizedValues(
56 base::DictionaryValue* localized_strings) { 50 base::DictionaryValue* localized_strings) {
57 ::options::LanguageOptionsHandlerCommon::GetLocalizedValues( 51 ::options::LanguageOptionsHandlerCommon::GetLocalizedValues(
58 localized_strings); 52 localized_strings);
59 53
60 RegisterTitle(localized_strings, "languagePage", 54 RegisterTitle(localized_strings, "languagePage",
61 IDS_OPTIONS_SETTINGS_LANGUAGES_AND_INPUT_DIALOG_TITLE); 55 IDS_OPTIONS_SETTINGS_LANGUAGES_AND_INPUT_DIALOG_TITLE);
62 localized_strings->SetString("okButton", l10n_util::GetStringUTF16(IDS_OK)); 56 localized_strings->SetString("okButton", l10n_util::GetStringUTF16(IDS_OK));
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
99 manager->GetInputMethodExtensions(&ext_ime_descriptors); 93 manager->GetInputMethodExtensions(&ext_ime_descriptors);
100 94
101 base::ListValue* ext_ime_list = ConvertInputMethodDescriptorsToIMEList( 95 base::ListValue* ext_ime_list = ConvertInputMethodDescriptorsToIMEList(
102 ext_ime_descriptors); 96 ext_ime_descriptors);
103 AddImeProvider(ext_ime_list); 97 AddImeProvider(ext_ime_list);
104 localized_strings->Set("extensionImeList", ext_ime_list); 98 localized_strings->Set("extensionImeList", ext_ime_list);
105 99
106 ComponentExtensionIMEManager* component_extension_manager = 100 ComponentExtensionIMEManager* component_extension_manager =
107 input_method::InputMethodManager::Get() 101 input_method::InputMethodManager::Get()
108 ->GetComponentExtensionIMEManager(); 102 ->GetComponentExtensionIMEManager();
109 if (component_extension_manager->IsInitialized()) { 103 localized_strings->Set(
110 localized_strings->Set( 104 "componentExtensionImeList",
111 "componentExtensionImeList", 105 ConvertInputMethodDescriptorsToIMEList(
112 ConvertInputMethodDescriptorsToIMEList( 106 component_extension_manager->GetAllIMEAsInputMethodDescriptor()));
113 component_extension_manager->GetAllIMEAsInputMethodDescriptor()));
114 composition_extension_appended_ = true;
115 } else {
116 // If component extension IME manager is not ready for use, it will be
117 // added in |InitializePage()|.
118 localized_strings->Set("componentExtensionImeList",
119 new base::ListValue());
120 }
121 } 107 }
122 108
123 void CrosLanguageOptionsHandler::RegisterMessages() { 109 void CrosLanguageOptionsHandler::RegisterMessages() {
124 ::options::LanguageOptionsHandlerCommon::RegisterMessages(); 110 ::options::LanguageOptionsHandlerCommon::RegisterMessages();
125 111
126 web_ui()->RegisterMessageCallback("inputMethodDisable", 112 web_ui()->RegisterMessageCallback("inputMethodDisable",
127 base::Bind(&CrosLanguageOptionsHandler::InputMethodDisableCallback, 113 base::Bind(&CrosLanguageOptionsHandler::InputMethodDisableCallback,
128 base::Unretained(this))); 114 base::Unretained(this)));
129 web_ui()->RegisterMessageCallback("inputMethodEnable", 115 web_ui()->RegisterMessageCallback("inputMethodEnable",
130 base::Bind(&CrosLanguageOptionsHandler::InputMethodEnableCallback, 116 base::Bind(&CrosLanguageOptionsHandler::InputMethodEnableCallback,
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
255 SINGLETON_TAB, 241 SINGLETON_TAB,
256 content::PAGE_TRANSITION_LINK, 242 content::PAGE_TRANSITION_LINK,
257 false); 243 false);
258 browser->OpenURL(params); 244 browser->OpenURL(params);
259 browser->window()->Show(); 245 browser->window()->Show();
260 content::WebContents* web_contents = 246 content::WebContents* web_contents =
261 browser->tab_strip_model()->GetActiveWebContents(); 247 browser->tab_strip_model()->GetActiveWebContents();
262 web_contents->GetDelegate()->ActivateContents(web_contents); 248 web_contents->GetDelegate()->ActivateContents(web_contents);
263 } 249 }
264 250
265 void CrosLanguageOptionsHandler::OnImeComponentExtensionInitialized() {
266 if (composition_extension_appended_ || !is_page_initialized_) {
267 // If an option page is not ready to call JavaScript, appending component
268 // extension IMEs will be done in InitializePage function later.
269 return;
270 }
271
272 ComponentExtensionIMEManager* manager =
273 input_method::InputMethodManager::Get()
274 ->GetComponentExtensionIMEManager();
275
276 DCHECK(manager->IsInitialized());
277 scoped_ptr<base::ListValue> ime_list(
278 ConvertInputMethodDescriptorsToIMEList(
279 manager->GetAllIMEAsInputMethodDescriptor()));
280 web_ui()->CallJavascriptFunction(
281 "options.LanguageOptions.onComponentManagerInitialized",
282 *ime_list);
283 composition_extension_appended_ = true;
284 }
285
286 void CrosLanguageOptionsHandler::InitializePage() {
287 is_page_initialized_ = true;
288 if (composition_extension_appended_)
289 return;
290
291 ComponentExtensionIMEManager* component_extension_manager =
292 input_method::InputMethodManager::Get()
293 ->GetComponentExtensionIMEManager();
294 if (!component_extension_manager->IsInitialized()) {
295 // If the component extension IME manager is not available yet, append the
296 // component extension list in |OnInitialized()|.
297 return;
298 }
299
300 scoped_ptr<base::ListValue> ime_list(
301 ConvertInputMethodDescriptorsToIMEList(
302 component_extension_manager->GetAllIMEAsInputMethodDescriptor()));
303 web_ui()->CallJavascriptFunction(
304 "options.LanguageOptions.onComponentManagerInitialized",
305 *ime_list);
306 composition_extension_appended_ = true;
307 }
308
309 void CrosLanguageOptionsHandler::AddImeProvider(base::ListValue* list) { 251 void CrosLanguageOptionsHandler::AddImeProvider(base::ListValue* list) {
310 Profile* profile = Profile::FromWebUI(web_ui()); 252 Profile* profile = Profile::FromWebUI(web_ui());
311 const extensions::ExtensionSet& enabled_extensions = 253 const extensions::ExtensionSet& enabled_extensions =
312 extensions::ExtensionRegistry::Get(profile)->enabled_extensions(); 254 extensions::ExtensionRegistry::Get(profile)->enabled_extensions();
313 for (size_t i = 0; i < list->GetSize(); ++i) { 255 for (size_t i = 0; i < list->GetSize(); ++i) {
314 base::DictionaryValue* entry; 256 base::DictionaryValue* entry;
315 list->GetDictionary(i, &entry); 257 list->GetDictionary(i, &entry);
316 258
317 std::string input_method_id; 259 std::string input_method_id;
318 entry->GetString("id", &input_method_id); 260 entry->GetString("id", &input_method_id);
319 261
320 std::string extension_id = 262 std::string extension_id =
321 extension_ime_util::GetExtensionIDFromInputMethodID(input_method_id); 263 extension_ime_util::GetExtensionIDFromInputMethodID(input_method_id);
322 const extensions::Extension* extension = 264 const extensions::Extension* extension =
323 enabled_extensions.GetByID(extension_id); 265 enabled_extensions.GetByID(extension_id);
324 if (extension) 266 if (extension)
325 entry->SetString("extensionName", extension->name()); 267 entry->SetString("extensionName", extension->name());
326 } 268 }
327 } 269 }
328 270
329 } // namespace options 271 } // namespace options
330 } // namespace chromeos 272 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698