Index: device/bluetooth/bluetooth_low_energy_discovery_manager_mac.mm |
diff --git a/device/bluetooth/bluetooth_low_energy_discovery_manager_mac.mm b/device/bluetooth/bluetooth_low_energy_discovery_manager_mac.mm |
index 67cf39126d78272fe44031d099c2fa6886621d84..18830b3efb819af07045ee340ced66a12e71725a 100644 |
--- a/device/bluetooth/bluetooth_low_energy_discovery_manager_mac.mm |
+++ b/device/bluetooth/bluetooth_low_energy_discovery_manager_mac.mm |
@@ -79,13 +79,6 @@ class BluetoothLowEnergyDiscoveryManagerMacDelegate { |
BluetoothLowEnergyDiscoveryManagerMac:: |
~BluetoothLowEnergyDiscoveryManagerMac() { |
- // Set the manager's delegate to nil since the object it points to |
- // (|bridge_|) will be deallocated while |manager_| is leaked. |
- if (base::mac::IsOSLionOrLater()) { |
- // CoreBluetooth only available in OSX 10.7 and later. |
- SEL selector = NSSelectorFromString(@"setDelegate:"); |
- [manager_ performSelector:selector withObject:nil]; |
- } |
} |
bool BluetoothLowEnergyDiscoveryManagerMac::IsDiscovering() const { |
@@ -121,8 +114,7 @@ void BluetoothLowEnergyDiscoveryManagerMac::TryStartDiscovery() { |
for (auto& service_uuid : services_uuids_) { |
NSString* uuidString = |
base::SysUTF8ToNSString(service_uuid.canonical_value().c_str()); |
- Class aClass = NSClassFromString(@"CBUUID"); |
- CBUUID* uuid = [aClass UUIDWithString:uuidString]; |
+ CBUUID* uuid = [CBUUID UUIDWithString:uuidString]; |
[services addObject:uuid]; |
} |
}; |
@@ -147,10 +139,9 @@ void BluetoothLowEnergyDiscoveryManagerMac::DiscoveredPeripheral( |
void BluetoothLowEnergyDiscoveryManagerMac::SetManagerForTesting( |
CBCentralManager* manager) { |
- // setDelegate is only available in OSX 10.7 and later. |
- CHECK(base::mac::IsOSLionOrLater()); |
- SEL selector = NSSelectorFromString(@"setDelegate:"); |
- [manager performSelector:selector withObject:bridge_]; |
+ // For stability we only use CoreBluetooth on OS X >= 10.10. |
+ CHECK(base::mac::IsOSYosemiteOrLater()); |
+ [manager setDelegate:bridge_]; |
manager_.reset(manager); |
} |
@@ -162,17 +153,14 @@ BluetoothLowEnergyDiscoveryManagerMac::Create(Observer* observer) { |
BluetoothLowEnergyDiscoveryManagerMac::BluetoothLowEnergyDiscoveryManagerMac( |
Observer* observer) |
: observer_(observer) { |
+ // For stability we only use CoreBluetooth on OS X >= 10.10. Thus |
+ // BluetoothLowEnergyDiscoveryManagerMac should only be instantiated if on >= |
+ // 10.10. |
+ CHECK(base::mac::IsOSYosemiteOrLater()); |
bridge_.reset([[BluetoothLowEnergyDiscoveryManagerMacBridge alloc] |
initWithManager:this]); |
- // Since CoreBluetooth is only available on OS X 10.7 or later, we |
- // instantiate CBCentralManager only for OS X >= 10.7. |
- if (base::mac::IsOSLionOrLater()) { |
- Class aClass = NSClassFromString(@"CBCentralManager"); |
- manager_.reset( |
- [[aClass alloc] initWithDelegate:bridge_ |
- queue:dispatch_get_main_queue()]); |
- // Increment reference count, see comment at declaration. |
- [manager_ retain]; |
- } |
+ manager_.reset( |
+ [[CBCentralManager alloc] initWithDelegate:bridge_ |
+ queue:dispatch_get_main_queue()]); |
discovering_ = false; |
} |