Use PlaybackToMemory for BitmapRasterWorkerPool playback
[chromium-blink-merge.git] / chromeos / dbus / fake_bluetooth_gatt_descriptor_client.h
blob0fee9ae67ab83529823a8698b9ea412baa9623e7
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
3 // found in the LICENSE file.
5 #ifndef CHROMEOS_DBUS_FAKE_BLUETOOTH_GATT_DESCRIPTOR_CLIENT_H_
6 #define CHROMEOS_DBUS_FAKE_BLUETOOTH_GATT_DESCRIPTOR_CLIENT_H_
8 #include <map>
9 #include <string>
11 #include "base/memory/weak_ptr.h"
12 #include "base/observer_list.h"
13 #include "chromeos/chromeos_export.h"
14 #include "chromeos/dbus/bluetooth_gatt_descriptor_client.h"
15 #include "dbus/object_path.h"
17 namespace chromeos {
19 // FakeBluetoothGattDescriptorClient simulates the behavior of the Bluetooth
20 // Daemon GATT characteristic descriptor objects and is used in test cases in
21 // place of a mock and on the Linux desktop.
22 class CHROMEOS_EXPORT FakeBluetoothGattDescriptorClient
23 : public BluetoothGattDescriptorClient {
24 public:
25 struct Properties : public BluetoothGattDescriptorClient::Properties {
26 explicit Properties(const PropertyChangedCallback& callback);
27 virtual ~Properties();
29 // dbus::PropertySet override
30 virtual void Get(dbus::PropertyBase* property,
31 dbus::PropertySet::GetCallback callback) override;
32 virtual void GetAll() override;
33 virtual void Set(dbus::PropertyBase* property,
34 dbus::PropertySet::SetCallback callback) override;
37 FakeBluetoothGattDescriptorClient();
38 virtual ~FakeBluetoothGattDescriptorClient();
40 // DBusClient override.
41 virtual void Init(dbus::Bus* bus) override;
43 // BluetoothGattDescriptorClient overrides.
44 virtual void AddObserver(Observer* observer) override;
45 virtual void RemoveObserver(Observer* observer) override;
46 virtual std::vector<dbus::ObjectPath> GetDescriptors() override;
47 virtual Properties* GetProperties(const dbus::ObjectPath& object_path)
48 override;
49 virtual void ReadValue(const dbus::ObjectPath& object_path,
50 const ValueCallback& callback,
51 const ErrorCallback& error_callback) override;
52 virtual void WriteValue(const dbus::ObjectPath& object_path,
53 const std::vector<uint8>& value,
54 const base::Closure& callback,
55 const ErrorCallback& error_callback) override;
57 // Makes the descriptor with the UUID |uuid| visible under the characteristic
58 // with object path |characteristic_path|. Descriptor object paths are
59 // hierarchical to their characteristics. |uuid| must belong to a descriptor
60 // for which there is a constant defined below, otherwise this method has no
61 // effect. Returns the object path of the created descriptor. In the no-op
62 // case, returns an invalid path.
63 dbus::ObjectPath ExposeDescriptor(const dbus::ObjectPath& characteristic_path,
64 const std::string& uuid);
65 void HideDescriptor(const dbus::ObjectPath& descriptor_path);
67 // Object path components and UUIDs of GATT characteristic descriptors.
68 static const char kClientCharacteristicConfigurationPathComponent[];
69 static const char kClientCharacteristicConfigurationUUID[];
71 private:
72 // Property callback passed when we create Properties structures.
73 void OnPropertyChanged(const dbus::ObjectPath& object_path,
74 const std::string& property_name);
76 // Notifies observers.
77 void NotifyDescriptorAdded(const dbus::ObjectPath& object_path);
78 void NotifyDescriptorRemoved(const dbus::ObjectPath& object_path);
80 // Mapping from object paths to Properties structures.
81 struct DescriptorData {
82 DescriptorData();
83 ~DescriptorData();
85 scoped_ptr<Properties> properties;
86 std::vector<uint8> value;
88 typedef std::map<dbus::ObjectPath, DescriptorData*> PropertiesMap;
89 PropertiesMap properties_;
91 // List of observers interested in event notifications from us.
92 ObserverList<Observer> observers_;
94 // Weak pointer factory for generating 'this' pointers that might live longer
95 // than we do.
96 // Note: This should remain the last member so it'll be destroyed and
97 // invalidate its weak pointers before any other members are destroyed.
98 base::WeakPtrFactory<FakeBluetoothGattDescriptorClient>
99 weak_ptr_factory_;
101 DISALLOW_COPY_AND_ASSIGN(FakeBluetoothGattDescriptorClient);
104 } // namespace chromeos
106 #endif // CHROMEOS_DBUS_FAKE_BLUETOOTH_GATT_DESCRIPTOR_CLIENT_H_