Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2981)

Unified Diff: device/bluetooth/bluetooth_low_energy_discovery_manager_mac.mm

Issue 1228863002: Runtime checks so that CoreBluetooth only used on >= 10.10 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@timeinfo
Patch Set: not compiling Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;
}

Powered by Google App Engine
This is Rietveld 408576698