diff options
author | nona@chromium.org <nona@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-07-18 19:10:52 +0000 |
---|---|---|
committer | nona@chromium.org <nona@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-07-18 19:10:52 +0000 |
commit | 85a966cf7b80a1262b3d1c3d4135de9e1645ea69 (patch) | |
tree | a9c5581fa06dfe046148e7484fbf293237c8ce47 /chromeos | |
parent | 9856b2959287c482a7036a0156898c4e1d13e749 (diff) | |
download | chromium_src-85a966cf7b80a1262b3d1c3d4135de9e1645ea69.zip chromium_src-85a966cf7b80a1262b3d1c3d4135de9e1645ea69.tar.gz chromium_src-85a966cf7b80a1262b3d1c3d4135de9e1645ea69.tar.bz2 |
Update DBusThreadManager to handle IBusEngineService and IBusEngineFactory Service.
BUG=126947
TEST=ui_unittests,chromeos_unittests
Review URL: https://chromiumcodereview.appspot.com/10701142
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@147287 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chromeos')
-rw-r--r-- | chromeos/dbus/dbus_thread_manager.cc | 38 | ||||
-rw-r--r-- | chromeos/dbus/dbus_thread_manager.h | 12 | ||||
-rw-r--r-- | chromeos/dbus/mock_dbus_thread_manager.h | 3 | ||||
-rw-r--r-- | chromeos/dbus/mock_dbus_thread_manager_without_gmock.cc | 11 | ||||
-rw-r--r-- | chromeos/dbus/mock_dbus_thread_manager_without_gmock.h | 22 |
5 files changed, 82 insertions, 4 deletions
diff --git a/chromeos/dbus/dbus_thread_manager.cc b/chromeos/dbus/dbus_thread_manager.cc index d747eed..397e431 100644 --- a/chromeos/dbus/dbus_thread_manager.cc +++ b/chromeos/dbus/dbus_thread_manager.cc @@ -27,6 +27,8 @@ #include "chromeos/dbus/flimflam_service_client.h" #include "chromeos/dbus/gsm_sms_client.h" #include "chromeos/dbus/ibus/ibus_client.h" +#include "chromeos/dbus/ibus/ibus_engine_factory_service.h" +#include "chromeos/dbus/ibus/ibus_engine_service.h" #include "chromeos/dbus/ibus/ibus_input_context_client.h" #include "chromeos/dbus/image_burner_client.h" #include "chromeos/dbus/introspectable_client.h" @@ -145,6 +147,13 @@ class DBusThreadManagerImpl : public DBusThreadManager { if (ibus_bus_.get()) ibus_bus_->ShutdownOnDBusThreadAndBlock(); + // Release IBusEngineService instances. + for (std::map<dbus::ObjectPath, IBusEngineService*>::iterator it + = ibus_engine_services_.begin(); + it != ibus_engine_services_.end(); it++) { + delete it->second; + } + // Stop the D-Bus thread. dbus_thread_->Stop(); } @@ -173,6 +182,12 @@ class DBusThreadManagerImpl : public DBusThreadManager { // Create the ibus input context client. ibus_input_context_client_.reset( IBusInputContextClient::Create(client_type)); + + // Create the ibus engine factory service. + ibus_engine_factory_service_.reset( + IBusEngineFactoryService::Create(ibus_bus_.get(), client_type)); + + ibus_engine_services_.clear(); } // DBusThreadManager override. @@ -320,6 +335,27 @@ class DBusThreadManagerImpl : public DBusThreadManager { return ibus_input_context_client_.get(); } + // DBusThreadManager override. + virtual IBusEngineFactoryService* GetIBusEngineFactoryService() OVERRIDE { + return ibus_engine_factory_service_.get(); + } + + // DBusThreadManager override. + virtual IBusEngineService* GetIBusEngineService( + const dbus::ObjectPath& object_path) OVERRIDE { + + const DBusClientImplementationType client_type = + base::chromeos::IsRunningOnChromeOS() ? REAL_DBUS_CLIENT_IMPLEMENTATION + : STUB_DBUS_CLIENT_IMPLEMENTATION; + + if (ibus_engine_services_.find(object_path) + == ibus_engine_services_.end()) { + ibus_engine_services_[object_path] = + IBusEngineService::Create(client_type, ibus_bus_.get(), object_path); + } + return ibus_engine_services_[object_path]; + } + scoped_ptr<base::Thread> dbus_thread_; scoped_refptr<dbus::Bus> system_bus_; scoped_refptr<dbus::Bus> ibus_bus_; @@ -350,6 +386,8 @@ class DBusThreadManagerImpl : public DBusThreadManager { scoped_ptr<UpdateEngineClient> update_engine_client_; scoped_ptr<IBusClient> ibus_client_; scoped_ptr<IBusInputContextClient> ibus_input_context_client_; + scoped_ptr<IBusEngineFactoryService> ibus_engine_factory_service_; + std::map<dbus::ObjectPath, IBusEngineService*> ibus_engine_services_; std::string ibus_address_; }; diff --git a/chromeos/dbus/dbus_thread_manager.h b/chromeos/dbus/dbus_thread_manager.h index 5e96ef2..733d561 100644 --- a/chromeos/dbus/dbus_thread_manager.h +++ b/chromeos/dbus/dbus_thread_manager.h @@ -17,6 +17,7 @@ class Thread; namespace dbus { class Bus; +class ObjectPath; }; namespace chromeos { @@ -40,6 +41,8 @@ class FlimflamProfileClient; class FlimflamServiceClient; class GsmSMSClient; class IBusClient; +class IBusEngineService; +class IBusEngineFactoryService; class IBusInputContextClient; class ImageBurnerClient; class IntrospectableClient; @@ -232,6 +235,15 @@ class CHROMEOS_EXPORT DBusThreadManager { // cache this pointer and use it after DBusThreadManager is shut down. virtual IBusInputContextClient* GetIBusInputContextClient() = 0; + // Returns the ibus engine factory service, owned by DBusThreadManager. Do not + // cache this pointer and use it after DBusThreadManager is shut down. + virtual IBusEngineFactoryService* GetIBusEngineFactoryService() = 0; + + // Returns the ibus engine service, owned by DBusThreadManager. Do not cache + // this pointer and use it after DBusThreadManager is shut down. + virtual IBusEngineService* GetIBusEngineService( + const dbus::ObjectPath& object_path) = 0; + virtual ~DBusThreadManager(); protected: diff --git a/chromeos/dbus/mock_dbus_thread_manager.h b/chromeos/dbus/mock_dbus_thread_manager.h index 7396a99..5a10724 100644 --- a/chromeos/dbus/mock_dbus_thread_manager.h +++ b/chromeos/dbus/mock_dbus_thread_manager.h @@ -82,6 +82,9 @@ class MockDBusThreadManager : public DBusThreadManager { MOCK_METHOD0(GetUpdateEngineClient, UpdateEngineClient*(void)); MOCK_METHOD0(GetIBusClient, IBusClient*(void)); MOCK_METHOD0(GetIBusInputContextClient, IBusInputContextClient*(void)); + MOCK_METHOD0(GetIBusEngineFactoryService, IBusEngineFactoryService*(void)); + MOCK_METHOD1(GetIBusEngineService, + IBusEngineService*(const dbus::ObjectPath& object_path)); MockBluetoothAdapterClient* mock_bluetooth_adapter_client() { return mock_bluetooth_adapter_client_.get(); diff --git a/chromeos/dbus/mock_dbus_thread_manager_without_gmock.cc b/chromeos/dbus/mock_dbus_thread_manager_without_gmock.cc index ab6dad2..c9c309b 100644 --- a/chromeos/dbus/mock_dbus_thread_manager_without_gmock.cc +++ b/chromeos/dbus/mock_dbus_thread_manager_without_gmock.cc @@ -5,6 +5,8 @@ #include "chromeos/dbus/mock_dbus_thread_manager_without_gmock.h" #include "chromeos/dbus/ibus/mock_ibus_client.h" +#include "chromeos/dbus/ibus/mock_ibus_engine_factory_service.h" +#include "chromeos/dbus/ibus/mock_ibus_engine_service.h" #include "chromeos/dbus/ibus/mock_ibus_input_context_client.h" namespace chromeos { @@ -181,5 +183,14 @@ IBusInputContextClient* return mock_ibus_input_context_client_.get(); } +IBusEngineFactoryService* + MockDBusThreadManagerWithoutGMock::GetIBusEngineFactoryService() { + return mock_ibus_engine_factory_service_.get(); +} + +IBusEngineService* MockDBusThreadManagerWithoutGMock::GetIBusEngineService( + const dbus::ObjectPath& object_path) { + return mock_ibus_engine_service_.get(); +} } // namespace chromeos diff --git a/chromeos/dbus/mock_dbus_thread_manager_without_gmock.h b/chromeos/dbus/mock_dbus_thread_manager_without_gmock.h index 36e6893..aad907e 100644 --- a/chromeos/dbus/mock_dbus_thread_manager_without_gmock.h +++ b/chromeos/dbus/mock_dbus_thread_manager_without_gmock.h @@ -11,15 +11,16 @@ #include "chromeos/dbus/dbus_thread_manager.h" namespace dbus { - class Bus; - +class ObjectPath; } // namespace dbus namespace chromeos { -class MockIBusClient; -class MockIBusInputContextClient; +class MockIBusClient; +class MockIBusEngineFactoryService; +class MockIBusEngineService; +class MockIBusInputContextClient; // This class provides an another mock DBusThreadManager without gmock // dependency. This class is used only for places where GMock is not allowed @@ -60,6 +61,9 @@ class MockDBusThreadManagerWithoutGMock : public DBusThreadManager { virtual BluetoothOutOfBandClient* GetBluetoothOutOfBandClient() OVERRIDE; virtual IBusClient* GetIBusClient() OVERRIDE; virtual IBusInputContextClient* GetIBusInputContextClient() OVERRIDE; + virtual IBusEngineFactoryService* GetIBusEngineFactoryService() OVERRIDE; + virtual IBusEngineService* GetIBusEngineService( + const dbus::ObjectPath& object_path) OVERRIDE; MockIBusClient* mock_ibus_client() { return mock_ibus_client_.get(); @@ -69,6 +73,14 @@ class MockDBusThreadManagerWithoutGMock : public DBusThreadManager { return mock_ibus_input_context_client_.get(); } + MockIBusEngineService* mock_ibus_engine_service() { + return mock_ibus_engine_service_.get(); + } + + MockIBusEngineFactoryService* mock_ibus_engine_factory_service() { + return mock_ibus_engine_factory_service_.get(); + } + void set_ibus_bus(dbus::Bus* ibus_bus) { ibus_bus_ = ibus_bus; } @@ -76,6 +88,8 @@ class MockDBusThreadManagerWithoutGMock : public DBusThreadManager { private: scoped_ptr<MockIBusClient> mock_ibus_client_; scoped_ptr<MockIBusInputContextClient> mock_ibus_input_context_client_; + scoped_ptr<MockIBusEngineService> mock_ibus_engine_service_; + scoped_ptr<MockIBusEngineFactoryService> mock_ibus_engine_factory_service_; dbus::Bus* ibus_bus_; DISALLOW_COPY_AND_ASSIGN(MockDBusThreadManagerWithoutGMock); |