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
3 // found in the LICENSE file.
5 #ifndef DBUS_MOCK_OBJECT_PROXY_H_
6 #define DBUS_MOCK_OBJECT_PROXY_H_
10 #include "dbus/message.h"
11 #include "dbus/object_path.h"
12 #include "dbus/object_proxy.h"
13 #include "testing/gmock/include/gmock/gmock.h"
17 // Mock for ObjectProxy.
18 class MockObjectProxy
: public ObjectProxy
{
20 MockObjectProxy(Bus
* bus
,
21 const std::string
& service_name
,
22 const ObjectPath
& object_path
);
24 // GMock doesn't support the return type of scoped_ptr<> because scoped_ptr is
25 // uncopyable. This is a workaround which defines |MockCallMethodAndBlock| as
26 // a mock method and makes |CallMethodAndBlock| call the mocked method.
27 // Use |MockCallMethodAndBlock| for setting/testing expectations.
28 MOCK_METHOD3(MockCallMethodAndBlockWithErrorDetails
,
29 Response
*(MethodCall
* method_call
,
31 ScopedDBusError
* error
));
32 scoped_ptr
<Response
> CallMethodAndBlockWithErrorDetails(
33 MethodCall
* method_call
,
35 ScopedDBusError
* error
) override
{
36 return scoped_ptr
<Response
>(
37 MockCallMethodAndBlockWithErrorDetails(method_call
, timeout_ms
, error
));
39 MOCK_METHOD2(MockCallMethodAndBlock
, Response
*(MethodCall
* method_call
,
41 scoped_ptr
<Response
> CallMethodAndBlock(MethodCall
* method_call
,
42 int timeout_ms
) override
{
43 return scoped_ptr
<Response
>(MockCallMethodAndBlock(method_call
,
46 MOCK_METHOD3(CallMethod
, void(MethodCall
* method_call
,
48 ResponseCallback callback
));
49 MOCK_METHOD4(CallMethodWithErrorCallback
, void(MethodCall
* method_call
,
51 ResponseCallback callback
,
52 ErrorCallback error_callback
));
53 MOCK_METHOD4(ConnectToSignal
,
54 void(const std::string
& interface_name
,
55 const std::string
& signal_name
,
56 SignalCallback signal_callback
,
57 OnConnectedCallback on_connected_callback
));
58 MOCK_METHOD0(Detach
, void());
61 ~MockObjectProxy() override
;
66 #endif // DBUS_MOCK_OBJECT_PROXY_H_