Chromium Code Reviews| Index: device/bluetooth/bluetooth_adapter_mac.mm |
| diff --git a/device/bluetooth/bluetooth_adapter_mac.mm b/device/bluetooth/bluetooth_adapter_mac.mm |
| index 10f763901184d4b89d06938545d72d305cd030cd..e7781a5700bb365125f40cef11726a3f2f08de70 100644 |
| --- a/device/bluetooth/bluetooth_adapter_mac.mm |
| +++ b/device/bluetooth/bluetooth_adapter_mac.mm |
| @@ -502,11 +502,16 @@ void BluetoothAdapterMac::ClassicDeviceAdded(IOBluetoothDevice* device) { |
| } |
| device_classic = new BluetoothClassicDeviceMac(this, device); |
| - devices_.set(device_address, base::WrapUnique(device_classic)); |
| VLOG(1) << "Adding new classic device: " << device_classic->GetAddress(); |
| + auto insertion = devices_.insert( |
| + std::make_pair(device_address, std::move(device_classic))); |
| + if (!insertion.second) { |
| + VLOG(1) << "Insertion of device_classic failed."; |
| + return; |
| + } |
| for (auto& observer : observers_) |
| - observer.DeviceAdded(this, device_classic); |
| + observer.DeviceAdded(this, insertion.first->second.get()); |
| } |
| void BluetoothAdapterMac::LowEnergyDeviceUpdated( |
| @@ -566,9 +571,15 @@ void BluetoothAdapterMac::LowEnergyDeviceUpdated( |
| if (is_new_device) { |
| std::string device_address = |
| BluetoothLowEnergyDeviceMac::GetPeripheralHashAddress(peripheral); |
| - devices_.add(device_address, std::unique_ptr<BluetoothDevice>(device_mac)); |
| + auto insertion = |
| + devices_.insert(std::make_pair(device_address, std::move(device_mac))); |
| + |
| + if (!insertion.second) { |
| + VLOG(1) << "Insertion of device_mac failed."; |
| + return; |
| + } |
| for (auto& observer : observers_) |
| - observer.DeviceAdded(this, device_mac); |
| + observer.DeviceAdded(this, insertion.first->second.get()); |
| } else { |
| for (auto& observer : observers_) |
| observer.DeviceChanged(this, device_mac); |
| @@ -620,8 +631,10 @@ BluetoothAdapterMac::RetrieveGattConnectedDevicesWithService( |
| device_mac = new BluetoothLowEnergyDeviceMac(this, peripheral); |
| std::string device_address = |
| BluetoothLowEnergyDeviceMac::GetPeripheralHashAddress(peripheral); |
| - devices_.add(device_address, |
| - std::unique_ptr<BluetoothDevice>(device_mac)); |
| + devices_.insert(std::make_pair(device_address, std::move(device_mac))); |
| + |
| + // this will fail because device_mac is used. Might need to be shared |
| + // because it's in two arrays |
|
Reilly Grant (use Gerrit)
2016/12/21 22:25:13
This looks like an unfinished TODO in your patch.
dougt
2016/12/22 01:18:02
Done.
Reilly Grant (use Gerrit)
2016/12/22 22:00:52
Do the same insertion check here you do in bluetoo
|
| for (auto& observer : observers_) { |
| observer.DeviceAdded(this, device_mac); |
| } |
| @@ -698,7 +711,7 @@ BluetoothAdapterMac::GetBluetoothLowEnergyDeviceMac(CBPeripheral* peripheral) { |
| if (iter == devices_.end()) { |
| return nil; |
| } |
| - return static_cast<BluetoothLowEnergyDeviceMac*>(iter->second); |
| + return static_cast<BluetoothLowEnergyDeviceMac*>(iter->second.get()); |
| } |
| bool BluetoothAdapterMac::DoesCollideWithKnownDevice( |