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

Unified Diff: chrome/browser/chromeos/input_method/ibus_controller_impl.cc

Issue 10159004: Extends DBusThreadManager to connect ibus-bus. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Rebase on http://codereview.chromium.org/10195001/ and separate initialization. Created 8 years, 8 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 | chromeos/dbus/dbus_thread_manager.h » ('j') | chromeos/dbus/dbus_thread_manager.cc » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/chromeos/input_method/ibus_controller_impl.cc
diff --git a/chrome/browser/chromeos/input_method/ibus_controller_impl.cc b/chrome/browser/chromeos/input_method/ibus_controller_impl.cc
index 10a354a9e7c5bb725a9d1c61288aaa4b0ce4fbb1..17873c6ca845b20b1778cf526c1ecbbfacbec225 100644
--- a/chrome/browser/chromeos/input_method/ibus_controller_impl.cc
+++ b/chrome/browser/chromeos/input_method/ibus_controller_impl.cc
@@ -12,7 +12,9 @@
#include <stack>
#include <utility>
+#include "base/environment.h"
#include "base/memory/scoped_ptr.h"
+#include "base/rand_util.h"
#include "base/stringprintf.h"
#include "base/string_split.h"
#include "chrome/browser/chromeos/input_method/input_method_config.h"
@@ -894,6 +896,8 @@ void IBusControllerImpl::UpdateProperty(IBusPanelService* panel,
bool IBusControllerImpl::MaybeLaunchIBusDaemon() {
static const char kIBusDaemonPath[] = "/usr/bin/ibus-daemon";
+ const std::string ibus_address = base::StringPrintf(
Yusuke Sato 2012/04/24 04:58:37 nit: move this down to line 908.
Seigo Nonaka 2012/04/26 00:14:32 Done.
+ "unix:abstract=/tmp/ibus-%0lX", base::RandUint64());
if (process_handle_ != base::kNullProcessHandle) {
DVLOG(1) << "MaybeLaunchIBusDaemon: ibus-daemon is already running.";
@@ -904,14 +908,27 @@ bool IBusControllerImpl::MaybeLaunchIBusDaemon() {
// TODO(zork): Send output to /var/log/ibus.log
const std::string ibus_daemon_command_line =
- base::StringPrintf("%s --panel=disable --cache=none --restart --replace",
- kIBusDaemonPath);
+ base::StringPrintf("%s --panel=disable --cache=none --restart --replace"
+ " --address=%s",
+ kIBusDaemonPath,
+ ibus_address.c_str());
if (!LaunchProcess(ibus_daemon_command_line,
&process_handle_,
reinterpret_cast<GChildWatchFunc>(OnIBusDaemonExit))) {
DVLOG(1) << "Failed to launch " << ibus_daemon_command_line;
return false;
}
+
+ // To avoid reading address file in UI thread, sets environment variable. The
Yusuke Sato 2012/04/24 04:58:37 You can remove 922-927. See http://codereview.chro
Seigo Nonaka 2012/04/26 00:14:32 Done.
+ // libibus uses IBUS_ADDRESS environment variable at first if available.
+ // https://github.com/ibus/ibus/blob/master/src/ibusshare.c#L188
+ // TODO(nona): Remove environment variable after fixing crosbug.com/26334.
+ scoped_ptr<base::Environment> env(base::Environment::Create());
+ env->SetVar("IBUS_ADDRESS", ibus_address.c_str());
+
+ DBusThreadManager* dbus_thread_manager = DBusThreadManager::Get();
+ dbus_thread_manager->InitializeIBusBus(ibus_address);
Yusuke Sato 2012/04/24 04:58:37 It seems that you code does not support dynamic ib
Seigo Nonaka 2012/04/26 00:14:32 I think latest patch support suggested case, howev
Yusuke Sato 2012/04/26 00:46:28 Ah ok, the dynamic shutdown feature is temporarily
Yusuke Sato 2012/04/26 00:48:48 s/crosbug 26443/crosbug 27051/
+
return true;
}
« no previous file with comments | « no previous file | chromeos/dbus/dbus_thread_manager.h » ('j') | chromeos/dbus/dbus_thread_manager.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698