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

Unified Diff: chromeos/ime/ibus_daemon_controller.cc

Issue 50243005: ChromeOS: Remove unused IBus classes from chromeos/. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased. Created 7 years, 1 month 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 | « chromeos/dbus/mock_dbus_thread_manager.cc ('k') | 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 9fd9ac8a461256e04f3e0be8615930b13b07606f..01cd5835ade539d9e03134bd9857910a519a7c82 100644
--- a/chromeos/ime/ibus_daemon_controller.cc
+++ b/chromeos/ime/ibus_daemon_controller.cc
@@ -5,17 +5,11 @@
#include "chromeos/ime/ibus_daemon_controller.h"
#include "base/bind.h"
-#include "base/environment.h"
+#include "base/files/file_path.h"
#include "base/files/file_path_watcher.h"
#include "base/location.h"
#include "base/logging.h"
#include "base/observer_list.h"
-#include "base/process/launch.h"
-#include "base/process/process_handle.h"
-#include "base/rand_util.h"
-#include "base/strings/string_util.h"
-#include "base/strings/stringprintf.h"
-#include "base/threading/thread_checker.h"
#include "chromeos/dbus/dbus_thread_manager.h"
namespace chromeos {
@@ -59,210 +53,6 @@ void StartWatch(
DCHECK(result);
}
-// The implementation of IBusDaemonController.
-class IBusDaemonControllerImpl : public IBusDaemonController {
- public:
- // Represents current ibus-daemon status.
- enum IBusDaemonStatus {
- IBUS_DAEMON_INITIALIZING,
- IBUS_DAEMON_RUNNING,
- IBUS_DAEMON_SHUTTING_DOWN,
- IBUS_DAEMON_STOP,
- };
-
- IBusDaemonControllerImpl(
- const scoped_refptr<base::SequencedTaskRunner>& ui_task_runner,
- const scoped_refptr<base::SequencedTaskRunner>& file_task_runner)
- : process_handle_(base::kNullProcessHandle),
- ibus_daemon_status_(IBUS_DAEMON_STOP),
- ui_task_runner_(ui_task_runner),
- file_task_runner_(file_task_runner),
- weak_ptr_factory_(this) {
- }
-
- virtual ~IBusDaemonControllerImpl() {}
-
- // IBusDaemonController override:
- virtual void AddObserver(Observer* observer) OVERRIDE {
- DCHECK(thread_checker_.CalledOnValidThread());
- observers_.AddObserver(observer);
- }
-
- // IBusDaemonController override:
- virtual void RemoveObserver(Observer* observer) OVERRIDE {
- DCHECK(thread_checker_.CalledOnValidThread());
- observers_.RemoveObserver(observer);
- }
-
- // IBusDaemonController override:
- virtual bool Start() OVERRIDE {
- DCHECK(thread_checker_.CalledOnValidThread());
- if (ibus_daemon_status_ == IBUS_DAEMON_RUNNING)
- return true;
- if (ibus_daemon_status_ == IBUS_DAEMON_STOP ||
- ibus_daemon_status_ == IBUS_DAEMON_SHUTTING_DOWN) {
- return StartIBusDaemon();
- }
- return true;
- }
-
- // IBusDaemonController override:
- virtual bool Stop() OVERRIDE {
- DCHECK(thread_checker_.CalledOnValidThread());
- NOTREACHED() << "Termination of ibus-daemon is not supported"
- << "http://crosbug.com/27051";
- return false;
- }
-
- private:
- // Starts ibus-daemon service.
- bool StartIBusDaemon() {
- if (ibus_daemon_status_ == IBUS_DAEMON_INITIALIZING ||
- ibus_daemon_status_ == IBUS_DAEMON_RUNNING) {
- DVLOG(1) << "MaybeLaunchIBusDaemon: ibus-daemon is already running.";
- return false;
- }
-
- ibus_daemon_status_ = IBUS_DAEMON_INITIALIZING;
- ibus_daemon_address_ = base::StringPrintf(
- "unix:abstract=ibus-%d",
- base::RandInt(0, std::numeric_limits<int>::max()));
-
- scoped_ptr<base::Environment> env(base::Environment::Create());
- std::string address_file_path;
- env->GetVar("IBUS_ADDRESS_FILE", &address_file_path);
- DCHECK(!address_file_path.empty());
-
- // Set up ibus-daemon address file watcher before launching ibus-daemon,
- // because if watcher starts after ibus-daemon, we may miss the ibus
- // connection initialization.
- bool success = file_task_runner_->PostTaskAndReply(
- FROM_HERE,
- base::Bind(&StartWatch,
- address_file_path,
- base::Bind(&IBusDaemonControllerImpl::FilePathChanged,
- weak_ptr_factory_.GetWeakPtr(),
- ibus_daemon_address_),
- ui_task_runner_),
- base::Bind(&IBusDaemonControllerImpl::LaunchIBusDaemon,
- weak_ptr_factory_.GetWeakPtr(),
- ibus_daemon_address_));
- DCHECK(success);
- return true;
- }
-
- // Launhes actual ibus-daemon process.
- void LaunchIBusDaemon(const std::string& ibus_address) {
- DCHECK(thread_checker_.CalledOnValidThread());
- DCHECK_EQ(base::kNullProcessHandle, process_handle_);
- static const char kIBusDaemonPath[] = "/usr/bin/ibus-daemon";
- // TODO(zork): Send output to /var/log/ibus.log
- std::vector<std::string> ibus_daemon_command_line;
- ibus_daemon_command_line.push_back(kIBusDaemonPath);
- ibus_daemon_command_line.push_back("--panel=disable");
- ibus_daemon_command_line.push_back("--cache=none");
- ibus_daemon_command_line.push_back("--restart");
- ibus_daemon_command_line.push_back("--replace");
- ibus_daemon_command_line.push_back("--address=" + ibus_address);
-
- if (!base::LaunchProcess(ibus_daemon_command_line,
- base::LaunchOptions(),
- &process_handle_)) {
- LOG(WARNING) << "Could not launch: "
- << JoinString(ibus_daemon_command_line, " ");
- }
- }
-
- // Called by FilePathWatcher when the ibus-daemon address file is changed.
- // This function will be called on FILE thread.
- void FilePathChanged(const std::string& ibus_address) {
- ui_task_runner_->PostTask(
- FROM_HERE,
- base::Bind(&IBusDaemonControllerImpl::IBusDaemonInitializationDone,
- weak_ptr_factory_.GetWeakPtr(),
- ibus_address));
- }
-
- // Called by FilePathChaged function, this function should be called on UI
- // thread.
- void IBusDaemonInitializationDone(const std::string& ibus_address) {
- if (ibus_daemon_address_ != ibus_address)
- return;
-
- if (ibus_daemon_status_ != IBUS_DAEMON_INITIALIZING) {
- // Stop() or OnIBusDaemonExit() has already been called.
- return;
- }
-
- DBusThreadManager::Get()->InitIBusBus(
- ibus_address,
- base::Bind(&IBusDaemonControllerImpl::OnIBusDaemonDisconnected,
- weak_ptr_factory_.GetWeakPtr(),
- base::GetProcId(process_handle_)));
- ibus_daemon_status_ = IBUS_DAEMON_RUNNING;
- FOR_EACH_OBSERVER(Observer, observers_, OnConnected());
-
- VLOG(1) << "The ibus-daemon initialization is done.";
- }
-
- // Called when the connection with ibus-daemon is disconnected.
- void OnIBusDaemonDisconnected(base::ProcessId pid) {
- if (!chromeos::DBusThreadManager::Get())
- return; // Expected disconnection at shutting down. do nothing.
-
- if (process_handle_ != base::kNullProcessHandle) {
- if (base::GetProcId(process_handle_) == pid) {
- // ibus-daemon crashed.
- // TODO(nona): Shutdown ibus-bus connection.
- process_handle_ = base::kNullProcessHandle;
- } else {
- // This condition is as follows.
- // 1. Called Stop (process_handle_ becomes null)
- // 2. Called LaunchProcess (process_handle_ becomes new instance)
- // 3. Callbacked OnIBusDaemonExit for old instance and reach here.
- // In this case, we should not reset process_handle_ as null, and do not
- // re-launch ibus-daemon.
- return;
- }
- }
-
- const IBusDaemonStatus on_exit_state = ibus_daemon_status_;
- ibus_daemon_status_ = IBUS_DAEMON_STOP;
- FOR_EACH_OBSERVER(Observer, observers_, OnDisconnected());
-
- if (on_exit_state == IBUS_DAEMON_SHUTTING_DOWN)
- return; // Normal exitting, so do nothing.
-
- LOG(ERROR) << "The ibus-daemon crashed. Re-launching...";
- StartIBusDaemon();
- }
-
- // The current ibus_daemon address. This value is assigned at the launching
- // ibus-daemon and used in bus connection initialization.
- std::string ibus_daemon_address_;
-
- // The process handle of the IBus daemon. kNullProcessHandle if it's not
- // running.
- base::ProcessHandle process_handle_;
-
- // Represents ibus-daemon's status.
- IBusDaemonStatus ibus_daemon_status_;
-
- // The task runner of UI thread.
- scoped_refptr<base::SequencedTaskRunner> ui_task_runner_;
-
- // The task runner of FILE thread.
- scoped_refptr<base::SequencedTaskRunner> file_task_runner_;
-
- ObserverList<Observer> observers_;
- base::ThreadChecker thread_checker_;
-
- // Used for making callbacks for PostTask.
- base::WeakPtrFactory<IBusDaemonControllerImpl> weak_ptr_factory_;
-
- DISALLOW_COPY_AND_ASSIGN(IBusDaemonControllerImpl);
-};
-
// 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.
« no previous file with comments | « chromeos/dbus/mock_dbus_thread_manager.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698