Index: device/bluetooth/adapter.cc |
diff --git a/device/bluetooth/adapter.cc b/device/bluetooth/adapter.cc |
index 8462fc8e0f4abe8a9700d361d20f60825ee3cc05..3f1d32274a92a64adcbec1948f79f444f84ab314 100644 |
--- a/device/bluetooth/adapter.cc |
+++ b/device/bluetooth/adapter.cc |
@@ -9,7 +9,9 @@ |
#include "base/memory/ptr_util.h" |
#include "device/bluetooth/adapter.h" |
#include "device/bluetooth/device.h" |
+#include "device/bluetooth/discovery_session.h" |
#include "device/bluetooth/public/interfaces/connect_result_type_converter.h" |
+#include "mojo/public/cpp/bindings/strong_binding.h" |
namespace bluetooth { |
@@ -23,18 +25,6 @@ Adapter::~Adapter() { |
adapter_ = nullptr; |
} |
-void Adapter::GetInfo(const GetInfoCallback& callback) { |
- mojom::AdapterInfoPtr adapter_info = mojom::AdapterInfo::New(); |
- adapter_info->address = adapter_->GetAddress(); |
- adapter_info->name = adapter_->GetName(); |
- adapter_info->initialized = adapter_->IsInitialized(); |
- adapter_info->present = adapter_->IsPresent(); |
- adapter_info->powered = adapter_->IsPowered(); |
- adapter_info->discoverable = adapter_->IsDiscoverable(); |
- adapter_info->discovering = adapter_->IsDiscovering(); |
- callback.Run(std::move(adapter_info)); |
-} |
- |
void Adapter::ConnectToDevice(const std::string& address, |
const ConnectToDeviceCallback& callback) { |
device::BluetoothDevice* device = adapter_->GetDevice(address); |
@@ -64,10 +54,37 @@ void Adapter::GetDevices(const GetDevicesCallback& callback) { |
callback.Run(std::move(devices)); |
} |
+void Adapter::GetInfo(const GetInfoCallback& callback) { |
+ mojom::AdapterInfoPtr adapter_info = mojom::AdapterInfo::New(); |
+ adapter_info->address = adapter_->GetAddress(); |
+ adapter_info->name = adapter_->GetName(); |
+ adapter_info->initialized = adapter_->IsInitialized(); |
+ adapter_info->present = adapter_->IsPresent(); |
+ adapter_info->powered = adapter_->IsPowered(); |
+ adapter_info->discoverable = adapter_->IsDiscoverable(); |
+ adapter_info->discovering = adapter_->IsDiscovering(); |
+ callback.Run(std::move(adapter_info)); |
+} |
+ |
void Adapter::SetClient(mojom::AdapterClientPtr client) { |
client_ = std::move(client); |
} |
+void Adapter::StartDiscoverySession( |
+ const StartDiscoverySessionCallback& callback) { |
+ adapter_->StartDiscoverySession( |
+ base::Bind(&Adapter::OnStartDiscoverySession, |
+ weak_ptr_factory_.GetWeakPtr(), callback), |
+ base::Bind(&Adapter::OnDiscoverySessionError, |
+ weak_ptr_factory_.GetWeakPtr(), callback)); |
+} |
+ |
+void Adapter::AdapterDiscoveringChanged(device::BluetoothAdapter* adapter, |
+ bool discovering) { |
+ if (client_) |
+ client_->DiscoveringChanged(discovering); |
+} |
+ |
void Adapter::DeviceAdded(device::BluetoothAdapter* adapter, |
device::BluetoothDevice* device) { |
if (client_) { |
@@ -76,19 +93,19 @@ void Adapter::DeviceAdded(device::BluetoothAdapter* adapter, |
} |
} |
-void Adapter::DeviceRemoved(device::BluetoothAdapter* adapter, |
+void Adapter::DeviceChanged(device::BluetoothAdapter* adapter, |
device::BluetoothDevice* device) { |
if (client_) { |
auto device_info = Device::ConstructDeviceInfoStruct(device); |
- client_->DeviceRemoved(std::move(device_info)); |
+ client_->DeviceChanged(std::move(device_info)); |
} |
} |
-void Adapter::DeviceChanged(device::BluetoothAdapter* adapter, |
+void Adapter::DeviceRemoved(device::BluetoothAdapter* adapter, |
device::BluetoothDevice* device) { |
if (client_) { |
auto device_info = Device::ConstructDeviceInfoStruct(device); |
- client_->DeviceChanged(std::move(device_info)); |
+ client_->DeviceRemoved(std::move(device_info)); |
} |
} |
@@ -107,4 +124,20 @@ void Adapter::OnConnectError( |
callback.Run(mojo::ConvertTo<mojom::ConnectResult>(error_code), |
nullptr /* Device */); |
} |
+ |
+void Adapter::OnStartDiscoverySession( |
+ const StartDiscoverySessionCallback& callback, |
+ std::unique_ptr<device::BluetoothDiscoverySession> session) { |
+ mojom::DiscoverySessionPtr session_ptr; |
+ mojo::MakeStrongBinding( |
+ base::MakeUnique<DiscoverySession>(std::move(session)), |
+ mojo::MakeRequest(&session_ptr)); |
+ callback.Run(std::move(session_ptr)); |
+} |
+ |
+void Adapter::OnDiscoverySessionError( |
+ const StartDiscoverySessionCallback& callback) { |
+ callback.Run(nullptr /* session */); |
+} |
+ |
} // namespace bluetooth |