summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions
diff options
context:
space:
mode:
authoryusukes@chromium.org <yusukes@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-05 16:32:52 +0000
committeryusukes@chromium.org <yusukes@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-05 16:32:52 +0000
commit771a61858de4f2fdb386fc807354cd90c7e2f7da (patch)
tree6f800d7179a78d8c5962e318a81f3ae08e37c267 /chrome/browser/extensions
parent79ca49e4436fea5719dd53ba59eb78daf5ad9672 (diff)
downloadchromium_src-771a61858de4f2fdb386fc807354cd90c7e2f7da.zip
chromium_src-771a61858de4f2fdb386fc807354cd90c7e2f7da.tar.gz
chromium_src-771a61858de4f2fdb386fc807354cd90c7e2f7da.tar.bz2
Stop using ExtensionInputMethodEventRouter as a singleton.
This should be better since ~ExtensionInputMethodEventRouter depends on another singleton, InputMethodManager, and such dependency tend to cause a problem on shutdown. BUG=chromium-os:21283 TEST=trybot Review URL: http://codereview.chromium.org/7982052 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@104113 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions')
-rw-r--r--chrome/browser/extensions/extension_input_method_api.cc17
-rw-r--r--chrome/browser/extensions/extension_service.cc5
-rw-r--r--chrome/browser/extensions/extension_service.h9
3 files changed, 24 insertions, 7 deletions
diff --git a/chrome/browser/extensions/extension_input_method_api.cc b/chrome/browser/extensions/extension_input_method_api.cc
index 60cec6e..cf2bbd2 100644
--- a/chrome/browser/extensions/extension_input_method_api.cc
+++ b/chrome/browser/extensions/extension_input_method_api.cc
@@ -7,6 +7,8 @@
#include "base/values.h"
#include "chrome/browser/chromeos/input_method/input_method_manager.h"
#include "chrome/browser/chromeos/extensions/input_method_event_router.h"
+#include "chrome/browser/extensions/extension_service.h"
+#include "chrome/browser/profiles/profile.h"
namespace {
@@ -21,16 +23,21 @@ GetInputMethodFunction::~GetInputMethodFunction() {
}
bool GetInputMethodFunction::RunImpl() {
- if (!chromeos::ExtensionInputMethodEventRouter::
- IsExtensionWhitelisted(extension_id())) {
+#if !defined(OS_CHROMEOS)
+ error_ = kErrorInputMethodPrivateApi;
+ return false;
+#else
+ chromeos::ExtensionInputMethodEventRouter* router =
+ profile_->GetExtensionService()->input_method_event_router();
+ if (!router->IsExtensionWhitelisted(extension_id())) {
error_ = kErrorInputMethodPrivateApi;
return false;
}
chromeos::input_method::InputMethodManager* manager =
chromeos::input_method::InputMethodManager::GetInstance();
- std::string input_method =
- chromeos::ExtensionInputMethodEventRouter::GetInputMethodForXkb(
- manager->current_input_method().id());
+ const std::string input_method =
+ router->GetInputMethodForXkb(manager->current_input_method().id());
result_.reset(Value::CreateStringValue(input_method));
return true;
+#endif
}
diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc
index 1bc3aee..1754e6c 100644
--- a/chrome/browser/extensions/extension_service.cc
+++ b/chrome/browser/extensions/extension_service.cc
@@ -726,8 +726,9 @@ void ExtensionService::InitEventRouters() {
file_browser_event_router_.reset(
new ExtensionFileBrowserEventRouter(profile_));
file_browser_event_router_->ObserveFileSystemEvents();
- // Lazy initialization.
- chromeos::ExtensionInputMethodEventRouter::GetInstance();
+
+ input_method_event_router_.reset(
+ new chromeos::ExtensionInputMethodEventRouter);
ExtensionMediaPlayerEventRouter::GetInstance()->Init(profile_);
ExtensionInputImeEventRouter::GetInstance()->Init();
diff --git a/chrome/browser/extensions/extension_service.h b/chrome/browser/extensions/extension_service.h
index 2e1aa2b..1f5782b 100644
--- a/chrome/browser/extensions/extension_service.h
+++ b/chrome/browser/extensions/extension_service.h
@@ -67,6 +67,10 @@ class Profile;
class SyncData;
class Version;
+namespace chromeos {
+class ExtensionInputMethodEventRouter;
+} // namespace chromeos
+
// This is an interface class to encapsulate the dependencies that
// various classes have on ExtensionService. This allows easy mocking.
class ExtensionServiceInterface : public SyncableService {
@@ -469,6 +473,9 @@ class ExtensionService
ExtensionFileBrowserEventRouter* file_browser_event_router() {
return file_browser_event_router_.get();
}
+ chromeos::ExtensionInputMethodEventRouter* input_method_event_router() {
+ return input_method_event_router_.get();
+ }
#endif
// Notify the frontend that there was an error loading an extension.
@@ -778,6 +785,8 @@ class ExtensionService
#if defined(OS_CHROMEOS)
scoped_ptr<ExtensionFileBrowserEventRouter> file_browser_event_router_;
+ scoped_ptr<chromeos::ExtensionInputMethodEventRouter>
+ input_method_event_router_;
#endif
// A collection of external extension providers. Each provider reads