summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authormukai@chromium.org <mukai@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-01-03 00:34:12 +0000
committermukai@chromium.org <mukai@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-01-03 00:34:12 +0000
commitcf61f6b0ade91639663f58b4a4d4981fcaf4c2eb (patch)
tree6080e2dbbcee7c1ab8dc6cbb4b810e7898d5476c /chrome
parent7f132d03adf33c15085f8680f6376becbd3073d6 (diff)
downloadchromium_src-cf61f6b0ade91639663f58b4a4d4981fcaf4c2eb.zip
chromium_src-cf61f6b0ade91639663f58b4a4d4981fcaf4c2eb.tar.gz
chromium_src-cf61f6b0ade91639663f58b4a4d4981fcaf4c2eb.tar.bz2
Revert 174534
> Decouple input_method from BrowserThread (and content/). > > BUG=164375 > > > Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=173477 > > Review URL: https://chromiumcodereview.appspot.com/11558017 BUG=164375, 168022 TBR=erikwright@chromium.org Review URL: https://codereview.chromium.org/11742016 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@174898 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r--chrome/browser/chromeos/input_method/DEPS6
-rw-r--r--chrome/browser/chromeos/input_method/ibus_controller.cc6
-rw-r--r--chrome/browser/chromeos/input_method/ibus_controller.h10
-rw-r--r--chrome/browser/chromeos/input_method/ibus_controller_impl.cc73
-rw-r--r--chrome/browser/chromeos/input_method/ibus_controller_impl.h25
-rw-r--r--chrome/browser/chromeos/input_method/ibus_controller_unittest.cc9
-rw-r--r--chrome/browser/chromeos/input_method/input_method_delegate.h13
-rw-r--r--chrome/browser/chromeos/input_method/input_method_delegate_impl.cc16
-rw-r--r--chrome/browser/chromeos/input_method/input_method_delegate_impl.h4
-rw-r--r--chrome/browser/chromeos/input_method/input_method_manager_impl.cc6
-rw-r--r--chrome/browser/chromeos/input_method/mock_input_method_delegate.cc15
-rw-r--r--chrome/browser/chromeos/input_method/mock_input_method_delegate.h4
-rw-r--r--chrome/browser/chromeos/input_method/mock_sequenced_task_runner.cc33
-rw-r--r--chrome/browser/chromeos/input_method/mock_sequenced_task_runner.h30
-rw-r--r--chrome/browser/chromeos/input_method/mock_xkeyboard.cc10
-rw-r--r--chrome/browser/chromeos/input_method/mock_xkeyboard.h5
-rw-r--r--chrome/browser/chromeos/input_method/xkeyboard.cc43
-rw-r--r--chrome/browser/chromeos/input_method/xkeyboard.h23
-rw-r--r--chrome/browser/chromeos/input_method/xkeyboard_unittest.cc20
-rw-r--r--chrome/browser/chromeos/preferences.cc6
-rw-r--r--chrome/chrome_tests_unit.gypi2
21 files changed, 91 insertions, 268 deletions
diff --git a/chrome/browser/chromeos/input_method/DEPS b/chrome/browser/chromeos/input_method/DEPS
index 052dd54..0294033 100644
--- a/chrome/browser/chromeos/input_method/DEPS
+++ b/chrome/browser/chromeos/input_method/DEPS
@@ -22,4 +22,10 @@ specific_include_rules = {
# from chrome/browser.
"!chrome/browser/chromeos/language_preferences.h"
],
+ 'ibus_controller_impl\.cc|xkeyboard\.cc': [
+ "!content/public/browser/browser_thread.h",
+ ],
+ 'xkeyboard_unittest\.cc': [
+ "!content/public/test/test_browser_thread.h",
+ ],
}
diff --git a/chrome/browser/chromeos/input_method/ibus_controller.cc b/chrome/browser/chromeos/input_method/ibus_controller.cc
index 7c5a9af..7307512 100644
--- a/chrome/browser/chromeos/input_method/ibus_controller.cc
+++ b/chrome/browser/chromeos/input_method/ibus_controller.cc
@@ -17,11 +17,9 @@ IBusController::~IBusController() {
}
// static
-IBusController* IBusController::Create(
- const scoped_refptr<base::SequencedTaskRunner>& default_task_runner,
- const scoped_refptr<base::SequencedTaskRunner>& worker_task_runner) {
+IBusController* IBusController::Create() {
#if defined(HAVE_IBUS)
- return new IBusControllerImpl(default_task_runner, worker_task_runner);
+ return new IBusControllerImpl;
#else
return new MockIBusController;
#endif
diff --git a/chrome/browser/chromeos/input_method/ibus_controller.h b/chrome/browser/chromeos/input_method/ibus_controller.h
index e0bb507..7fe9e80 100644
--- a/chrome/browser/chromeos/input_method/ibus_controller.h
+++ b/chrome/browser/chromeos/input_method/ibus_controller.h
@@ -9,12 +9,6 @@
#include <utility>
#include <vector>
-#include "base/memory/ref_counted.h"
-
-namespace base {
-class SequencedTaskRunner;
-} // namespace base
-
namespace chromeos {
namespace input_method {
@@ -36,9 +30,7 @@ class IBusController {
};
// Creates an instance of the class.
- static IBusController* Create(
- const scoped_refptr<base::SequencedTaskRunner>& default_task_runner,
- const scoped_refptr<base::SequencedTaskRunner>& worker_task_runner);
+ static IBusController* Create();
virtual ~IBusController();
diff --git a/chrome/browser/chromeos/input_method/ibus_controller_impl.cc b/chrome/browser/chromeos/input_method/ibus_controller_impl.cc
index 51c34c3..86f14c1 100644
--- a/chrome/browser/chromeos/input_method/ibus_controller_impl.cc
+++ b/chrome/browser/chromeos/input_method/ibus_controller_impl.cc
@@ -19,7 +19,6 @@
#include "base/memory/scoped_ptr.h"
#include "base/message_loop.h"
#include "base/rand_util.h"
-#include "base/sequenced_task_runner.h"
#include "base/string_split.h"
#include "base/stringprintf.h"
#include "chrome/browser/chromeos/input_method/input_method_config.h"
@@ -32,6 +31,7 @@
#include "chromeos/dbus/ibus/ibus_input_context_client.h"
#include "chromeos/dbus/ibus/ibus_panel_service.h"
#include "chromeos/dbus/ibus/ibus_property.h"
+#include "content/public/browser/browser_thread.h"
#include "ui/aura/client/aura_constants.h"
#include "ui/aura/root_window.h"
#include "ui/base/ime/input_method_ibus.h"
@@ -193,10 +193,10 @@ class IBusAddressWatcher {
public:
IBusAddressFileWatcherDelegate(
const std::string& ibus_address,
- const base::Callback<void(const std::string&)>& callback,
+ IBusControllerImpl* controller,
IBusAddressWatcher* watcher)
: ibus_address_(ibus_address),
- callback_(callback),
+ controller_(controller),
watcher_(watcher) {
DCHECK(watcher);
DCHECK(!ibus_address.empty());
@@ -205,7 +205,14 @@ class IBusAddressWatcher {
virtual void OnFilePathChanged(const FilePath& file_path) OVERRIDE {
if (!watcher_->IsWatching())
return;
- callback_.Run(ibus_address_);
+ bool success = content::BrowserThread::PostTask(
+ content::BrowserThread::UI,
+ FROM_HERE,
+ base::Bind(
+ &IBusControllerImpl::IBusDaemonInitializationDone,
+ controller_,
+ ibus_address_));
+ DCHECK(success);
watcher_->StopSoon();
}
@@ -215,14 +222,14 @@ class IBusAddressWatcher {
private:
// The ibus-daemon address.
const std::string ibus_address_;
- base::Callback<void(const std::string&)> callback_;
+ IBusControllerImpl* controller_;
IBusAddressWatcher* watcher_;
DISALLOW_COPY_AND_ASSIGN(IBusAddressFileWatcherDelegate);
};
static void Start(const std::string& ibus_address,
- const base::Callback<void(const std::string&)>& callback) {
+ IBusControllerImpl* controller) {
IBusAddressWatcher* instance = IBusAddressWatcher::Get();
scoped_ptr<base::Environment> env(base::Environment::Create());
std::string address_file_path;
@@ -236,7 +243,7 @@ class IBusAddressWatcher {
// The |delegate| is owned by watcher.
IBusAddressFileWatcherDelegate* delegate =
- new IBusAddressFileWatcherDelegate(ibus_address, callback, instance);
+ new IBusAddressFileWatcherDelegate(ibus_address, controller, instance);
bool result = instance->watcher_->Watch(FilePath(address_file_path),
delegate);
DCHECK(result);
@@ -261,6 +268,7 @@ class IBusAddressWatcher {
private:
static IBusAddressWatcher* Get() {
static IBusAddressWatcher* instance = new IBusAddressWatcher;
+ DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::FILE));
return instance;
}
@@ -274,14 +282,10 @@ class IBusAddressWatcher {
} // namespace
-IBusControllerImpl::IBusControllerImpl(
- const scoped_refptr<base::SequencedTaskRunner>& default_task_runner,
- const scoped_refptr<base::SequencedTaskRunner>& worker_task_runner)
+IBusControllerImpl::IBusControllerImpl()
: process_handle_(base::kNullProcessHandle),
ibus_daemon_status_(IBUS_DAEMON_STOP),
input_method_(NULL),
- default_task_runner_(default_task_runner),
- worker_task_runner_(worker_task_runner),
ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)) {
}
@@ -508,15 +512,12 @@ bool IBusControllerImpl::StartIBusDaemon() {
// 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.
-
- // Create a callback to bounce from the worker thread to the default thread.
- base::Callback<void(const std::string&)> callback(base::Bind(
- &IBusControllerImpl::IBusDaemonInitializationDoneWorkerCallback,
- weak_ptr_factory_.GetWeakPtr()));
-
- bool success = worker_task_runner_->PostTaskAndReply(
+ bool success = content::BrowserThread::PostTaskAndReply(
+ content::BrowserThread::FILE,
FROM_HERE,
- base::Bind(&IBusAddressWatcher::Start, ibus_daemon_address_, callback),
+ base::Bind(&IBusAddressWatcher::Start,
+ ibus_daemon_address_,
+ base::Unretained(this)),
base::Bind(&IBusControllerImpl::LaunchIBusDaemon,
weak_ptr_factory_.GetWeakPtr(),
ibus_daemon_address_));
@@ -584,42 +585,38 @@ void IBusControllerImpl::OnIBusConfigClientInitialized() {
}
}
-void IBusControllerImpl::IBusDaemonInitializationDoneWorkerCallback(
- const std::string& ibus_address) {
- bool result = default_task_runner_->PostTask(FROM_HERE, base::Bind(
- &IBusControllerImpl::IBusDaemonInitializationDone,
- weak_ptr_factory_.GetWeakPtr(),
- ibus_address));
- DCHECK(result);
-}
-
+// static
void IBusControllerImpl::IBusDaemonInitializationDone(
+ IBusControllerImpl* controller,
const std::string& ibus_address) {
- if (ibus_daemon_address_ != ibus_address)
+ if (controller->ibus_daemon_address_ != ibus_address)
return;
- if (ibus_daemon_status_ != IBUS_DAEMON_INITIALIZING) {
+ if (controller->ibus_daemon_status_ != IBUS_DAEMON_INITIALIZING) {
// Stop() or OnIBusDaemonExit() has already been called.
return;
}
chromeos::DBusThreadManager::Get()->InitIBusBus(ibus_address);
- ibus_daemon_status_ = IBUS_DAEMON_RUNNING;
+ controller->ibus_daemon_status_ = IBUS_DAEMON_RUNNING;
- ui::InputMethodIBus* input_method_ibus = GetInputMethod();
+ ui::InputMethodIBus* input_method_ibus = controller->GetInputMethod();
DCHECK(input_method_ibus);
input_method_ibus->OnConnected();
- DBusThreadManager::Get()->GetIBusPanelService()->SetUpPropertyHandler(this);
+ DBusThreadManager::Get()->GetIBusPanelService()->SetUpPropertyHandler(
+ controller);
// Restore previous input method at the beggining of connection.
- if (!current_input_method_id_.empty())
- SendChangeInputMethodRequest(current_input_method_id_);
+ if (!controller->current_input_method_id_.empty()) {
+ controller->SendChangeInputMethodRequest(
+ controller->current_input_method_id_);
+ }
DBusThreadManager::Get()->GetIBusConfigClient()->InitializeAsync(
base::Bind(&IBusControllerImpl::OnIBusConfigClientInitialized,
- weak_ptr_factory_.GetWeakPtr()));
+ controller->weak_ptr_factory_.GetWeakPtr()));
- FOR_EACH_OBSERVER(Observer, observers_, OnConnected());
+ FOR_EACH_OBSERVER(Observer, controller->observers_, OnConnected());
VLOG(1) << "The ibus-daemon initialization is done.";
}
diff --git a/chrome/browser/chromeos/input_method/ibus_controller_impl.h b/chrome/browser/chromeos/input_method/ibus_controller_impl.h
index ecadaf2..eb59d2b 100644
--- a/chrome/browser/chromeos/input_method/ibus_controller_impl.h
+++ b/chrome/browser/chromeos/input_method/ibus_controller_impl.h
@@ -10,16 +10,11 @@
#include <string>
#include <vector>
-#include "base/memory/ref_counted.h"
#include "base/process_util.h"
#include "chrome/browser/chromeos/input_method/ibus_controller_base.h"
#include "chrome/browser/chromeos/input_method/input_method_whitelist.h"
#include "chromeos/dbus/ibus/ibus_panel_service.h"
-namespace base {
-class SequencedTaskRunner;
-} // namespace base
-
namespace ui {
class InputMethodIBus;
} // namespace ui
@@ -35,12 +30,7 @@ typedef std::vector<InputMethodProperty> InputMethodPropertyList;
class IBusControllerImpl : public IBusControllerBase,
public ibus::IBusPanelPropertyHandlerInterface {
public:
- // Creates an IBusController. All public methods must be invoked in the
- // context of |default_task_runner|. |worker_task_runner| will be used to
- // execute potentially blocking file tasks.
- IBusControllerImpl(
- const scoped_refptr<base::SequencedTaskRunner>& default_task_runner,
- const scoped_refptr<base::SequencedTaskRunner>& worker_task_runner);
+ IBusControllerImpl();
virtual ~IBusControllerImpl();
// IBusController overrides:
@@ -56,6 +46,9 @@ class IBusControllerImpl : public IBusControllerBase,
const InputMethodProperty& new_prop,
InputMethodPropertyList* prop_list);
+ static void IBusDaemonInitializationDone(IBusControllerImpl* controller,
+ const std::string& ibus_address);
+
private:
enum IBusDaemonStatus{
IBUS_DAEMON_INITIALIZING,
@@ -102,13 +95,6 @@ class IBusControllerImpl : public IBusControllerBase,
// The injected object must be released by caller.
void set_input_method_for_testing(ui::InputMethodIBus* input_method);
- // Receives a notification on a worker thread and posts a call to
- // IBusDaemonInitializationDone on the default task runner.
- void IBusDaemonInitializationDoneWorkerCallback(
- const std::string& ibus_address);
-
- void IBusDaemonInitializationDone(const std::string& ibus_address);
-
// Called when the IBusConfigClient is initialized.
void OnIBusConfigClientInitialized();
@@ -141,9 +127,6 @@ class IBusControllerImpl : public IBusControllerBase,
// The pointer to global input method. We can inject this value for testing.
ui::InputMethodIBus* input_method_;
- scoped_refptr<base::SequencedTaskRunner> default_task_runner_;
- scoped_refptr<base::SequencedTaskRunner> worker_task_runner_;
-
// Used for making callbacks for PostTask.
base::WeakPtrFactory<IBusControllerImpl> weak_ptr_factory_;
diff --git a/chrome/browser/chromeos/input_method/ibus_controller_unittest.cc b/chrome/browser/chromeos/input_method/ibus_controller_unittest.cc
index c01ec8c..1da1e1a 100644
--- a/chrome/browser/chromeos/input_method/ibus_controller_unittest.cc
+++ b/chrome/browser/chromeos/input_method/ibus_controller_unittest.cc
@@ -3,22 +3,15 @@
// found in the LICENSE file.
#include "base/logging.h"
-#include "base/memory/ref_counted.h"
#include "base/memory/scoped_ptr.h"
#include "chrome/browser/chromeos/input_method/ibus_controller.h"
-#include "chrome/browser/chromeos/input_method/mock_sequenced_task_runner.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace chromeos {
namespace input_method {
TEST(IBusControllerTest, TestCreate) {
- scoped_refptr<MockSequencedTaskRunner> default_task_runner(
- new MockSequencedTaskRunner);
- scoped_refptr<MockSequencedTaskRunner> worker_task_runner(
- new MockSequencedTaskRunner);
- scoped_ptr<IBusController> controller(IBusController::Create(
- default_task_runner, worker_task_runner));
+ scoped_ptr<IBusController> controller(IBusController::Create());
EXPECT_TRUE(controller.get());
}
diff --git a/chrome/browser/chromeos/input_method/input_method_delegate.h b/chrome/browser/chromeos/input_method/input_method_delegate.h
index 174fb63..ed07173 100644
--- a/chrome/browser/chromeos/input_method/input_method_delegate.h
+++ b/chrome/browser/chromeos/input_method/input_method_delegate.h
@@ -8,11 +8,6 @@
#include <string>
#include "base/basictypes.h"
-#include "base/memory/ref_counted.h"
-
-namespace base {
-class SequencedTaskRunner;
-} // namespace base
namespace chromeos {
namespace input_method {
@@ -28,14 +23,6 @@ class InputMethodDelegate {
virtual std::string GetHardwareKeyboardLayout() const = 0;
// Retrieves the currently active UI locale.
virtual std::string GetActiveLocale() const = 0;
- // Retrieves the default task runner. The public input_method API should only
- // be accessed in the context of this task runner.
- virtual scoped_refptr<base::SequencedTaskRunner>
- GetDefaultTaskRunner() const = 0;
- // Retrieves a task runner that may be used for possibly blocking tasks such
- // as file IO.
- virtual scoped_refptr<base::SequencedTaskRunner>
- GetWorkerTaskRunner() const = 0;
private:
DISALLOW_COPY_AND_ASSIGN(InputMethodDelegate);
diff --git a/chrome/browser/chromeos/input_method/input_method_delegate_impl.cc b/chrome/browser/chromeos/input_method/input_method_delegate_impl.cc
index 0451277..a69cdc4 100644
--- a/chrome/browser/chromeos/input_method/input_method_delegate_impl.cc
+++ b/chrome/browser/chromeos/input_method/input_method_delegate_impl.cc
@@ -5,11 +5,9 @@
#include "chrome/browser/chromeos/input_method/input_method_delegate_impl.h"
#include "base/logging.h"
-#include "base/threading/sequenced_worker_pool.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/prefs/pref_service.h"
#include "chrome/common/pref_names.h"
-#include "content/public/browser/browser_thread.h"
namespace chromeos {
namespace input_method {
@@ -35,19 +33,5 @@ std::string InputMethodDelegateImpl::GetActiveLocale() const {
return std::string();
}
-scoped_refptr<base::SequencedTaskRunner>
-InputMethodDelegateImpl::GetDefaultTaskRunner() const {
- return content::BrowserThread::GetMessageLoopProxyForThread(
- content::BrowserThread::UI);
-}
-
-scoped_refptr<base::SequencedTaskRunner>
-InputMethodDelegateImpl::GetWorkerTaskRunner() const {
- scoped_refptr<base::SequencedWorkerPool> worker_pool(
- content::BrowserThread::GetBlockingPool());
-
- return worker_pool->GetSequencedTaskRunner(worker_pool->GetSequenceToken());
-}
-
} // namespace input_method
} // namespace chromeos
diff --git a/chrome/browser/chromeos/input_method/input_method_delegate_impl.h b/chrome/browser/chromeos/input_method/input_method_delegate_impl.h
index ab40c70..b327b61 100644
--- a/chrome/browser/chromeos/input_method/input_method_delegate_impl.h
+++ b/chrome/browser/chromeos/input_method/input_method_delegate_impl.h
@@ -23,10 +23,6 @@ class InputMethodDelegateImpl : public InputMethodDelegate {
// InputMethodDelegate implementation.
virtual std::string GetHardwareKeyboardLayout() const OVERRIDE;
virtual std::string GetActiveLocale() const OVERRIDE;
- virtual scoped_refptr<base::SequencedTaskRunner>
- GetDefaultTaskRunner() const OVERRIDE;
- virtual scoped_refptr<base::SequencedTaskRunner>
- GetWorkerTaskRunner() const OVERRIDE;
private:
DISALLOW_COPY_AND_ASSIGN(InputMethodDelegateImpl);
diff --git a/chrome/browser/chromeos/input_method/input_method_manager_impl.cc b/chrome/browser/chromeos/input_method/input_method_manager_impl.cc
index e4c26ec..2f9a67c 100644
--- a/chrome/browser/chromeos/input_method/input_method_manager_impl.cc
+++ b/chrome/browser/chromeos/input_method/input_method_manager_impl.cc
@@ -8,7 +8,6 @@
#include "base/basictypes.h"
#include "base/memory/scoped_ptr.h"
-#include "base/sequenced_task_runner.h"
#include "base/string_util.h"
#include "base/stringprintf.h"
#include "chrome/browser/chromeos/input_method/candidate_window_controller.h"
@@ -580,9 +579,8 @@ void InputMethodManagerImpl::OnDisconnected() {
void InputMethodManagerImpl::Init() {
DCHECK(!ibus_controller_.get());
- ibus_controller_.reset(IBusController::Create(
- delegate_->GetDefaultTaskRunner(), delegate_->GetWorkerTaskRunner()));
- xkeyboard_.reset(XKeyboard::Create(util_, delegate_->GetDefaultTaskRunner()));
+ ibus_controller_.reset(IBusController::Create());
+ xkeyboard_.reset(XKeyboard::Create(util_));
ibus_controller_->AddObserver(this);
}
diff --git a/chrome/browser/chromeos/input_method/mock_input_method_delegate.cc b/chrome/browser/chromeos/input_method/mock_input_method_delegate.cc
index e9969e1..7114fbe 100644
--- a/chrome/browser/chromeos/input_method/mock_input_method_delegate.cc
+++ b/chrome/browser/chromeos/input_method/mock_input_method_delegate.cc
@@ -4,9 +4,6 @@
#include "chrome/browser/chromeos/input_method/mock_input_method_delegate.h"
-#include "base/logging.h"
-#include "base/sequenced_task_runner.h"
-
namespace chromeos {
namespace input_method {
@@ -25,17 +22,5 @@ std::string MockInputMethodDelegate::GetActiveLocale() const {
return active_locale_;
}
-scoped_refptr<base::SequencedTaskRunner>
-MockInputMethodDelegate::GetDefaultTaskRunner() const {
- NOTREACHED();
- return NULL;
-}
-
-scoped_refptr<base::SequencedTaskRunner>
-MockInputMethodDelegate::GetWorkerTaskRunner() const {
- NOTREACHED();
- return NULL;
-}
-
} // namespace input_method
} // namespace chromeos
diff --git a/chrome/browser/chromeos/input_method/mock_input_method_delegate.h b/chrome/browser/chromeos/input_method/mock_input_method_delegate.h
index 11e9bcd..58f0703 100644
--- a/chrome/browser/chromeos/input_method/mock_input_method_delegate.h
+++ b/chrome/browser/chromeos/input_method/mock_input_method_delegate.h
@@ -20,10 +20,6 @@ class MockInputMethodDelegate : public InputMethodDelegate {
// InputMethodDelegate implementation:
virtual std::string GetHardwareKeyboardLayout() const OVERRIDE;
virtual std::string GetActiveLocale() const OVERRIDE;
- virtual scoped_refptr<base::SequencedTaskRunner>
- GetDefaultTaskRunner() const OVERRIDE;
- virtual scoped_refptr<base::SequencedTaskRunner>
- GetWorkerTaskRunner() const OVERRIDE;
void set_hardware_keyboard_layout(const std::string& value) {
hardware_keyboard_layout_ = value;
diff --git a/chrome/browser/chromeos/input_method/mock_sequenced_task_runner.cc b/chrome/browser/chromeos/input_method/mock_sequenced_task_runner.cc
deleted file mode 100644
index 6763566..0000000
--- a/chrome/browser/chromeos/input_method/mock_sequenced_task_runner.cc
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/chromeos/input_method/mock_sequenced_task_runner.h"
-
-#include "base/logging.h"
-
-MockSequencedTaskRunner::MockSequencedTaskRunner() {
-}
-
-MockSequencedTaskRunner::~MockSequencedTaskRunner() {
-}
-
-bool MockSequencedTaskRunner::PostDelayedTask(
- const tracked_objects::Location& from_here,
- const base::Closure& task,
- base::TimeDelta delay) {
- NOTREACHED();
- return false;
-}
-
-bool MockSequencedTaskRunner::RunsTasksOnCurrentThread() const {
- return true;
-}
-
-bool MockSequencedTaskRunner::PostNonNestableDelayedTask(
- const tracked_objects::Location& from_here,
- const base::Closure& task,
- base::TimeDelta delay) {
- NOTREACHED();
- return false;
-}
diff --git a/chrome/browser/chromeos/input_method/mock_sequenced_task_runner.h b/chrome/browser/chromeos/input_method/mock_sequenced_task_runner.h
deleted file mode 100644
index 7665cd8..0000000
--- a/chrome/browser/chromeos/input_method/mock_sequenced_task_runner.h
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_CHROMEOS_INPUT_METHOD_MOCK_SEQUENCED_TASK_RUNNER_H_
-#define CHROME_BROWSER_CHROMEOS_INPUT_METHOD_MOCK_SEQUENCED_TASK_RUNNER_H_
-
-#include "base/basictypes.h"
-#include "base/sequenced_task_runner.h"
-
-class MockSequencedTaskRunner : public base::SequencedTaskRunner {
- public:
- MockSequencedTaskRunner();
-
- // base::SequencedTaskRunner implementation.
- virtual bool PostDelayedTask(const tracked_objects::Location& from_here,
- const base::Closure& task,
- base::TimeDelta delay) OVERRIDE;
- virtual bool RunsTasksOnCurrentThread() const OVERRIDE;
- virtual bool PostNonNestableDelayedTask(
- const tracked_objects::Location& from_here,
- const base::Closure& task,
- base::TimeDelta delay) OVERRIDE;
-
- private:
- virtual ~MockSequencedTaskRunner();
- DISALLOW_COPY_AND_ASSIGN(MockSequencedTaskRunner);
-};
-
-#endif // CHROME_BROWSER_CHROMEOS_INPUT_METHOD_MOCK_SEQUENCED_TASK_RUNNER_H_
diff --git a/chrome/browser/chromeos/input_method/mock_xkeyboard.cc b/chrome/browser/chromeos/input_method/mock_xkeyboard.cc
index 78a8c63..6c5d59f 100644
--- a/chrome/browser/chromeos/input_method/mock_xkeyboard.cc
+++ b/chrome/browser/chromeos/input_method/mock_xkeyboard.cc
@@ -63,15 +63,5 @@ void MockXKeyboard::GetLockedModifiers(bool* out_caps_lock_enabled,
*out_num_lock_enabled = num_lock_is_enabled_;
}
-bool MockXKeyboard::SetAutoRepeatEnabled(bool enabled) {
- auto_repeat_enabled_ = enabled;
- return true;
-}
-
-bool MockXKeyboard::SetAutoRepeatRate(const AutoRepeatRate& rate) {
- auto_repeat_rate_ = rate;
- return true;
-}
-
} // namespace input_method
} // namespace chromeos
diff --git a/chrome/browser/chromeos/input_method/mock_xkeyboard.h b/chrome/browser/chromeos/input_method/mock_xkeyboard.h
index 467da1f..e797979 100644
--- a/chrome/browser/chromeos/input_method/mock_xkeyboard.h
+++ b/chrome/browser/chromeos/input_method/mock_xkeyboard.h
@@ -33,16 +33,11 @@ class MockXKeyboard : public XKeyboard {
virtual unsigned int GetNumLockMask() OVERRIDE;
virtual void GetLockedModifiers(bool* out_caps_lock_enabled,
bool* out_num_lock_enabled) OVERRIDE;
- virtual bool SetAutoRepeatEnabled(bool enabled) OVERRIDE;
- virtual bool SetAutoRepeatRate(const AutoRepeatRate& rate) OVERRIDE;
int set_current_keyboard_layout_by_name_count_;
std::string last_layout_;
bool caps_lock_is_enabled_;
bool num_lock_is_enabled_;
- bool auto_repeat_enabled_;
- AutoRepeatRate auto_repeat_rate_;
-
// TODO(yusukes): Add more variables for counting the numbers of the API calls
private:
diff --git a/chrome/browser/chromeos/input_method/xkeyboard.cc b/chrome/browser/chromeos/input_method/xkeyboard.cc
index fe7ac99..511e2b6 100644
--- a/chrome/browser/chromeos/input_method/xkeyboard.cc
+++ b/chrome/browser/chromeos/input_method/xkeyboard.cc
@@ -14,10 +14,10 @@
#include "base/logging.h"
#include "base/memory/scoped_ptr.h"
#include "base/process_util.h"
-#include "base/sequenced_task_runner.h"
#include "base/string_util.h"
#include "base/stringprintf.h"
#include "chrome/browser/chromeos/input_method/input_method_util.h"
+#include "content/public/browser/browser_thread.h"
#include "ui/base/x/x11_util.h"
// These includes conflict with base/tracked_objects.h so must come last.
@@ -25,6 +25,8 @@
#include <X11/Xlib.h>
#include <glib.h>
+using content::BrowserThread;
+
namespace chromeos {
namespace input_method {
namespace {
@@ -60,9 +62,7 @@ bool CheckLayoutName(const std::string& layout_name) {
class XKeyboardImpl : public XKeyboard {
public:
- explicit XKeyboardImpl(
- const InputMethodUtil& util,
- const scoped_refptr<base::SequencedTaskRunner>& default_task_runner);
+ explicit XKeyboardImpl(const InputMethodUtil& util);
virtual ~XKeyboardImpl() {}
// Overridden from XKeyboard:
@@ -80,8 +80,6 @@ class XKeyboardImpl : public XKeyboard {
virtual unsigned int GetNumLockMask() OVERRIDE;
virtual void GetLockedModifiers(bool* out_caps_lock_enabled,
bool* out_num_lock_enabled) OVERRIDE;
- virtual bool SetAutoRepeatEnabled(bool enabled) OVERRIDE;
- virtual bool SetAutoRepeatRate(const AutoRepeatRate& rate) OVERRIDE;
private:
// This function is used by SetLayout() and RemapModifierKeys(). Calls
@@ -112,16 +110,11 @@ class XKeyboardImpl : public XKeyboard {
// A queue for executing setxkbmap one by one.
std::queue<std::string> execute_queue_;
- scoped_refptr<base::SequencedTaskRunner> default_task_runner_;
-
DISALLOW_COPY_AND_ASSIGN(XKeyboardImpl);
};
-XKeyboardImpl::XKeyboardImpl(
- const InputMethodUtil& util,
- const scoped_refptr<base::SequencedTaskRunner>& default_task_runner)
- : is_running_on_chrome_os_(base::chromeos::IsRunningOnChromeOS()),
- default_task_runner_(default_task_runner) {
+XKeyboardImpl::XKeyboardImpl(const InputMethodUtil& util)
+ : is_running_on_chrome_os_(base::chromeos::IsRunningOnChromeOS()) {
num_lock_mask_ = GetNumLockMask();
// web_input_event_aurax11.cc seems to assume that Mod2Mask is always assigned
@@ -324,14 +317,14 @@ bool XKeyboardImpl::CurrentlyOnUIThread() const {
// TODO(yusukes): Stop special-casing browser_tests and remove this function.
if (!is_running_on_chrome_os_)
return true;
- return default_task_runner_->RunsTasksOnCurrentThread();
+ return BrowserThread::CurrentlyOn(BrowserThread::UI);
}
// static
void XKeyboardImpl::OnSetLayoutFinish(pid_t pid,
int status,
XKeyboardImpl* self) {
- CHECK(self->default_task_runner_->RunsTasksOnCurrentThread());
+ CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
DVLOG(1) << "OnSetLayoutFinish: pid=" << pid;
if (self->execute_queue_.empty()) {
DVLOG(1) << "OnSetLayoutFinish: execute_queue_ is empty. "
@@ -342,8 +335,11 @@ void XKeyboardImpl::OnSetLayoutFinish(pid_t pid,
self->MaybeExecuteSetLayoutCommand();
}
-bool XKeyboardImpl::SetAutoRepeatEnabled(bool enabled) {
- CHECK(default_task_runner_->RunsTasksOnCurrentThread());
+} // namespace
+
+// static
+bool XKeyboard::SetAutoRepeatEnabled(bool enabled) {
+ CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
if (enabled)
XAutoRepeatOn(ui::GetXDisplay());
else
@@ -352,8 +348,9 @@ bool XKeyboardImpl::SetAutoRepeatEnabled(bool enabled) {
return true;
}
-bool XKeyboardImpl::SetAutoRepeatRate(const AutoRepeatRate& rate) {
- CHECK(default_task_runner_->RunsTasksOnCurrentThread());
+// static
+bool XKeyboard::SetAutoRepeatRate(const AutoRepeatRate& rate) {
+ CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
DVLOG(1) << "Set auto-repeat rate to: "
<< rate.initial_delay_in_ms << " ms delay, "
<< rate.repeat_interval_in_ms << " ms interval";
@@ -366,8 +363,6 @@ bool XKeyboardImpl::SetAutoRepeatRate(const AutoRepeatRate& rate) {
return true;
}
-} // namespace
-
// static
bool XKeyboard::GetAutoRepeatEnabledForTesting() {
XKeyboardState state = {};
@@ -388,10 +383,8 @@ bool XKeyboard::CheckLayoutNameForTesting(const std::string& layout_name) {
}
// static
-XKeyboard* XKeyboard::Create(
- const InputMethodUtil& util,
- const scoped_refptr<base::SequencedTaskRunner>& default_task_runner) {
- return new XKeyboardImpl(util, default_task_runner);
+XKeyboard* XKeyboard::Create(const InputMethodUtil& util) {
+ return new XKeyboardImpl(util);
}
} // namespace input_method
diff --git a/chrome/browser/chromeos/input_method/xkeyboard.h b/chrome/browser/chromeos/input_method/xkeyboard.h
index dff46c9..ab16015 100644
--- a/chrome/browser/chromeos/input_method/xkeyboard.h
+++ b/chrome/browser/chromeos/input_method/xkeyboard.h
@@ -9,11 +9,6 @@
#include <vector>
#include "base/basictypes.h"
-#include "base/memory/ref_counted.h"
-
-namespace base {
-class SequencedTaskRunner;
-} // namespace base
namespace chromeos {
namespace input_method {
@@ -104,31 +99,29 @@ class XKeyboard {
// Turns on and off the auto-repeat of the keyboard. Returns true on success.
// Do not call the function from non-UI threads.
- virtual bool SetAutoRepeatEnabled(bool enabled) = 0;
+ // TODO(yusukes): Make this function non-static so we can mock it.
+ static bool SetAutoRepeatEnabled(bool enabled);
// Sets the auto-repeat rate of the keyboard, initial delay in ms, and repeat
// interval in ms. Returns true on success. Do not call the function from
// non-UI threads.
- virtual bool SetAutoRepeatRate(const AutoRepeatRate& rate) = 0;
+ // TODO(yusukes): Make this function non-static so we can mock it.
+ static bool SetAutoRepeatRate(const AutoRepeatRate& rate);
- // Returns true if auto repeat is enabled.
+ // Returns true if auto repeat is enabled. This function is protected: for
+ // testability.
static bool GetAutoRepeatEnabledForTesting();
// On success, set current auto repeat rate on |out_rate| and returns true.
- // Returns false otherwise.
+ // Returns false otherwise. This function is protected: for testability.
static bool GetAutoRepeatRateForTesting(AutoRepeatRate* out_rate);
// Returns false if |layout_name| contains a bad character.
static bool CheckLayoutNameForTesting(const std::string& layout_name);
- // Creates an instance of XKeyboard. |default_task_runner| is used to verify
- // thread-safe usage (all methods must be invoked in the context of
- // default_task_runner).
// Note: At this moment, classes other than InputMethodManager should not
// instantiate the XKeyboard class.
- static XKeyboard* Create(
- const InputMethodUtil& util,
- const scoped_refptr<base::SequencedTaskRunner>& default_task_runner);
+ static XKeyboard* Create(const InputMethodUtil& util);
};
} // namespace input_method
diff --git a/chrome/browser/chromeos/input_method/xkeyboard_unittest.cc b/chrome/browser/chromeos/input_method/xkeyboard_unittest.cc
index 250830a..ab3cc3a 100644
--- a/chrome/browser/chromeos/input_method/xkeyboard_unittest.cc
+++ b/chrome/browser/chromeos/input_method/xkeyboard_unittest.cc
@@ -14,12 +14,14 @@
#include "chrome/browser/chromeos/input_method/input_method_util.h"
#include "chrome/browser/chromeos/input_method/input_method_whitelist.h"
#include "chrome/browser/chromeos/input_method/mock_input_method_delegate.h"
-#include "chrome/browser/chromeos/input_method/mock_sequenced_task_runner.h"
+#include "content/public/test/test_browser_thread.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/base/x/x11_util.h"
#include <X11/Xlib.h>
+using content::BrowserThread;
+
namespace chromeos {
namespace input_method {
@@ -29,11 +31,11 @@ class XKeyboardTest : public testing::Test {
public:
XKeyboardTest()
: util_(&delegate_, whitelist_.GetSupportedInputMethods()),
- mock_task_runner_(new MockSequencedTaskRunner) {
+ ui_thread_(BrowserThread::UI, &message_loop_) {
}
virtual void SetUp() {
- xkey_.reset(XKeyboard::Create(util_, mock_task_runner_));
+ xkey_.reset(XKeyboard::Create(util_));
}
virtual void TearDown() {
@@ -43,8 +45,10 @@ class XKeyboardTest : public testing::Test {
MockInputMethodDelegate delegate_;
InputMethodWhitelist whitelist_;
InputMethodUtil util_;
- scoped_refptr<MockSequencedTaskRunner> mock_task_runner_;
scoped_ptr<XKeyboard> xkey_;
+
+ MessageLoopForUI message_loop_;
+ content::TestBrowserThread ui_thread_;
};
// Returns true if X display is available.
@@ -185,10 +189,10 @@ TEST_F(XKeyboardTest, TestSetAutoRepeatEnabled) {
return;
}
const bool state = XKeyboard::GetAutoRepeatEnabledForTesting();
- xkey_->SetAutoRepeatEnabled(!state);
+ XKeyboard::SetAutoRepeatEnabled(!state);
EXPECT_EQ(!state, XKeyboard::GetAutoRepeatEnabledForTesting());
// Restore the initial state.
- xkey_->SetAutoRepeatEnabled(state);
+ XKeyboard::SetAutoRepeatEnabled(state);
EXPECT_EQ(state, XKeyboard::GetAutoRepeatEnabledForTesting());
}
@@ -203,13 +207,13 @@ TEST_F(XKeyboardTest, TestSetAutoRepeatRate) {
AutoRepeatRate tmp(rate);
++tmp.initial_delay_in_ms;
++tmp.repeat_interval_in_ms;
- EXPECT_TRUE(xkey_->SetAutoRepeatRate(tmp));
+ EXPECT_TRUE(XKeyboard::SetAutoRepeatRate(tmp));
EXPECT_TRUE(XKeyboard::GetAutoRepeatRateForTesting(&tmp));
EXPECT_EQ(rate.initial_delay_in_ms + 1, tmp.initial_delay_in_ms);
EXPECT_EQ(rate.repeat_interval_in_ms + 1, tmp.repeat_interval_in_ms);
// Restore the initial state.
- EXPECT_TRUE(xkey_->SetAutoRepeatRate(rate));
+ EXPECT_TRUE(XKeyboard::SetAutoRepeatRate(rate));
EXPECT_TRUE(XKeyboard::GetAutoRepeatRateForTesting(&tmp));
EXPECT_EQ(rate.initial_delay_in_ms, tmp.initial_delay_in_ms);
EXPECT_EQ(rate.repeat_interval_in_ms, tmp.repeat_interval_in_ms);
diff --git a/chrome/browser/chromeos/preferences.cc b/chrome/browser/chromeos/preferences.cc
index f7df26a..6ef97eb 100644
--- a/chrome/browser/chromeos/preferences.cc
+++ b/chrome/browser/chromeos/preferences.cc
@@ -525,8 +525,7 @@ void Preferences::NotifyPrefChanged(const std::string* pref_name) {
if (!pref_name || *pref_name == prefs::kLanguageXkbAutoRepeatEnabled) {
const bool enabled = xkb_auto_repeat_enabled_.GetValue();
- input_method::GetInputMethodManager()->GetXKeyboard()->
- SetAutoRepeatEnabled(enabled);
+ input_method::XKeyboard::SetAutoRepeatEnabled(enabled);
}
if (!pref_name || ((*pref_name == prefs::kLanguageXkbAutoRepeatDelay) ||
(*pref_name == prefs::kLanguageXkbAutoRepeatInterval))) {
@@ -788,8 +787,7 @@ void Preferences::UpdateAutoRepeatRate() {
rate.repeat_interval_in_ms = xkb_auto_repeat_interval_pref_.GetValue();
DCHECK(rate.initial_delay_in_ms > 0);
DCHECK(rate.repeat_interval_in_ms > 0);
- input_method::GetInputMethodManager()->GetXKeyboard()->
- SetAutoRepeatRate(rate);
+ input_method::XKeyboard::SetAutoRepeatRate(rate);
}
} // namespace chromeos
diff --git a/chrome/chrome_tests_unit.gypi b/chrome/chrome_tests_unit.gypi
index 97f4287e..635cdce 100644
--- a/chrome/chrome_tests_unit.gypi
+++ b/chrome/chrome_tests_unit.gypi
@@ -84,8 +84,6 @@
'browser/chromeos/input_method/mock_input_method_delegate.h',
'browser/chromeos/input_method/mock_input_method_manager.cc',
'browser/chromeos/input_method/mock_input_method_manager.h',
- 'browser/chromeos/input_method/mock_sequenced_task_runner.cc',
- 'browser/chromeos/input_method/mock_sequenced_task_runner.h',
'browser/chromeos/input_method/mock_xkeyboard.cc',
'browser/chromeos/input_method/mock_xkeyboard.h',
'browser/chromeos/login/mock_login_status_consumer.cc',