| // Copyright 2012 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef DBUS_MOCK_OBJECT_PROXY_H_ |
| #define DBUS_MOCK_OBJECT_PROXY_H_ |
| |
| #include <memory> |
| #include <string> |
| |
| #include "base/types/expected.h" |
| #include "dbus/error.h" |
| #include "dbus/message.h" |
| #include "dbus/object_path.h" |
| #include "dbus/object_proxy.h" |
| #include "testing/gmock/include/gmock/gmock.h" |
| |
| namespace dbus { |
| |
| // Mock for ObjectProxy. |
| class MockObjectProxy : public ObjectProxy { |
| public: |
| MockObjectProxy(Bus* bus, |
| const std::string& service_name, |
| const ObjectPath& object_path); |
| |
| MOCK_METHOD2( |
| CallMethodAndBlock, |
| base::expected<std::unique_ptr<Response>, Error>(MethodCall* method_call, |
| int timeout_ms)); |
| |
| // This method is not mockable because it takes a move-only argument. To work |
| // around this, CallMethod() implementation here calls DoCallMethod() which is |
| // mockable. |
| void CallMethod(MethodCall* method_call, |
| int timeout_ms, |
| ResponseCallback callback) override; |
| MOCK_METHOD3(DoCallMethod, |
| void(MethodCall* method_call, |
| int timeout_ms, |
| ResponseCallback* callback)); |
| |
| // This method is not mockable because it takes a move-only argument. To work |
| // around this, CallMethodWithErrorResponse() implementation here calls |
| // DoCallMethodWithErrorResponse() which is mockable. |
| void CallMethodWithErrorResponse(MethodCall* method_call, |
| int timeout_ms, |
| ResponseOrErrorCallback callback) override; |
| MOCK_METHOD3(DoCallMethodWithErrorResponse, |
| void(MethodCall* method_call, |
| int timeout_ms, |
| ResponseOrErrorCallback* callback)); |
| |
| // This method is not mockable because it takes a move-only argument. To work |
| // around this, CallMethodWithErrorCallback() implementation here calls |
| // DoCallMethodWithErrorCallback() which is mockable. |
| void CallMethodWithErrorCallback(MethodCall* method_call, |
| int timeout_ms, |
| ResponseCallback callback, |
| ErrorCallback error_callback) override; |
| MOCK_METHOD4(DoCallMethodWithErrorCallback, |
| void(MethodCall* method_call, |
| int timeout_ms, |
| ResponseCallback* callback, |
| ErrorCallback* error_callback)); |
| |
| // This method is not mockable because it takes a move-only argument. To work |
| // around this, WaitForServiceToBeAvailable() implementation here calls |
| // DoWaitForServiceToBeAvailable() which is mockable. |
| void WaitForServiceToBeAvailable( |
| WaitForServiceToBeAvailableCallback callback) override; |
| MOCK_METHOD1(DoWaitForServiceToBeAvailable, |
| void(WaitForServiceToBeAvailableCallback* callback)); |
| |
| // This method is not mockable because it takes a move-only argument. To work |
| // around this, ConnectToSignal() implementation here calls |
| // DoConnectToSignal() which is mockable. |
| void ConnectToSignal(const std::string& interface_name, |
| const std::string& signal_name, |
| SignalCallback signal_callback, |
| OnConnectedCallback on_connected_callback) override; |
| MOCK_METHOD4(DoConnectToSignal, |
| void(const std::string& interface_name, |
| const std::string& signal_name, |
| SignalCallback signal_callback, |
| OnConnectedCallback* on_connected_callback)); |
| MOCK_METHOD1(SetNameOwnerChangedCallback, |
| void(NameOwnerChangedCallback callback)); |
| MOCK_METHOD0(Detach, void()); |
| |
| protected: |
| ~MockObjectProxy() override; |
| }; |
| |
| } // namespace dbus |
| |
| #endif // DBUS_MOCK_OBJECT_PROXY_H_ |