Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <string> | 5 #include <string> |
| 6 #include <utility> | 6 #include <utility> |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "base/memory/ptr_util.h" | |
| 10 #include "base/strings/utf_string_conversions.h" | |
| 11 #include "device/bluetooth/adapter.h" | 9 #include "device/bluetooth/adapter.h" |
| 12 #include "mojo/public/cpp/bindings/string.h" | 10 #include "device/bluetooth/bluetooth_adapter_factory.h" |
| 11 #include "device/bluetooth/le_device.h" | |
| 13 #include "mojo/public/cpp/bindings/strong_binding.h" | 12 #include "mojo/public/cpp/bindings/strong_binding.h" |
| 14 | 13 |
| 15 namespace bluetooth { | 14 namespace bluetooth { |
| 16 | 15 |
| 17 Adapter::Adapter(scoped_refptr<device::BluetoothAdapter> adapter) | 16 Adapter::Adapter(scoped_refptr<device::BluetoothAdapter> adapter) |
| 18 : adapter_(adapter), client_(nullptr), weak_ptr_factory_(this) { | 17 : adapter_(std::move(adapter)), client_(nullptr), weak_ptr_factory_(this) { |
| 19 adapter_->AddObserver(this); | 18 adapter_->AddObserver(this); |
| 20 } | 19 } |
| 21 | 20 |
| 22 Adapter::~Adapter() { | 21 Adapter::~Adapter() { |
| 23 adapter_->RemoveObserver(this); | 22 adapter_->RemoveObserver(this); |
| 24 adapter_ = nullptr; | 23 adapter_ = nullptr; |
| 25 } | 24 } |
| 26 | 25 |
| 27 void Adapter::GetInfo(const GetInfoCallback& callback) { | 26 void Adapter::GetInfo(const GetInfoCallback& callback) { |
| 28 mojom::AdapterInfoPtr adapter_info = mojom::AdapterInfo::New(); | 27 mojom::AdapterInfoPtr adapter_info = mojom::AdapterInfo::New(); |
| 29 adapter_info->address = adapter_->GetAddress(); | 28 adapter_info->address = adapter_->GetAddress(); |
| 30 adapter_info->name = adapter_->GetName(); | 29 adapter_info->name = adapter_->GetName(); |
| 31 adapter_info->initialized = adapter_->IsInitialized(); | 30 adapter_info->initialized = adapter_->IsInitialized(); |
| 32 adapter_info->present = adapter_->IsPresent(); | 31 adapter_info->present = adapter_->IsPresent(); |
| 33 adapter_info->powered = adapter_->IsPowered(); | 32 adapter_info->powered = adapter_->IsPowered(); |
| 34 adapter_info->discoverable = adapter_->IsDiscoverable(); | 33 adapter_info->discoverable = adapter_->IsDiscoverable(); |
| 35 adapter_info->discovering = adapter_->IsDiscovering(); | 34 adapter_info->discovering = adapter_->IsDiscovering(); |
| 36 callback.Run(std::move(adapter_info)); | 35 callback.Run(std::move(adapter_info)); |
| 37 } | 36 } |
| 38 | 37 |
| 38 void Adapter::GetDeviceService(const std::string& address, | |
| 39 const GetDeviceServiceCallback& callback) { | |
| 40 mojom::LEDevicePtr device_ptr; | |
| 41 mojo::MakeStrongBinding( | |
| 42 base::MakeUnique<LEDevice>(address, std::move(adapter_)), | |
|
ortuno
2016/10/10 00:11:20
Any reason why you are using std::move here? std::
mbrunson
2016/10/10 19:21:28
You are right. This shouldn't be here.
| |
| 43 mojo::GetProxy(&device_ptr)); | |
| 44 callback.Run(std::move(device_ptr)); | |
| 45 } | |
| 46 | |
| 39 void Adapter::GetDevices(const GetDevicesCallback& callback) { | 47 void Adapter::GetDevices(const GetDevicesCallback& callback) { |
| 40 std::vector<mojom::DeviceInfoPtr> devices; | 48 std::vector<mojom::LEDeviceInfoPtr> devices; |
| 41 | 49 |
| 42 for (const device::BluetoothDevice* device : adapter_->GetDevices()) { | 50 for (const device::BluetoothDevice* device : adapter_->GetDevices()) { |
| 43 mojom::DeviceInfoPtr device_info = ConstructDeviceInfoStruct(device); | 51 mojom::LEDeviceInfoPtr device_info = |
| 52 LEDevice::ConstructLEDeviceInfoStruct(device); | |
| 44 devices.push_back(std::move(device_info)); | 53 devices.push_back(std::move(device_info)); |
| 45 } | 54 } |
| 46 | 55 |
| 47 callback.Run(std::move(devices)); | 56 callback.Run(std::move(devices)); |
| 48 } | 57 } |
| 49 | 58 |
| 50 void Adapter::SetClient(mojom::AdapterClientPtr client) { | 59 void Adapter::SetClient(mojom::AdapterClientPtr client) { |
| 51 client_ = std::move(client); | 60 client_ = std::move(client); |
| 52 } | 61 } |
| 53 | 62 |
| 54 void Adapter::DeviceAdded(device::BluetoothAdapter* adapter, | 63 void Adapter::DeviceAdded(device::BluetoothAdapter* adapter, |
| 55 device::BluetoothDevice* device) { | 64 device::BluetoothDevice* device) { |
| 56 if (client_) { | 65 if (client_) { |
| 57 auto device_info = ConstructDeviceInfoStruct(device); | 66 auto device_info = LEDevice::ConstructLEDeviceInfoStruct(device); |
| 58 client_->DeviceAdded(std::move(device_info)); | 67 client_->DeviceAdded(std::move(device_info)); |
| 59 } | 68 } |
| 60 } | 69 } |
| 61 | 70 |
| 62 void Adapter::DeviceRemoved(device::BluetoothAdapter* adapter, | 71 void Adapter::DeviceRemoved(device::BluetoothAdapter* adapter, |
| 63 device::BluetoothDevice* device) { | 72 device::BluetoothDevice* device) { |
| 64 if (client_) { | 73 if (client_) { |
| 65 auto device_info = ConstructDeviceInfoStruct(device); | 74 auto device_info = LEDevice::ConstructLEDeviceInfoStruct(device); |
| 66 client_->DeviceRemoved(std::move(device_info)); | 75 client_->DeviceRemoved(std::move(device_info)); |
| 67 } | 76 } |
| 68 } | 77 } |
| 69 | 78 |
| 70 // static | |
| 71 mojom::DeviceInfoPtr Adapter::ConstructDeviceInfoStruct( | |
| 72 const device::BluetoothDevice* const device) { | |
| 73 mojom::DeviceInfoPtr device_info = mojom::DeviceInfo::New(); | |
| 74 | |
| 75 device_info->name = device->GetName(); | |
| 76 device_info->name_for_display = | |
| 77 base::UTF16ToUTF8(device->GetNameForDisplay()); | |
| 78 device_info->id = device->GetIdentifier(); | |
| 79 device_info->address = device->GetAddress(); | |
| 80 | |
| 81 return device_info; | |
| 82 } | |
| 83 | |
| 84 } // namespace bluetooth | 79 } // namespace bluetooth |
| OLD | NEW |