Index: device/bluetooth/bluetooth_adapter_mac.mm |
diff --git a/device/bluetooth/bluetooth_adapter_mac.mm b/device/bluetooth/bluetooth_adapter_mac.mm |
index c485f99bc40c7e585e591cd67671687c484b203b..3bc426e6a45440211692b68e368565da68ece1ad 100644 |
--- a/device/bluetooth/bluetooth_adapter_mac.mm |
+++ b/device/bluetooth/bluetooth_adapter_mac.mm |
@@ -469,12 +469,19 @@ void BluetoothAdapterMac::ClassicDeviceAdded(IOBluetoothDevice* device) { |
std::string device_address = |
BluetoothClassicDeviceMac::GetDeviceAddress(device); |
+ BluetoothDevice* device_classic = GetDevice(device_address); |
+ |
// Only notify observers once per device. |
- if (devices_.count(device_address)) |
+ if (device_classic != nullptr) { |
+ VLOG(3) << "Updating classic device: " << device_classic->GetAddress(); |
+ device_classic->UpdateTimestamp(); |
return; |
+ } |
- BluetoothDevice* device_classic = new BluetoothClassicDeviceMac(this, device); |
+ device_classic = new BluetoothClassicDeviceMac(this, device); |
devices_.set(device_address, base::WrapUnique(device_classic)); |
+ VLOG(1) << "Adding new classic device: " << device_classic->GetAddress(); |
+ |
FOR_EACH_OBSERVER(BluetoothAdapter::Observer, observers_, |
DeviceAdded(this, device_classic)); |
} |
@@ -567,7 +574,11 @@ void BluetoothAdapterMac::LowEnergyCentralManagerUpdatedState() {} |
void BluetoothAdapterMac::AddPairedDevices() { |
// Add any new paired devices. |
for (IOBluetoothDevice* device in [IOBluetoothDevice pairedDevices]) { |
- ClassicDeviceAdded(device); |
+ // pairedDevices sometimes includes unknown devices that are not paired. |
+ // Radar issue with id 2282763004 has been filed about it. |
+ if ([device isPaired]) { |
+ ClassicDeviceAdded(device); |
+ } |
} |
} |