| OLD | NEW |
| 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_panel_service.h" | 5 #include "chromeos/dbus/ibus/ibus_panel_service.h" |
| 6 | 6 |
| 7 #include <map> | 7 #include <map> |
| 8 #include "base/bind.h" | 8 #include "base/bind.h" |
| 9 #include "base/message_loop.h" | 9 #include "base/message_loop.h" |
| 10 #include "base/values.h" | 10 #include "base/values.h" |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 56 MOCK_METHOD1(RegisterProperties, | 56 MOCK_METHOD1(RegisterProperties, |
| 57 void(const IBusPropertyList& properties)); | 57 void(const IBusPropertyList& properties)); |
| 58 MOCK_METHOD1(UpdateProperty, void(const IBusProperty& property)); | 58 MOCK_METHOD1(UpdateProperty, void(const IBusProperty& property)); |
| 59 | 59 |
| 60 private: | 60 private: |
| 61 DISALLOW_COPY_AND_ASSIGN(MockIBusPanelPropertyHandler); | 61 DISALLOW_COPY_AND_ASSIGN(MockIBusPanelPropertyHandler); |
| 62 }; | 62 }; |
| 63 | 63 |
| 64 class MockResponseSender { | 64 class MockResponseSender { |
| 65 public: | 65 public: |
| 66 MOCK_METHOD1(Run, void(dbus::Response* reponse)); | 66 // GMock doesn't support mocking methods which take scoped_ptr<>. |
| 67 MOCK_METHOD1(MockRun, void(dbus::Response* reponse)); |
| 68 void Run(scoped_ptr<dbus::Response> response) { |
| 69 MockRun(response.get()); |
| 70 } |
| 67 }; | 71 }; |
| 68 | 72 |
| 69 // This class is used to verify that a method call response is empty. This class | 73 // This class is used to verify that a method call response is empty. This class |
| 70 // verifies the response has correct message serial number and has no entry in | 74 // verifies the response has correct message serial number and has no entry in |
| 71 // response. | 75 // response. |
| 72 class EmptyResponseVerifier { | 76 class EmptyResponseVerifier { |
| 73 public: | 77 public: |
| 74 explicit EmptyResponseVerifier(uint32 expected_serial_number) | 78 explicit EmptyResponseVerifier(uint32 expected_serial_number) |
| 75 : expected_serial_number_(expected_serial_number) {} | 79 : expected_serial_number_(expected_serial_number) {} |
| 76 | 80 |
| 77 // Verifies the given |response| has no argument. | 81 // Verifies the given |response| has no argument. |
| 78 void Verify(dbus::Response* response) { | 82 void Verify(dbus::Response* response) { |
| 79 scoped_ptr<dbus::Response> response_deleter(response); | |
| 80 EXPECT_EQ(expected_serial_number_, response->GetReplySerial()); | 83 EXPECT_EQ(expected_serial_number_, response->GetReplySerial()); |
| 81 dbus::MessageReader reader(response); | 84 dbus::MessageReader reader(response); |
| 82 EXPECT_FALSE(reader.HasMoreData()); | 85 EXPECT_FALSE(reader.HasMoreData()); |
| 83 } | 86 } |
| 84 | 87 |
| 85 private: | 88 private: |
| 86 const uint32 expected_serial_number_; | 89 const uint32 expected_serial_number_; |
| 87 | 90 |
| 88 DISALLOW_COPY_AND_ASSIGN(EmptyResponseVerifier); | 91 DISALLOW_COPY_AND_ASSIGN(EmptyResponseVerifier); |
| 89 }; | 92 }; |
| (...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 342 success)); | 345 success)); |
| 343 } | 346 } |
| 344 }; | 347 }; |
| 345 | 348 |
| 346 TEST_F(IBusPanelServiceTest, HideLookupTableTest) { | 349 TEST_F(IBusPanelServiceTest, HideLookupTableTest) { |
| 347 // Set expectations. | 350 // Set expectations. |
| 348 const uint32 kSerialNo = 1; | 351 const uint32 kSerialNo = 1; |
| 349 EXPECT_CALL(*candidate_window_handler_, HideLookupTable()); | 352 EXPECT_CALL(*candidate_window_handler_, HideLookupTable()); |
| 350 MockResponseSender response_sender; | 353 MockResponseSender response_sender; |
| 351 EmptyResponseVerifier response_expectation(kSerialNo); | 354 EmptyResponseVerifier response_expectation(kSerialNo); |
| 352 EXPECT_CALL(response_sender, Run(_)) | 355 EXPECT_CALL(response_sender, MockRun(_)) |
| 353 .WillOnce(Invoke(&response_expectation, | 356 .WillOnce(Invoke(&response_expectation, |
| 354 &EmptyResponseVerifier::Verify)); | 357 &EmptyResponseVerifier::Verify)); |
| 355 | 358 |
| 356 // Create method call; | 359 // Create method call; |
| 357 dbus::MethodCall method_call(ibus::panel::kServiceInterface, | 360 dbus::MethodCall method_call(ibus::panel::kServiceInterface, |
| 358 ibus::panel::kHideLookupTableMethod); | 361 ibus::panel::kHideLookupTableMethod); |
| 359 method_call.SetSerial(kSerialNo); | 362 method_call.SetSerial(kSerialNo); |
| 360 | 363 |
| 361 // Call exported function. | 364 // Call exported function. |
| 362 EXPECT_NE(method_callback_map_.find(ibus::panel::kHideLookupTableMethod), | 365 EXPECT_NE(method_callback_map_.find(ibus::panel::kHideLookupTableMethod), |
| 363 method_callback_map_.end()); | 366 method_callback_map_.end()); |
| 364 method_callback_map_[ibus::panel::kHideLookupTableMethod].Run( | 367 method_callback_map_[ibus::panel::kHideLookupTableMethod].Run( |
| 365 &method_call, | 368 &method_call, |
| 366 base::Bind(&MockResponseSender::Run, | 369 base::Bind(&MockResponseSender::Run, |
| 367 base::Unretained(&response_sender))); | 370 base::Unretained(&response_sender))); |
| 368 } | 371 } |
| 369 | 372 |
| 370 TEST_F(IBusPanelServiceTest, HideAuxiliaryTextTest) { | 373 TEST_F(IBusPanelServiceTest, HideAuxiliaryTextTest) { |
| 371 // Set expectations. | 374 // Set expectations. |
| 372 const uint32 kSerialNo = 1; | 375 const uint32 kSerialNo = 1; |
| 373 EXPECT_CALL(*candidate_window_handler_, HideAuxiliaryText()); | 376 EXPECT_CALL(*candidate_window_handler_, HideAuxiliaryText()); |
| 374 MockResponseSender response_sender; | 377 MockResponseSender response_sender; |
| 375 EmptyResponseVerifier response_expectation(kSerialNo); | 378 EmptyResponseVerifier response_expectation(kSerialNo); |
| 376 EXPECT_CALL(response_sender, Run(_)) | 379 EXPECT_CALL(response_sender, MockRun(_)) |
| 377 .WillOnce(Invoke(&response_expectation, | 380 .WillOnce(Invoke(&response_expectation, |
| 378 &EmptyResponseVerifier::Verify)); | 381 &EmptyResponseVerifier::Verify)); |
| 379 | 382 |
| 380 // Create method call; | 383 // Create method call; |
| 381 dbus::MethodCall method_call(ibus::panel::kServiceInterface, | 384 dbus::MethodCall method_call(ibus::panel::kServiceInterface, |
| 382 ibus::panel::kHideAuxiliaryTextMethod); | 385 ibus::panel::kHideAuxiliaryTextMethod); |
| 383 method_call.SetSerial(kSerialNo); | 386 method_call.SetSerial(kSerialNo); |
| 384 | 387 |
| 385 // Call exported function. | 388 // Call exported function. |
| 386 EXPECT_NE(method_callback_map_.find(ibus::panel::kHideAuxiliaryTextMethod), | 389 EXPECT_NE(method_callback_map_.find(ibus::panel::kHideAuxiliaryTextMethod), |
| 387 method_callback_map_.end()); | 390 method_callback_map_.end()); |
| 388 method_callback_map_[ibus::panel::kHideAuxiliaryTextMethod].Run( | 391 method_callback_map_[ibus::panel::kHideAuxiliaryTextMethod].Run( |
| 389 &method_call, | 392 &method_call, |
| 390 base::Bind(&MockResponseSender::Run, | 393 base::Bind(&MockResponseSender::Run, |
| 391 base::Unretained(&response_sender))); | 394 base::Unretained(&response_sender))); |
| 392 } | 395 } |
| 393 | 396 |
| 394 TEST_F(IBusPanelServiceTest, HidePreeditTextTest) { | 397 TEST_F(IBusPanelServiceTest, HidePreeditTextTest) { |
| 395 // Set expectations. | 398 // Set expectations. |
| 396 const uint32 kSerialNo = 1; | 399 const uint32 kSerialNo = 1; |
| 397 EXPECT_CALL(*candidate_window_handler_, HidePreeditText()); | 400 EXPECT_CALL(*candidate_window_handler_, HidePreeditText()); |
| 398 MockResponseSender response_sender; | 401 MockResponseSender response_sender; |
| 399 EmptyResponseVerifier response_expectation(kSerialNo); | 402 EmptyResponseVerifier response_expectation(kSerialNo); |
| 400 EXPECT_CALL(response_sender, Run(_)) | 403 EXPECT_CALL(response_sender, MockRun(_)) |
| 401 .WillOnce(Invoke(&response_expectation, | 404 .WillOnce(Invoke(&response_expectation, |
| 402 &EmptyResponseVerifier::Verify)); | 405 &EmptyResponseVerifier::Verify)); |
| 403 | 406 |
| 404 // Create method call; | 407 // Create method call; |
| 405 dbus::MethodCall method_call(ibus::panel::kServiceInterface, | 408 dbus::MethodCall method_call(ibus::panel::kServiceInterface, |
| 406 ibus::panel::kHidePreeditTextMethod); | 409 ibus::panel::kHidePreeditTextMethod); |
| 407 method_call.SetSerial(kSerialNo); | 410 method_call.SetSerial(kSerialNo); |
| 408 | 411 |
| 409 // Call exported function. | 412 // Call exported function. |
| 410 EXPECT_NE(method_callback_map_.find(ibus::panel::kHidePreeditTextMethod), | 413 EXPECT_NE(method_callback_map_.find(ibus::panel::kHidePreeditTextMethod), |
| (...skipping 12 matching lines...) Expand all Loading... |
| 423 table.set_cursor_position(4); | 426 table.set_cursor_position(4); |
| 424 const bool kVisible = false; | 427 const bool kVisible = false; |
| 425 | 428 |
| 426 | 429 |
| 427 UpdateLookupTableVerifier evaluator(table, kVisible); | 430 UpdateLookupTableVerifier evaluator(table, kVisible); |
| 428 EXPECT_CALL(*candidate_window_handler_, UpdateLookupTable(_, _)) | 431 EXPECT_CALL(*candidate_window_handler_, UpdateLookupTable(_, _)) |
| 429 .WillOnce(Invoke(&evaluator, | 432 .WillOnce(Invoke(&evaluator, |
| 430 &UpdateLookupTableVerifier::Verify)); | 433 &UpdateLookupTableVerifier::Verify)); |
| 431 MockResponseSender response_sender; | 434 MockResponseSender response_sender; |
| 432 EmptyResponseVerifier response_expectation(kSerialNo); | 435 EmptyResponseVerifier response_expectation(kSerialNo); |
| 433 EXPECT_CALL(response_sender, Run(_)) | 436 EXPECT_CALL(response_sender, MockRun(_)) |
| 434 .WillOnce(Invoke(&response_expectation, | 437 .WillOnce(Invoke(&response_expectation, |
| 435 &EmptyResponseVerifier::Verify)); | 438 &EmptyResponseVerifier::Verify)); |
| 436 | 439 |
| 437 // Create method call; | 440 // Create method call; |
| 438 dbus::MethodCall method_call(ibus::panel::kServiceInterface, | 441 dbus::MethodCall method_call(ibus::panel::kServiceInterface, |
| 439 ibus::panel::kUpdateLookupTableMethod); | 442 ibus::panel::kUpdateLookupTableMethod); |
| 440 method_call.SetSerial(kSerialNo); | 443 method_call.SetSerial(kSerialNo); |
| 441 dbus::MessageWriter writer(&method_call); | 444 dbus::MessageWriter writer(&method_call); |
| 442 AppendIBusLookupTable(table, &writer); | 445 AppendIBusLookupTable(table, &writer); |
| 443 writer.AppendBool(kVisible); | 446 writer.AppendBool(kVisible); |
| 444 | 447 |
| 445 // Call exported function. | 448 // Call exported function. |
| 446 EXPECT_NE(method_callback_map_.find(ibus::panel::kUpdateLookupTableMethod), | 449 EXPECT_NE(method_callback_map_.find(ibus::panel::kUpdateLookupTableMethod), |
| 447 method_callback_map_.end()); | 450 method_callback_map_.end()); |
| 448 method_callback_map_[ibus::panel::kUpdateLookupTableMethod].Run( | 451 method_callback_map_[ibus::panel::kUpdateLookupTableMethod].Run( |
| 449 &method_call, | 452 &method_call, |
| 450 base::Bind(&MockResponseSender::Run, | 453 base::Bind(&MockResponseSender::Run, |
| 451 base::Unretained(&response_sender))); | 454 base::Unretained(&response_sender))); |
| 452 } | 455 } |
| 453 | 456 |
| 454 TEST_F(IBusPanelServiceTest, UpdateAuxiliaryTextTest) { | 457 TEST_F(IBusPanelServiceTest, UpdateAuxiliaryTextTest) { |
| 455 // Set expectations. | 458 // Set expectations. |
| 456 const uint32 kSerialNo = 1; | 459 const uint32 kSerialNo = 1; |
| 457 const std::string text = "Sample text"; | 460 const std::string text = "Sample text"; |
| 458 const bool kVisible = false; | 461 const bool kVisible = false; |
| 459 | 462 |
| 460 EXPECT_CALL(*candidate_window_handler_, UpdateAuxiliaryText(text, kVisible)); | 463 EXPECT_CALL(*candidate_window_handler_, UpdateAuxiliaryText(text, kVisible)); |
| 461 MockResponseSender response_sender; | 464 MockResponseSender response_sender; |
| 462 EmptyResponseVerifier response_expectation(kSerialNo); | 465 EmptyResponseVerifier response_expectation(kSerialNo); |
| 463 EXPECT_CALL(response_sender, Run(_)) | 466 EXPECT_CALL(response_sender, MockRun(_)) |
| 464 .WillOnce(Invoke(&response_expectation, | 467 .WillOnce(Invoke(&response_expectation, |
| 465 &EmptyResponseVerifier::Verify)); | 468 &EmptyResponseVerifier::Verify)); |
| 466 | 469 |
| 467 // Create method call; | 470 // Create method call; |
| 468 dbus::MethodCall method_call(ibus::panel::kServiceInterface, | 471 dbus::MethodCall method_call(ibus::panel::kServiceInterface, |
| 469 ibus::panel::kUpdateAuxiliaryTextMethod); | 472 ibus::panel::kUpdateAuxiliaryTextMethod); |
| 470 method_call.SetSerial(kSerialNo); | 473 method_call.SetSerial(kSerialNo); |
| 471 dbus::MessageWriter writer(&method_call); | 474 dbus::MessageWriter writer(&method_call); |
| 472 AppendStringAsIBusText(text, &writer); | 475 AppendStringAsIBusText(text, &writer); |
| 473 writer.AppendBool(kVisible); | 476 writer.AppendBool(kVisible); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 485 // Set expectations. | 488 // Set expectations. |
| 486 const uint32 kSerialNo = 1; | 489 const uint32 kSerialNo = 1; |
| 487 const std::string text = "Sample text"; | 490 const std::string text = "Sample text"; |
| 488 const uint32 kCursorPos = 4; | 491 const uint32 kCursorPos = 4; |
| 489 const bool kVisible = false; | 492 const bool kVisible = false; |
| 490 | 493 |
| 491 EXPECT_CALL(*candidate_window_handler_, | 494 EXPECT_CALL(*candidate_window_handler_, |
| 492 UpdatePreeditText(text, kCursorPos, kVisible)); | 495 UpdatePreeditText(text, kCursorPos, kVisible)); |
| 493 MockResponseSender response_sender; | 496 MockResponseSender response_sender; |
| 494 EmptyResponseVerifier response_expectation(kSerialNo); | 497 EmptyResponseVerifier response_expectation(kSerialNo); |
| 495 EXPECT_CALL(response_sender, Run(_)) | 498 EXPECT_CALL(response_sender, MockRun(_)) |
| 496 .WillOnce(Invoke(&response_expectation, | 499 .WillOnce(Invoke(&response_expectation, |
| 497 &EmptyResponseVerifier::Verify)); | 500 &EmptyResponseVerifier::Verify)); |
| 498 | 501 |
| 499 // Create method call; | 502 // Create method call; |
| 500 dbus::MethodCall method_call(ibus::panel::kServiceInterface, | 503 dbus::MethodCall method_call(ibus::panel::kServiceInterface, |
| 501 ibus::panel::kUpdatePreeditTextMethod); | 504 ibus::panel::kUpdatePreeditTextMethod); |
| 502 method_call.SetSerial(kSerialNo); | 505 method_call.SetSerial(kSerialNo); |
| 503 dbus::MessageWriter writer(&method_call); | 506 dbus::MessageWriter writer(&method_call); |
| 504 AppendStringAsIBusText(text, &writer); | 507 AppendStringAsIBusText(text, &writer); |
| 505 writer.AppendUint32(kCursorPos); | 508 writer.AppendUint32(kCursorPos); |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 566 property->set_key(keys[i]); | 569 property->set_key(keys[i]); |
| 567 properties.push_back(property); | 570 properties.push_back(property); |
| 568 } | 571 } |
| 569 | 572 |
| 570 PropertyListVerifier response_expectation(keys); | 573 PropertyListVerifier response_expectation(keys); |
| 571 EXPECT_CALL(*property_handler_, RegisterProperties(_)) | 574 EXPECT_CALL(*property_handler_, RegisterProperties(_)) |
| 572 .WillOnce(Invoke(&response_expectation, | 575 .WillOnce(Invoke(&response_expectation, |
| 573 &PropertyListVerifier::Verify)); | 576 &PropertyListVerifier::Verify)); |
| 574 | 577 |
| 575 MockResponseSender response_sender; | 578 MockResponseSender response_sender; |
| 576 EXPECT_CALL(response_sender, Run(_)); | 579 EXPECT_CALL(response_sender, MockRun(_)); |
| 577 | 580 |
| 578 // Create method call; | 581 // Create method call; |
| 579 dbus::MethodCall method_call(ibus::panel::kServiceInterface, | 582 dbus::MethodCall method_call(ibus::panel::kServiceInterface, |
| 580 ibus::panel::kRegisterPropertiesMethod); | 583 ibus::panel::kRegisterPropertiesMethod); |
| 581 method_call.SetSerial(1UL); | 584 method_call.SetSerial(1UL); |
| 582 dbus::MessageWriter writer(&method_call); | 585 dbus::MessageWriter writer(&method_call); |
| 583 AppendIBusPropertyList(properties, &writer); | 586 AppendIBusPropertyList(properties, &writer); |
| 584 | 587 |
| 585 // Call exported function. | 588 // Call exported function. |
| 586 EXPECT_NE(method_callback_map_.find(ibus::panel::kRegisterPropertiesMethod), | 589 EXPECT_NE(method_callback_map_.find(ibus::panel::kRegisterPropertiesMethod), |
| 587 method_callback_map_.end()); | 590 method_callback_map_.end()); |
| 588 method_callback_map_[ibus::panel::kRegisterPropertiesMethod].Run( | 591 method_callback_map_[ibus::panel::kRegisterPropertiesMethod].Run( |
| 589 &method_call, | 592 &method_call, |
| 590 base::Bind(&MockResponseSender::Run, base::Unretained(&response_sender))); | 593 base::Bind(&MockResponseSender::Run, base::Unretained(&response_sender))); |
| 591 } | 594 } |
| 592 | 595 |
| 593 TEST_F(IBusPanelServiceTest, UpdatePropertyTest) { | 596 TEST_F(IBusPanelServiceTest, UpdatePropertyTest) { |
| 594 // Set expectations. | 597 // Set expectations. |
| 595 const char kKey[] = "key"; | 598 const char kKey[] = "key"; |
| 596 IBusProperty property; | 599 IBusProperty property; |
| 597 property.set_key(kKey); | 600 property.set_key(kKey); |
| 598 | 601 |
| 599 PropertyVerifier response_expectation(kKey); | 602 PropertyVerifier response_expectation(kKey); |
| 600 EXPECT_CALL(*property_handler_, UpdateProperty(_)) | 603 EXPECT_CALL(*property_handler_, UpdateProperty(_)) |
| 601 .WillOnce(Invoke(&response_expectation, &PropertyVerifier::Verify)); | 604 .WillOnce(Invoke(&response_expectation, &PropertyVerifier::Verify)); |
| 602 | 605 |
| 603 MockResponseSender response_sender; | 606 MockResponseSender response_sender; |
| 604 EXPECT_CALL(response_sender, Run(_)); | 607 EXPECT_CALL(response_sender, MockRun(_)); |
| 605 | 608 |
| 606 // Create method call; | 609 // Create method call; |
| 607 dbus::MethodCall method_call(ibus::panel::kServiceInterface, | 610 dbus::MethodCall method_call(ibus::panel::kServiceInterface, |
| 608 ibus::panel::kUpdatePropertyMethod); | 611 ibus::panel::kUpdatePropertyMethod); |
| 609 method_call.SetSerial(1UL); | 612 method_call.SetSerial(1UL); |
| 610 dbus::MessageWriter writer(&method_call); | 613 dbus::MessageWriter writer(&method_call); |
| 611 AppendIBusProperty(property, &writer); | 614 AppendIBusProperty(property, &writer); |
| 612 | 615 |
| 613 // Call exported function. | 616 // Call exported function. |
| 614 EXPECT_NE(method_callback_map_.find(ibus::panel::kUpdatePropertyMethod), | 617 EXPECT_NE(method_callback_map_.find(ibus::panel::kUpdatePropertyMethod), |
| 615 method_callback_map_.end()); | 618 method_callback_map_.end()); |
| 616 method_callback_map_[ibus::panel::kUpdatePropertyMethod].Run( | 619 method_callback_map_[ibus::panel::kUpdatePropertyMethod].Run( |
| 617 &method_call, | 620 &method_call, |
| 618 base::Bind(&MockResponseSender::Run, | 621 base::Bind(&MockResponseSender::Run, |
| 619 base::Unretained(&response_sender))); | 622 base::Unretained(&response_sender))); |
| 620 } | 623 } |
| 621 | 624 |
| 622 } // namespace chromeos | 625 } // namespace chromeos |
| OLD | NEW |