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