| 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 "base/bind.h" | 5 #include "base/bind.h" |
| 6 #include "base/logging.h" | 6 #include "base/logging.h" |
| 7 #include "base/memory/ref_counted.h" | 7 #include "base/memory/ref_counted.h" |
| 8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
| 9 #include "base/message_loop.h" | 9 #include "base/message_loop.h" |
| 10 #include "dbus/message.h" | 10 #include "dbus/message.h" |
| (...skipping 21 matching lines...) Expand all Loading... |
| 32 mock_bus_ = new dbus::MockBus(options); | 32 mock_bus_ = new dbus::MockBus(options); |
| 33 | 33 |
| 34 // Create a mock proxy. | 34 // Create a mock proxy. |
| 35 mock_proxy_ = new dbus::MockObjectProxy( | 35 mock_proxy_ = new dbus::MockObjectProxy( |
| 36 mock_bus_.get(), | 36 mock_bus_.get(), |
| 37 "org.chromium.TestService", | 37 "org.chromium.TestService", |
| 38 dbus::ObjectPath("/org/chromium/TestObject")); | 38 dbus::ObjectPath("/org/chromium/TestObject")); |
| 39 | 39 |
| 40 // Set an expectation so mock_proxy's CallMethodAndBlock() will use | 40 // Set an expectation so mock_proxy's CallMethodAndBlock() will use |
| 41 // CreateMockProxyResponse() to return responses. | 41 // CreateMockProxyResponse() to return responses. |
| 42 EXPECT_CALL(*mock_proxy_, CallMethodAndBlock(_, _)) | 42 EXPECT_CALL(*mock_proxy_, MockCallMethodAndBlock(_, _)) |
| 43 .WillRepeatedly(Invoke(this, &MockTest::CreateMockProxyResponse)); | 43 .WillRepeatedly(Invoke(this, &MockTest::CreateMockProxyResponse)); |
| 44 | 44 |
| 45 // Set an expectation so mock_proxy's CallMethod() will use | 45 // Set an expectation so mock_proxy's CallMethod() will use |
| 46 // HandleMockProxyResponseWithMessageLoop() to return responses. | 46 // HandleMockProxyResponseWithMessageLoop() to return responses. |
| 47 EXPECT_CALL(*mock_proxy_, CallMethod(_, _, _)) | 47 EXPECT_CALL(*mock_proxy_, CallMethod(_, _, _)) |
| 48 .WillRepeatedly( | 48 .WillRepeatedly( |
| 49 Invoke(this, | 49 Invoke(this, |
| 50 &MockTest::HandleMockProxyResponseWithMessageLoop)); | 50 &MockTest::HandleMockProxyResponseWithMessageLoop)); |
| 51 | 51 |
| 52 // Set an expectation so mock_bus's GetObjectProxy() for the given | 52 // Set an expectation so mock_bus's GetObjectProxy() for the given |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 84 private: | 84 private: |
| 85 // Returns a response for the given method call. Used to implement | 85 // Returns a response for the given method call. Used to implement |
| 86 // CallMethodAndBlock() for |mock_proxy_|. | 86 // CallMethodAndBlock() for |mock_proxy_|. |
| 87 dbus::Response* CreateMockProxyResponse(dbus::MethodCall* method_call, | 87 dbus::Response* CreateMockProxyResponse(dbus::MethodCall* method_call, |
| 88 int timeout_ms) { | 88 int timeout_ms) { |
| 89 if (method_call->GetInterface() == "org.chromium.TestInterface" && | 89 if (method_call->GetInterface() == "org.chromium.TestInterface" && |
| 90 method_call->GetMember() == "Echo") { | 90 method_call->GetMember() == "Echo") { |
| 91 dbus::MessageReader reader(method_call); | 91 dbus::MessageReader reader(method_call); |
| 92 std::string text_message; | 92 std::string text_message; |
| 93 if (reader.PopString(&text_message)) { | 93 if (reader.PopString(&text_message)) { |
| 94 dbus::Response* response = dbus::Response::CreateEmpty(); | 94 scoped_ptr<dbus::Response> response = dbus::Response::CreateEmpty(); |
| 95 dbus::MessageWriter writer(response); | 95 dbus::MessageWriter writer(response.get()); |
| 96 writer.AppendString(text_message); | 96 writer.AppendString(text_message); |
| 97 return response; | 97 return response.release(); |
| 98 } | 98 } |
| 99 } | 99 } |
| 100 | 100 |
| 101 LOG(ERROR) << "Unexpected method call: " << method_call->ToString(); | 101 LOG(ERROR) << "Unexpected method call: " << method_call->ToString(); |
| 102 return NULL; | 102 return NULL; |
| 103 } | 103 } |
| 104 | 104 |
| 105 // Creates a response and runs the given response callback in the | 105 // Creates a response and runs the given response callback in the |
| 106 // message loop with the response. Used to implement for |mock_proxy_|. | 106 // message loop with the response. Used to implement for |mock_proxy_|. |
| 107 void HandleMockProxyResponseWithMessageLoop( | 107 void HandleMockProxyResponseWithMessageLoop( |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 172 // Call the method. | 172 // Call the method. |
| 173 proxy->CallMethod(&method_call, | 173 proxy->CallMethod(&method_call, |
| 174 dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, | 174 dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, |
| 175 base::Bind(&MockTest::OnResponse, | 175 base::Bind(&MockTest::OnResponse, |
| 176 base::Unretained(this))); | 176 base::Unretained(this))); |
| 177 // Run the message loop to let OnResponse be called. | 177 // Run the message loop to let OnResponse be called. |
| 178 message_loop_.Run(); | 178 message_loop_.Run(); |
| 179 | 179 |
| 180 EXPECT_EQ(kHello, response_string_); | 180 EXPECT_EQ(kHello, response_string_); |
| 181 } | 181 } |
| OLD | NEW |