summaryrefslogtreecommitdiffstats
path: root/chromeos
diff options
context:
space:
mode:
authornona@chromium.org <nona@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-08-02 20:13:55 +0000
committernona@chromium.org <nona@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-08-02 20:13:55 +0000
commit3b174e0dfd07d720e5a6cfaa46333c28b47fff62 (patch)
tree599f2e8531bcfa426fca60dfece711bfebec5192 /chromeos
parent2ddf6e09c02c32cd4486f0980518510781cc3662 (diff)
downloadchromium_src-3b174e0dfd07d720e5a6cfaa46333c28b47fff62.zip
chromium_src-3b174e0dfd07d720e5a6cfaa46333c28b47fff62.tar.gz
chromium_src-3b174e0dfd07d720e5a6cfaa46333c28b47fff62.tar.bz2
Extends IBusContextClient to handle SetSurroundingText.
BUG=127032 TEST=ran chromeos_unittests Review URL: https://chromiumcodereview.appspot.com/10825154 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@149687 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chromeos')
-rw-r--r--chromeos/dbus/ibus/ibus_constants.h1
-rw-r--r--chromeos/dbus/ibus/ibus_input_context_client.cc17
-rw-r--r--chromeos/dbus/ibus/ibus_input_context_client.h8
-rw-r--r--chromeos/dbus/ibus/ibus_input_context_client_unittest.cc45
-rw-r--r--chromeos/dbus/ibus/mock_ibus_input_context_client.cc7
-rw-r--r--chromeos/dbus/ibus/mock_ibus_input_context_client.h4
6 files changed, 82 insertions, 0 deletions
diff --git a/chromeos/dbus/ibus/ibus_constants.h b/chromeos/dbus/ibus/ibus_constants.h
index 6121dde..8afc64d 100644
--- a/chromeos/dbus/ibus/ibus_constants.h
+++ b/chromeos/dbus/ibus/ibus_constants.h
@@ -31,6 +31,7 @@ const char kResetMethod[] = "Reset";
const char kSetCapabilitiesMethod[] = "SetCapabilities";
const char kSetCursorLocationMethod[] = "SetCursorLocation";
const char kProcessKeyEventMethod[] = "ProcessKeyEvent";
+const char kSetSurroundingText[] = "SetSurroundingText";
} // namespace input_context
namespace engine_factory {
diff --git a/chromeos/dbus/ibus/ibus_input_context_client.cc b/chromeos/dbus/ibus/ibus_input_context_client.cc
index 1641c48..d917c62 100644
--- a/chromeos/dbus/ibus/ibus_input_context_client.cc
+++ b/chromeos/dbus/ibus/ibus_input_context_client.cc
@@ -183,6 +183,20 @@ class IBusInputContextClientImpl : public IBusInputContextClient {
error_callback));
}
+ // IBusInputContextClient override.
+ void SetSurroundingText(const std::string& text,
+ uint32 start_index,
+ uint32 end_index) OVERRIDE {
+ dbus::MethodCall method_call(ibus::input_context::kServiceInterface,
+ ibus::input_context::kSetSurroundingText);
+ dbus::MessageWriter writer(&method_call);
+ ibus::AppendStringAsIBusText(text, &writer);
+ writer.AppendUint32(start_index);
+ writer.AppendUint32(end_index);
+ CallNoResponseMethod(&method_call,
+ ibus::input_context::kSetSurroundingText);
+ }
+
private:
void CallNoResponseMethod(dbus::MethodCall* method_call,
const std::string& method_name) {
@@ -410,6 +424,9 @@ class IBusInputContextClientStubImpl : public IBusInputContextClient {
const ErrorCallback& error_callback) OVERRIDE {
callback.Run(false);
}
+ void SetSurroundingText(const std::string& text,
+ uint32 start_index,
+ uint32 end_index) OVERRIDE {}
private:
DISALLOW_COPY_AND_ASSIGN(IBusInputContextClientStubImpl);
diff --git a/chromeos/dbus/ibus/ibus_input_context_client.h b/chromeos/dbus/ibus/ibus_input_context_client.h
index a6ae66c..ae97ba5 100644
--- a/chromeos/dbus/ibus/ibus_input_context_client.h
+++ b/chromeos/dbus/ibus/ibus_input_context_client.h
@@ -5,6 +5,8 @@
#ifndef CHROMEOS_DBUS_IBUS_IBUS_INPUT_CONTEXT_CLIENT_H_
#define CHROMEOS_DBUS_IBUS_IBUS_INPUT_CONTEXT_CLIENT_H_
+#include <string>
+
#include "base/bind.h"
#include "base/callback.h"
#include "chromeos/chromeos_export.h"
@@ -103,6 +105,12 @@ class CHROMEOS_EXPORT IBusInputContextClient {
const ProcessKeyEventCallback& callback,
const ErrorCallback& error_callback) = 0;
+ // Invokes SetSurroundingText method call. |start_index| is inclusive and
+ // |end_index| is exclusive.
+ virtual void SetSurroundingText(const std::string& text,
+ uint32 start_index,
+ uint32 end_index) = 0;
+
// Factory function, creates a new instance and returns ownership.
// For normal usage, access the singleton via DBusThreadManager::Get().
static CHROMEOS_EXPORT IBusInputContextClient* Create(
diff --git a/chromeos/dbus/ibus/ibus_input_context_client_unittest.cc b/chromeos/dbus/ibus/ibus_input_context_client_unittest.cc
index b1d2db4..f462243 100644
--- a/chromeos/dbus/ibus/ibus_input_context_client_unittest.cc
+++ b/chromeos/dbus/ibus/ibus_input_context_client_unittest.cc
@@ -37,6 +37,9 @@ const uint32 kKeyval = 34;
const uint32 kKeycode = 35;
const uint32 kState = 36;
const bool kIsKeyHandled = false;
+const char kSurroundingText[] = "Surrounding Text";
+const uint32 kCursorPos = 2;
+const uint32 kAnchorPos = 7;
class MockCommitTextHandler {
public:
@@ -268,6 +271,33 @@ class IBusInputContextClientTest : public testing::Test {
error_response_));
}
+ // Handles SetSurroudingText method call.
+ void OnSetSurroundingText(
+ dbus::MethodCall* method_call,
+ int timeout_ms,
+ const dbus::ObjectProxy::ResponseCallback& callback,
+ const dbus::ObjectProxy::ErrorCallback& error_callback) {
+ EXPECT_EQ(ibus::input_context::kServiceInterface,
+ method_call->GetInterface());
+ EXPECT_EQ(ibus::input_context::kSetSurroundingText,
+ method_call->GetMember());
+ dbus::MessageReader reader(method_call);
+ std::string text;
+ uint32 cursor_pos = 0;
+ uint32 anchor_pos = 0;
+
+ EXPECT_TRUE(ibus::PopStringFromIBusText(&reader, &text));
+ EXPECT_TRUE(reader.PopUint32(&cursor_pos));
+ EXPECT_TRUE(reader.PopUint32(&anchor_pos));
+ EXPECT_FALSE(reader.HasMoreData());
+
+ EXPECT_EQ(kSurroundingText, text);
+ EXPECT_EQ(kCursorPos, cursor_pos);
+ EXPECT_EQ(kAnchorPos, anchor_pos);
+
+ message_loop_.PostTask(FROM_HERE, base::Bind(callback, response_));
+ }
+
protected:
// The client to be tested.
scoped_ptr<IBusInputContextClient> client_;
@@ -561,4 +591,19 @@ TEST_F(IBusInputContextClientTest, OnProcessKeyEventFail) {
message_loop_.RunAllPending();
}
+TEST_F(IBusInputContextClientTest, SetSurroundingTextTest) {
+ // Set expectations.
+ EXPECT_CALL(*mock_proxy_, CallMethodWithErrorCallback(_, _, _, _))
+ .WillOnce(Invoke(this,
+ &IBusInputContextClientTest::OnSetSurroundingText));
+ // Create response.
+ scoped_ptr<dbus::Response> response(dbus::Response::CreateEmpty());
+ response_ = response.get();
+
+ // Call SetCursorLocation.
+ client_->SetSurroundingText(kSurroundingText, kCursorPos, kAnchorPos);
+ // Run the message loop.
+ message_loop_.RunAllPending();
+}
+
} // 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 4eca00e..bd1038a 100644
--- a/chromeos/dbus/ibus/mock_ibus_input_context_client.cc
+++ b/chromeos/dbus/ibus/mock_ibus_input_context_client.cc
@@ -2,6 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include <string>
#include "chromeos/dbus/ibus/mock_ibus_input_context_client.h"
namespace chromeos {
@@ -103,4 +104,10 @@ void MockIBusInputContextClient::ProcessKeyEvent(
process_key_event_call_count_++;
}
+void MockIBusInputContextClient::SetSurroundingText(
+ const std::string& text,
+ uint32 cursor_pos,
+ uint32 anchor_pos) {
+}
+
} // 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 0454b9b..25b1182 100644
--- a/chromeos/dbus/ibus/mock_ibus_input_context_client.h
+++ b/chromeos/dbus/ibus/mock_ibus_input_context_client.h
@@ -5,6 +5,7 @@
#ifndef CHROMEOS_DBUS_IBUS_MOCK_IBUS_INPUT_CONTEXT_CLIENT_H_
#define CHROMEOS_DBUS_IBUS_MOCK_IBUS_INPUT_CONTEXT_CLIENT_H_
+#include <string>
#include "base/basictypes.h"
#include "chromeos/dbus/ibus/ibus_input_context_client.h"
@@ -43,6 +44,9 @@ class MockIBusInputContextClient : public IBusInputContextClient {
uint32 state,
const ProcessKeyEventCallback& callback,
const ErrorCallback& error_callback) OVERRIDE;
+ virtual void SetSurroundingText(const std::string& text,
+ uint32 cursor_pos,
+ uint32 anchor_pos) OVERRIDE;
// Call count of Initialize().
int initialize_call_count() const { return initialize_call_count_; }