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