Index: chrome/browser/extensions/api/bluetooth_low_energy/bluetooth_low_energy_event_router.h |
diff --git a/chrome/browser/extensions/api/bluetooth_low_energy/bluetooth_low_energy_event_router.h b/chrome/browser/extensions/api/bluetooth_low_energy/bluetooth_low_energy_event_router.h |
deleted file mode 100644 |
index a7e6c29a15b6004643819c93f0ccf2218e6e1507..0000000000000000000000000000000000000000 |
--- a/chrome/browser/extensions/api/bluetooth_low_energy/bluetooth_low_energy_event_router.h |
+++ /dev/null |
@@ -1,588 +0,0 @@ |
-// Copyright 2014 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#ifndef CHROME_BROWSER_EXTENSIONS_API_BLUETOOTH_LOW_ENERGY_BLUETOOTH_LOW_ENERGY_EVENT_ROUTER_H_ |
-#define CHROME_BROWSER_EXTENSIONS_API_BLUETOOTH_LOW_ENERGY_BLUETOOTH_LOW_ENERGY_EVENT_ROUTER_H_ |
- |
-#include <cstddef> |
-#include <cstdint> |
-#include <map> |
-#include <set> |
-#include <string> |
-#include <vector> |
- |
-#include "base/callback_forward.h" |
-#include "base/macros.h" |
-#include "base/memory/ref_counted.h" |
-#include "base/memory/weak_ptr.h" |
-#include "base/scoped_observer.h" |
-#include "chrome/common/extensions/api/bluetooth_low_energy.h" |
-#include "device/bluetooth/bluetooth_adapter.h" |
-#include "device/bluetooth/bluetooth_device.h" |
-#include "device/bluetooth/bluetooth_gatt_connection.h" |
-#include "device/bluetooth/bluetooth_gatt_notify_session.h" |
-#include "device/bluetooth/bluetooth_local_gatt_service.h" |
-#include "device/bluetooth/bluetooth_remote_gatt_service.h" |
-#include "device/bluetooth/bluetooth_uuid.h" |
-#include "extensions/browser/extension_event_histogram_value.h" |
-#include "extensions/browser/extension_registry_observer.h" |
- |
-namespace base { |
- |
-class ListValue; |
- |
-} // namespace base |
- |
-namespace content { |
- |
-class BrowserContext; |
- |
-} // namespace content |
- |
-namespace device { |
- |
-class BluetoothLocalGattCharacteristic; |
-class BluetoothLocalGattDescriptor; |
-class BluetoothRemoteGattCharacteristic; |
-class BluetoothRemoteGattDescriptor; |
- |
-} // namespace device |
- |
-namespace extensions { |
- |
-class BluetoothLowEnergyConnection; |
-class BluetoothLowEnergyNotifySession; |
-class Extension; |
-class ExtensionRegistry; |
- |
-// The BluetoothLowEnergyEventRouter is used by the bluetoothLowEnergy API to |
-// interface with the internal Bluetooth API in device/bluetooth. |
-class BluetoothLowEnergyEventRouter |
- : public device::BluetoothAdapter::Observer, |
- public device::BluetoothLocalGattService::Delegate, |
- public extensions::ExtensionRegistryObserver { |
- public: |
- struct AttributeValueRequest { |
- public: |
- enum RequestType { ATTRIBUTE_READ_REQUEST, ATTRIBUTE_WRITE_REQUEST }; |
- |
- AttributeValueRequest(const Delegate::ValueCallback& value_callback, |
- const Delegate::ErrorCallback& error_callback); |
- AttributeValueRequest(const base::Closure& success_callback, |
- const Delegate::ErrorCallback& error_callback); |
- ~AttributeValueRequest(); |
- |
- RequestType type; |
- Delegate::ValueCallback value_callback; |
- base::Closure success_callback; |
- Delegate::ErrorCallback error_callback; |
- |
- private: |
- DISALLOW_COPY_AND_ASSIGN(AttributeValueRequest); |
- }; |
- |
- explicit BluetoothLowEnergyEventRouter(content::BrowserContext* context); |
- ~BluetoothLowEnergyEventRouter() override; |
- |
- // Possible ways that an API method can fail or succeed. |
- enum Status { |
- kStatusSuccess = 0, |
- kStatusErrorAlreadyConnected, |
- kStatusErrorAlreadyNotifying, |
- kStatusErrorAttributeLengthInvalid, |
- kStatusErrorAuthenticationFailed, |
- kStatusErrorCanceled, |
- kStatusErrorConnectionCongested, |
- kStatusErrorFailed, |
- kStatusErrorGattNotSupported, |
- kStatusErrorHigherSecurity, |
- kStatusErrorInProgress, |
- kStatusErrorInsufficientAuthorization, |
- kStatusErrorInsufficientEncryption, |
- kStatusErrorInvalidArguments, |
- kStatusErrorInvalidLength, |
- kStatusErrorNotConnected, |
- kStatusErrorNotFound, |
- kStatusErrorNotNotifying, |
- kStatusErrorOffsetInvalid, |
- kStatusErrorPermissionDenied, |
- kStatusErrorRequestNotSupported, |
- kStatusErrorTimeout, |
- kStatusErrorUnsupportedDevice, |
- kStatusErrorInvalidServiceId, |
- }; |
- |
- // Error callback is used by asynchronous methods to report failures. |
- using ErrorCallback = base::Callback<void(Status)>; |
- |
- // Returns true if Bluetooth is supported on the current platform or if the |
- // internal |adapter_| instance has been initialized for testing. |
- bool IsBluetoothSupported() const; |
- |
- // Obtains a handle on the BluetoothAdapter and invokes |callback|. Returns |
- // false, if Bluetooth is not supported. Otherwise, asynchronously initializes |
- // it and invokes |callback|. Until the first successful call to this method, |
- // none of the methods in this class will succeed and no device::Bluetooth* |
- // API events will be observed. |
- bool InitializeAdapterAndInvokeCallback(const base::Closure& callback); |
- |
- // Returns true, if the BluetoothAdapter was initialized. |
- bool HasAdapter() const; |
- |
- // Creates a GATT connection to the device with address |device_address| for |
- // extension |extension|. The connection is kept alive until the extension is |
- // unloaded, the device is removed, or is disconnect by the host subsystem. |
- // |error_callback| is called with an error status in case of failure. If |
- // |persistent| is true, then the allocated connection resource is persistent |
- // across unloads. |
- void Connect(bool persistent, |
- const Extension* extension, |
- const std::string& device_address, |
- const base::Closure& callback, |
- const ErrorCallback& error_callback); |
- |
- // Disconnects the currently open GATT connection of extension |extension| to |
- // device with address |device_address|. |error_callback| is called with an |
- // error status in case of failure, e.g. if the device is not found or the |
- // given |
- // extension does not have an open connection to the device. |
- void Disconnect(const Extension* extension, |
- const std::string& device_address, |
- const base::Closure& callback, |
- const ErrorCallback& error_callback); |
- |
- // Returns the list of api::bluetooth_low_energy::Service objects |
- // associated with the Bluetooth device with address |device_address| in |
- // |out_services|. |
- // Returns false, if no device with the given address is known. If the device |
- // is found but it has no GATT services, then returns true and leaves |
- // |out_services| empty. Returns true, on success. |out_services| must not |
- // be NULL. If it is non-empty, then its contents will be cleared. |
- typedef std::vector<api::bluetooth_low_energy::Service> ServiceList; |
- bool GetServices(const std::string& device_address, |
- ServiceList* out_services) const; |
- |
- // Populates |out_service| based on GATT service with instance ID |
- // |instance_id|. |out_service| must not be NULL. |
- Status GetService(const std::string& instance_id, |
- api::bluetooth_low_energy::Service* out_service) const; |
- |
- // Populates |out_services| with the list of GATT services that are included |
- // by the GATT service with instance ID |instance_id|. Returns false, if not |
- // GATT service with the given ID is known. If the given service has no |
- // included services, then |out_service| will be empty. |out_service| must not |
- // be NULL. If it is non-empty, then its contents will be cleared. |
- Status GetIncludedServices(const std::string& instance_id, |
- ServiceList* out_services) const; |
- |
- // Returns the list of api::bluetooth_low_energy::Characteristic objects |
- // associated with the GATT service with instance ID |instance_id| in |
- // |out_characteristics|. Returns false, if no service with the given instance |
- // ID is known. If the service is found but it has no characteristics, then |
- // returns true and leaves |out_characteristics| empty. |
- // |out_characteristics| must not be NULL and if it is non-empty, |
- // then its contents will be cleared. |extension| is the extension that made |
- // the call. |
- typedef std::vector<api::bluetooth_low_energy::Characteristic> |
- CharacteristicList; |
- Status GetCharacteristics(const Extension* extension, |
- const std::string& instance_id, |
- CharacteristicList* out_characteristics) const; |
- |
- // Populates |out_characteristic| based on GATT characteristic with instance |
- // ID |instance_id|. |out_characteristic| must not be NULL. |extension| is the |
- // extension that made the call. |
- Status GetCharacteristic( |
- const Extension* extension, |
- const std::string& instance_id, |
- api::bluetooth_low_energy::Characteristic* out_characteristic) const; |
- |
- // Returns the list of api::bluetooth_low_energy::Descriptor objects |
- // associated with the GATT characteristic with instance ID |instance_id| in |
- // |out_descriptors|. If the characteristic is found but it has no |
- // descriptors, then returns true and leaves |out_descriptors| empty. |
- // |out_descriptors| must not be NULL and if it is non-empty, |
- // then its contents will be cleared. |extension| is the extension that made |
- // the call. |
- typedef std::vector<api::bluetooth_low_energy::Descriptor> DescriptorList; |
- Status GetDescriptors(const Extension* extension, |
- const std::string& instance_id, |
- DescriptorList* out_descriptors) const; |
- |
- // Populates |out_descriptor| based on GATT characteristic descriptor with |
- // instance ID |instance_id|. |out_descriptor| must not be NULL. |
- // |extension| is the extension that made the call. |
- Status GetDescriptor( |
- const Extension* extension, |
- const std::string& instance_id, |
- api::bluetooth_low_energy::Descriptor* out_descriptor) const; |
- |
- // Sends a request to read the value of the characteristic with intance ID |
- // |instance_id|. Invokes |callback| on success and |error_callback| on |
- // failure. |extension| is the extension that made the call. |
- void ReadCharacteristicValue(const Extension* extension, |
- const std::string& instance_id, |
- const base::Closure& callback, |
- const ErrorCallback& error_callback); |
- |
- // Sends a request to write the value of the characteristic with instance ID |
- // |instance_id|. Invokes |callback| on success and |error_callback| on |
- // failure. |extension| is the extension that made the call. |
- void WriteCharacteristicValue(const Extension* extension, |
- const std::string& instance_id, |
- const std::vector<uint8_t>& value, |
- const base::Closure& callback, |
- const ErrorCallback& error_callback); |
- |
- // Sends a request to start characteristic notifications from characteristic |
- // with instance ID |instance_id|, for extension |extension|. Invokes |
- // |callback| on success and |error_callback| on failure. If |persistent| is |
- // true, then the allocated connection resource is persistent across unloads. |
- void StartCharacteristicNotifications(bool persistent, |
- const Extension* extension, |
- const std::string& instance_id, |
- const base::Closure& callback, |
- const ErrorCallback& error_callback); |
- |
- // Sends a request to stop characteristic notifications from characteristic |
- // with instance ID |instance_id|, for extension |extension|. Invokes |
- // |callback| on success and |error_callback| on failure. |
- void StopCharacteristicNotifications(const Extension* extension, |
- const std::string& instance_id, |
- const base::Closure& callback, |
- const ErrorCallback& error_callback); |
- |
- // Sends a request to read the value of the descriptor with instance ID |
- // |instance_id|. Invokes |callback| on success and |error_callback| on |
- // failure. |extension| is the extension that made the call. |
- void ReadDescriptorValue(const Extension* extension, |
- const std::string& instance_id, |
- const base::Closure& callback, |
- const ErrorCallback& error_callback); |
- |
- // Sends a request to write the value of the descriptor with instance ID |
- // |instance_id|. Invokes |callback| on success and |error_callback| on |
- // failure. |extension| is the extension that made the call. |
- void WriteDescriptorValue(const Extension* extension, |
- const std::string& instance_id, |
- const std::vector<uint8_t>& value, |
- const base::Closure& callback, |
- const ErrorCallback& error_callback); |
- |
- // Initializes the adapter for testing. Used by unit tests only. |
- void SetAdapterForTesting(device::BluetoothAdapter* adapter); |
- |
- // device::BluetoothAdapter::Observer overrides. |
- void GattServiceAdded(device::BluetoothAdapter* adapter, |
- device::BluetoothDevice* device, |
- device::BluetoothRemoteGattService* service) override; |
- void GattServiceRemoved(device::BluetoothAdapter* adapter, |
- device::BluetoothDevice* device, |
- device::BluetoothRemoteGattService* service) override; |
- void GattDiscoveryCompleteForService( |
- device::BluetoothAdapter* adapter, |
- device::BluetoothRemoteGattService* service) override; |
- void DeviceAddressChanged(device::BluetoothAdapter* adapter, |
- device::BluetoothDevice* device, |
- const std::string& old_address) override; |
- void GattServiceChanged(device::BluetoothAdapter* adapter, |
- device::BluetoothRemoteGattService* service) override; |
- void GattCharacteristicAdded( |
- device::BluetoothAdapter* adapter, |
- device::BluetoothRemoteGattCharacteristic* characteristic) override; |
- void GattCharacteristicRemoved( |
- device::BluetoothAdapter* adapter, |
- device::BluetoothRemoteGattCharacteristic* characteristic) override; |
- void GattDescriptorAdded( |
- device::BluetoothAdapter* adapter, |
- device::BluetoothRemoteGattDescriptor* descriptor) override; |
- void GattDescriptorRemoved( |
- device::BluetoothAdapter* adapter, |
- device::BluetoothRemoteGattDescriptor* descriptor) override; |
- void GattCharacteristicValueChanged( |
- device::BluetoothAdapter* adapter, |
- device::BluetoothRemoteGattCharacteristic* characteristic, |
- const std::vector<uint8_t>& value) override; |
- void GattDescriptorValueChanged( |
- device::BluetoothAdapter* adapter, |
- device::BluetoothRemoteGattDescriptor* descriptor, |
- const std::vector<uint8_t>& value) override; |
- |
- // device::BluetoothLocalGattService::Delegate overrides. |
- void OnCharacteristicReadRequest( |
- const device::BluetoothDevice* device, |
- const device::BluetoothLocalGattCharacteristic* characteristic, |
- int offset, |
- const Delegate::ValueCallback& value_callback, |
- const Delegate::ErrorCallback& error_callback) override; |
- void OnCharacteristicWriteRequest( |
- const device::BluetoothDevice* device, |
- const device::BluetoothLocalGattCharacteristic* characteristic, |
- const std::vector<uint8_t>& value, |
- int offset, |
- const base::Closure& callback, |
- const Delegate::ErrorCallback& error_callback) override; |
- void OnDescriptorReadRequest( |
- const device::BluetoothDevice* device, |
- const device::BluetoothLocalGattDescriptor* descriptor, |
- int offset, |
- const Delegate::ValueCallback& value_callback, |
- const Delegate::ErrorCallback& error_callback) override; |
- void OnDescriptorWriteRequest( |
- const device::BluetoothDevice* device, |
- const device::BluetoothLocalGattDescriptor* descriptor, |
- const std::vector<uint8_t>& value, |
- int offset, |
- const base::Closure& callback, |
- const Delegate::ErrorCallback& error_callback) override; |
- void OnNotificationsStart( |
- const device::BluetoothDevice* device, |
- const device::BluetoothLocalGattCharacteristic* characteristic) override; |
- void OnNotificationsStop( |
- const device::BluetoothDevice* device, |
- const device::BluetoothLocalGattCharacteristic* characteristic) override; |
- |
- // extensions::ExtensionRegistryObserver overrides: |
- void OnExtensionUnloaded( |
- content::BrowserContext* browser_context, |
- const extensions::Extension* extension, |
- extensions::UnloadedExtensionInfo::Reason reason) override; |
- |
- // Adds a mapping for a local characteristic ID to its service ID |
- void AddLocalCharacteristic(const std::string& id, |
- const std::string& service_id); |
- // Returns a BluetoothGattCharacteristic by its ID |id|. |
- // Returns NULL, if the characteristic cannot be found. |
- device::BluetoothLocalGattCharacteristic* GetLocalCharacteristic( |
- const std::string& id) const; |
- |
- // Adds a mapping for a service_id to the id of the app that owns it. |
- void AddServiceToApp(const std::string& app_id, |
- const std::string& service_id); |
- |
- // Removes a mapping for a service_id to the id of the app that owns it. |
- void RemoveServiceFromApp(const std::string& app_id, |
- const std::string& service_id); |
- |
- // Register a local GATT service. |
- void RegisterGattService(const Extension* extension, |
- const std::string& service_id, |
- const base::Closure& callback, |
- const ErrorCallback& error_callback); |
- |
- // Unregister a local GATT service. |
- void UnregisterGattService(const Extension* extension, |
- const std::string& service_id, |
- const base::Closure& callback, |
- const ErrorCallback& error_callback); |
- |
- // Handle a response from the app for the given request id. |
- void HandleRequestResponse(const Extension* extension, |
- size_t request_id, |
- bool is_error, |
- const std::vector<uint8_t>& value); |
- |
- device::BluetoothAdapter* adapter() { return adapter_.get(); } |
- |
- private: |
- // Called by BluetoothAdapterFactory. |
- void OnGetAdapter(const base::Closure& callback, |
- scoped_refptr<device::BluetoothAdapter> adapter); |
- |
- // Initializes the identifier for all existing GATT objects and devices. |
- // Called by OnGetAdapter and SetAdapterForTesting. |
- void InitializeIdentifierMappings(); |
- |
- // Sends the event named |event_name| to all listeners of that event that |
- // have the Bluetooth UUID manifest permission for UUID |uuid| and the |
- // "low_energy" manifest permission, with |args| as the argument to that |
- // event. If the event involves a characteristic, then |characteristic_id| |
- // should be the instance ID of the involved characteristic. Otherwise, an |
- // empty string should be passed. |
- void DispatchEventToExtensionsWithPermission( |
- events::HistogramValue histogram_value, |
- const std::string& event_name, |
- const device::BluetoothUUID& uuid, |
- const std::string& characteristic_id, |
- std::unique_ptr<base::ListValue> args); |
- |
- void DispatchEventToExtension(const std::string& extension_id, |
- events::HistogramValue histogram_value, |
- const std::string& event_name, |
- std::unique_ptr<base::ListValue> args); |
- |
- // Returns a BluetoothRemoteGattService by its instance ID |instance_id|. |
- // Returns |
- // NULL, if the service cannot be found. |
- device::BluetoothRemoteGattService* FindServiceById( |
- const std::string& instance_id) const; |
- |
- // Returns a BluetoothRemoteGattCharacteristic by its instance ID |
- // |instance_id|. |
- // Returns NULL, if the characteristic cannot be found. |
- device::BluetoothRemoteGattCharacteristic* FindCharacteristicById( |
- const std::string& instance_id) const; |
- |
- // Returns a BluetoothRemoteGattDescriptor by its instance ID |instance_id|. |
- // Returns NULL, if the descriptor cannot be found. |
- device::BluetoothRemoteGattDescriptor* FindDescriptorById( |
- const std::string& instance_id) const; |
- |
- // Called by BluetoothRemoteGattCharacteristic and |
- // BluetoothRemoteGattDescriptor in |
- // response to ReadRemoteCharacteristic and ReadRemoteDescriptor. |
- void OnValueSuccess(const base::Closure& callback, |
- const std::vector<uint8_t>& value); |
- |
- // Called by BluetoothDevice in response to a call to CreateGattConnection. |
- void OnCreateGattConnection( |
- bool persistent, |
- const std::string& extension_id, |
- const std::string& device_address, |
- const base::Closure& callback, |
- std::unique_ptr<device::BluetoothGattConnection> connection); |
- |
- // Called by BluetoothGattService in response to Register(). |
- void OnRegisterGattServiceSuccess(const std::string& service_id, |
- const std::string& extension_id, |
- const base::Closure& callback); |
- |
- // Called by BluetoothGattService in response to Unregister(). |
- void OnUnregisterGattServiceSuccess(const std::string& service_id, |
- const std::string& extension_id, |
- const base::Closure& callback); |
- |
- // Called by BluetoothRemoteGattCharacteristic and |
- // BluetoothRemoteGattDescriptor in |
- // case of an error during the read/write operations. |
- void OnError(const ErrorCallback& error_callback, |
- device::BluetoothRemoteGattService::GattErrorCode error_code); |
- |
- // Called by BluetoothDevice in response to a call to CreateGattConnection. |
- void OnConnectError(const std::string& extension_id, |
- const std::string& device_address, |
- const ErrorCallback& error_callback, |
- device::BluetoothDevice::ConnectErrorCode error_code); |
- |
- // Called by BluetoothRemoteGattCharacteristic in response to a call to |
- // StartNotifySession. |
- void OnStartNotifySession( |
- bool persistent, |
- const std::string& extension_id, |
- const std::string& characteristic_id, |
- const base::Closure& callback, |
- std::unique_ptr<device::BluetoothGattNotifySession> session); |
- |
- // Called by BluetoothRemoteGattCharacteristic in response to a call to |
- // StartNotifySession. |
- void OnStartNotifySessionError( |
- const std::string& extension_id, |
- const std::string& characteristic_id, |
- const ErrorCallback& error_callback, |
- device::BluetoothRemoteGattService::GattErrorCode error_code); |
- |
- // Called by BluetoothGattNotifySession in response to a call to Stop. |
- void OnStopNotifySession(const std::string& extension_id, |
- const std::string& characteristic_id, |
- const base::Closure& callback); |
- |
- // Finds and returns a BluetoothLowEnergyConnection to device with address |
- // |device_address| from the managed API resources for extension with ID |
- // |extension_id|. |
- BluetoothLowEnergyConnection* FindConnection( |
- const std::string& extension_id, |
- const std::string& device_address); |
- |
- // Removes the connection to device with address |device_address| from the |
- // managed API resources for extension with ID |extension_id|. Returns false, |
- // if the connection could not be found. |
- bool RemoveConnection(const std::string& extension_id, |
- const std::string& device_address); |
- |
- // Finds and returns a BluetoothLowEnergyNotifySession associated with |
- // characteristic with instance ID |characteristic_id| from the managed API |
- // API resources for extension with ID |extension_id|. |
- BluetoothLowEnergyNotifySession* FindNotifySession( |
- const std::string& extension_id, |
- const std::string& characteristic_id); |
- |
- // Removes the notify session associated with characteristic with |
- // instance ID |characteristic_id| from the managed API resources for |
- // extension with ID |extension_id|. Returns false, if the session could |
- // not be found. |
- bool RemoveNotifySession(const std::string& extension_id, |
- const std::string& characteristic_id); |
- |
- // Stores a request associated with an app and returns the ID of the request. |
- // When an app sends a request to an app for getting/setting an attribute |
- // value, we store that request so when the response comes in, we know where |
- // to forward the results of the request. |
- size_t StoreSentRequest(const std::string& extension_id, |
- std::unique_ptr<AttributeValueRequest> request); |
- |
- // Mapping from instance ids to identifiers of owning instances. The keys are |
- // used to identify individual instances of GATT objects and are used by |
- // bluetoothLowEnergy API functions to obtain the correct GATT object to |
- // operate on. Instance IDs are string identifiers that are returned by the |
- // device/bluetooth API, by calling GetIdentifier() on the corresponding |
- // device::BluetoothGatt* instance. |
- // |
- // This mapping is necessary, as GATT object instances can only be obtained |
- // from the object that owns it, where raw pointers should not be cached. E.g. |
- // to obtain a device::BluetoothRemoteGattCharacteristic, it is necessary to |
- // obtain |
- // a pointer to the associated device::BluetoothDevice, and then to the |
- // device::BluetoothRemoteGattService that owns the characteristic. |
- using InstanceIdMap = std::map<std::string, std::string>; |
- InstanceIdMap service_id_to_device_address_; |
- InstanceIdMap chrc_id_to_service_id_; |
- InstanceIdMap desc_id_to_chrc_id_; |
- |
- // Map of which services are registered by which app. Used to route attribute |
- // read/write events. |
- InstanceIdMap service_id_to_extension_id_; |
- |
- // Pointer to the current BluetoothAdapter instance. This represents a local |
- // Bluetooth adapter of the system. |
- scoped_refptr<device::BluetoothAdapter> adapter_; |
- |
- // Set of extension ID + device addresses to which a connect/disconnect is |
- // currently pending. |
- std::set<std::string> connecting_devices_; |
- std::set<std::string> disconnecting_devices_; |
- |
- // Set of extension ID + characteristic ID to which a request to start a |
- // notify session is currently pending. |
- std::set<std::string> pending_session_calls_; |
- |
- using RequestIdToRequestMap = |
- std::map<size_t, std::unique_ptr<AttributeValueRequest>>; |
- using ExtensionToRequestsMap = |
- std::map<std::string, std::unique_ptr<RequestIdToRequestMap>>; |
- // Map of callback requests sent to the app for attribute value read/write |
- // requests. |
- ExtensionToRequestsMap requests_; |
- // The last request ID we used. |
- size_t last_callback_request_id_; |
- |
- // Map of locally hosted GATT service ids created by app_id. Used for cleanup. |
- std::map<std::string, std::vector<std::string>> app_id_to_service_ids_; |
- |
- // BrowserContext passed during initialization. |
- content::BrowserContext* browser_context_; |
- |
- // Listen to extension unloaded notification. |
- ScopedObserver<ExtensionRegistry, ExtensionRegistryObserver> |
- extension_registry_observer_; |
- |
- // Note: This should remain the last member so it'll be destroyed and |
- // invalidate its weak pointers before any other members are destroyed. |
- base::WeakPtrFactory<BluetoothLowEnergyEventRouter> weak_ptr_factory_; |
- |
- DISALLOW_COPY_AND_ASSIGN(BluetoothLowEnergyEventRouter); |
-}; |
- |
-} // namespace extensions |
- |
-#endif // CHROME_BROWSER_EXTENSIONS_API_BLUETOOTH_LOW_ENERGY_BLUETOOTH_LOW_ENERGY_EVENT_ROUTER_H_ |