Chromium Code Reviews| Index: chromeos/ime/ibus_daemon_controller.cc |
| diff --git a/chromeos/ime/ibus_daemon_controller.cc b/chromeos/ime/ibus_daemon_controller.cc |
| index a0d23f088c5f40fc71ed58507c80faa5de245715..7daa2a0e536b2a9ee634bc703576466ebc2e0418 100644 |
| --- a/chromeos/ime/ibus_daemon_controller.cc |
| +++ b/chromeos/ime/ibus_daemon_controller.cc |
| @@ -263,20 +263,45 @@ class IBusDaemonControllerImpl : public IBusDaemonController { |
| DISALLOW_COPY_AND_ASSIGN(IBusDaemonControllerImpl); |
| }; |
| -// The stub implementation of IBusDaemonController. |
| -class IBusDaemonControllerStubImpl : public IBusDaemonController { |
| +// An implementation of IBusDaemonController without ibus-daemon interaction. |
| +// Currently this class is used only on linux desktop. |
| +// TODO(nona): Remove IBusDaemonControlelr this once crbug.com/171351 is fixed. |
| +class IBusDaemonControllerDaemonlessImpl : public IBusDaemonController { |
| public: |
| - IBusDaemonControllerStubImpl() {} |
| - virtual ~IBusDaemonControllerStubImpl() {} |
| + IBusDaemonControllerDaemonlessImpl() |
| + : is_started_(false) {} |
| + virtual ~IBusDaemonControllerDaemonlessImpl() {} |
| // IBusDaemonController overrides: |
| - virtual void AddObserver(Observer* observer) OVERRIDE {} |
| - virtual void RemoveObserver(Observer* observer) OVERRIDE {} |
| - virtual bool Start() OVERRIDE { return true; } |
| - virtual bool Stop() OVERRIDE { return true; } |
| + virtual void AddObserver(Observer* observer) OVERRIDE { |
| + observers_.AddObserver(observer); |
| + } |
| + |
| + virtual void RemoveObserver(Observer* observer) OVERRIDE { |
| + observers_.RemoveObserver(observer); |
| + } |
| + |
| + virtual bool Start() OVERRIDE { |
| + if (is_started_) |
| + return false; |
| + DBusThreadManager::Get()->InitIBusBus("dummy address", |
|
satorux1
2013/03/11 01:24:29
The word "dummy" worries me. Please explain why in
Seigo Nonaka
2013/03/11 03:40:27
Done.
|
| + base::Bind(&base::DoNothing)); |
| + is_started_ = true; |
| + FOR_EACH_OBSERVER(Observer, observers_, OnConnected()); |
| + return true; |
| + } |
| + virtual bool Stop() OVERRIDE { |
| + if (!is_started_) |
| + return false; |
| + is_started_ = false; |
| + FOR_EACH_OBSERVER(Observer, observers_, OnDisconnected()); |
| + return true; |
| + } |
| private: |
| - DISALLOW_COPY_AND_ASSIGN(IBusDaemonControllerStubImpl); |
| + ObserverList<Observer> observers_; |
| + bool is_started_; |
| + DISALLOW_COPY_AND_ASSIGN(IBusDaemonControllerDaemonlessImpl); |
| }; |
| } // namespace |
| @@ -300,7 +325,7 @@ void IBusDaemonController::Initialize( |
| g_ibus_daemon_controller = new IBusDaemonControllerImpl(ui_task_runner, |
| file_task_runner); |
| } else { |
| - g_ibus_daemon_controller = new IBusDaemonControllerStubImpl(); |
| + g_ibus_daemon_controller = new IBusDaemonControllerDaemonlessImpl(); |
| } |
| } |