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

Unified Diff: chromeos/ime/ibus_daemon_controller.cc

Issue 12481012: Implement IBusDaemonControllerDaemonlessImpl. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressing offline comments Created 7 years, 9 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..290c31ef381cf63578776ae1098ae04ceb87032c 100644
--- a/chromeos/ime/ibus_daemon_controller.cc
+++ b/chromeos/ime/ibus_daemon_controller.cc
@@ -263,20 +263,52 @@ 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;
+ // IBusBus should be initialized but it is okay to pass "dummy address" as
+ // the bus address because the actual dbus implementation is stub if the
+ // Chrome OS is working on Linux desktop. This path is not used in
+ // production at this moment, only for Chrome OS on Linux Desktop.
+ // TODO(nona): Remove InitIBusBus oncer all legacy ime is migrated to IME
+ // extension API.
+ DCHECK(!base::chromeos::IsRunningOnChromeOS());
+ DBusThreadManager::Get()->InitIBusBus("dummy address",
+ 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 +332,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();
}
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698