summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chromeos/dbus/ibus/ibus_input_context_client.cc4
-rw-r--r--chromeos/dbus/ibus/ibus_input_context_client.h6
-rw-r--r--chromeos/dbus/ibus/ibus_input_context_client_unittest.cc4
-rw-r--r--chromeos/dbus/ibus/mock_ibus_client.cc7
-rw-r--r--chromeos/dbus/ibus/mock_ibus_client.h24
-rw-r--r--chromeos/dbus/ibus/mock_ibus_input_context_client.cc27
-rw-r--r--chromeos/dbus/ibus/mock_ibus_input_context_client.h48
-rw-r--r--chromeos/dbus/mock_dbus_thread_manager_without_gmock.cc7
-rw-r--r--chromeos/dbus/mock_dbus_thread_manager_without_gmock.h6
-rw-r--r--ui/base/ime/ibus_client_impl.cc4
-rw-r--r--ui/base/ime/input_method_ibus.cc5
-rw-r--r--ui/base/ime/input_method_ibus_unittest.cc260
12 files changed, 101 insertions, 301 deletions
diff --git a/chromeos/dbus/ibus/ibus_input_context_client.cc b/chromeos/dbus/ibus/ibus_input_context_client.cc
index 8083f8c..10e7d6f 100644
--- a/chromeos/dbus/ibus/ibus_input_context_client.cc
+++ b/chromeos/dbus/ibus/ibus_input_context_client.cc
@@ -67,7 +67,7 @@ class IBusInputContextClientImpl : public IBusInputContextClient {
}
// IBusInputContextClient override.
- virtual bool IsObjectProxyReady() const OVERRIDE {
+ virtual bool IsConnected() const OVERRIDE {
return proxy_ != NULL;
}
@@ -374,7 +374,7 @@ class IBusInputContextClientStubImpl : public IBusInputContextClient {
// IBusInputContextClient override.
virtual void ResetObjectProxy() OVERRIDE {}
// IBusInputContextClient override.
- virtual bool IsObjectProxyReady() const OVERRIDE {
+ virtual bool IsConnected() const OVERRIDE {
return true;
}
// IBusInputContextClient overrides.
diff --git a/chromeos/dbus/ibus/ibus_input_context_client.h b/chromeos/dbus/ibus/ibus_input_context_client.h
index 7edc577..3b543f2 100644
--- a/chromeos/dbus/ibus/ibus_input_context_client.h
+++ b/chromeos/dbus/ibus/ibus_input_context_client.h
@@ -52,9 +52,9 @@ class CHROMEOS_EXPORT IBusInputContextClient {
// Initialize function again.
virtual void ResetObjectProxy() = 0;
- // Returns true if the object proxy is ready to communicate with ibus-daemon,
- // otherwise return false.
- virtual bool IsObjectProxyReady() const = 0;
+ // Returns true if connected to target input context path, otherwise return
+ // false.
+ virtual bool IsConnected() const = 0;
// Signal handler accessors. Setting function can be called multiple times. If
// you call setting function multiple times, previous callback will be
diff --git a/chromeos/dbus/ibus/ibus_input_context_client_unittest.cc b/chromeos/dbus/ibus/ibus_input_context_client_unittest.cc
index d01b3a5..c4429b1 100644
--- a/chromeos/dbus/ibus/ibus_input_context_client_unittest.cc
+++ b/chromeos/dbus/ibus/ibus_input_context_client_unittest.cc
@@ -147,9 +147,9 @@ class IBusInputContextClientTest : public testing::Test {
}
virtual void TearDown() OVERRIDE {
- EXPECT_TRUE(client_->IsObjectProxyReady());
+ EXPECT_TRUE(client_->IsConnected());
client_->ResetObjectProxy();
- EXPECT_FALSE(client_->IsObjectProxyReady());
+ EXPECT_FALSE(client_->IsConnected());
}
// Handles FocusIn method call.
diff --git a/chromeos/dbus/ibus/mock_ibus_client.cc b/chromeos/dbus/ibus/mock_ibus_client.cc
index d185f5f..bf97086 100644
--- a/chromeos/dbus/ibus/mock_ibus_client.cc
+++ b/chromeos/dbus/ibus/mock_ibus_client.cc
@@ -6,9 +6,7 @@
namespace chromeos {
-MockIBusClient::MockIBusClient()
- : create_input_context_call_count_(0) {
-}
+MockIBusClient::MockIBusClient() {}
MockIBusClient::~MockIBusClient() {}
@@ -16,9 +14,6 @@ void MockIBusClient::CreateInputContext(
const std::string& client_name,
const CreateInputContextCallback& callback,
const ErrorCallback& error_callback) {
- create_input_context_call_count_ ++;
- if (!create_input_context_handler_.is_null())
- create_input_context_handler_.Run(client_name, callback, error_callback);
}
} // namespace chromeos
diff --git a/chromeos/dbus/ibus/mock_ibus_client.h b/chromeos/dbus/ibus/mock_ibus_client.h
index b14c7c4..756fe22a 100644
--- a/chromeos/dbus/ibus/mock_ibus_client.h
+++ b/chromeos/dbus/ibus/mock_ibus_client.h
@@ -7,7 +7,6 @@
#pragma once
#include <string>
-#include "base/callback.h"
#include "chromeos/dbus/ibus/ibus_client.h"
namespace chromeos {
@@ -17,32 +16,9 @@ class MockIBusClient : public IBusClient {
MockIBusClient();
virtual ~MockIBusClient();
- typedef base::Callback<void(const std::string& client_name,
- const CreateInputContextCallback& callback,
- const ErrorCallback& error_callback)>
- CreateInputContextHandler;
-
virtual void CreateInputContext(const std::string& client_name,
const CreateInputContextCallback& callback,
const ErrorCallback& error_callback) OVERRIDE;
-
- // Function handler for CreateInputContext. The CreateInputContext function
- // invokes |create_input_context_handler_| unless it's not null.
- void set_create_input_context_handler(
- const CreateInputContextHandler& handler) {
- create_input_context_handler_ = handler;
- }
-
- // Represents call count of CreateInputContext.
- int create_input_context_call_count() const {
- return create_input_context_call_count_;
- }
-
- private:
- CreateInputContextHandler create_input_context_handler_;
- int create_input_context_call_count_;
-
- DISALLOW_COPY_AND_ASSIGN(MockIBusClient);
};
} // namespace chromeos
diff --git a/chromeos/dbus/ibus/mock_ibus_input_context_client.cc b/chromeos/dbus/ibus/mock_ibus_input_context_client.cc
index edfa702..53b9ea4 100644
--- a/chromeos/dbus/ibus/mock_ibus_input_context_client.cc
+++ b/chromeos/dbus/ibus/mock_ibus_input_context_client.cc
@@ -6,36 +6,19 @@
namespace chromeos {
-MockIBusInputContextClient::MockIBusInputContextClient()
- : initialize_call_count_(0),
- is_initialized_(false),
- reset_object_proxy_call_caount_(0),
- set_capabilities_call_count_(0),
- focus_in_call_count_(0),
- focus_out_call_count_(0),
- reset_call_count_(0),
- set_cursor_location_call_count_(0),
- process_key_event_call_count_(0) {
-}
+MockIBusInputContextClient::MockIBusInputContextClient() {}
MockIBusInputContextClient::~MockIBusInputContextClient() {}
void MockIBusInputContextClient::Initialize(
dbus::Bus* bus, const dbus::ObjectPath& object_path) {
- initialize_call_count_++;
- is_initialized_ = true;
}
void MockIBusInputContextClient::ResetObjectProxy() {
- reset_object_proxy_call_caount_++;
- is_initialized_ = false;
}
-bool MockIBusInputContextClient::IsObjectProxyReady() const {
- if (is_initialized_)
+bool MockIBusInputContextClient::IsConnected() const {
return true;
- else
- return false;
}
void MockIBusInputContextClient::SetCommitTextHandler(
@@ -74,24 +57,19 @@ void MockIBusInputContextClient::UnsetHidePreeditTextHandler() {
}
void MockIBusInputContextClient::SetCapabilities(uint32 capabilities) {
- set_capabilities_call_count_++;
}
void MockIBusInputContextClient::FocusIn() {
- focus_in_call_count_++;
}
void MockIBusInputContextClient::FocusOut() {
- focus_out_call_count_++;
}
void MockIBusInputContextClient::Reset() {
- reset_call_count_++;
}
void MockIBusInputContextClient::SetCursorLocation(
int32 x, int32 y, int32 w, int32 h) {
- set_cursor_location_call_count_++;
}
void MockIBusInputContextClient::ProcessKeyEvent(
@@ -99,7 +77,6 @@ void MockIBusInputContextClient::ProcessKeyEvent(
uint32 keycode,
uint32 state,
const ProcessKeyEventCallback& callback) {
- process_key_event_call_count_++;
}
} // namespace chromeos
diff --git a/chromeos/dbus/ibus/mock_ibus_input_context_client.h b/chromeos/dbus/ibus/mock_ibus_input_context_client.h
index 38944f1..1e2a58c 100644
--- a/chromeos/dbus/ibus/mock_ibus_input_context_client.h
+++ b/chromeos/dbus/ibus/mock_ibus_input_context_client.h
@@ -5,7 +5,6 @@
#ifndef CHROMEOS_DBUS_IBUS_MOCK_IBUS_INPUT_CONTEXT_CLIENT_H_
#define CHROMEOS_DBUS_IBUS_MOCK_IBUS_INPUT_CONTEXT_CLIENT_H_
-#include "base/basictypes.h"
#include "chromeos/dbus/ibus/ibus_input_context_client.h"
namespace chromeos {
@@ -17,7 +16,7 @@ class MockIBusInputContextClient : public IBusInputContextClient {
virtual void Initialize(dbus::Bus* bus,
const dbus::ObjectPath& object_path) OVERRIDE;
virtual void ResetObjectProxy() OVERRIDE;
- virtual bool IsObjectProxyReady() const OVERRIDE;
+ virtual bool IsConnected() const OVERRIDE;
virtual void SetCommitTextHandler(
const CommitTextHandler& commit_text_handler) OVERRIDE;
virtual void SetForwardKeyEventHandler(
@@ -40,51 +39,6 @@ class MockIBusInputContextClient : public IBusInputContextClient {
virtual void SetCursorLocation(int32 x, int32 y, int32 w, int32 h) OVERRIDE;
virtual void ProcessKeyEvent(uint32 keyval, uint32 keycode, uint32 state,
const ProcessKeyEventCallback& callback) OVERRIDE;
-
- // Call count of Initialize().
- int initialize_call_count() const { return initialize_call_count_; }
-
- // Call count of ResetObjectProxy().
- int reset_object_proxy_call_caount() const {
- return reset_object_proxy_call_caount_;
- }
-
- // Call count of SetCapabilities().
- int set_capabilities_call_count() const {
- return set_capabilities_call_count_;
- }
-
- // Call count of FocusIn().
- int focus_in_call_count() const { return focus_in_call_count_; }
-
- // Call count of FocusOut().
- int focus_out_call_count() const { return focus_out_call_count_; }
-
- // Call count of Reset().
- int reset_call_count() const { return reset_call_count_; }
-
- // Call count of SetCursorLocation().
- int set_cursor_location_call_count() const {
- return set_cursor_location_call_count_;
- }
-
- // Call count of ProcessKeyEvent().
- int process_key_event_call_count() const {
- return process_key_event_call_count_;
- }
-
- private:
- int initialize_call_count_;
- bool is_initialized_;
- int reset_object_proxy_call_caount_;
- int set_capabilities_call_count_;
- int focus_in_call_count_;
- int focus_out_call_count_;
- int reset_call_count_;
- int set_cursor_location_call_count_;
- int process_key_event_call_count_;
-
- DISALLOW_COPY_AND_ASSIGN(MockIBusInputContextClient);
};
} // namespace chromeos
diff --git a/chromeos/dbus/mock_dbus_thread_manager_without_gmock.cc b/chromeos/dbus/mock_dbus_thread_manager_without_gmock.cc
index ab6dad2..4d5c327 100644
--- a/chromeos/dbus/mock_dbus_thread_manager_without_gmock.cc
+++ b/chromeos/dbus/mock_dbus_thread_manager_without_gmock.cc
@@ -11,16 +11,13 @@ namespace chromeos {
MockDBusThreadManagerWithoutGMock::MockDBusThreadManagerWithoutGMock()
: mock_ibus_client_(new MockIBusClient),
- mock_ibus_input_context_client_(new MockIBusInputContextClient),
- ibus_bus_(NULL) {
+ mock_ibus_input_context_client_(new MockIBusInputContextClient) {
}
MockDBusThreadManagerWithoutGMock::~MockDBusThreadManagerWithoutGMock() {}
void MockDBusThreadManagerWithoutGMock::InitIBusBus(
const std::string& ibus_address) {
- // Non-null bus address is used to ensure the connection to ibus-daemon.
- ibus_bus_ = reinterpret_cast<dbus::Bus*>(0xdeadbeef);
}
dbus::Bus* MockDBusThreadManagerWithoutGMock::GetSystemBus() {
@@ -28,7 +25,7 @@ dbus::Bus* MockDBusThreadManagerWithoutGMock::GetSystemBus() {
}
dbus::Bus* MockDBusThreadManagerWithoutGMock::GetIBusBus() {
- return ibus_bus_;
+ return NULL;
}
BluetoothAdapterClient*
diff --git a/chromeos/dbus/mock_dbus_thread_manager_without_gmock.h b/chromeos/dbus/mock_dbus_thread_manager_without_gmock.h
index 36e6893..9bde865 100644
--- a/chromeos/dbus/mock_dbus_thread_manager_without_gmock.h
+++ b/chromeos/dbus/mock_dbus_thread_manager_without_gmock.h
@@ -64,20 +64,14 @@ class MockDBusThreadManagerWithoutGMock : public DBusThreadManager {
MockIBusClient* mock_ibus_client() {
return mock_ibus_client_.get();
}
-
MockIBusInputContextClient* mock_ibus_input_context_client() {
return mock_ibus_input_context_client_.get();
}
- void set_ibus_bus(dbus::Bus* ibus_bus) {
- ibus_bus_ = ibus_bus;
- }
-
private:
scoped_ptr<MockIBusClient> mock_ibus_client_;
scoped_ptr<MockIBusInputContextClient> mock_ibus_input_context_client_;
- dbus::Bus* ibus_bus_;
DISALLOW_COPY_AND_ASSIGN(MockDBusThreadManagerWithoutGMock);
};
diff --git a/ui/base/ime/ibus_client_impl.cc b/ui/base/ime/ibus_client_impl.cc
index cccc8c5..19f7595a 100644
--- a/ui/base/ime/ibus_client_impl.cc
+++ b/ui/base/ime/ibus_client_impl.cc
@@ -29,7 +29,7 @@ const uint32 kIBusCapabilityFocus = 8U;
chromeos::IBusInputContextClient* GetInputContextClient() {
chromeos::IBusInputContextClient* client =
chromeos::DBusThreadManager::Get()->GetIBusInputContextClient();
- DCHECK(client->IsObjectProxyReady());
+ DCHECK(client->IsConnected());
return client;
}
@@ -66,7 +66,7 @@ bool IBusClientImpl::IsConnected() {
bool IBusClientImpl::IsContextReady() {
return IsConnected() &&
chromeos::DBusThreadManager::Get()->GetIBusInputContextClient()
- ->IsObjectProxyReady();
+ ->IsConnected();
}
void IBusClientImpl::CreateContext(PendingCreateICRequest* request) {
diff --git a/ui/base/ime/input_method_ibus.cc b/ui/base/ime/input_method_ibus.cc
index 8630420..8d9ce4c 100644
--- a/ui/base/ime/input_method_ibus.cc
+++ b/ui/base/ime/input_method_ibus.cc
@@ -425,10 +425,7 @@ void InputMethodIBus::DestroyContext() {
// |pending_create_ic_request_| will be deleted in CreateInputContextDone().
pending_create_ic_request_->Abandon();
pending_create_ic_request_ = NULL;
- } else if (chromeos::DBusThreadManager::Get()->GetIBusInputContextClient()
- ->IsObjectProxyReady()) {
- // We can't use IsContextReady here because we want to destroy object proxy
- // regardless of connection. The IsContextReady contains connection check.
+ } else if (ibus_client_->IsContextReady()) {
ResetInputContext();
DCHECK(!ibus_client_->IsContextReady());
}
diff --git a/ui/base/ime/input_method_ibus_unittest.cc b/ui/base/ime/input_method_ibus_unittest.cc
index 4646875..fbdecc3 100644
--- a/ui/base/ime/input_method_ibus_unittest.cc
+++ b/ui/base/ime/input_method_ibus_unittest.cc
@@ -8,12 +8,11 @@
#include "base/memory/scoped_ptr.h"
#include "base/utf_string_conversions.h"
#include "chromeos/dbus/dbus_thread_manager.h"
-#include "chromeos/dbus/ibus/mock_ibus_client.h"
-#include "chromeos/dbus/ibus/mock_ibus_input_context_client.h"
-#include "chromeos/dbus/mock_dbus_thread_manager_without_gmock.h"
+#include "chromeos/dbus/ibus/ibus_input_context_client.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/base/ime/input_method_delegate.h"
#include "ui/base/ime/input_method_ibus.h"
+#include "ui/base/ime/mock_ibus_client.h"
#include "ui/base/ime/text_input_client.h"
#include "ui/gfx/rect.h"
@@ -34,63 +33,16 @@ uint32 GetOffsetInUTF16(const std::string& utf8_string, uint32 utf8_offset) {
class TestableInputMethodIBus : public InputMethodIBus {
public:
- TestableInputMethodIBus(internal::InputMethodDelegate* delegate)
+ TestableInputMethodIBus(internal::InputMethodDelegate* delegate,
+ scoped_ptr<internal::IBusClient> new_client)
: InputMethodIBus(delegate) {
+ set_ibus_client(new_client.Pass());
}
// Change access rights.
using InputMethodIBus::ExtractCompositionText;
};
-class CreateInputContextSuccessHandler {
- public:
- CreateInputContextSuccessHandler(const dbus::ObjectPath& object_path)
- : object_path_(object_path) {
- }
-
- void Run(const std::string& client_name,
- const chromeos::IBusClient::CreateInputContextCallback& callback,
- const chromeos::IBusClient::ErrorCallback& error_callback) {
- EXPECT_EQ("chrome", client_name);
- callback.Run(object_path_);
- }
-
- private:
- dbus::ObjectPath object_path_;
-};
-
-class CreateInputContextFailHandler {
- public:
- void Run(const std::string& client_name,
- const chromeos::IBusClient::CreateInputContextCallback& callback,
- const chromeos::IBusClient::ErrorCallback& error_callback) {
- error_callback.Run();
- }
-};
-
-class CreateInputContextNoResponseHandler {
- public:
- void Run(const std::string& client_name,
- const chromeos::IBusClient::CreateInputContextCallback& callback,
- const chromeos::IBusClient::ErrorCallback& error_callback) {
- }
-};
-
-class CreateInputContextDelayFailHandler {
- public:
- ~CreateInputContextDelayFailHandler() {
- error_callback_.Run();
- }
-
- void Run(const std::string& client_name,
- const chromeos::IBusClient::CreateInputContextCallback& callback,
- const chromeos::IBusClient::ErrorCallback& error_callback) {
- error_callback_ = error_callback;
- }
-
- chromeos::IBusClient::ErrorCallback error_callback_;
-};
-
class InputMethodIBusTest : public internal::InputMethodDelegate,
public testing::Test,
public TextInputClient {
@@ -108,16 +60,11 @@ class InputMethodIBusTest : public internal::InputMethodDelegate,
// function in TearDown function.
// Current MockIBusInputContext is strongly depend on gmock, but gmock is
// banned in ui/*. So just use stab implementation for testing.
- mock_dbus_thread_manager_ =
- new chromeos::MockDBusThreadManagerWithoutGMock();
- chromeos::DBusThreadManager::InitializeForTesting(
- mock_dbus_thread_manager_);
-
- mock_ibus_client_ = mock_dbus_thread_manager_->mock_ibus_client();
- mock_ibus_input_context_client_ =
- mock_dbus_thread_manager_->mock_ibus_input_context_client();
-
- ime_.reset(new TestableInputMethodIBus(this));
+ // TODO(nona): Introduce gmock-free MockIBusInputContext.
+ chromeos::DBusThreadManager::Initialize();
+ chromeos::DBusThreadManager::Get()->InitIBusBus("dummy address");
+ scoped_ptr<internal::IBusClient> client(new internal::MockIBusClient);
+ ime_.reset(new TestableInputMethodIBus(this, client.Pass()));
ime_->SetFocusedTextInputClient(this);
}
@@ -190,6 +137,10 @@ class InputMethodIBusTest : public internal::InputMethodDelegate,
virtual bool ChangeTextDirectionAndLayoutAlignment(
base::i18n::TextDirection direction) OVERRIDE { return false; }
+ internal::MockIBusClient* GetClient() {
+ return static_cast<internal::MockIBusClient*>(ime_->ibus_client());
+ }
+
bool HasNativeEvent() const {
base::NativeEvent empty;
std::memset(&empty, 0, sizeof(empty));
@@ -217,14 +168,6 @@ class InputMethodIBusTest : public internal::InputMethodDelegate,
caret_bounds_ = gfx::Rect();
}
- void SetCreateContextSuccessHandler() {
- CreateInputContextSuccessHandler create_input_context_handler(
- dbus::ObjectPath("InputContext_1"));
- mock_ibus_client_->set_create_input_context_handler(base::Bind(
- &CreateInputContextSuccessHandler::Run,
- base::Unretained(&create_input_context_handler)));
- }
-
scoped_ptr<TestableInputMethodIBus> ime_;
// Variables for remembering the parameters that are passed to
@@ -247,11 +190,6 @@ class InputMethodIBusTest : public internal::InputMethodDelegate,
TextInputType input_type_;
bool can_compose_inline_;
gfx::Rect caret_bounds_;
-
- // Variables for mock dbus connections.
- chromeos::MockDBusThreadManagerWithoutGMock* mock_dbus_thread_manager_;
- chromeos::MockIBusClient* mock_ibus_client_;
- chromeos::MockIBusInputContextClient* mock_ibus_input_context_client_;
};
// Tests public APIs in ui::InputMethod first.
@@ -348,65 +286,57 @@ TEST_F(InputMethodIBusTest, GetInputTextType_WithoutFocusedWindow2) {
// Start ibus-daemon first, then create ui::InputMethodIBus. Check if a new
// input context is created.
TEST_F(InputMethodIBusTest, InitiallyConnected) {
- SetCreateContextSuccessHandler();
- chromeos::DBusThreadManager::Get()->InitIBusBus("dummy address");
+ GetClient()->is_connected_ = true;
ime_->Init(true);
// An input context should be created immediately since is_connected_ is true.
- EXPECT_EQ(1, mock_ibus_client_->create_input_context_call_count());
- EXPECT_EQ(1, mock_ibus_input_context_client_->set_capabilities_call_count());
+ EXPECT_EQ(1U, GetClient()->create_context_call_count_);
+ EXPECT_EQ(1U, GetClient()->set_capabilities_call_count_);
// However, since the current text input type is 'NONE' (the default), FocusIn
// shouldn't be called.
- EXPECT_EQ(0, mock_ibus_input_context_client_->focus_in_call_count());
+ EXPECT_EQ(0U, GetClient()->focus_in_call_count_);
}
// Create ui::InputMethodIBus, then start ibus-daemon.
TEST_F(InputMethodIBusTest, InitiallyDisconnected) {
- SetCreateContextSuccessHandler();
ime_->Init(true);
// A context shouldn't be created since the daemon is not running.
- EXPECT_EQ(0, mock_ibus_client_->create_input_context_call_count());
+ EXPECT_EQ(0U, GetClient()->create_context_call_count_);
// Start the daemon.
- chromeos::DBusThreadManager::Get()->InitIBusBus("dummy address");
+ GetClient()->is_connected_ = true;
ime_->OnConnected();
// A context should be created upon the signal delivery.
- EXPECT_EQ(1, mock_ibus_client_->create_input_context_call_count());
- EXPECT_EQ(1, mock_ibus_input_context_client_->set_capabilities_call_count());
- EXPECT_EQ(0, mock_ibus_input_context_client_->focus_in_call_count());
+ EXPECT_EQ(1U, GetClient()->create_context_call_count_);
+ EXPECT_EQ(1U, GetClient()->set_capabilities_call_count_);
+ EXPECT_EQ(0U, GetClient()->focus_in_call_count_);
}
// Confirm that ui::InputMethodIBus does not crash on "disconnected" signal
// delivery.
TEST_F(InputMethodIBusTest, Disconnect) {
- chromeos::DBusThreadManager::Get()->InitIBusBus("dummy address");
+ GetClient()->is_connected_ = true;
ime_->Init(true);
- EXPECT_EQ(1, mock_ibus_client_->create_input_context_call_count());
- // Currently we can't shutdown IBusBus connection except in
- // DBusThreadManager's shutting down. So set ibus_bus_ as NULL to emulate
- // dynamical shutting down.
- mock_dbus_thread_manager_->set_ibus_bus(NULL);
+ EXPECT_EQ(1U, GetClient()->create_context_call_count_);
+ GetClient()->is_connected_ = false;
ime_->OnDisconnected();
}
// Confirm that ui::InputMethodIBus re-creates an input context when ibus-daemon
// restarts.
TEST_F(InputMethodIBusTest, DisconnectThenReconnect) {
- SetCreateContextSuccessHandler();
- chromeos::DBusThreadManager::Get()->InitIBusBus("dummy address");
+ GetClient()->is_connected_ = true;
ime_->Init(true);
- EXPECT_EQ(1, mock_ibus_client_->create_input_context_call_count());
- EXPECT_EQ(1, mock_ibus_input_context_client_->set_capabilities_call_count());
- EXPECT_EQ(0,
- mock_ibus_input_context_client_->reset_object_proxy_call_caount());
- mock_dbus_thread_manager_->set_ibus_bus(NULL);
+ EXPECT_EQ(1U, GetClient()->create_context_call_count_);
+ EXPECT_EQ(1U, GetClient()->set_capabilities_call_count_);
+ EXPECT_EQ(0U, GetClient()->destroy_proxy_call_count_);
+ GetClient()->is_connected_ = false;
ime_->OnDisconnected();
- chromeos::DBusThreadManager::Get()->InitIBusBus("dummy address");
+ GetClient()->is_connected_ = true;
ime_->OnConnected();
// Check if the old context is deleted.
- EXPECT_EQ(1,
- mock_ibus_input_context_client_->reset_object_proxy_call_caount());
+ EXPECT_EQ(1U, GetClient()->destroy_proxy_call_count_);
// Check if a new context is created.
- EXPECT_EQ(2, mock_ibus_client_->create_input_context_call_count());
- EXPECT_EQ(2, mock_ibus_input_context_client_->set_capabilities_call_count());
+ EXPECT_EQ(2U, GetClient()->create_context_call_count_);
+ EXPECT_EQ(2U, GetClient()->set_capabilities_call_count_);
}
// Confirm that ui::InputMethodIBus does not crash even if NULL context is
@@ -415,71 +345,60 @@ TEST_F(InputMethodIBusTest, DisconnectThenReconnect) {
// it fails (unless ibus sends the "connected" signal to Chrome again). It might
// be better to add some retry logic. Will revisit later.
TEST_F(InputMethodIBusTest, CreateContextFail) {
- CreateInputContextFailHandler create_input_context_handler;
- mock_ibus_client_->set_create_input_context_handler(base::Bind(
- &CreateInputContextFailHandler::Run,
- base::Unretained(&create_input_context_handler)));
-
- chromeos::DBusThreadManager::Get()->InitIBusBus("dummy address");
+ GetClient()->is_connected_ = true;
+ GetClient()->create_context_result_ =
+ internal::MockIBusClient::kCreateContextFail;
ime_->Init(true);
- EXPECT_EQ(1, mock_ibus_client_->create_input_context_call_count());
- // |set_capabilities_call_count()| should be zero since a context is not
+ EXPECT_EQ(1U, GetClient()->create_context_call_count_);
+ // |set_capabilities_call_count_| should be zero since a context is not
// created yet.
- EXPECT_EQ(0, mock_ibus_input_context_client_->set_capabilities_call_count());
+ EXPECT_EQ(0U, GetClient()->set_capabilities_call_count_);
}
// Confirm that ui::InputMethodIBus does not crash even if ibus-daemon does not
// respond.
TEST_F(InputMethodIBusTest, CreateContextNoResp) {
- CreateInputContextNoResponseHandler create_input_context_handler;
- mock_ibus_client_->set_create_input_context_handler(base::Bind(
- &CreateInputContextNoResponseHandler::Run,
- base::Unretained(&create_input_context_handler)));
-
- chromeos::DBusThreadManager::Get()->InitIBusBus("dummy address");
+ GetClient()->is_connected_ = true;
+ GetClient()->create_context_result_ =
+ internal::MockIBusClient::kCreateContextNoResponse;
ime_->Init(true);
- EXPECT_EQ(1, mock_ibus_client_->create_input_context_call_count());
- EXPECT_EQ(0, mock_ibus_input_context_client_->set_capabilities_call_count());
+ EXPECT_EQ(1U, GetClient()->create_context_call_count_);
+ EXPECT_EQ(0U, GetClient()->set_capabilities_call_count_);
}
// Confirm that ui::InputMethodIBus does not crash even if ibus-daemon responds
// after ui::InputMethodIBus is deleted. See comments in ~MockIBusClient() as
// well.
TEST_F(InputMethodIBusTest, CreateContextDelayed) {
- CreateInputContextDelayFailHandler create_input_context_handler;
- mock_ibus_client_->set_create_input_context_handler(base::Bind(
- &CreateInputContextDelayFailHandler::Run,
- base::Unretained(&create_input_context_handler)));
-
- chromeos::DBusThreadManager::Get()->InitIBusBus("dummy address");
+ GetClient()->is_connected_ = true;
+ GetClient()->create_context_result_ =
+ internal::MockIBusClient::kCreateContextDelayed;
ime_->Init(true);
- EXPECT_EQ(1, mock_ibus_client_->create_input_context_call_count());
- EXPECT_EQ(0, mock_ibus_input_context_client_->set_capabilities_call_count());
+ EXPECT_EQ(1U, GetClient()->create_context_call_count_);
+ EXPECT_EQ(0U, GetClient()->set_capabilities_call_count_);
// After this line, the destructor for |ime_| will run first. Then, the
- // destructor for the handler will run. In the latter function, a new input
- // context will be created and passed to InitOrAbandonInputContext().
+ // destructor for the client will run. In the latter function, a new input
+ // context will be created and passed to StoreOrAbandonInputContext().
}
// Confirm that IBusClient::FocusIn is called on "connected" if input_type_ is
// TEXT.
TEST_F(InputMethodIBusTest, FocusIn_Text) {
- SetCreateContextSuccessHandler();
ime_->Init(true);
// A context shouldn't be created since the daemon is not running.
- EXPECT_EQ(0, mock_ibus_client_->create_input_context_call_count());
+ EXPECT_EQ(0U, GetClient()->create_context_call_count_);
EXPECT_EQ(0U, on_input_method_changed_call_count_);
// Click a text input form.
input_type_ = TEXT_INPUT_TYPE_TEXT;
ime_->OnTextInputTypeChanged(this);
// Start the daemon.
- chromeos::DBusThreadManager::Get()->InitIBusBus("dummy address");
+ GetClient()->is_connected_ = true;
ime_->OnConnected();
// A context should be created upon the signal delivery.
- EXPECT_EQ(1, mock_ibus_client_->create_input_context_call_count());
+ EXPECT_EQ(1U, GetClient()->create_context_call_count_);
// Since a form has focus, IBusClient::FocusIn() should be called.
- EXPECT_EQ(1, mock_ibus_input_context_client_->focus_in_call_count());
- EXPECT_EQ(1,
- mock_ibus_input_context_client_->set_cursor_location_call_count());
+ EXPECT_EQ(1U, GetClient()->focus_in_call_count_);
+ EXPECT_EQ(1U, GetClient()->set_cursor_location_call_count_);
// ui::TextInputClient::OnInputMethodChanged() should be called when
// ui::InputMethodIBus connects/disconnects to/from ibus-daemon and the
// current text input type is not NONE.
@@ -489,87 +408,78 @@ TEST_F(InputMethodIBusTest, FocusIn_Text) {
// Confirm that IBusClient::FocusIn is NOT called on "connected" if input_type_
// is PASSWORD.
TEST_F(InputMethodIBusTest, FocusIn_Password) {
- SetCreateContextSuccessHandler();
ime_->Init(true);
- EXPECT_EQ(0, mock_ibus_client_->create_input_context_call_count());
+ EXPECT_EQ(0U, GetClient()->create_context_call_count_);
EXPECT_EQ(0U, on_input_method_changed_call_count_);
input_type_ = TEXT_INPUT_TYPE_PASSWORD;
ime_->OnTextInputTypeChanged(this);
- chromeos::DBusThreadManager::Get()->InitIBusBus("dummy address");
+ GetClient()->is_connected_ = true;
ime_->OnConnected();
- EXPECT_EQ(1, mock_ibus_client_->create_input_context_call_count());
+ EXPECT_EQ(1U, GetClient()->create_context_call_count_);
// Since a form has focus, IBusClient::FocusIn() should NOT be called.
- EXPECT_EQ(0, mock_ibus_input_context_client_->focus_in_call_count());
+ EXPECT_EQ(0U, GetClient()->focus_in_call_count_);
EXPECT_EQ(1U, on_input_method_changed_call_count_);
}
// Confirm that IBusClient::FocusOut is called as expected.
TEST_F(InputMethodIBusTest, FocusOut_None) {
- SetCreateContextSuccessHandler();
input_type_ = TEXT_INPUT_TYPE_TEXT;
- chromeos::DBusThreadManager::Get()->InitIBusBus("dummy address");
+ GetClient()->is_connected_ = true;
ime_->Init(true);
- EXPECT_EQ(1, mock_ibus_client_->create_input_context_call_count());
- EXPECT_EQ(1, mock_ibus_input_context_client_->focus_in_call_count());
- EXPECT_EQ(0, mock_ibus_input_context_client_->focus_out_call_count());
+ EXPECT_EQ(1U, GetClient()->create_context_call_count_);
+ EXPECT_EQ(1U, GetClient()->focus_in_call_count_);
+ EXPECT_EQ(0U, GetClient()->focus_out_call_count_);
input_type_ = TEXT_INPUT_TYPE_NONE;
ime_->OnTextInputTypeChanged(this);
- EXPECT_EQ(1, mock_ibus_input_context_client_->focus_in_call_count());
- EXPECT_EQ(1, mock_ibus_input_context_client_->focus_out_call_count());
+ EXPECT_EQ(1U, GetClient()->focus_in_call_count_);
+ EXPECT_EQ(1U, GetClient()->focus_out_call_count_);
}
// Confirm that IBusClient::FocusOut is called as expected.
TEST_F(InputMethodIBusTest, FocusOut_Password) {
- SetCreateContextSuccessHandler();
input_type_ = TEXT_INPUT_TYPE_TEXT;
- chromeos::DBusThreadManager::Get()->InitIBusBus("dummy address");
+ GetClient()->is_connected_ = true;
ime_->Init(true);
- EXPECT_EQ(1, mock_ibus_client_->create_input_context_call_count());
- EXPECT_EQ(1, mock_ibus_input_context_client_->focus_in_call_count());
- EXPECT_EQ(0, mock_ibus_input_context_client_->focus_out_call_count());
+ EXPECT_EQ(1U, GetClient()->create_context_call_count_);
+ EXPECT_EQ(1U, GetClient()->focus_in_call_count_);
+ EXPECT_EQ(0U, GetClient()->focus_out_call_count_);
input_type_ = TEXT_INPUT_TYPE_PASSWORD;
ime_->OnTextInputTypeChanged(this);
- EXPECT_EQ(1, mock_ibus_input_context_client_->focus_in_call_count());
- EXPECT_EQ(1, mock_ibus_input_context_client_->focus_out_call_count());
+ EXPECT_EQ(1U, GetClient()->focus_in_call_count_);
+ EXPECT_EQ(1U, GetClient()->focus_out_call_count_);
}
// Confirm that IBusClient::FocusOut is NOT called.
TEST_F(InputMethodIBusTest, FocusOut_Url) {
- SetCreateContextSuccessHandler();
input_type_ = TEXT_INPUT_TYPE_TEXT;
- chromeos::DBusThreadManager::Get()->InitIBusBus("dummy address");
+ GetClient()->is_connected_ = true;
ime_->Init(true);
- EXPECT_EQ(1, mock_ibus_client_->create_input_context_call_count());
- EXPECT_EQ(1, mock_ibus_input_context_client_->focus_in_call_count());
- EXPECT_EQ(0, mock_ibus_input_context_client_->focus_out_call_count());
+ EXPECT_EQ(1U, GetClient()->create_context_call_count_);
+ EXPECT_EQ(1U, GetClient()->focus_in_call_count_);
+ EXPECT_EQ(0U, GetClient()->focus_out_call_count_);
input_type_ = TEXT_INPUT_TYPE_URL;
ime_->OnTextInputTypeChanged(this);
- EXPECT_EQ(1, mock_ibus_input_context_client_->focus_in_call_count());
- EXPECT_EQ(0, mock_ibus_input_context_client_->focus_out_call_count());
+ EXPECT_EQ(1U, GetClient()->focus_in_call_count_);
+ EXPECT_EQ(0U, GetClient()->focus_out_call_count_);
}
// Test if the new |caret_bounds_| is correctly sent to ibus-daemon.
TEST_F(InputMethodIBusTest, OnCaretBoundsChanged) {
- SetCreateContextSuccessHandler();
- chromeos::DBusThreadManager::Get()->InitIBusBus("dummy address");
+ GetClient()->is_connected_ = true;
input_type_ = TEXT_INPUT_TYPE_TEXT;
ime_->Init(true);
- EXPECT_EQ(0,
- mock_ibus_input_context_client_->set_cursor_location_call_count());
+ EXPECT_EQ(0U, GetClient()->set_cursor_location_call_count_);
caret_bounds_ = gfx::Rect(1, 2, 3, 4);
ime_->OnCaretBoundsChanged(this);
- EXPECT_EQ(1,
- mock_ibus_input_context_client_->set_cursor_location_call_count());
+ EXPECT_EQ(1U, GetClient()->set_cursor_location_call_count_);
caret_bounds_ = gfx::Rect(0, 2, 3, 4);
ime_->OnCaretBoundsChanged(this);
- EXPECT_EQ(2,
- mock_ibus_input_context_client_->set_cursor_location_call_count());
+ EXPECT_EQ(2U, GetClient()->set_cursor_location_call_count_);
caret_bounds_ = gfx::Rect(0, 2, 3, 4); // unchanged
ime_->OnCaretBoundsChanged(this);
// Current InputMethodIBus implementation performs the IPC regardless of the
// bounds are changed or not.
- EXPECT_EQ(3,
- mock_ibus_input_context_client_->set_cursor_location_call_count());
+ EXPECT_EQ(3U, GetClient()->set_cursor_location_call_count_);
}
TEST_F(InputMethodIBusTest, ExtractCompositionTextTest_NoAttribute) {