// Copyright (c) 2012 The Chromium 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 DBUS_MOCK_OBJECT_PROXY_H_ #define DBUS_MOCK_OBJECT_PROXY_H_ #include <memory> #include <string> #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_METHOD3(CallMethodAndBlockWithErrorDetails, std::unique_ptr<Response>(MethodCall* method_call, int timeout_ms, ScopedDBusError* error)); MOCK_METHOD2(CallMethodAndBlock, std::unique_ptr<Response>(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, 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_