Index: device/bluetooth/bluetooth_adapter_mac.mm |
diff --git a/device/bluetooth/bluetooth_adapter_mac.mm b/device/bluetooth/bluetooth_adapter_mac.mm |
index e9586ad42068d7a2bb0fb495fe32b6ce0738aaf3..3bbac90e88af4419e66adee6178d7841244cc9d3 100644 |
--- a/device/bluetooth/bluetooth_adapter_mac.mm |
+++ b/device/bluetooth/bluetooth_adapter_mac.mm |
@@ -13,6 +13,7 @@ |
#include "base/compiler_specific.h" |
#include "base/containers/hash_tables.h" |
#include "base/location.h" |
+#include "base/mac/mac_util.h" |
#include "base/mac/sdk_forward_declarations.h" |
#include "base/memory/scoped_ptr.h" |
#include "base/profiler/scoped_tracker.h" |
@@ -58,9 +59,10 @@ BluetoothAdapterMac::BluetoothAdapterMac() |
num_discovery_sessions_(0), |
classic_discovery_manager_( |
BluetoothDiscoveryManagerMac::CreateClassic(this)), |
- low_energy_discovery_manager_( |
- BluetoothLowEnergyDiscoveryManagerMac::Create(this)), |
weak_ptr_factory_(this) { |
+ if (IsLowEnergyAvailable()) |
+ low_energy_discovery_manager_.reset( |
+ BluetoothLowEnergyDiscoveryManagerMac::Create(this)); |
DCHECK(classic_discovery_manager_.get()); |
} |
@@ -112,8 +114,11 @@ void BluetoothAdapterMac::SetDiscoverable( |
} |
bool BluetoothAdapterMac::IsDiscovering() const { |
- return (classic_discovery_manager_->IsDiscovering() || |
- low_energy_discovery_manager_->IsDiscovering()); |
+ bool is_discovering = classic_discovery_manager_->IsDiscovering(); |
+ if (IsLowEnergyAvailable()) |
+ is_discovering = |
+ is_discovering || low_energy_discovery_manager_->IsDiscovering(); |
+ return is_discovering; |
} |
void BluetoothAdapterMac::CreateRfcommService( |
@@ -175,6 +180,11 @@ void BluetoothAdapterMac::DeviceConnected(IOBluetoothDevice* device) { |
ClassicDeviceAdded(device); |
} |
+// static |
+bool BluetoothAdapterMac::IsLowEnergyAvailable() { |
+ return base::mac::IsOSYosemiteOrLater(); |
+} |
+ |
void BluetoothAdapterMac::RemovePairingDelegateInternal( |
BluetoothDevice::PairingDelegate* pairing_delegate) { |
} |
@@ -246,7 +256,8 @@ void BluetoothAdapterMac::RemoveDiscoverySession( |
} |
} |
if (transport & BluetoothDiscoveryFilter::Transport::TRANSPORT_LE) { |
- low_energy_discovery_manager_->StopDiscovery(); |
+ if (IsLowEnergyAvailable()) |
+ low_energy_discovery_manager_->StopDiscovery(); |
} |
DVLOG(1) << "Discovery stopped"; |
@@ -283,7 +294,9 @@ bool BluetoothAdapterMac::StartDiscovery( |
if (transport & BluetoothDiscoveryFilter::Transport::TRANSPORT_LE) { |
// Begin a low energy discovery session or update it if one is already |
// running. |
- low_energy_discovery_manager_->StartDiscovery(BluetoothDevice::UUIDList()); |
+ if (IsLowEnergyAvailable()) |
+ low_energy_discovery_manager_->StartDiscovery( |
+ BluetoothDevice::UUIDList()); |
} |
return true; |
} |