| Index: device/bluetooth/android/java/src/org/chromium/device/bluetooth/ChromeBluetoothRemoteGattCharacteristic.java
|
| diff --git a/device/bluetooth/android/java/src/org/chromium/device/bluetooth/ChromeBluetoothRemoteGattCharacteristic.java b/device/bluetooth/android/java/src/org/chromium/device/bluetooth/ChromeBluetoothRemoteGattCharacteristic.java
|
| index 6d19c1f5c164b998025f236e11cb78d87cae0cf9..7d6c50fe381793986e50529a9796adb6cc834da3 100644
|
| --- a/device/bluetooth/android/java/src/org/chromium/device/bluetooth/ChromeBluetoothRemoteGattCharacteristic.java
|
| +++ b/device/bluetooth/android/java/src/org/chromium/device/bluetooth/ChromeBluetoothRemoteGattCharacteristic.java
|
| @@ -148,10 +148,15 @@ final class ChromeBluetoothRemoteGattCharacteristic {
|
| private void createDescriptors() {
|
| List<Wrappers.BluetoothGattDescriptorWrapper> descriptors =
|
| mCharacteristic.getDescriptors();
|
| + // descriptorInstanceId ensures duplicate UUIDs have unique instance
|
| + // IDs. BluetoothGattDescriptor does not offer getInstanceId the way
|
| + // BluetoothGattCharacteristic does.
|
| + //
|
| + // TODO(crbug.com/576906) Do not reuse IDs upon onServicesDiscovered.
|
| + int instanceIdCounter = 0;
|
| for (Wrappers.BluetoothGattDescriptorWrapper descriptor : descriptors) {
|
| - // Create an adapter unique descriptor ID.
|
| - // TODO(crbug.com/576900) Unique descriptorInstanceId duplicate UUID values.
|
| - String descriptorInstanceId = mInstanceId + "/" + descriptor.getUuid().toString();
|
| + String descriptorInstanceId =
|
| + mInstanceId + "/" + descriptor.getUuid().toString() + ";" + instanceIdCounter++;
|
| nativeCreateGattRemoteDescriptor(mNativeBluetoothRemoteGattCharacteristicAndroid,
|
| descriptorInstanceId, descriptor, mChromeDevice);
|
| }
|
|
|