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 4c6bf2e5ccade407da7faf013c87416e285d4633..ceab7924a1246b5fbb9442b4077c07d386ff474a 100644 |
--- a/device/bluetooth/bluetooth_low_energy_discovery_manager_mac.mm |
+++ b/device/bluetooth/bluetooth_low_energy_discovery_manager_mac.mm |
@@ -11,74 +11,8 @@ |
#include "device/bluetooth/bluetooth_adapter_mac.h" |
#include "device/bluetooth/bluetooth_low_energy_device_mac.h" |
-using device::BluetoothLowEnergyDeviceMac; |
-using device::BluetoothLowEnergyDiscoveryManagerMac; |
-using device::BluetoothLowEnergyDiscoveryManagerMacDelegate; |
- |
namespace device { |
-// This class is a helper to call some protected methods in |
-// BluetoothLowEnergyDiscoveryManagerMac. |
-class BluetoothLowEnergyDiscoveryManagerMacDelegate { |
- public: |
- BluetoothLowEnergyDiscoveryManagerMacDelegate( |
- BluetoothLowEnergyDiscoveryManagerMac* manager) |
- : manager_(manager) {} |
- |
- virtual ~BluetoothLowEnergyDiscoveryManagerMacDelegate() {} |
- |
- virtual void DiscoveredPeripheral(CBPeripheral* peripheral, |
- NSDictionary* advertisementData, |
- int rssi) { |
- manager_->DiscoveredPeripheral(peripheral, advertisementData, rssi); |
- } |
- |
- virtual void TryStartDiscovery() { manager_->TryStartDiscovery(); } |
- |
- private: |
- BluetoothLowEnergyDiscoveryManagerMac* manager_; |
-}; |
- |
-} // namespace device |
- |
-// This class will serve as the Objective-C delegate of CBCentralManager. |
-@interface BluetoothLowEnergyDiscoveryManagerMacBridge |
- : NSObject<CBCentralManagerDelegate> { |
- BluetoothLowEnergyDiscoveryManagerMac* manager_; |
- scoped_ptr<BluetoothLowEnergyDiscoveryManagerMacDelegate> delegate_; |
-} |
- |
-- (id)initWithManager:(BluetoothLowEnergyDiscoveryManagerMac*)manager; |
- |
-@end |
- |
-@implementation BluetoothLowEnergyDiscoveryManagerMacBridge |
- |
-- (id)initWithManager:(BluetoothLowEnergyDiscoveryManagerMac*)manager { |
- if ((self = [super init])) { |
- manager_ = manager; |
- delegate_.reset( |
- new BluetoothLowEnergyDiscoveryManagerMacDelegate(manager_)); |
- } |
- return self; |
-} |
- |
-- (void)centralManager:(CBCentralManager*)central |
- didDiscoverPeripheral:(CBPeripheral*)peripheral |
- advertisementData:(NSDictionary*)advertisementData |
- RSSI:(NSNumber*)RSSI { |
- // Notifies the discovery of a device. |
- delegate_->DiscoveredPeripheral(peripheral, advertisementData, |
- [RSSI intValue]); |
-} |
- |
-- (void)centralManagerDidUpdateState:(CBCentralManager*)central { |
- // Notifies when the powered state of the central manager changed. |
- delegate_->TryStartDiscovery(); |
-} |
- |
-@end |
- |
BluetoothLowEnergyDiscoveryManagerMac:: |
~BluetoothLowEnergyDiscoveryManagerMac() { |
} |
@@ -105,7 +39,8 @@ void BluetoothLowEnergyDiscoveryManagerMac::TryStartDiscovery() { |
} |
// Can only start if the bluetooth power is turned on. |
- if ([manager_ state] != CBCentralManagerStatePoweredOn) { |
+ if (!central_manager_ || |
+ [central_manager_ state] != CBCentralManagerStatePoweredOn) { |
return; |
} |
@@ -122,17 +57,22 @@ void BluetoothLowEnergyDiscoveryManagerMac::TryStartDiscovery() { |
} |
}; |
- [manager_ scanForPeripheralsWithServices:services options:nil]; |
+ [central_manager_ scanForPeripheralsWithServices:services options:nil]; |
pending_ = false; |
} |
void BluetoothLowEnergyDiscoveryManagerMac::StopDiscovery() { |
if (discovering_ && !pending_) { |
- [manager_ stopScan]; |
+ [central_manager_ stopScan]; |
} |
discovering_ = false; |
} |
+void BluetoothLowEnergyDiscoveryManagerMac::SetCentralManager( |
+ CBCentralManager* central_manager) { |
+ central_manager_ = central_manager; |
+} |
+ |
void BluetoothLowEnergyDiscoveryManagerMac::DiscoveredPeripheral( |
CBPeripheral* peripheral, |
NSDictionary* advertisementData, |
@@ -149,17 +89,7 @@ BluetoothLowEnergyDiscoveryManagerMac::BluetoothLowEnergyDiscoveryManagerMac( |
Observer* observer) |
: observer_(observer) { |
DCHECK(BluetoothAdapterMac::IsLowEnergyAvailable()); |
- bridge_.reset([[BluetoothLowEnergyDiscoveryManagerMacBridge alloc] |
- initWithManager:this]); |
- Class aClass = NSClassFromString(@"CBCentralManager"); |
- manager_.reset([[aClass alloc] initWithDelegate:bridge_ |
- queue:dispatch_get_main_queue()]); |
discovering_ = false; |
} |
-void BluetoothLowEnergyDiscoveryManagerMac::SetManagerForTesting( |
- CBCentralManager* manager) { |
- DCHECK(BluetoothAdapterMac::IsLowEnergyAvailable()); |
- [manager performSelector:@selector(setDelegate:) withObject:bridge_]; |
- manager_.reset(manager); |
-} |
+} // namespace device |