Index: chrome/browser/extensions/extension_input_ime_api.cc |
diff --git a/chrome/browser/extensions/extension_input_ime_api.cc b/chrome/browser/extensions/extension_input_ime_api.cc |
index 67a75de4a03e5319f4682829c076ca6d79211697..134581931c5fa9c358d6cddd77f87fd2fb093247 100644 |
--- a/chrome/browser/extensions/extension_input_ime_api.cc |
+++ b/chrome/browser/extensions/extension_input_ime_api.cc |
@@ -5,6 +5,7 @@ |
#include "chrome/browser/extensions/extension_input_ime_api.h" |
#include "base/json/json_writer.h" |
+#include "base/stl_util.h" |
#include "base/string_number_conversions.h" |
#include "base/values.h" |
#include "chrome/browser/chromeos/input_method/input_method_engine.h" |
@@ -423,6 +424,29 @@ bool ExtensionInputImeEventRouter::RegisterIme( |
return true; |
} |
+ |
+void ExtensionInputImeEventRouter::UnregisterAllImes( |
+ Profile* profile, const std::string& extension_id) { |
+ std::map<std::string, |
+ std::map<std::string, |
+ chromeos::InputMethodEngine*> >::iterator engine_map = |
+ engines_.find(extension_id); |
+ if (engine_map != engines_.end()) { |
+ STLDeleteContainerPairSecondPointers(engine_map->second.begin(), |
+ engine_map->second.end()); |
+ engines_.erase(engine_map); |
+ } |
+ |
+ std::map<std::string, |
+ std::map<std::string, |
+ chromeos::ImeObserver*> >::iterator observer_list = |
+ observers_.find(extension_id); |
+ if (observer_list != observers_.end()) { |
+ STLDeleteContainerPairSecondPointers(observer_list->second.begin(), |
+ observer_list->second.end()); |
+ observers_.erase(observer_list); |
+ } |
+} |
#endif |
chromeos::InputMethodEngine* ExtensionInputImeEventRouter::GetEngine( |