Chromium Code Reviews| Index: components/arc/bluetooth/arc_bluetooth_bridge.cc |
| diff --git a/components/arc/bluetooth/arc_bluetooth_bridge.cc b/components/arc/bluetooth/arc_bluetooth_bridge.cc |
| index dbc6747b662299696c5c1ebb56d1a9f069e3b04c..4bd109693ea1a06912fae25b59ed13dcbfbc054a 100644 |
| --- a/components/arc/bluetooth/arc_bluetooth_bridge.cc |
| +++ b/components/arc/bluetooth/arc_bluetooth_bridge.cc |
| @@ -180,13 +180,12 @@ namespace arc { |
| ArcBluetoothBridge::ArcBluetoothBridge(ArcBridgeService* bridge_service) |
| : ArcService(bridge_service), binding_(this), weak_factory_(this) { |
| if (BluetoothAdapterFactory::IsBluetoothAdapterAvailable()) { |
| - VLOG(1) << "registering bluetooth adapter"; |
| + VLOG(1) << "Registering bluetooth adapter."; |
| BluetoothAdapterFactory::GetAdapter(base::Bind( |
| &ArcBluetoothBridge::OnAdapterInitialized, weak_factory_.GetWeakPtr())); |
| } else { |
| - VLOG(1) << "no bluetooth adapter available"; |
| + VLOG(1) << "No bluetooth adapter available."; |
| } |
| - |
| arc_bridge_service()->bluetooth()->AddObserver(this); |
| } |
| @@ -207,7 +206,13 @@ void ArcBluetoothBridge::OnAdapterInitialized( |
| // so our adapter uses BlueZ. |
| bluetooth_adapter_ = |
| static_cast<bluez::BluetoothAdapterBlueZ*>(adapter.get()); |
| - bluetooth_adapter_->AddObserver(this); |
| + |
| + // The ARC instance was ready before the Bluetooth adapter, hence we didn't |
| + // register ourselves as an observer with it then. Since our adapter is |
| + // ready, we should register it now. |
| + if (!bluetooth_adapter_->HasObserver(this) && |
| + arc_bridge_service()->bluetooth()->instance()) |
| + bluetooth_adapter_->AddObserver(this); |
|
Luis Héctor Chávez
2016/08/08 23:59:20
nit: This line needs braces due to the if not bein
puthik_chromium
2016/08/09 00:08:57
Done.
|
| } |
| void ArcBluetoothBridge::OnInstanceReady() { |
| @@ -218,7 +223,19 @@ void ArcBluetoothBridge::OnInstanceReady() { |
| << "but no bluetooth instance found"; |
| return; |
| } |
| + |
| bluetooth_instance->Init(binding_.CreateInterfacePtrAndBind()); |
| + |
| + // The Bluetooth adapter was ready before the ARC instance, hence we didn't |
| + // register ourselves as an observer with it then. Since our instance is |
| + // ready, we should register it now. |
| + if (!bluetooth_adapter_->HasObserver(this) && bluetooth_adapter_) |
|
rkc
2016/08/08 23:53:33
bluetooth_adapter_ && !bluetooth_adapter_->HasObse
puthik_chromium
2016/08/09 00:08:57
Done.
|
| + bluetooth_adapter_->AddObserver(this); |
| +} |
| + |
| +void ArcBluetoothBridge::OnInstanceClosed() { |
| + if (bluetooth_adapter_) |
| + bluetooth_adapter_->RemoveObserver(this); |
| } |
| void ArcBluetoothBridge::AdapterPoweredChanged(BluetoothAdapter* adapter, |