Chromium Code Reviews| Index: chrome/browser/chromeos/extensions/input_method_api.cc |
| diff --git a/chrome/browser/chromeos/extensions/input_method_api.cc b/chrome/browser/chromeos/extensions/input_method_api.cc |
| index ce70b3642b55a32b673897124fcff817d1e3551c..bb846fb6ab4b1686b62911042fd1035cc7738795 100644 |
| --- a/chrome/browser/chromeos/extensions/input_method_api.cc |
| +++ b/chrome/browser/chromeos/extensions/input_method_api.cc |
| @@ -20,6 +20,7 @@ |
| #include "chrome/browser/spellchecker/spellcheck_factory.h" |
| #include "chrome/browser/spellchecker/spellcheck_service.h" |
| #include "chrome/browser/sync/profile_sync_service_factory.h" |
| +#include "chrome/common/extensions/api/input_method_private.h" |
| #include "chromeos/chromeos_switches.h" |
| #include "components/browser_sync/browser/profile_sync_service.h" |
| #include "extensions/browser/extension_function_registry.h" |
| @@ -29,6 +30,16 @@ |
| #include "ui/base/ime/chromeos/input_method_manager.h" |
| #include "ui/keyboard/keyboard_util.h" |
| +namespace AddWordToDictionary = |
| + extensions::api::input_method_private::AddWordToDictionary; |
| +namespace SetCurrentInputMethod = |
| + extensions::api::input_method_private::SetCurrentInputMethod; |
| +namespace OnChanged = extensions::api::input_method_private::OnChanged; |
| +namespace OnDictionaryChanged = |
| + extensions::api::input_method_private::OnDictionaryChanged; |
| +namespace OnDictionaryLoaded = |
| + extensions::api::input_method_private::OnDictionaryLoaded; |
| + |
| namespace { |
| // Prefix, which is used by XKB. |
| @@ -38,7 +49,8 @@ const char kXkbPrefix[] = "xkb:"; |
| namespace extensions { |
| -ExtensionFunction::ResponseAction GetInputMethodConfigFunction::Run() { |
| +ExtensionFunction::ResponseAction |
| +InputMethodPrivateGetInputMethodConfigFunction::Run() { |
| #if !defined(OS_CHROMEOS) |
| EXTENSION_FUNCTION_VALIDATE(false); |
| #else |
| @@ -51,7 +63,8 @@ ExtensionFunction::ResponseAction GetInputMethodConfigFunction::Run() { |
| #endif |
| } |
| -ExtensionFunction::ResponseAction GetCurrentInputMethodFunction::Run() { |
| +ExtensionFunction::ResponseAction |
| +InputMethodPrivateGetCurrentInputMethodFunction::Run() { |
| #if !defined(OS_CHROMEOS) |
| EXTENSION_FUNCTION_VALIDATE(false); |
| #else |
| @@ -62,20 +75,23 @@ ExtensionFunction::ResponseAction GetCurrentInputMethodFunction::Run() { |
| #endif |
| } |
| -ExtensionFunction::ResponseAction SetCurrentInputMethodFunction::Run() { |
| +ExtensionFunction::ResponseAction |
| +InputMethodPrivateSetCurrentInputMethodFunction::Run() { |
| #if !defined(OS_CHROMEOS) |
| EXTENSION_FUNCTION_VALIDATE(false); |
| #else |
| - std::string new_input_method; |
| - EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, &new_input_method)); |
| + scoped_ptr<SetCurrentInputMethod::Params> params( |
| + SetCurrentInputMethod::Params::Create(*args_)); |
| + EXTENSION_FUNCTION_VALIDATE(params.get()); |
| scoped_refptr<chromeos::input_method::InputMethodManager::State> ime_state = |
| chromeos::input_method::InputMethodManager::Get()->GetActiveIMEState(); |
| const std::vector<std::string>& input_methods = |
| ime_state->GetActiveInputMethodIds(); |
| for (size_t i = 0; i < input_methods.size(); ++i) { |
| const std::string& input_method = input_methods[i]; |
| - if (input_method == new_input_method) { |
| - ime_state->ChangeInputMethod(new_input_method, false /* show_message */); |
| + if (input_method == params->input_method_id) { |
| + ime_state->ChangeInputMethod(params->input_method_id, |
| + false /* show_message */); |
| return RespondNow(NoArguments()); |
| } |
| } |
| @@ -83,7 +99,8 @@ ExtensionFunction::ResponseAction SetCurrentInputMethodFunction::Run() { |
| #endif |
| } |
| -ExtensionFunction::ResponseAction GetInputMethodsFunction::Run() { |
| +ExtensionFunction::ResponseAction |
| +InputMethodPrivateGetInputMethodsFunction::Run() { |
| #if !defined(OS_CHROMEOS) |
| EXTENSION_FUNCTION_VALIDATE(false); |
| #else |
| @@ -108,7 +125,8 @@ ExtensionFunction::ResponseAction GetInputMethodsFunction::Run() { |
| #endif |
| } |
| -ExtensionFunction::ResponseAction FetchAllDictionaryWordsFunction::Run() { |
| +ExtensionFunction::ResponseAction |
| +InputMethodPrivateFetchAllDictionaryWordsFunction::Run() { |
| #if !defined(OS_CHROMEOS) |
| EXTENSION_FUNCTION_VALIDATE(false); |
| #else |
| @@ -131,12 +149,14 @@ ExtensionFunction::ResponseAction FetchAllDictionaryWordsFunction::Run() { |
| #endif |
| } |
| -ExtensionFunction::ResponseAction AddWordToDictionaryFunction::Run() { |
| +ExtensionFunction::ResponseAction |
| +InputMethodPrivateAddWordToDictionaryFunction::Run() { |
| #if !defined(OS_CHROMEOS) |
| EXTENSION_FUNCTION_VALIDATE(false); |
| #else |
| - std::string word; |
| - EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, &word)); |
| + scoped_ptr<AddWordToDictionary::Params> params( |
| + AddWordToDictionary::Params::Create(*args_)); |
| + EXTENSION_FUNCTION_VALIDATE(params.get()); |
| SpellcheckService* spellcheck = SpellcheckServiceFactory::GetForContext( |
| context_); |
| if (!spellcheck) { |
| @@ -147,7 +167,7 @@ ExtensionFunction::ResponseAction AddWordToDictionaryFunction::Run() { |
| return RespondNow(Error("Custom dictionary not loaded yet.")); |
| } |
| - if (dictionary->AddWord(word)) |
| + if (dictionary->AddWord(params->word)) |
| return RespondNow(NoArguments()); |
| // Invalid words: |
| // - Already in the dictionary. |
| @@ -159,7 +179,8 @@ ExtensionFunction::ResponseAction AddWordToDictionaryFunction::Run() { |
| #endif |
| } |
| -ExtensionFunction::ResponseAction GetEncryptSyncEnabledFunction::Run() { |
| +ExtensionFunction::ResponseAction |
| +InputMethodPrivateGetEncryptSyncEnabledFunction::Run() { |
| #if !defined(OS_CHROMEOS) |
| EXTENSION_FUNCTION_VALIDATE(false); |
| #else |
| @@ -174,32 +195,8 @@ ExtensionFunction::ResponseAction GetEncryptSyncEnabledFunction::Run() { |
| #endif |
| } |
| -// static |
| -const char InputMethodAPI::kOnDictionaryChanged[] = |
| - "inputMethodPrivate.onDictionaryChanged"; |
| - |
| -// static |
| -const char InputMethodAPI::kOnDictionaryLoaded[] = |
| - "inputMethodPrivate.onDictionaryLoaded"; |
| - |
| -// static |
| -const char InputMethodAPI::kOnInputMethodChanged[] = |
| - "inputMethodPrivate.onChanged"; |
| - |
| InputMethodAPI::InputMethodAPI(content::BrowserContext* context) |
| : context_(context) { |
| - EventRouter::Get(context_)->RegisterObserver(this, kOnInputMethodChanged); |
| - EventRouter::Get(context_)->RegisterObserver(this, kOnDictionaryChanged); |
| - EventRouter::Get(context_)->RegisterObserver(this, kOnDictionaryLoaded); |
|
Devlin
2016/01/15 22:12:03
I didn't think that we registered any event router
|
| - ExtensionFunctionRegistry* registry = |
| - ExtensionFunctionRegistry::GetInstance(); |
| - registry->RegisterFunction<GetInputMethodConfigFunction>(); |
| - registry->RegisterFunction<GetCurrentInputMethodFunction>(); |
| - registry->RegisterFunction<SetCurrentInputMethodFunction>(); |
| - registry->RegisterFunction<GetInputMethodsFunction>(); |
| - registry->RegisterFunction<FetchAllDictionaryWordsFunction>(); |
| - registry->RegisterFunction<AddWordToDictionaryFunction>(); |
| - registry->RegisterFunction<GetEncryptSyncEnabledFunction>(); |
| } |
| InputMethodAPI::~InputMethodAPI() { |
| @@ -220,18 +217,17 @@ void InputMethodAPI::Shutdown() { |
| void InputMethodAPI::OnListenerAdded( |
| const extensions::EventListenerInfo& details) { |
| - if (details.event_name == kOnInputMethodChanged) { |
| - if (!input_method_event_router_.get()) { |
| - input_method_event_router_.reset( |
| - new chromeos::ExtensionInputMethodEventRouter(context_)); |
| - } |
| - } else if (details.event_name == kOnDictionaryChanged || |
| - details.event_name == kOnDictionaryLoaded) { |
| + if (details.event_name == OnChanged::kEventName && |
| + !input_method_event_router_.get()) { |
| + input_method_event_router_.reset( |
| + new chromeos::ExtensionInputMethodEventRouter(context_)); |
| + } else if (details.event_name == OnDictionaryChanged::kEventName || |
| + details.event_name == OnDictionaryLoaded::kEventName) { |
| if (!dictionary_event_router_.get()) { |
| dictionary_event_router_.reset( |
| new chromeos::ExtensionDictionaryEventRouter(context_)); |
| } |
| - if (details.event_name == kOnDictionaryLoaded) { |
| + if (details.event_name == OnDictionaryLoaded::kEventName) { |
| dictionary_event_router_->DispatchLoadedEventIfLoaded(); |
| } |
| } |