diff options
author | nona@chromium.org <nona@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-08-02 20:13:55 +0000 |
---|---|---|
committer | nona@chromium.org <nona@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-08-02 20:13:55 +0000 |
commit | 3b174e0dfd07d720e5a6cfaa46333c28b47fff62 (patch) | |
tree | 599f2e8531bcfa426fca60dfece711bfebec5192 /chromeos | |
parent | 2ddf6e09c02c32cd4486f0980518510781cc3662 (diff) | |
download | chromium_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.h | 1 | ||||
-rw-r--r-- | chromeos/dbus/ibus/ibus_input_context_client.cc | 17 | ||||
-rw-r--r-- | chromeos/dbus/ibus/ibus_input_context_client.h | 8 | ||||
-rw-r--r-- | chromeos/dbus/ibus/ibus_input_context_client_unittest.cc | 45 | ||||
-rw-r--r-- | chromeos/dbus/ibus/mock_ibus_input_context_client.cc | 7 | ||||
-rw-r--r-- | chromeos/dbus/ibus/mock_ibus_input_context_client.h | 4 |
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_; } |