| // Copyright (c) 2014 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef LOGIN_MANAGER_MOCK_OBJECT_PROXY_H_ |
| #define LOGIN_MANAGER_MOCK_OBJECT_PROXY_H_ |
| |
| #include <string> |
| |
| #include <base/memory/scoped_ptr.h> |
| #include <dbus/object_path.h> |
| #include <dbus/object_proxy.h> |
| #include <gmock/gmock.h> |
| |
| namespace dbus { |
| class MethodCall; |
| class Response; |
| } |
| |
| namespace login_manager { |
| |
| // Mock for ObjectProxy. |
| class MockObjectProxy : public dbus::ObjectProxy { |
| public: |
| MockObjectProxy() |
| : dbus::ObjectProxy(NULL, |
| "", |
| dbus::ObjectPath(""), |
| dbus::ObjectProxy::DEFAULT_OPTIONS) { |
| } |
| // GMock doesn't support the return type of scoped_ptr<> because scoped_ptr is |
| // uncopyable. This is a workaround which defines |MockCallMethodAndBlock| as |
| // a mock method and makes |CallMethodAndBlock| call the mocked method. |
| // Use |MockCallMethodAndBlock| for setting/testing expectations. |
| MOCK_METHOD2(MockCallMethodAndBlock, |
| dbus::Response*(dbus::MethodCall* method_call, int timeout_ms)); |
| scoped_ptr<dbus::Response> CallMethodAndBlock( |
| dbus::MethodCall* method_call, |
| int timeout_ms) override { |
| return scoped_ptr<dbus::Response>(MockCallMethodAndBlock(method_call, |
| timeout_ms)); |
| } |
| |
| MOCK_METHOD3(CallMethod, void(dbus::MethodCall* method_call, |
| int timeout_ms, |
| dbus::ObjectProxy::ResponseCallback callback)); |
| MOCK_METHOD4(CallMethodWithErrorCallback, |
| void(dbus::MethodCall* method_call, |
| int timeout_ms, |
| dbus::ObjectProxy::ResponseCallback callback, |
| dbus::ObjectProxy::ErrorCallback error_callback)); |
| MOCK_METHOD4( |
| ConnectToSignal, |
| void(const std::string& interface_name, |
| const std::string& signal_name, |
| dbus::ObjectProxy::SignalCallback signal_callback, |
| dbus::ObjectProxy::OnConnectedCallback on_connected_callback)); |
| MOCK_METHOD0(Detach, void()); |
| |
| protected: |
| virtual ~MockObjectProxy() {} |
| }; |
| |
| } // namespace login_manager |
| |
| #endif // LOGIN_MANAGER_MOCK_OBJECT_PROXY_H_ |