Index: device/bluetooth/android/java/src/org/chromium/device/bluetooth/ChromeBluetoothDevice.java |
diff --git a/device/bluetooth/android/java/src/org/chromium/device/bluetooth/ChromeBluetoothDevice.java b/device/bluetooth/android/java/src/org/chromium/device/bluetooth/ChromeBluetoothDevice.java |
index c55fb4565696d056c314ce2a9c8062094d9aaba1..4c078a7faac573a07e5bb70dd9b0d77224be5a7f 100644 |
--- a/device/bluetooth/android/java/src/org/chromium/device/bluetooth/ChromeBluetoothDevice.java |
+++ b/device/bluetooth/android/java/src/org/chromium/device/bluetooth/ChromeBluetoothDevice.java |
@@ -15,6 +15,7 @@ import org.chromium.base.ThreadUtils; |
import org.chromium.base.annotations.CalledByNative; |
import org.chromium.base.annotations.JNINamespace; |
+import java.util.HashSet; |
import java.util.List; |
/** |
@@ -30,7 +31,7 @@ final class ChromeBluetoothDevice { |
private long mNativeBluetoothDeviceAndroid; |
final Wrappers.BluetoothDeviceWrapper mDevice; |
- private List<ParcelUuid> mUuidsFromScan; |
+ private HashSet<String> mUuidsFromScan; |
Wrappers.BluetoothGattWrapper mBluetoothGatt; |
private final BluetoothGattCallbackImpl mBluetoothGattCallbackImpl; |
@@ -38,6 +39,7 @@ final class ChromeBluetoothDevice { |
long nativeBluetoothDeviceAndroid, Wrappers.BluetoothDeviceWrapper deviceWrapper) { |
mNativeBluetoothDeviceAndroid = nativeBluetoothDeviceAndroid; |
mDevice = deviceWrapper; |
+ mUuidsFromScan = new HashSet<String>(); |
mBluetoothGattCallbackImpl = new BluetoothGattCallbackImpl(); |
Log.v(TAG, "ChromeBluetoothDevice created."); |
} |
@@ -67,12 +69,14 @@ final class ChromeBluetoothDevice { |
// Implements BluetoothDeviceAndroid::UpdateAdvertisedUUIDs. |
@CalledByNative |
private boolean updateAdvertisedUUIDs(List<ParcelUuid> uuidsFromScan) { |
- if ((mUuidsFromScan == null && uuidsFromScan == null) |
- || (mUuidsFromScan != null && mUuidsFromScan.equals(uuidsFromScan))) { |
+ if (uuidsFromScan == null) { |
return false; |
} |
- mUuidsFromScan = uuidsFromScan; |
- return true; |
+ boolean uuidsUpdated = false; |
+ for (ParcelUuid uuid : uuidsFromScan) { |
+ uuidsUpdated |= mUuidsFromScan.add(uuid.toString()); |
+ } |
+ return uuidsUpdated; |
} |
// Implements BluetoothDeviceAndroid::GetBluetoothClass. |
@@ -96,16 +100,9 @@ final class ChromeBluetoothDevice { |
// Implements BluetoothDeviceAndroid::GetUUIDs. |
@CalledByNative |
private String[] getUuids() { |
- int uuidCount = (mUuidsFromScan != null) ? mUuidsFromScan.size() : 0; |
- String[] string_array = new String[uuidCount]; |
- for (int i = 0; i < uuidCount; i++) { |
- string_array[i] = mUuidsFromScan.get(i).toString(); |
- } |
- |
// TODO(scheib): return merged list of UUIDs from scan results and, |
// after a device is connected, discoverServices. crbug.com/508648 |
- |
- return string_array; |
+ return mUuidsFromScan.toArray(new String[mUuidsFromScan.size()]); |
} |
// Implements BluetoothDeviceAndroid::CreateGattConnectionImpl. |