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

Unified Diff: chrome/browser/extensions/api/input_ime/input_ime_api_chromeos.cc

Issue 1554983002: Build chrome.input.ime.* API in GN mode. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 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/extensions/api/input_ime/input_ime_api_chromeos.cc
diff --git a/chrome/browser/extensions/api/input_ime/input_ime_api_chromeos.cc b/chrome/browser/extensions/api/input_ime/input_ime_api_chromeos.cc
index db2ad970f82df0cc7c23f70e2ea121c094bc6eb5..0a51b00ebe8589042b6ae751b672fd388f635b3e 100644
--- a/chrome/browser/extensions/api/input_ime/input_ime_api_chromeos.cc
+++ b/chrome/browser/extensions/api/input_ime/input_ime_api_chromeos.cc
@@ -286,6 +286,11 @@ class ImeObserverChromeOS : public ui::ImeObserver {
namespace extensions {
+InputImeEventRouter::InputImeEventRouter(Profile* profile)
+ : InputImeEventRouterBase(profile) {}
+
+InputImeEventRouter::~InputImeEventRouter() {}
+
bool InputImeEventRouter::RegisterImeExtension(
const std::string& extension_id,
const std::vector<extensions::InputComponentInfo>& input_components) {
@@ -354,6 +359,25 @@ void InputImeEventRouter::UnregisterAllImes(const std::string& extension_id) {
}
}
+IMEEngineHandlerInterface* InputImeEventRouter::GetEngine(
+ const std::string& extension_id,
+ const std::string& component_id) {
+ std::map<std::string, IMEEngineHandlerInterface*>::iterator it =
+ engine_map_.find(extension_id);
+ if (it != engine_map_.end())
+ return it->second;
+ return NULL;
+}
+
+IMEEngineHandlerInterface* InputImeEventRouter::GetActiveEngine(
+ const std::string& extension_id) {
+ std::map<std::string, IMEEngineHandlerInterface*>::iterator it =
+ engine_map_.find(extension_id);
+ if (it != engine_map_.end() && it->second->IsActive())
+ return it->second;
+ return NULL;
+}
+
bool InputImeSetCompositionFunction::RunSync() {
IMEEngineHandlerInterface* engine =
GetInputImeEventRouter(Profile::FromBrowserContext(browser_context()))
@@ -692,4 +716,38 @@ bool InputImeDeleteSurroundingTextFunction::RunSync() {
return true;
}
+void InputImeAPI::OnExtensionLoaded(content::BrowserContext* browser_context,
+ const Extension* extension) {
+ const std::vector<InputComponentInfo>* input_components =
+ extensions::InputComponents::GetInputComponents(extension);
+ if (input_components)
+ GetInputImeEventRouter(Profile::FromBrowserContext(browser_context))
+ ->RegisterImeExtension(extension->id(), *input_components);
+}
+
+void InputImeAPI::OnExtensionUnloaded(content::BrowserContext* browser_context,
+ const Extension* extension,
+ UnloadedExtensionInfo::Reason reason) {
+ const std::vector<InputComponentInfo>* input_components =
+ extensions::InputComponents::GetInputComponents(extension);
+ if (!input_components)
+ return;
+ if (input_components->size() > 0) {
+ GetInputImeEventRouter(Profile::FromBrowserContext(browser_context))
+ ->UnregisterAllImes(extension->id());
+ }
+}
+
+void InputImeAPI::OnListenerAdded(const EventListenerInfo& details) {
+ if (!details.browser_context)
+ return;
+ IMEEngineHandlerInterface* engine =
+ GetInputImeEventRouter(
+ Profile::FromBrowserContext(details.browser_context))
+ ->GetActiveEngine(details.extension_id);
+ // Notifies the IME extension for IME ready with onActivate/onFocus events.
+ if (engine)
+ engine->Enable(engine->GetActiveComponentId());
+}
+
} // namespace extensions

Powered by Google App Engine
This is Rietveld 408576698