Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 CONTENT_BROWSER_BLUETOOTH_WEB_BLUETOOTH_SERVICE_IMPL_H_ | 5 #ifndef CONTENT_BROWSER_BLUETOOTH_WEB_BLUETOOTH_SERVICE_IMPL_H_ |
| 6 #define CONTENT_BROWSER_BLUETOOTH_WEB_BLUETOOTH_SERVICE_IMPL_H_ | 6 #define CONTENT_BROWSER_BLUETOOTH_WEB_BLUETOOTH_SERVICE_IMPL_H_ |
| 7 | 7 |
| 8 #include <memory> | 8 #include <memory> |
| 9 #include <string> | 9 #include <string> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 89 device::BluetoothRemoteGattCharacteristic* characteristic, | 89 device::BluetoothRemoteGattCharacteristic* characteristic, |
| 90 const std::vector<uint8_t>& value) override; | 90 const std::vector<uint8_t>& value) override; |
| 91 | 91 |
| 92 // Notifies the WebBluetoothServiceClient that characteristic | 92 // Notifies the WebBluetoothServiceClient that characteristic |
| 93 // |characteristic_instance_id| changed it's value. We only do this for | 93 // |characteristic_instance_id| changed it's value. We only do this for |
| 94 // characteristics that have been returned to the client in the past. | 94 // characteristics that have been returned to the client in the past. |
| 95 void NotifyCharacteristicValueChanged( | 95 void NotifyCharacteristicValueChanged( |
| 96 const std::string& characteristic_instance_id, | 96 const std::string& characteristic_instance_id, |
| 97 std::vector<uint8_t> value); | 97 std::vector<uint8_t> value); |
| 98 | 98 |
| 99 void GattDescriptorValueChanged( | |
|
ortuno
2016/11/21 03:34:08
per comment in web_bluetooth.mojom, we don't need
dougt
2016/11/22 01:47:16
Acknowledged.
| |
| 100 device::BluetoothAdapter* adapter, | |
| 101 device::BluetoothRemoteGattDescriptor* descriptor, | |
| 102 const std::vector<uint8_t>& value) override; | |
| 103 | |
| 104 // Notifies the WebBluetoothServiceClient that descriptor | |
| 105 // |descriptor_instance_id| changed it's value. We only do this for | |
| 106 // descriptors that have been returned to the client in the past. | |
| 107 void NotifyDescriptorValueChanged(const std::string& descriptor_instance_id, | |
| 108 std::vector<uint8_t> value); | |
| 109 | |
| 99 // WebBluetoothService methods: | 110 // WebBluetoothService methods: |
| 100 void SetClient( | 111 void SetClient( |
| 101 blink::mojom::WebBluetoothServiceClientAssociatedPtrInfo client) override; | 112 blink::mojom::WebBluetoothServiceClientAssociatedPtrInfo client) override; |
| 102 void RequestDevice(blink::mojom::WebBluetoothRequestDeviceOptionsPtr options, | 113 void RequestDevice(blink::mojom::WebBluetoothRequestDeviceOptionsPtr options, |
| 103 const RequestDeviceCallback& callback) override; | 114 const RequestDeviceCallback& callback) override; |
| 104 void RemoteServerConnect( | 115 void RemoteServerConnect( |
| 105 const WebBluetoothDeviceId& device_id, | 116 const WebBluetoothDeviceId& device_id, |
| 106 const RemoteServerConnectCallback& callback) override; | 117 const RemoteServerConnectCallback& callback) override; |
| 107 void RemoteServerDisconnect(const WebBluetoothDeviceId& device_id) override; | 118 void RemoteServerDisconnect(const WebBluetoothDeviceId& device_id) override; |
| 108 void RemoteServerGetPrimaryServices( | 119 void RemoteServerGetPrimaryServices( |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 121 void RemoteCharacteristicWriteValue( | 132 void RemoteCharacteristicWriteValue( |
| 122 const mojo::String& characteristic_instance_id, | 133 const mojo::String& characteristic_instance_id, |
| 123 mojo::Array<uint8_t> value, | 134 mojo::Array<uint8_t> value, |
| 124 const RemoteCharacteristicWriteValueCallback& callback) override; | 135 const RemoteCharacteristicWriteValueCallback& callback) override; |
| 125 void RemoteCharacteristicStartNotifications( | 136 void RemoteCharacteristicStartNotifications( |
| 126 const mojo::String& characteristic_instance_id, | 137 const mojo::String& characteristic_instance_id, |
| 127 const RemoteCharacteristicStartNotificationsCallback& callback) override; | 138 const RemoteCharacteristicStartNotificationsCallback& callback) override; |
| 128 void RemoteCharacteristicStopNotifications( | 139 void RemoteCharacteristicStopNotifications( |
| 129 const mojo::String& characteristic_instance_id, | 140 const mojo::String& characteristic_instance_id, |
| 130 const RemoteCharacteristicStopNotificationsCallback& callback) override; | 141 const RemoteCharacteristicStopNotificationsCallback& callback) override; |
| 142 void RemoteCharacteristicGetDescriptors( | |
| 143 const mojo::String& service_instance_id, | |
| 144 blink::mojom::WebBluetoothGATTQueryQuantity quantity, | |
| 145 const base::Optional<device::BluetoothUUID>& characteristics_uuid, | |
| 146 const RemoteCharacteristicGetDescriptorsCallback& callback) override; | |
| 147 void RemoteDescriptorReadValue( | |
| 148 const mojo::String& descriptor_instance_id, | |
| 149 const RemoteDescriptorReadValueCallback& callback) override; | |
| 150 void RemoteDescriptorWriteValue( | |
| 151 const mojo::String& descriptor_instance_id, | |
| 152 mojo::Array<uint8_t> value, | |
| 153 const RemoteDescriptorWriteValueCallback& callback) override; | |
| 154 | |
| 155 // Callbacks for BluetoothRemoteGattDescriptor::ReadRemoteDescriptor. | |
|
ortuno
2016/11/21 03:34:08
Move these down with the rest of the callbacks.
dougt
2016/11/22 01:47:16
Acknowledged.
| |
| 156 void OnDescriptorReadValueSuccess( | |
| 157 const RemoteDescriptorReadValueCallback& callback, | |
| 158 const std::vector<uint8_t>& value); | |
| 159 void OnDescriptorReadValueFailed( | |
| 160 const RemoteDescriptorReadValueCallback& callback, | |
| 161 device::BluetoothRemoteGattService::GattErrorCode error_code); | |
| 162 | |
| 163 // Callbacks for BluetoothRemoteGattDescriptor::WriteRemoteDescriptor. | |
| 164 void OnDescriptorWriteValueSuccess( | |
| 165 const RemoteDescriptorWriteValueCallback& callback); | |
| 166 void OnDescriptorWriteValueFailed( | |
| 167 const RemoteDescriptorWriteValueCallback& callback, | |
| 168 device::BluetoothRemoteGattService::GattErrorCode error_code); | |
| 131 | 169 |
| 132 void RequestDeviceImpl( | 170 void RequestDeviceImpl( |
| 133 blink::mojom::WebBluetoothRequestDeviceOptionsPtr options, | 171 blink::mojom::WebBluetoothRequestDeviceOptionsPtr options, |
| 134 const RequestDeviceCallback& callback, | 172 const RequestDeviceCallback& callback, |
| 135 device::BluetoothAdapter* adapter); | 173 device::BluetoothAdapter* adapter); |
| 136 | 174 |
| 137 // Should only be run after the services have been discovered for | 175 // Should only be run after the services have been discovered for |
| 138 // |device_address|. | 176 // |device_address|. |
| 139 void RemoteServerGetPrimaryServicesImpl( | 177 void RemoteServerGetPrimaryServicesImpl( |
| 140 const WebBluetoothDeviceId& device_id, | 178 const WebBluetoothDeviceId& device_id, |
| (...skipping 15 matching lines...) Expand all Loading... | |
| 156 const WebBluetoothDeviceId& device_id, | 194 const WebBluetoothDeviceId& device_id, |
| 157 base::TimeTicks start_time, | 195 base::TimeTicks start_time, |
| 158 const RemoteServerConnectCallback& callback, | 196 const RemoteServerConnectCallback& callback, |
| 159 std::unique_ptr<device::BluetoothGattConnection> connection); | 197 std::unique_ptr<device::BluetoothGattConnection> connection); |
| 160 void OnCreateGATTConnectionFailed( | 198 void OnCreateGATTConnectionFailed( |
| 161 base::TimeTicks start_time, | 199 base::TimeTicks start_time, |
| 162 const RemoteServerConnectCallback& callback, | 200 const RemoteServerConnectCallback& callback, |
| 163 device::BluetoothDevice::ConnectErrorCode error_code); | 201 device::BluetoothDevice::ConnectErrorCode error_code); |
| 164 | 202 |
| 165 // Callbacks for BluetoothRemoteGattCharacteristic::ReadRemoteCharacteristic. | 203 // Callbacks for BluetoothRemoteGattCharacteristic::ReadRemoteCharacteristic. |
| 166 void OnReadValueSuccess(const RemoteCharacteristicReadValueCallback& callback, | 204 void OnCharacteristicReadValueSuccess( |
| 167 const std::vector<uint8_t>& value); | 205 const RemoteCharacteristicReadValueCallback& callback, |
| 168 void OnReadValueFailed( | 206 const std::vector<uint8_t>& value); |
| 207 void OnCharacteristicReadValueFailed( | |
| 169 const RemoteCharacteristicReadValueCallback& callback, | 208 const RemoteCharacteristicReadValueCallback& callback, |
| 170 device::BluetoothRemoteGattService::GattErrorCode error_code); | 209 device::BluetoothRemoteGattService::GattErrorCode error_code); |
| 171 | 210 |
| 172 // Callbacks for BluetoothRemoteGattCharacteristic::WriteRemoteCharacteristic. | 211 // Callbacks for BluetoothRemoteGattCharacteristic::WriteRemoteCharacteristic. |
| 173 void OnWriteValueSuccess( | 212 void OnCharacteristicWriteValueSuccess( |
| 174 const RemoteCharacteristicWriteValueCallback& callback); | 213 const RemoteCharacteristicWriteValueCallback& callback); |
| 175 void OnWriteValueFailed( | 214 void OnCharacteristicWriteValueFailed( |
| 176 const RemoteCharacteristicWriteValueCallback& callback, | 215 const RemoteCharacteristicWriteValueCallback& callback, |
| 177 device::BluetoothRemoteGattService::GattErrorCode error_code); | 216 device::BluetoothRemoteGattService::GattErrorCode error_code); |
| 178 | 217 |
| 179 // Callbacks for BluetoothRemoteGattCharacteristic::StartNotifySession. | 218 // Callbacks for BluetoothRemoteGattCharacteristic::StartNotifySession. |
| 180 void OnStartNotifySessionSuccess( | 219 void OnStartNotifySessionSuccess( |
| 181 const RemoteCharacteristicStartNotificationsCallback& callback, | 220 const RemoteCharacteristicStartNotificationsCallback& callback, |
| 182 std::unique_ptr<device::BluetoothGattNotifySession> notify_session); | 221 std::unique_ptr<device::BluetoothGattNotifySession> notify_session); |
| 183 void OnStartNotifySessionFailed( | 222 void OnStartNotifySessionFailed( |
| 184 const RemoteCharacteristicStartNotificationsCallback& callback, | 223 const RemoteCharacteristicStartNotificationsCallback& callback, |
| 185 device::BluetoothRemoteGattService::GattErrorCode error_code); | 224 device::BluetoothRemoteGattService::GattErrorCode error_code); |
| (...skipping 18 matching lines...) Expand all Loading... | |
| 204 // Queries the platform cache for a Service with |service_instance_id|. Fills | 243 // Queries the platform cache for a Service with |service_instance_id|. Fills |
| 205 // in the |outcome| field, and |device| and |service| fields if successful. | 244 // in the |outcome| field, and |device| and |service| fields if successful. |
| 206 CacheQueryResult QueryCacheForService(const std::string& service_instance_id); | 245 CacheQueryResult QueryCacheForService(const std::string& service_instance_id); |
| 207 | 246 |
| 208 // Queries the platform cache for a characteristic with | 247 // Queries the platform cache for a characteristic with |
| 209 // |characteristic_instance_id|. Fills in the |outcome| field, and |device|, | 248 // |characteristic_instance_id|. Fills in the |outcome| field, and |device|, |
| 210 // |service| and |characteristic| fields if successful. | 249 // |service| and |characteristic| fields if successful. |
| 211 CacheQueryResult QueryCacheForCharacteristic( | 250 CacheQueryResult QueryCacheForCharacteristic( |
| 212 const std::string& characteristic_instance_id); | 251 const std::string& characteristic_instance_id); |
| 213 | 252 |
| 253 // Queries the platform cache for a descriptor with | |
| 254 // |descriptor_instance_id|. Fills in the |outcome| field, and |device|, | |
| 255 // |service| and |descriptor| fields if successful. | |
|
ortuno
2016/11/21 03:34:08
|service|, |characteristic|, and |descriptor|
dougt
2016/11/22 01:47:16
Acknowledged.
| |
| 256 CacheQueryResult QueryCacheForDescriptor( | |
| 257 const std::string& descriptor_instance_id); | |
| 258 | |
| 214 RenderProcessHost* GetRenderProcessHost(); | 259 RenderProcessHost* GetRenderProcessHost(); |
| 215 device::BluetoothAdapter* GetAdapter(); | 260 device::BluetoothAdapter* GetAdapter(); |
| 216 url::Origin GetOrigin(); | 261 url::Origin GetOrigin(); |
| 217 | 262 |
| 218 // Clears all state (maps, sets, etc). | 263 // Clears all state (maps, sets, etc). |
| 219 void ClearState(); | 264 void ClearState(); |
| 220 | 265 |
| 221 // Used to open a BluetoothChooser and start a device discovery session. | 266 // Used to open a BluetoothChooser and start a device discovery session. |
| 222 std::unique_ptr<BluetoothDeviceChooserController> device_chooser_controller_; | 267 std::unique_ptr<BluetoothDeviceChooserController> device_chooser_controller_; |
| 223 | 268 |
| 224 // Keeps track of which devices the frame's origin is allowed to access. | 269 // Keeps track of which devices the frame's origin is allowed to access. |
| 225 BluetoothAllowedDevicesMap allowed_devices_map_; | 270 BluetoothAllowedDevicesMap allowed_devices_map_; |
| 226 | 271 |
| 227 // Maps to get the object's parent based on its instanceID. | 272 // Maps to get the object's parent based on its instanceID. |
| 228 std::unordered_map<std::string, std::string> service_id_to_device_address_; | 273 std::unordered_map<std::string, std::string> service_id_to_device_address_; |
| 229 std::unordered_map<std::string, std::string> characteristic_id_to_service_id_; | 274 std::unordered_map<std::string, std::string> characteristic_id_to_service_id_; |
| 275 std::unordered_map<std::string, std::string> | |
| 276 descriptor_id_to_characteristic_id_; | |
| 230 | 277 |
| 231 // Map to keep track of the connected Bluetooth devices. | 278 // Map to keep track of the connected Bluetooth devices. |
| 232 std::unique_ptr<FrameConnectedBluetoothDevices> connected_devices_; | 279 std::unique_ptr<FrameConnectedBluetoothDevices> connected_devices_; |
| 233 | 280 |
| 234 // Maps a device address to callbacks that are waiting for services to | 281 // Maps a device address to callbacks that are waiting for services to |
| 235 // be discovered for that device. | 282 // be discovered for that device. |
| 236 std::unordered_map<std::string, std::vector<PrimaryServicesRequestCallback>> | 283 std::unordered_map<std::string, std::vector<PrimaryServicesRequestCallback>> |
| 237 pending_primary_services_requests_; | 284 pending_primary_services_requests_; |
| 238 | 285 |
| 239 // Map to keep track of the characteristics' notify sessions. | 286 // Map to keep track of the characteristics' notify sessions. |
| (...skipping 13 matching lines...) Expand all Loading... | |
| 253 mojo::Binding<blink::mojom::WebBluetoothService> binding_; | 300 mojo::Binding<blink::mojom::WebBluetoothService> binding_; |
| 254 | 301 |
| 255 base::WeakPtrFactory<WebBluetoothServiceImpl> weak_ptr_factory_; | 302 base::WeakPtrFactory<WebBluetoothServiceImpl> weak_ptr_factory_; |
| 256 | 303 |
| 257 DISALLOW_COPY_AND_ASSIGN(WebBluetoothServiceImpl); | 304 DISALLOW_COPY_AND_ASSIGN(WebBluetoothServiceImpl); |
| 258 }; | 305 }; |
| 259 | 306 |
| 260 } // namespace content | 307 } // namespace content |
| 261 | 308 |
| 262 #endif // CONTENT_BROWSER_BLUETOOTH_WEB_BLUETOOTH_SERVICE_IMPL_H_ | 309 #endif // CONTENT_BROWSER_BLUETOOTH_WEB_BLUETOOTH_SERVICE_IMPL_H_ |
| OLD | NEW |