15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef DBUS_MOCK_OBJECT_PROXY_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define DBUS_MOCK_OBJECT_PROXY_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string> 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "dbus/message.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "dbus/object_path.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "dbus/object_proxy.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gmock/include/gmock/gmock.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace dbus { 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Mock for ObjectProxy. 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class MockObjectProxy : public ObjectProxy { 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MockObjectProxy(Bus* bus, 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& service_name, 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const ObjectPath& object_path); 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // GMock doesn't support the return type of scoped_ptr<> because scoped_ptr is 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // uncopyable. This is a workaround which defines |MockCallMethodAndBlock| as 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // a mock method and makes |CallMethodAndBlock| call the mocked method. 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Use |MockCallMethodAndBlock| for setting/testing expectations. 281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci MOCK_METHOD3(MockCallMethodAndBlockWithErrorDetails, 291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Response*(MethodCall* method_call, 301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int timeout_ms, 311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ScopedDBusError* error)); 321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual scoped_ptr<Response> CallMethodAndBlockWithErrorDetails( 331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci MethodCall* method_call, 341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int timeout_ms, 351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ScopedDBusError* error) OVERRIDE { 361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return scoped_ptr<Response>( 371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci MockCallMethodAndBlockWithErrorDetails(method_call, timeout_ms, error)); 381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MOCK_METHOD2(MockCallMethodAndBlock, Response*(MethodCall* method_call, 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int timeout_ms)); 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual scoped_ptr<Response> CallMethodAndBlock(MethodCall* method_call, 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int timeout_ms) OVERRIDE { 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return scoped_ptr<Response>(MockCallMethodAndBlock(method_call, 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) timeout_ms)); 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_METHOD3(CallMethod, void(MethodCall* method_call, 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int timeout_ms, 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ResponseCallback callback)); 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_METHOD4(CallMethodWithErrorCallback, void(MethodCall* method_call, 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int timeout_ms, 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ResponseCallback callback, 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ErrorCallback error_callback)); 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_METHOD4(ConnectToSignal, 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void(const std::string& interface_name, 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& signal_name, 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SignalCallback signal_callback, 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OnConnectedCallback on_connected_callback)); 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_METHOD0(Detach, void()); 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~MockObjectProxy(); 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace dbus 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // DBUS_MOCK_OBJECT_PROXY_H_ 67