| Index: device/bluetooth/bluetooth_adapter_mac.mm
|
| diff --git a/device/bluetooth/bluetooth_adapter_mac.mm b/device/bluetooth/bluetooth_adapter_mac.mm
|
| index 0bff39aaa31ee343ca82ef3a1804d6c60391bbe6..2af3924742e5ef0682460fa444c39df14cadcb16 100644
|
| --- a/device/bluetooth/bluetooth_adapter_mac.mm
|
| +++ b/device/bluetooth/bluetooth_adapter_mac.mm
|
| @@ -54,9 +54,21 @@ base::WeakPtr<BluetoothAdapter> BluetoothAdapterMac::CreateAdapter() {
|
| return adapter->weak_ptr_factory_.GetWeakPtr();
|
| }
|
|
|
| +// static
|
| +base::WeakPtr<BluetoothAdapter> BluetoothAdapterMac::CreateAdapterForTest(
|
| + std::string name,
|
| + std::string address,
|
| + scoped_refptr<base::SequencedTaskRunner> ui_task_runner) {
|
| + BluetoothAdapterMac* adapter = new BluetoothAdapterMac();
|
| + adapter->InitForTest(ui_task_runner);
|
| + adapter->name_ = name;
|
| + adapter->address_ = address;
|
| + return adapter->weak_ptr_factory_.GetWeakPtr();
|
| +}
|
| +
|
| BluetoothAdapterMac::BluetoothAdapterMac()
|
| : BluetoothAdapter(),
|
| - powered_(false),
|
| + classic_powered_(false),
|
| num_discovery_sessions_(0),
|
| classic_discovery_manager_(
|
| BluetoothDiscoveryManagerMac::CreateClassic(this)),
|
| @@ -100,11 +112,21 @@ bool BluetoothAdapterMac::IsInitialized() const {
|
| }
|
|
|
| bool BluetoothAdapterMac::IsPresent() const {
|
| - return !address_.empty();
|
| + bool is_present = !address_.empty();
|
| + if (IsLowEnergyAvailable()) {
|
| + is_present = is_present || ([low_energy_central_manager_ state] ==
|
| + CBCentralManagerStatePoweredOn);
|
| + }
|
| + return is_present;
|
| }
|
|
|
| bool BluetoothAdapterMac::IsPowered() const {
|
| - return powered_;
|
| + bool is_powered = classic_powered_;
|
| + if (IsLowEnergyAvailable()) {
|
| + is_powered = is_powered || ([low_energy_central_manager_ state] ==
|
| + CBCentralManagerStatePoweredOn);
|
| + }
|
| + return is_powered;
|
| }
|
|
|
| void BluetoothAdapterMac::SetPowered(bool powered,
|
| @@ -197,6 +219,16 @@ bool BluetoothAdapterMac::IsLowEnergyAvailable() {
|
| return base::mac::IsOSYosemiteOrLater();
|
| }
|
|
|
| +void BluetoothAdapterMac::SetCentralManagerForTesting(
|
| + CBCentralManager* central_manager) {
|
| + CHECK(BluetoothAdapterMac::IsLowEnergyAvailable());
|
| + [central_manager performSelector:@selector(setDelegate:)
|
| + withObject:low_energy_central_manager_delegate_];
|
| + low_energy_central_manager_.reset(central_manager);
|
| + low_energy_discovery_manager_->SetCentralManager(
|
| + low_energy_central_manager_.get());
|
| +}
|
| +
|
| void BluetoothAdapterMac::RemovePairingDelegateInternal(
|
| BluetoothDevice::PairingDelegate* pairing_delegate) {
|
| }
|
| @@ -331,7 +363,7 @@ void BluetoothAdapterMac::PollAdapter() {
|
| "461181 BluetoothAdapterMac::PollAdapter::Start"));
|
| bool was_present = IsPresent();
|
| std::string address;
|
| - bool powered = false;
|
| + bool classic_powered = false;
|
| IOBluetoothHostController* controller =
|
| [IOBluetoothHostController defaultController];
|
|
|
| @@ -343,7 +375,7 @@ void BluetoothAdapterMac::PollAdapter() {
|
| if (controller != nil) {
|
| address = BluetoothDevice::CanonicalizeAddress(
|
| base::SysNSStringToUTF8([controller addressAsString]));
|
| - powered = ([controller powerState] == kBluetoothHCIPowerStateON);
|
| + classic_powered = ([controller powerState] == kBluetoothHCIPowerStateON);
|
|
|
| // For performance reasons, cache the adapter's name. It's not uncommon for
|
| // a call to [controller nameAsString] to take tens of milliseconds. Note
|
| @@ -373,10 +405,10 @@ void BluetoothAdapterMac::PollAdapter() {
|
| tracked_objects::ScopedTracker tracking_profile4(
|
| FROM_HERE_WITH_EXPLICIT_FUNCTION(
|
| "461181 BluetoothAdapterMac::PollAdapter::AdapterPowerChanged"));
|
| - if (powered_ != powered) {
|
| - powered_ = powered;
|
| + if (classic_powered_ != classic_powered) {
|
| + classic_powered_ = classic_powered;
|
| FOR_EACH_OBSERVER(BluetoothAdapter::Observer, observers_,
|
| - AdapterPoweredChanged(this, powered_));
|
| + AdapterPoweredChanged(this, classic_powered_));
|
| }
|
|
|
| // TODO(erikchen): Remove ScopedTracker below once http://crbug.com/461181
|
| @@ -489,14 +521,4 @@ void BluetoothAdapterMac::AddPairedDevices() {
|
| }
|
| }
|
|
|
| -void BluetoothAdapterMac::SetCentralManagerForTesting(
|
| - CBCentralManager* central_manager) {
|
| - CHECK(BluetoothAdapterMac::IsLowEnergyAvailable());
|
| - [central_manager performSelector:@selector(setDelegate:)
|
| - withObject:low_energy_central_manager_delegate_];
|
| - low_energy_central_manager_.reset(central_manager);
|
| - low_energy_discovery_manager_->SetCentralManager(
|
| - low_energy_central_manager_.get());
|
| -}
|
| -
|
| } // namespace device
|
|
|