Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(157)

Side by Side Diff: device/bluetooth/dbus/fake_bluetooth_gatt_manager_client.h

Issue 1914893002: DBus changes for implementing local GATT attributes. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@bluetooth_classes
Patch Set: test leak fix Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef DEVICE_BLUETOOTH_DBUS_FAKE_BLUETOOTH_GATT_MANAGER_CLIENT_H_ 5 #ifndef DEVICE_BLUETOOTH_DBUS_FAKE_BLUETOOTH_GATT_MANAGER_CLIENT_H_
6 #define DEVICE_BLUETOOTH_DBUS_FAKE_BLUETOOTH_GATT_MANAGER_CLIENT_H_ 6 #define DEVICE_BLUETOOTH_DBUS_FAKE_BLUETOOTH_GATT_MANAGER_CLIENT_H_
7 7
8 #include <map> 8 #include <map>
9 #include <string> 9 #include <set>
10 #include <utility> 10 #include <utility>
11 11
12 #include "base/callback.h" 12 #include "base/callback_forward.h"
13 #include "base/macros.h" 13 #include "base/macros.h"
14 #include "dbus/bus.h"
14 #include "dbus/object_path.h" 15 #include "dbus/object_path.h"
15 #include "device/bluetooth/bluetooth_export.h" 16 #include "device/bluetooth/bluetooth_export.h"
16 #include "device/bluetooth/dbus/bluetooth_gatt_manager_client.h" 17 #include "device/bluetooth/dbus/bluetooth_gatt_manager_client.h"
18 #include "device/bluetooth/dbus/fake_bluetooth_gatt_application_service_provider .h"
19 #include "device/bluetooth/dbus/fake_bluetooth_gatt_characteristic_service_provi der.h"
20 #include "device/bluetooth/dbus/fake_bluetooth_gatt_descriptor_service_provider. h"
21 #include "device/bluetooth/dbus/fake_bluetooth_gatt_service_service_provider.h"
17 22
18 namespace bluez { 23 namespace bluez {
19 24
25 class FakeBluetoothGattApplicationServiceProvider;
20 class FakeBluetoothGattCharacteristicServiceProvider; 26 class FakeBluetoothGattCharacteristicServiceProvider;
21 class FakeBluetoothGattDescriptorServiceProvider; 27 class FakeBluetoothGattDescriptorServiceProvider;
22 class FakeBluetoothGattServiceServiceProvider; 28 class FakeBluetoothGattServiceServiceProvider;
23 29
24 // FakeBluetoothGattManagerClient simulates the behavior of the Bluetooth 30 // FakeBluetoothGattManagerClient simulates the behavior of the Bluetooth
25 // daemon's GATT manager object and is used both in test cases in place of a 31 // daemon's GATT manager object and is used both in test cases in place of a
26 // mock and on the Linux desktop. 32 // mock and on the Linux desktop.
27 class DEVICE_BLUETOOTH_EXPORT FakeBluetoothGattManagerClient 33 class DEVICE_BLUETOOTH_EXPORT FakeBluetoothGattManagerClient
28 : public BluetoothGattManagerClient { 34 : public BluetoothGattManagerClient {
29 public: 35 public:
30 FakeBluetoothGattManagerClient(); 36 FakeBluetoothGattManagerClient();
31 ~FakeBluetoothGattManagerClient() override; 37 ~FakeBluetoothGattManagerClient() override;
32 38
33 // DBusClient override. 39 // DBusClient override.
34 void Init(dbus::Bus* bus) override; 40 void Init(dbus::Bus* bus) override;
35 41
36 // BluetoothGattManagerClient overrides. 42 // BluetoothGattManagerClient overrides.
37 void RegisterService(const dbus::ObjectPath& service_path, 43 void RegisterApplication(const dbus::ObjectPath& application_path,
38 const Options& options, 44 const Options& options,
39 const base::Closure& callback, 45 const base::Closure& callback,
40 const ErrorCallback& error_callback) override; 46 const ErrorCallback& error_callback) override;
41 void UnregisterService(const dbus::ObjectPath& service_path, 47 void UnregisterApplication(const dbus::ObjectPath& application_path,
42 const base::Closure& callback, 48 const base::Closure& callback,
43 const ErrorCallback& error_callback) override; 49 const ErrorCallback& error_callback) override;
44 50
45 // Register, unregister, and retrieve pointers to service, characteristic, and 51 // Register, unregister, and retrieve pointers to application service
46 // descriptor service providers. Automatically called from the service 52 // providers. Automatically called from the application provider constructor
47 // provider constructor and destructors. 53 // and destructors.
54 void RegisterApplicationServiceProvider(
55 FakeBluetoothGattApplicationServiceProvider* provider);
48 void RegisterServiceServiceProvider( 56 void RegisterServiceServiceProvider(
49 FakeBluetoothGattServiceServiceProvider* provider); 57 FakeBluetoothGattServiceServiceProvider* provider);
50 void RegisterCharacteristicServiceProvider( 58 void RegisterCharacteristicServiceProvider(
51 FakeBluetoothGattCharacteristicServiceProvider* provider); 59 FakeBluetoothGattCharacteristicServiceProvider* provider);
52 void RegisterDescriptorServiceProvider( 60 void RegisterDescriptorServiceProvider(
53 FakeBluetoothGattDescriptorServiceProvider* provider); 61 FakeBluetoothGattDescriptorServiceProvider* provider);
54 62
63 void UnregisterApplicationServiceProvider(
64 FakeBluetoothGattApplicationServiceProvider* provider);
55 void UnregisterServiceServiceProvider( 65 void UnregisterServiceServiceProvider(
56 FakeBluetoothGattServiceServiceProvider* provider); 66 FakeBluetoothGattServiceServiceProvider* provider);
57 void UnregisterCharacteristicServiceProvider( 67 void UnregisterCharacteristicServiceProvider(
58 FakeBluetoothGattCharacteristicServiceProvider* provider); 68 FakeBluetoothGattCharacteristicServiceProvider* provider);
59 void UnregisterDescriptorServiceProvider( 69 void UnregisterDescriptorServiceProvider(
60 FakeBluetoothGattDescriptorServiceProvider* provider); 70 FakeBluetoothGattDescriptorServiceProvider* provider);
61 71
62 // Return a pointer to the service provider that corresponds to the object 72 // Return a pointer to the service provider that corresponds to the object
63 // path |object_path| if it exists. 73 // path |object_path| if it exists.
64 FakeBluetoothGattServiceServiceProvider* GetServiceServiceProvider( 74 FakeBluetoothGattServiceServiceProvider* GetServiceServiceProvider(
65 const dbus::ObjectPath& object_path) const; 75 const dbus::ObjectPath& object_path) const;
66 FakeBluetoothGattCharacteristicServiceProvider* 76 FakeBluetoothGattCharacteristicServiceProvider*
67 GetCharacteristicServiceProvider(const dbus::ObjectPath& object_path) const; 77 GetCharacteristicServiceProvider(const dbus::ObjectPath& object_path) const;
68 FakeBluetoothGattDescriptorServiceProvider* GetDescriptorServiceProvider( 78 FakeBluetoothGattDescriptorServiceProvider* GetDescriptorServiceProvider(
69 const dbus::ObjectPath& object_path) const; 79 const dbus::ObjectPath& object_path) const;
70 80
71 // Returns true, if a GATT service with object path |object_path| was
72 // registered with the GATT manager using RegisterService.
73 bool IsServiceRegistered(const dbus::ObjectPath& object_path) const; 81 bool IsServiceRegistered(const dbus::ObjectPath& object_path) const;
74 82
75 private: 83 private:
76 // Mappings for GATT service, characteristic, and descriptor service 84 // The boolean indicates whether this application service provider is
77 // providers. The fake GATT manager stores references to all instances 85 // registered or not.
78 // created so that they can be obtained by tests. 86 using ApplicationProvider =
79 typedef std::map<dbus::ObjectPath, 87 std::pair<FakeBluetoothGattApplicationServiceProvider*, bool>;
80 FakeBluetoothGattCharacteristicServiceProvider*>
81 CharacteristicMap;
82 typedef std::map<dbus::ObjectPath,
83 FakeBluetoothGattDescriptorServiceProvider*> DescriptorMap;
84 88
85 // The mapping for services is from object paths to pairs of boolean and 89 // Mappings for GATT application, service, characteristic, and descriptor
86 // service provider pointer, where the boolean denotes whether or not the 90 // service providers. The fake GATT manager stores references to all
87 // service is already registered. 91 // instances created so that they can be obtained by tests.
88 typedef std::pair<bool, FakeBluetoothGattServiceServiceProvider*> 92 using ApplicationMap = std::map<dbus::ObjectPath, ApplicationProvider>;
89 ServiceProvider; 93 using ServiceMap =
90 typedef std::map<dbus::ObjectPath, ServiceProvider> ServiceMap; 94 std::map<dbus::ObjectPath, FakeBluetoothGattServiceServiceProvider*>;
95 using CharacteristicMap =
96 std::map<dbus::ObjectPath,
97 FakeBluetoothGattCharacteristicServiceProvider*>;
98 using DescriptorMap =
99 std::map<dbus::ObjectPath, FakeBluetoothGattDescriptorServiceProvider*>;
91 100
101 // Return a pointer to the Application provider that corresponds to the object
102 // path |object_path| if it exists.
103 ApplicationProvider* GetApplicationServiceProvider(
104 const dbus::ObjectPath& object_path);
105
106 // Find attribute providers in this application.
107 std::set<dbus::ObjectPath> FindServiceProviders(
108 dbus::ObjectPath application_path);
109 std::set<dbus::ObjectPath> FindCharacteristicProviders(
110 dbus::ObjectPath application_path);
111 std::set<dbus::ObjectPath> FindDescriptorProviders(
112 dbus::ObjectPath application_path);
113
114 // Verify that the attribute hierarchy exposed by this application provider
115 // is correct. i.e., all descriptors have a characteristic, which all have a
116 // service and all the attributes are under this application's object path.
117 bool VerifyProviderHierarchy(
118 FakeBluetoothGattApplicationServiceProvider* application_provider);
119
120 ApplicationMap application_map_;
92 ServiceMap service_map_; 121 ServiceMap service_map_;
93 CharacteristicMap characteristic_map_; 122 CharacteristicMap characteristic_map_;
94 DescriptorMap descriptor_map_; 123 DescriptorMap descriptor_map_;
95 124
96 DISALLOW_COPY_AND_ASSIGN(FakeBluetoothGattManagerClient); 125 DISALLOW_COPY_AND_ASSIGN(FakeBluetoothGattManagerClient);
97 }; 126 };
98 127
99 } // namespace bluez 128 } // namespace bluez
100 129
101 #endif // DEVICE_BLUETOOTH_DBUS_FAKE_BLUETOOTH_GATT_MANAGER_CLIENT_H_ 130 #endif // DEVICE_BLUETOOTH_DBUS_FAKE_BLUETOOTH_GATT_MANAGER_CLIENT_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698