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 "dbus/object_path.h" 17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "dbus/property.h" 18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace chromeos { 20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 21b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)class FakeBluetoothProfileServiceProvider; 22b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// FakeBluetoothProfileManagerClient simulates the behavior of the Bluetooth 24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Daemon's profile manager object and is used both in test cases in place of a 25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// mock and on the Linux desktop. 26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class CHROMEOS_EXPORT FakeBluetoothProfileManagerClient 277d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) : public BluetoothProfileManagerClient { 28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public: 29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) FakeBluetoothProfileManagerClient(); 30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual ~FakeBluetoothProfileManagerClient(); 31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 32424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) // BluetoothProfileManagerClient overrides 33424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) virtual void Init(dbus::Bus* bus) OVERRIDE; 34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual void RegisterProfile(const dbus::ObjectPath& profile_path, 35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string& uuid, 36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const Options& options, 37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const base::Closure& callback, 38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const ErrorCallback& error_callback) OVERRIDE; 39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual void UnregisterProfile(const dbus::ObjectPath& profile_path, 40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const base::Closure& callback, 41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const ErrorCallback& error_callback) OVERRIDE; 42b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 43b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) // Register, unregister and retrieve pointers to profile server providers. 44b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) void RegisterProfileServiceProvider( 45b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) FakeBluetoothProfileServiceProvider* service_provider); 46b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) void UnregisterProfileServiceProvider( 47b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) FakeBluetoothProfileServiceProvider* service_provider); 48b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) FakeBluetoothProfileServiceProvider* GetProfileServiceProvider( 49b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) const std::string& uuid); 50b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 51b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) // UUIDs recognised for testing. 52b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) static const char kL2capUuid[]; 53b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) static const char kRfcommUuid[]; 54b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 55b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) private: 56b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) // Map of a D-Bus object path to the FakeBluetoothProfileServiceProvider 57b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) // registered for it; maintained by RegisterProfileServiceProvider() and 58b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) // UnregisterProfileServiceProvicer() called by the constructor and 59b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) // destructor of FakeBluetoothProfileServiceProvider. 60b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) typedef std::map<dbus::ObjectPath, FakeBluetoothProfileServiceProvider*> 61b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) ServiceProviderMap; 62b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) ServiceProviderMap service_provider_map_; 63b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 64b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) // Map of Profile UUID to the D-Bus object path of the service provider 65b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) // in |service_provider_map_|. Maintained by RegisterProfile() and 66b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) // UnregisterProfile() in response to BluetoothProfile methods. 67b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) typedef std::map<std::string, dbus::ObjectPath> ProfileMap; 68b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) ProfileMap profile_map_; 69c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}; 70c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 71c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace chromeos 72c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 73c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#endif // CHROMEOS_DBUS_FAKE_BLUETOOTH_PROFILE_MANAGER_CLIENT_H_ 74