Index: device/bluetooth/bluetooth_adapter_chromeos.cc |
diff --git a/device/bluetooth/bluetooth_adapter_chromeos.cc b/device/bluetooth/bluetooth_adapter_chromeos.cc |
index 597eb6dcbcb12d11085ec22f016e086b3b3f219e..6894a56c26ddd62355a85a52bc05b72ade43164c 100644 |
--- a/device/bluetooth/bluetooth_adapter_chromeos.cc |
+++ b/device/bluetooth/bluetooth_adapter_chromeos.cc |
@@ -441,6 +441,23 @@ void BluetoothAdapterChromeOS::DevicePropertyChanged( |
DBusThreadManager::Get()->GetBluetoothDeviceClient()-> |
GetProperties(object_path); |
+ if (property_name == properties->address.name()) { |
+ for (DevicesMap::const_iterator iter = devices_.begin(); |
+ iter != devices_.end(); ++iter) { |
armansito
2015/09/25 18:42:30
nit: for (const auto& iter : devices_)
jpawlowski1
2015/09/25 19:25:45
I need iterator, want to call erase() with iterato
|
+ if (iter->second->GetAddress() == device_chromeos->GetAddress()) { |
+ std::string old_address = iter->first; |
+ VLOG(1) << "Device changed address, old: " << old_address |
+ << " new: " << device_chromeos->GetAddress(); |
+ devices_.erase(iter); |
+ |
+ DCHECK(devices_.find(device_chromeos->GetAddress()) == devices_.end()); |
+ devices_[device_chromeos->GetAddress()] = device_chromeos; |
+ NotifyDeviceAddressChanged(device_chromeos, old_address); |
+ break; |
+ } |
+ } |
+ } |
+ |
if (property_name == properties->bluetooth_class.name() || |
property_name == properties->address.name() || |
property_name == properties->alias.name() || |
@@ -869,6 +886,15 @@ void BluetoothAdapterChromeOS::NotifyDeviceChanged( |
DeviceChanged(this, device)); |
} |
+void BluetoothAdapterChromeOS::NotifyDeviceAddressChanged( |
+ BluetoothDeviceChromeOS* device, |
+ const std::string& old_address) { |
+ DCHECK(device->adapter_ == this); |
+ |
+ FOR_EACH_OBSERVER(BluetoothAdapter::Observer, observers_, |
+ DeviceAddressChanged(this, device, old_address)); |
+} |
+ |
void BluetoothAdapterChromeOS::NotifyGattServiceAdded( |
BluetoothRemoteGattServiceChromeOS* service) { |
DCHECK_EQ(service->GetAdapter(), this); |