| 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;
|
| }
|
|
|