fake_bluetooth_profile_manager_client.h revision 424c4d7b64af9d0d8fd9624f381f469654d5e3d2
1c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved. 2c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// found in the LICENSE file. 4c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 5c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#ifndef CHROMEOS_DBUS_FAKE_BLUETOOTH_PROFILE_MANAGER_CLIENT_H_ 6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#define CHROMEOS_DBUS_FAKE_BLUETOOTH_PROFILE_MANAGER_CLIENT_H_ 7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 8b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)#include <map> 9b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)#include <string> 10b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "base/bind.h" 12c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "base/callback.h" 13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "base/observer_list.h" 14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chromeos/chromeos_export.h" 157d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "chromeos/dbus/bluetooth_profile_manager_client.h" 16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chromeos/dbus/dbus_client_implementation_type.h" 17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "dbus/object_path.h" 18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "dbus/property.h" 19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace chromeos { 21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 22b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)class FakeBluetoothProfileServiceProvider; 23b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// FakeBluetoothProfileManagerClient simulates the behavior of the Bluetooth 25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Daemon's profile manager object and is used both in test cases in place of a 26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// mock and on the Linux desktop. 27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class CHROMEOS_EXPORT FakeBluetoothProfileManagerClient 287d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) : public BluetoothProfileManagerClient { 29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public: 30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) FakeBluetoothProfileManagerClient(); 31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual ~FakeBluetoothProfileManagerClient(); 32c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 33424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) // BluetoothProfileManagerClient overrides 34424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) virtual void Init(dbus::Bus* bus) OVERRIDE; 35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual void RegisterProfile(const dbus::ObjectPath& profile_path, 36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string& uuid, 37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const Options& options, 38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const base::Closure& callback, 39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const ErrorCallback& error_callback) OVERRIDE; 40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual void UnregisterProfile(const dbus::ObjectPath& profile_path, 41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const base::Closure& callback, 42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const ErrorCallback& error_callback) OVERRIDE; 43b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 44b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) // Register, unregister and retrieve pointers to profile server providers. 45b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) void RegisterProfileServiceProvider( 46b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) FakeBluetoothProfileServiceProvider* service_provider); 47b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) void UnregisterProfileServiceProvider( 48b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) FakeBluetoothProfileServiceProvider* service_provider); 49b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) FakeBluetoothProfileServiceProvider* GetProfileServiceProvider( 50b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) const std::string& uuid); 51b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 52b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) // UUIDs recognised for testing. 53b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) static const char kL2capUuid[]; 54b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) static const char kRfcommUuid[]; 55b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 56b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) private: 57b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) // Map of a D-Bus object path to the FakeBluetoothProfileServiceProvider 58b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) // registered for it; maintained by RegisterProfileServiceProvider() and 59b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) // UnregisterProfileServiceProvicer() called by the constructor and 60b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) // destructor of FakeBluetoothProfileServiceProvider. 61b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) typedef std::map<dbus::ObjectPath, FakeBluetoothProfileServiceProvider*> 62b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) ServiceProviderMap; 63b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) ServiceProviderMap service_provider_map_; 64b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 65b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) // Map of Profile UUID to the D-Bus object path of the service provider 66b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) // in |service_provider_map_|. Maintained by RegisterProfile() and 67b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) // UnregisterProfile() in response to BluetoothProfile methods. 68b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) typedef std::map<std::string, dbus::ObjectPath> ProfileMap; 69b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) ProfileMap profile_map_; 70c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}; 71c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 72c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace chromeos 73c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 74c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#endif // CHROMEOS_DBUS_FAKE_BLUETOOTH_PROFILE_MANAGER_CLIENT_H_ 75