Chromium Code Reviews| Index: device/bluetooth/bluetooth_adapter_android.cc | 
| diff --git a/device/bluetooth/bluetooth_adapter_android.cc b/device/bluetooth/bluetooth_adapter_android.cc | 
| index ec9d0f88f0de201263362f88c46a6fb0356983b8..397257303e21b03b254ffc3c85b10a13d1f6e52f 100644 | 
| --- a/device/bluetooth/bluetooth_adapter_android.cc | 
| +++ b/device/bluetooth/bluetooth_adapter_android.cc | 
| @@ -7,6 +7,7 @@ | 
| #include <memory> | 
| #include "base/android/jni_android.h" | 
| +#include "base/android/jni_array.h" | 
| #include "base/android/jni_string.h" | 
| #include "base/bind.h" | 
| #include "base/location.h" | 
| @@ -21,6 +22,7 @@ | 
| using base::android::AttachCurrentThread; | 
| using base::android::ConvertJavaStringToUTF8; | 
| +using base::android::AppendJavaStringArrayToStringVector; | 
| using base::android::JavaParamRef; | 
| namespace { | 
| @@ -187,23 +189,32 @@ void BluetoothAdapterAndroid::CreateOrUpdateDeviceOnScan( | 
| std::string device_address = ConvertJavaStringToUTF8(env, address); | 
| DevicesMap::const_iterator iter = devices_.find(device_address); | 
| + bool is_new_device = false; | 
| + BluetoothDeviceAndroid* device_android; | 
| 
 
Jeffrey Yasskin
2016/08/18 16:04:33
To track ownership more clearly, I might write thi
 
ortuno
2016/08/19 20:50:33
Done.
 
 | 
| + | 
| if (iter == devices_.end()) { | 
| // New device. | 
| - BluetoothDeviceAndroid* device_android = | 
| + is_new_device = true; | 
| + device_android = | 
| BluetoothDeviceAndroid::Create(this, bluetooth_device_wrapper); | 
| - device_android->UpdateAdvertisedUUIDs(advertised_uuids); | 
| - device_android->UpdateTimestamp(); | 
| + } else { | 
| + // Existing device. | 
| + device_android = static_cast<BluetoothDeviceAndroid*>(iter->second); | 
| + } | 
| + DCHECK(device_android); | 
| + std::vector<std::string> advertised_uuids_strings; | 
| + AppendJavaStringArrayToStringVector(env, advertised_uuids, | 
| 
 
Jeffrey Yasskin
2016/08/18 16:04:32
You're passing a List<ParcelUuid> to a function th
 
ortuno
2016/08/19 20:50:33
Changed the comment to String[]. Done.
 
 | 
| + &advertised_uuids_strings); | 
| + | 
| + device_android->UpdateAdvertisementData(std::move(advertised_uuids_strings), | 
| 
 
Jeffrey Yasskin
2016/08/18 16:04:33
I'm skeptical of having a single function that upd
 
ortuno
2016/08/19 20:50:33
I like having a compile time check to make sure al
 
Jeffrey Yasskin
2016/08/19 22:08:09
'k.
 
 | 
| + {} /* service_data */); | 
| + | 
| + if (is_new_device) { | 
| devices_.add(device_address, | 
| std::unique_ptr<BluetoothDevice>(device_android)); | 
| FOR_EACH_OBSERVER(BluetoothAdapter::Observer, observers_, | 
| DeviceAdded(this, device_android)); | 
| } else { | 
| - // Existing device. | 
| - BluetoothDeviceAndroid* device_android = | 
| - static_cast<BluetoothDeviceAndroid*>(iter->second); | 
| - device_android->UpdateTimestamp(); | 
| - device_android->UpdateAdvertisedUUIDs(advertised_uuids); | 
| - | 
| FOR_EACH_OBSERVER(BluetoothAdapter::Observer, observers_, | 
| DeviceChanged(this, device_android)); | 
| } | 
| @@ -282,6 +293,9 @@ void BluetoothAdapterAndroid::RemoveDiscoverySession( | 
| VLOG(1) << "RemoveDiscoverySession: Now 0 sessions. Stopping scan."; | 
| session_removed = Java_ChromeBluetoothAdapter_stopScan( | 
| AttachCurrentThread(), j_adapter_); | 
| + for (const auto& device_id_object_pair : devices_) { | 
| + device_id_object_pair.second->ClearAdvertisementData(); | 
| + } | 
| } else { | 
| VLOG(1) << "RemoveDiscoverySession: Now " | 
| << unsigned(num_discovery_sessions_) << " sessions."; |