Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(338)

Side by Side Diff: device/bluetooth/adapter.cc

Issue 2401193002: bluetooth: Add Device service for chrome://bluetooth-internals. (Closed)
Patch Set: Fully qualify mojom import Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « device/bluetooth/adapter.h ('k') | device/bluetooth/device.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/device.h"
13 #include "mojo/public/cpp/bindings/strong_binding.h" 11 #include "mojo/public/cpp/bindings/strong_binding.h"
14 12
15 namespace bluetooth { 13 namespace bluetooth {
16 14
17 Adapter::Adapter(scoped_refptr<device::BluetoothAdapter> adapter) 15 Adapter::Adapter(scoped_refptr<device::BluetoothAdapter> adapter)
18 : adapter_(std::move(adapter)), client_(nullptr), weak_ptr_factory_(this) { 16 : adapter_(std::move(adapter)), client_(nullptr), weak_ptr_factory_(this) {
19 adapter_->AddObserver(this); 17 adapter_->AddObserver(this);
20 } 18 }
21 19
22 Adapter::~Adapter() { 20 Adapter::~Adapter() {
23 adapter_->RemoveObserver(this); 21 adapter_->RemoveObserver(this);
24 adapter_ = nullptr; 22 adapter_ = nullptr;
25 } 23 }
26 24
27 void Adapter::GetInfo(const GetInfoCallback& callback) { 25 void Adapter::GetInfo(const GetInfoCallback& callback) {
28 mojom::AdapterInfoPtr adapter_info = mojom::AdapterInfo::New(); 26 mojom::AdapterInfoPtr adapter_info = mojom::AdapterInfo::New();
29 adapter_info->address = adapter_->GetAddress(); 27 adapter_info->address = adapter_->GetAddress();
30 adapter_info->name = adapter_->GetName(); 28 adapter_info->name = adapter_->GetName();
31 adapter_info->initialized = adapter_->IsInitialized(); 29 adapter_info->initialized = adapter_->IsInitialized();
32 adapter_info->present = adapter_->IsPresent(); 30 adapter_info->present = adapter_->IsPresent();
33 adapter_info->powered = adapter_->IsPowered(); 31 adapter_info->powered = adapter_->IsPowered();
34 adapter_info->discoverable = adapter_->IsDiscoverable(); 32 adapter_info->discoverable = adapter_->IsDiscoverable();
35 adapter_info->discovering = adapter_->IsDiscovering(); 33 adapter_info->discovering = adapter_->IsDiscovering();
36 callback.Run(std::move(adapter_info)); 34 callback.Run(std::move(adapter_info));
37 } 35 }
38 36
37 void Adapter::GetDevice(const std::string& address,
38 const GetDeviceCallback& callback) {
39 mojom::DevicePtr device_ptr;
40 mojo::MakeStrongBinding(base::MakeUnique<Device>(address, adapter_),
41 mojo::GetProxy(&device_ptr));
42 callback.Run(std::move(device_ptr));
43 }
44
39 void Adapter::GetDevices(const GetDevicesCallback& callback) { 45 void Adapter::GetDevices(const GetDevicesCallback& callback) {
40 std::vector<mojom::DeviceInfoPtr> devices; 46 std::vector<mojom::DeviceInfoPtr> devices;
41 47
42 for (const device::BluetoothDevice* device : adapter_->GetDevices()) { 48 for (const device::BluetoothDevice* device : adapter_->GetDevices()) {
43 mojom::DeviceInfoPtr device_info = ConstructDeviceInfoStruct(device); 49 mojom::DeviceInfoPtr device_info =
50 Device::ConstructDeviceInfoStruct(device);
44 devices.push_back(std::move(device_info)); 51 devices.push_back(std::move(device_info));
45 } 52 }
46 53
47 callback.Run(std::move(devices)); 54 callback.Run(std::move(devices));
48 } 55 }
49 56
50 void Adapter::SetClient(mojom::AdapterClientPtr client) { 57 void Adapter::SetClient(mojom::AdapterClientPtr client) {
51 client_ = std::move(client); 58 client_ = std::move(client);
52 } 59 }
53 60
54 void Adapter::DeviceAdded(device::BluetoothAdapter* adapter, 61 void Adapter::DeviceAdded(device::BluetoothAdapter* adapter,
55 device::BluetoothDevice* device) { 62 device::BluetoothDevice* device) {
56 if (client_) { 63 if (client_) {
57 auto device_info = ConstructDeviceInfoStruct(device); 64 auto device_info = Device::ConstructDeviceInfoStruct(device);
58 client_->DeviceAdded(std::move(device_info)); 65 client_->DeviceAdded(std::move(device_info));
59 } 66 }
60 } 67 }
61 68
62 void Adapter::DeviceRemoved(device::BluetoothAdapter* adapter, 69 void Adapter::DeviceRemoved(device::BluetoothAdapter* adapter,
63 device::BluetoothDevice* device) { 70 device::BluetoothDevice* device) {
64 if (client_) { 71 if (client_) {
65 auto device_info = ConstructDeviceInfoStruct(device); 72 auto device_info = Device::ConstructDeviceInfoStruct(device);
66 client_->DeviceRemoved(std::move(device_info)); 73 client_->DeviceRemoved(std::move(device_info));
67 } 74 }
68 } 75 }
69 76
70 // static
71 mojom::DeviceInfoPtr Adapter::ConstructDeviceInfoStruct(
72 const device::BluetoothDevice* 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 77 } // namespace bluetooth
OLDNEW
« no previous file with comments | « device/bluetooth/adapter.h ('k') | device/bluetooth/device.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698