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

Side by Side Diff: chromeos/dbus/ibus/ibus_input_context_client_unittest.cc

Issue 12017010: Introduce bypass logic for SetCursorLocation message. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 11 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chromeos/dbus/ibus/ibus_input_context_client.h" 5 #include "chromeos/dbus/ibus/ibus_input_context_client.h"
6 6
7 #include <map> 7 #include <map>
8 #include <string> 8 #include <string>
9 #include "base/message_loop.h" 9 #include "base/message_loop.h"
10 #include "chromeos/dbus/ibus/ibus_constants.h" 10 #include "chromeos/dbus/ibus/ibus_constants.h"
(...skipping 18 matching lines...) Expand all
29 29
30 // Following variables are used in callback expectations. 30 // Following variables are used in callback expectations.
31 const uint32 kCapabilities = 12345; 31 const uint32 kCapabilities = 12345;
32 const int32 kCursorX = 30; 32 const int32 kCursorX = 30;
33 const int32 kCursorY = 31; 33 const int32 kCursorY = 31;
34 const int32 kCursorWidth = 32; 34 const int32 kCursorWidth = 32;
35 const int32 kCursorHeight = 33; 35 const int32 kCursorHeight = 33;
36 const uint32 kKeyval = 34; 36 const uint32 kKeyval = 34;
37 const uint32 kKeycode = 35; 37 const uint32 kKeycode = 35;
38 const uint32 kState = 36; 38 const uint32 kState = 36;
39 const int32 kCompositionX = 37;
40 const int32 kCompositionY = 38;
41 const int32 kCompositionWidth = 39;
42 const int32 kCompositionHeight = 40;
39 const bool kIsKeyHandled = false; 43 const bool kIsKeyHandled = false;
40 const char kSurroundingText[] = "Surrounding Text"; 44 const char kSurroundingText[] = "Surrounding Text";
41 const uint32 kCursorPos = 2; 45 const uint32 kCursorPos = 2;
42 const uint32 kAnchorPos = 7; 46 const uint32 kAnchorPos = 7;
43 const char kPropertyKey[] = "Property Key"; 47 const char kPropertyKey[] = "Property Key";
44 const ibus::IBusPropertyState kPropertyState = 48 const ibus::IBusPropertyState kPropertyState =
45 ibus::IBUS_PROPERTY_STATE_CHECKED; 49 ibus::IBUS_PROPERTY_STATE_CHECKED;
46 50
47 class MockInputContextHandler : public IBusInputContextHandlerInterface { 51 class MockInputContextHandler : public IBusInputContextHandlerInterface {
48 public: 52 public:
(...skipping 18 matching lines...) Expand all
67 71
68 MATCHER_P(IBusTextEq, expected_text, "The expected IBusText does not match") { 72 MATCHER_P(IBusTextEq, expected_text, "The expected IBusText does not match") {
69 // TODO(nona): Check attributes. 73 // TODO(nona): Check attributes.
70 return (arg.text() == expected_text->text()); 74 return (arg.text() == expected_text->text());
71 } 75 }
72 76
73 } // namespace 77 } // namespace
74 78
75 class IBusInputContextClientTest : public testing::Test { 79 class IBusInputContextClientTest : public testing::Test {
76 public: 80 public:
77 IBusInputContextClientTest() : response_(NULL) {} 81 IBusInputContextClientTest()
82 : response_(NULL),
83 on_set_cursor_location_call_count_(0) {}
78 84
79 virtual void SetUp() OVERRIDE { 85 virtual void SetUp() OVERRIDE {
80 // Create a mock bus. 86 // Create a mock bus.
81 dbus::Bus::Options options; 87 dbus::Bus::Options options;
82 options.bus_type = dbus::Bus::SYSTEM; 88 options.bus_type = dbus::Bus::SYSTEM;
83 mock_bus_ = new dbus::MockBus(options); 89 mock_bus_ = new dbus::MockBus(options);
84 90
85 // Create a mock proxy. 91 // Create a mock proxy.
86 mock_proxy_ = new dbus::MockObjectProxy(mock_bus_.get(), 92 mock_proxy_ = new dbus::MockObjectProxy(mock_bus_.get(),
87 ibus::kServiceName, 93 ibus::kServiceName,
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
173 EXPECT_EQ(ibus::input_context::kServiceInterface, 179 EXPECT_EQ(ibus::input_context::kServiceInterface,
174 method_call->GetInterface()); 180 method_call->GetInterface());
175 EXPECT_EQ(ibus::input_context::kResetMethod, method_call->GetMember()); 181 EXPECT_EQ(ibus::input_context::kResetMethod, method_call->GetMember());
176 dbus::MessageReader reader(method_call); 182 dbus::MessageReader reader(method_call);
177 EXPECT_FALSE(reader.HasMoreData()); 183 EXPECT_FALSE(reader.HasMoreData());
178 184
179 message_loop_.PostTask(FROM_HERE, base::Bind(callback, response_)); 185 message_loop_.PostTask(FROM_HERE, base::Bind(callback, response_));
180 } 186 }
181 187
182 // Handles SetCursorLocation method call. 188 // Handles SetCursorLocation method call.
183 void OnSetCursorLocation( 189 void OnSetCursorLocation(const ibus::Rect& cursor_location,
184 dbus::MethodCall* method_call, 190 const ibus::Rect& composition_head) {
185 int timeout_ms, 191 ++on_set_cursor_location_call_count_;
186 const dbus::ObjectProxy::ResponseCallback& callback,
187 const dbus::ObjectProxy::ErrorCallback& error_callback) {
188 EXPECT_EQ(ibus::input_context::kServiceInterface,
189 method_call->GetInterface());
190 EXPECT_EQ(ibus::input_context::kSetCursorLocationMethod,
191 method_call->GetMember());
192 dbus::MessageReader reader(method_call);
193 int32 x, y, width, height;
194 EXPECT_TRUE(reader.PopInt32(&x));
195 EXPECT_TRUE(reader.PopInt32(&y));
196 EXPECT_TRUE(reader.PopInt32(&width));
197 EXPECT_TRUE(reader.PopInt32(&height));
198 EXPECT_FALSE(reader.HasMoreData());
199
200 message_loop_.PostTask(FROM_HERE, base::Bind(callback, response_));
201 } 192 }
202 193
203 // Handles SetCapabilities method call. 194 // Handles SetCapabilities method call.
204 void OnSetCapabilities( 195 void OnSetCapabilities(
205 dbus::MethodCall* method_call, 196 dbus::MethodCall* method_call,
206 int timeout_ms, 197 int timeout_ms,
207 const dbus::ObjectProxy::ResponseCallback& callback, 198 const dbus::ObjectProxy::ResponseCallback& callback,
208 const dbus::ObjectProxy::ErrorCallback& error_callback) { 199 const dbus::ObjectProxy::ErrorCallback& error_callback) {
209 EXPECT_EQ(ibus::input_context::kServiceInterface, 200 EXPECT_EQ(ibus::input_context::kServiceInterface,
210 method_call->GetInterface()); 201 method_call->GetInterface());
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
317 scoped_refptr<dbus::MockBus> mock_bus_; 308 scoped_refptr<dbus::MockBus> mock_bus_;
318 // The mock object proxy. 309 // The mock object proxy.
319 scoped_refptr<dbus::MockObjectProxy> mock_proxy_; 310 scoped_refptr<dbus::MockObjectProxy> mock_proxy_;
320 // Response returned by mock methods. 311 // Response returned by mock methods.
321 dbus::Response* response_; 312 dbus::Response* response_;
322 dbus::ErrorResponse* error_response_; 313 dbus::ErrorResponse* error_response_;
323 // A message loop to emulate asynchronous behavior. 314 // A message loop to emulate asynchronous behavior.
324 MessageLoop message_loop_; 315 MessageLoop message_loop_;
325 // The map from signal to signal handler. 316 // The map from signal to signal handler.
326 std::map<std::string, dbus::ObjectProxy::SignalCallback> signal_callback_map_; 317 std::map<std::string, dbus::ObjectProxy::SignalCallback> signal_callback_map_;
318 // Call count of OnSetCursorLocation.
319 int on_set_cursor_location_call_count_;
327 320
328 private: 321 private:
329 // Used to implement the mock proxy. 322 // Used to implement the mock proxy.
330 void OnConnectToSignal( 323 void OnConnectToSignal(
331 const std::string& interface_name, 324 const std::string& interface_name,
332 const std::string& signal_name, 325 const std::string& signal_name,
333 const dbus::ObjectProxy::SignalCallback& signal_callback, 326 const dbus::ObjectProxy::SignalCallback& signal_callback,
334 const dbus::ObjectProxy::OnConnectedCallback& on_connected_callback) { 327 const dbus::ObjectProxy::OnConnectedCallback& on_connected_callback) {
335 signal_callback_map_[signal_name] = signal_callback; 328 signal_callback_map_[signal_name] = signal_callback;
336 const bool success = true; 329 const bool success = true;
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
519 scoped_ptr<dbus::Response> response(dbus::Response::CreateEmpty()); 512 scoped_ptr<dbus::Response> response(dbus::Response::CreateEmpty());
520 response_ = response.get(); 513 response_ = response.get();
521 514
522 // Call SetCapabilities. 515 // Call SetCapabilities.
523 client_->SetCapabilities(kCapabilities); 516 client_->SetCapabilities(kCapabilities);
524 // Run the message loop. 517 // Run the message loop.
525 message_loop_.RunUntilIdle(); 518 message_loop_.RunUntilIdle();
526 } 519 }
527 520
528 TEST_F(IBusInputContextClientTest, SetCursorLocationTest) { 521 TEST_F(IBusInputContextClientTest, SetCursorLocationTest) {
529 // Set expectations. 522 on_set_cursor_location_call_count_ = 0;
530 EXPECT_CALL(*mock_proxy_, CallMethodWithErrorCallback(_, _, _, _)) 523 client_->SetSetCursorLocationHandler(
531 .WillOnce(Invoke(this, 524 base::Bind(&IBusInputContextClientTest::OnSetCursorLocation,
532 &IBusInputContextClientTest::OnSetCursorLocation)); 525 base::Unretained(this)));
533 // Create response. 526 const ibus::Rect cursor_location(kCursorX,
534 scoped_ptr<dbus::Response> response(dbus::Response::CreateEmpty()); 527 kCursorY,
535 response_ = response.get(); 528 kCursorWidth,
529 kCursorHeight);
530 const ibus::Rect composition_location(kCompositionX,
531 kCompositionY,
532 kCompositionWidth,
533 kCompositionHeight);
534 // Call SetCursorLocation.
535 client_->SetCursorLocation(cursor_location, composition_location);
536 536
537 // Call SetCursorLocation. 537 EXPECT_EQ(1, on_set_cursor_location_call_count_);
538 client_->SetCursorLocation(kCursorX, kCursorY, kCursorWidth, kCursorHeight); 538 client_->UnsetSetCursorLocationHandler();
539 // Run the message loop.
540 message_loop_.RunUntilIdle();
541 } 539 }
542 540
543 TEST_F(IBusInputContextClientTest, OnProcessKeyEvent) { 541 TEST_F(IBusInputContextClientTest, OnProcessKeyEvent) {
544 // Set expectations. 542 // Set expectations.
545 EXPECT_CALL(*mock_proxy_, CallMethodWithErrorCallback(_, _, _, _)) 543 EXPECT_CALL(*mock_proxy_, CallMethodWithErrorCallback(_, _, _, _))
546 .WillOnce(Invoke(this, &IBusInputContextClientTest::OnProcessKeyEvent)); 544 .WillOnce(Invoke(this, &IBusInputContextClientTest::OnProcessKeyEvent));
547 MockProcessKeyEventHandler callback; 545 MockProcessKeyEventHandler callback;
548 MockProcessKeyEventErrorHandler error_callback; 546 MockProcessKeyEventErrorHandler error_callback;
549 547
550 EXPECT_CALL(callback, Run(kIsKeyHandled)); 548 EXPECT_CALL(callback, Run(kIsKeyHandled));
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
618 // Create response. 616 // Create response.
619 scoped_ptr<dbus::Response> response(dbus::Response::CreateEmpty()); 617 scoped_ptr<dbus::Response> response(dbus::Response::CreateEmpty());
620 response_ = response.get(); 618 response_ = response.get();
621 619
622 // Call SetCursorLocation. 620 // Call SetCursorLocation.
623 client_->PropertyActivate(kPropertyKey, kPropertyState); 621 client_->PropertyActivate(kPropertyKey, kPropertyState);
624 // Run the message loop. 622 // Run the message loop.
625 message_loop_.RunUntilIdle(); 623 message_loop_.RunUntilIdle();
626 } 624 }
627 } // namespace chromeos 625 } // namespace chromeos
OLDNEW
« no previous file with comments | « chromeos/dbus/ibus/ibus_input_context_client.cc ('k') | chromeos/dbus/ibus/ibus_panel_service.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698