Chromium Code Reviews| Index: content/renderer/bluetooth/web_bluetooth_impl.cc |
| diff --git a/content/renderer/bluetooth/web_bluetooth_impl.cc b/content/renderer/bluetooth/web_bluetooth_impl.cc |
| index ec557d632c6fb3cfb12db623882b801e6d0de915..cf7ccdc9020e6376746e62b65ac4f1650d327df3 100644 |
| --- a/content/renderer/bluetooth/web_bluetooth_impl.cc |
| +++ b/content/renderer/bluetooth/web_bluetooth_impl.cc |
| @@ -21,6 +21,7 @@ |
| #include "third_party/WebKit/public/platform/modules/bluetooth/WebBluetoothDeviceInit.h" |
| #include "third_party/WebKit/public/platform/modules/bluetooth/WebBluetoothRemoteGATTCharacteristic.h" |
| #include "third_party/WebKit/public/platform/modules/bluetooth/WebBluetoothRemoteGATTCharacteristicInit.h" |
| +#include "third_party/WebKit/public/platform/modules/bluetooth/WebBluetoothRemoteGATTDescriptorInit.h" |
| #include "third_party/WebKit/public/platform/modules/bluetooth/WebBluetoothRemoteGATTService.h" |
| #include "third_party/WebKit/public/platform/modules/bluetooth/WebRequestDeviceOptions.h" |
| @@ -112,7 +113,7 @@ void WebBluetoothImpl::getCharacteristics( |
| base::Passed(base::WrapUnique(callbacks)))); |
| } |
| -void WebBluetoothImpl::readValue( |
| +void WebBluetoothImpl::characteristicReadValue( |
| const blink::WebString& characteristic_instance_id, |
| blink::WebBluetoothReadValueCallbacks* callbacks) { |
| GetWebBluetoothService().RemoteCharacteristicReadValue( |
| @@ -121,7 +122,7 @@ void WebBluetoothImpl::readValue( |
| base::Passed(base::WrapUnique(callbacks)))); |
| } |
| -void WebBluetoothImpl::writeValue( |
| +void WebBluetoothImpl::characteristicWriteValue( |
| const blink::WebString& characteristic_instance_id, |
| const blink::WebVector<uint8_t>& value, |
| blink::WebBluetoothWriteValueCallbacks* callbacks) { |
| @@ -153,6 +154,25 @@ void WebBluetoothImpl::stopNotifications( |
| base::Passed(base::WrapUnique(callbacks)))); |
| } |
| +void WebBluetoothImpl::getDescriptors( |
| + const blink::WebString& characteristic_instance_id, |
| + int32_t quantity, |
| + const blink::WebString& descriptors_uuid, |
| + blink::WebBluetoothGetDescriptorsCallbacks* callbacks) { |
| + DCHECK(blink::mojom::IsKnownEnumValue( |
| + static_cast<blink::mojom::WebBluetoothGATTQueryQuantity>(quantity))); |
| + |
| + GetWebBluetoothService().RemoteCharacteristicGetDescriptors( |
| + mojo::String::From(characteristic_instance_id), |
| + static_cast<blink::mojom::WebBluetoothGATTQueryQuantity>(quantity), |
| + descriptors_uuid.isEmpty() |
| + ? base::nullopt |
| + : base::make_optional(device::BluetoothUUID(descriptors_uuid.utf8())), |
| + base::Bind(&WebBluetoothImpl::OnGetDescriptorsComplete, |
| + base::Unretained(this), characteristic_instance_id, |
| + base::Passed(base::WrapUnique(callbacks)))); |
| +} |
| + |
| void WebBluetoothImpl::characteristicObjectRemoved( |
| const blink::WebString& characteristic_instance_id, |
| blink::WebBluetoothRemoteGATTCharacteristic* characteristic) { |
| @@ -267,6 +287,29 @@ void WebBluetoothImpl::OnGetCharacteristicsComplete( |
| } |
| } |
| +void WebBluetoothImpl::OnGetDescriptorsComplete( |
| + const blink::WebString& characteristic_instance_id, |
| + std::unique_ptr<blink::WebBluetoothGetDescriptorsCallbacks> callbacks, |
| + blink::mojom::WebBluetoothResult result, |
| + base::Optional< |
| + std::vector<blink::mojom::WebBluetoothRemoteGATTDescriptorPtr>> |
| + descriptors) { |
| + if (result == blink::mojom::WebBluetoothResult::SUCCESS) { |
| + DCHECK(descriptors); |
| + // TODO(dcheng): This WebVector should use smart pointers. |
|
dcheng
2016/12/09 08:17:57
Hmm =)
dougt
2016/12/09 19:20:06
Acknowledged.
Also see: OnGetPrimaryServicesCompl
|
| + blink::WebVector<blink::WebBluetoothRemoteGATTDescriptorInit*> |
| + promise_descriptors(descriptors->size()); |
| + for (size_t i = 0; i < descriptors->size(); i++) { |
| + promise_descriptors[i] = new blink::WebBluetoothRemoteGATTDescriptorInit( |
| + blink::WebString::fromUTF8(descriptors.value()[i]->instance_id), |
| + blink::WebString::fromUTF8(descriptors.value()[i]->uuid)); |
| + } |
| + callbacks->onSuccess(promise_descriptors); |
| + } else { |
| + callbacks->onError(ToInt32(result)); |
| + } |
| +} |
| + |
| void WebBluetoothImpl::OnReadValueComplete( |
| std::unique_ptr<blink::WebBluetoothReadValueCallbacks> callbacks, |
| blink::mojom::WebBluetoothResult result, |