| 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 <stddef.h> | 5 #include <stddef.h> |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <string> | 8 #include <string> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 56 ASSERT_TRUE(test_service_->WaitUntilServiceIsStarted()); | 56 ASSERT_TRUE(test_service_->WaitUntilServiceIsStarted()); |
| 57 ASSERT_TRUE(test_service_->HasDBusThread()); | 57 ASSERT_TRUE(test_service_->HasDBusThread()); |
| 58 | 58 |
| 59 // Create the client, using the D-Bus thread. | 59 // Create the client, using the D-Bus thread. |
| 60 Bus::Options bus_options; | 60 Bus::Options bus_options; |
| 61 bus_options.bus_type = Bus::SESSION; | 61 bus_options.bus_type = Bus::SESSION; |
| 62 bus_options.connection_type = Bus::PRIVATE; | 62 bus_options.connection_type = Bus::PRIVATE; |
| 63 bus_options.dbus_task_runner = dbus_thread_->task_runner(); | 63 bus_options.dbus_task_runner = dbus_thread_->task_runner(); |
| 64 bus_ = new Bus(bus_options); | 64 bus_ = new Bus(bus_options); |
| 65 object_proxy_ = bus_->GetObjectProxy( | 65 object_proxy_ = bus_->GetObjectProxy( |
| 66 "org.chromium.TestService", | 66 test_service_->service_name(), |
| 67 ObjectPath("/org/chromium/TestObject")); | 67 ObjectPath("/org/chromium/TestObject")); |
| 68 ASSERT_TRUE(bus_->HasDBusThread()); | 68 ASSERT_TRUE(bus_->HasDBusThread()); |
| 69 | 69 |
| 70 // Connect to the "Test" signal of "org.chromium.TestInterface" from | 70 // Connect to the "Test" signal of "org.chromium.TestInterface" from |
| 71 // the remote object. | 71 // the remote object. |
| 72 object_proxy_->ConnectToSignal( | 72 object_proxy_->ConnectToSignal( |
| 73 "org.chromium.TestInterface", | 73 "org.chromium.TestInterface", |
| 74 "Test", | 74 "Test", |
| 75 base::Bind(&EndToEndAsyncTest::OnTestSignal, | 75 base::Bind(&EndToEndAsyncTest::OnTestSignal, |
| 76 base::Unretained(this)), | 76 base::Unretained(this)), |
| (...skipping 13 matching lines...) Expand all Loading... |
| 90 "Test2", | 90 "Test2", |
| 91 base::Bind(&EndToEndAsyncTest::OnTest2Signal, | 91 base::Bind(&EndToEndAsyncTest::OnTest2Signal, |
| 92 base::Unretained(this)), | 92 base::Unretained(this)), |
| 93 base::Bind(&EndToEndAsyncTest::OnConnected, | 93 base::Bind(&EndToEndAsyncTest::OnConnected, |
| 94 base::Unretained(this))); | 94 base::Unretained(this))); |
| 95 // Wait until the object proxy is connected to the signal. | 95 // Wait until the object proxy is connected to the signal. |
| 96 run_loop_.reset(new base::RunLoop()); | 96 run_loop_.reset(new base::RunLoop()); |
| 97 run_loop_->Run(); | 97 run_loop_->Run(); |
| 98 | 98 |
| 99 // Create a second object proxy for the root object. | 99 // Create a second object proxy for the root object. |
| 100 root_object_proxy_ = bus_->GetObjectProxy("org.chromium.TestService", | 100 root_object_proxy_ = bus_->GetObjectProxy(test_service_->service_name(), |
| 101 ObjectPath("/")); | 101 ObjectPath("/")); |
| 102 ASSERT_TRUE(bus_->HasDBusThread()); | 102 ASSERT_TRUE(bus_->HasDBusThread()); |
| 103 | 103 |
| 104 // Connect to the "Test" signal of "org.chromium.TestInterface" from | 104 // Connect to the "Test" signal of "org.chromium.TestInterface" from |
| 105 // the root remote object too. | 105 // the root remote object too. |
| 106 root_object_proxy_->ConnectToSignal( | 106 root_object_proxy_->ConnectToSignal( |
| 107 "org.chromium.TestInterface", | 107 "org.chromium.TestInterface", |
| 108 "Test", | 108 "Test", |
| 109 base::Bind(&EndToEndAsyncTest::OnRootTestSignal, | 109 base::Bind(&EndToEndAsyncTest::OnRootTestSignal, |
| 110 base::Unretained(this)), | 110 base::Unretained(this)), |
| (...skipping 29 matching lines...) Expand all Loading... |
| 140 Bus::Options bus_options; | 140 Bus::Options bus_options; |
| 141 bus_options.bus_type = Bus::CUSTOM_ADDRESS; | 141 bus_options.bus_type = Bus::CUSTOM_ADDRESS; |
| 142 bus_options.address = kInvalidAddress; | 142 bus_options.address = kInvalidAddress; |
| 143 bus_options.connection_type = Bus::PRIVATE; | 143 bus_options.connection_type = Bus::PRIVATE; |
| 144 bus_options.dbus_task_runner = dbus_thread_->task_runner(); | 144 bus_options.dbus_task_runner = dbus_thread_->task_runner(); |
| 145 bus_ = new Bus(bus_options); | 145 bus_ = new Bus(bus_options); |
| 146 ASSERT_TRUE(bus_->HasDBusThread()); | 146 ASSERT_TRUE(bus_->HasDBusThread()); |
| 147 | 147 |
| 148 // Create new object proxy. | 148 // Create new object proxy. |
| 149 object_proxy_ = bus_->GetObjectProxy( | 149 object_proxy_ = bus_->GetObjectProxy( |
| 150 "org.chromium.TestService", | 150 test_service_->service_name(), |
| 151 ObjectPath("/org/chromium/TestObject")); | 151 ObjectPath("/org/chromium/TestObject")); |
| 152 } | 152 } |
| 153 | 153 |
| 154 // Calls the method asynchronously. OnResponse() will be called once the | 154 // Calls the method asynchronously. OnResponse() will be called once the |
| 155 // response is received. | 155 // response is received. |
| 156 void CallMethod(MethodCall* method_call, | 156 void CallMethod(MethodCall* method_call, |
| 157 int timeout_ms) { | 157 int timeout_ms) { |
| 158 object_proxy_->CallMethod(method_call, | 158 object_proxy_->CallMethod(method_call, |
| 159 timeout_ms, | 159 timeout_ms, |
| 160 base::Bind(&EndToEndAsyncTest::OnResponse, | 160 base::Bind(&EndToEndAsyncTest::OnResponse, |
| (...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 428 MethodCall method_call("org.chromium.TestInterface", "Echo"); | 428 MethodCall method_call("org.chromium.TestInterface", "Echo"); |
| 429 MessageWriter writer(&method_call); | 429 MessageWriter writer(&method_call); |
| 430 writer.AppendString(kHello); | 430 writer.AppendString(kHello); |
| 431 | 431 |
| 432 // Call the method. | 432 // Call the method. |
| 433 const int timeout_ms = ObjectProxy::TIMEOUT_USE_DEFAULT; | 433 const int timeout_ms = ObjectProxy::TIMEOUT_USE_DEFAULT; |
| 434 CallMethod(&method_call, timeout_ms); | 434 CallMethod(&method_call, timeout_ms); |
| 435 | 435 |
| 436 // Remove the object proxy before receiving the result. | 436 // Remove the object proxy before receiving the result. |
| 437 // This results in cancelling the pending method call. | 437 // This results in cancelling the pending method call. |
| 438 bus_->RemoveObjectProxy("org.chromium.TestService", | 438 bus_->RemoveObjectProxy(test_service_->service_name(), |
| 439 ObjectPath("/org/chromium/TestObject"), | 439 ObjectPath("/org/chromium/TestObject"), |
| 440 base::Bind(&base::DoNothing)); | 440 base::Bind(&base::DoNothing)); |
| 441 | 441 |
| 442 // We shouldn't receive any responses. Wait for a while just to make sure. | 442 // We shouldn't receive any responses. Wait for a while just to make sure. |
| 443 run_loop_.reset(new base::RunLoop); | 443 run_loop_.reset(new base::RunLoop); |
| 444 message_loop_.PostDelayedTask(FROM_HERE, | 444 message_loop_.PostDelayedTask(FROM_HERE, |
| 445 run_loop_->QuitClosure(), | 445 run_loop_->QuitClosure(), |
| 446 TestTimeouts::tiny_timeout()); | 446 TestTimeouts::tiny_timeout()); |
| 447 run_loop_->Run(); | 447 run_loop_->Run(); |
| 448 EXPECT_TRUE(response_strings_.empty()); | 448 EXPECT_TRUE(response_strings_.empty()); |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 510 // Should fail because the method is broken. | 510 // Should fail because the method is broken. |
| 511 ASSERT_TRUE(response_strings_.empty()); | 511 ASSERT_TRUE(response_strings_.empty()); |
| 512 ASSERT_EQ(DBUS_ERROR_FAILED, error_names_[0]); | 512 ASSERT_EQ(DBUS_ERROR_FAILED, error_names_[0]); |
| 513 } | 513 } |
| 514 | 514 |
| 515 TEST_F(EndToEndAsyncTest, InvalidObjectPath) { | 515 TEST_F(EndToEndAsyncTest, InvalidObjectPath) { |
| 516 // Trailing '/' is only allowed for the root path. | 516 // Trailing '/' is only allowed for the root path. |
| 517 const ObjectPath invalid_object_path("/org/chromium/TestObject/"); | 517 const ObjectPath invalid_object_path("/org/chromium/TestObject/"); |
| 518 | 518 |
| 519 // Replace object proxy with new one. | 519 // Replace object proxy with new one. |
| 520 object_proxy_ = bus_->GetObjectProxy("org.chromium.TestService", | 520 object_proxy_ = bus_->GetObjectProxy(test_service_->service_name(), |
| 521 invalid_object_path); | 521 invalid_object_path); |
| 522 | 522 |
| 523 MethodCall method_call("org.chromium.TestInterface", "Echo"); | 523 MethodCall method_call("org.chromium.TestInterface", "Echo"); |
| 524 | 524 |
| 525 const int timeout_ms = ObjectProxy::TIMEOUT_USE_DEFAULT; | 525 const int timeout_ms = ObjectProxy::TIMEOUT_USE_DEFAULT; |
| 526 CallMethodWithErrorCallback(&method_call, timeout_ms); | 526 CallMethodWithErrorCallback(&method_call, timeout_ms); |
| 527 WaitForErrors(1); | 527 WaitForErrors(1); |
| 528 | 528 |
| 529 // Should fail because of the invalid path. | 529 // Should fail because of the invalid path. |
| 530 ASSERT_TRUE(response_strings_.empty()); | 530 ASSERT_TRUE(response_strings_.empty()); |
| (...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 658 test_service_->SendTestSignal(kMessage); | 658 test_service_->SendTestSignal(kMessage); |
| 659 // Receive the signal with the object proxy. | 659 // Receive the signal with the object proxy. |
| 660 WaitForTestSignal(); | 660 WaitForTestSignal(); |
| 661 // Verify the string WAS received by the original handler. | 661 // Verify the string WAS received by the original handler. |
| 662 ASSERT_EQ(kMessage, test_signal_string_); | 662 ASSERT_EQ(kMessage, test_signal_string_); |
| 663 // Verify the signal WAS ALSO received by the additional handler. | 663 // Verify the signal WAS ALSO received by the additional handler. |
| 664 ASSERT_EQ(kMessage, additional_test_signal_string_); | 664 ASSERT_EQ(kMessage, additional_test_signal_string_); |
| 665 } | 665 } |
| 666 | 666 |
| 667 } // namespace dbus | 667 } // namespace dbus |
| OLD | NEW |