| 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" | 
|    9 #include "device/bluetooth/adapter.h" |   10 #include "device/bluetooth/adapter.h" | 
|   10 #include "device/bluetooth/device.h" |   11 #include "device/bluetooth/device.h" | 
|   11 #include "mojo/public/cpp/bindings/strong_binding.h" |   12 #include "device/bluetooth/public/interfaces/connect_result_type_converter.h" | 
|   12  |   13  | 
|   13 namespace bluetooth { |   14 namespace bluetooth { | 
|   14  |   15  | 
|   15 Adapter::Adapter(scoped_refptr<device::BluetoothAdapter> adapter) |   16 Adapter::Adapter(scoped_refptr<device::BluetoothAdapter> adapter) | 
|   16     : adapter_(std::move(adapter)), client_(nullptr), weak_ptr_factory_(this) { |   17     : adapter_(std::move(adapter)), client_(nullptr), weak_ptr_factory_(this) { | 
|   17   adapter_->AddObserver(this); |   18   adapter_->AddObserver(this); | 
|   18 } |   19 } | 
|   19  |   20  | 
|   20 Adapter::~Adapter() { |   21 Adapter::~Adapter() { | 
|   21   adapter_->RemoveObserver(this); |   22   adapter_->RemoveObserver(this); | 
|   22   adapter_ = nullptr; |   23   adapter_ = nullptr; | 
|   23 } |   24 } | 
|   24  |   25  | 
|   25 void Adapter::GetInfo(const GetInfoCallback& callback) { |   26 void Adapter::GetInfo(const GetInfoCallback& callback) { | 
|   26   mojom::AdapterInfoPtr adapter_info = mojom::AdapterInfo::New(); |   27   mojom::AdapterInfoPtr adapter_info = mojom::AdapterInfo::New(); | 
|   27   adapter_info->address = adapter_->GetAddress(); |   28   adapter_info->address = adapter_->GetAddress(); | 
|   28   adapter_info->name = adapter_->GetName(); |   29   adapter_info->name = adapter_->GetName(); | 
|   29   adapter_info->initialized = adapter_->IsInitialized(); |   30   adapter_info->initialized = adapter_->IsInitialized(); | 
|   30   adapter_info->present = adapter_->IsPresent(); |   31   adapter_info->present = adapter_->IsPresent(); | 
|   31   adapter_info->powered = adapter_->IsPowered(); |   32   adapter_info->powered = adapter_->IsPowered(); | 
|   32   adapter_info->discoverable = adapter_->IsDiscoverable(); |   33   adapter_info->discoverable = adapter_->IsDiscoverable(); | 
|   33   adapter_info->discovering = adapter_->IsDiscovering(); |   34   adapter_info->discovering = adapter_->IsDiscovering(); | 
|   34   callback.Run(std::move(adapter_info)); |   35   callback.Run(std::move(adapter_info)); | 
|   35 } |   36 } | 
|   36  |   37  | 
|   37 void Adapter::GetDevice(const std::string& address, |   38 void Adapter::ConnectToDevice(const std::string& address, | 
|   38                         const GetDeviceCallback& callback) { |   39                               const ConnectToDeviceCallback& callback) { | 
|   39   mojom::DevicePtr device_ptr; |   40   device::BluetoothDevice* device = adapter_->GetDevice(address); | 
|   40   mojo::MakeStrongBinding(base::MakeUnique<Device>(address, adapter_), |   41  | 
|   41                           mojo::GetProxy(&device_ptr)); |   42   if (!device) { | 
|   42   callback.Run(std::move(device_ptr)); |   43     callback.Run(mojom::ConnectResult::DEVICE_NO_LONGER_IN_RANGE, | 
 |   44                  nullptr /* device */); | 
 |   45     return; | 
 |   46   } | 
 |   47  | 
 |   48   device->CreateGattConnection( | 
 |   49       base::Bind(&Adapter::OnGattConnected, weak_ptr_factory_.GetWeakPtr(), | 
 |   50                  callback), | 
 |   51       base::Bind(&Adapter::OnConnectError, weak_ptr_factory_.GetWeakPtr(), | 
 |   52                  callback)); | 
|   43 } |   53 } | 
|   44  |   54  | 
|   45 void Adapter::GetDevices(const GetDevicesCallback& callback) { |   55 void Adapter::GetDevices(const GetDevicesCallback& callback) { | 
|   46   std::vector<mojom::DeviceInfoPtr> devices; |   56   std::vector<mojom::DeviceInfoPtr> devices; | 
|   47  |   57  | 
|   48   for (const device::BluetoothDevice* device : adapter_->GetDevices()) { |   58   for (const device::BluetoothDevice* device : adapter_->GetDevices()) { | 
|   49     mojom::DeviceInfoPtr device_info = |   59     mojom::DeviceInfoPtr device_info = | 
|   50         Device::ConstructDeviceInfoStruct(device); |   60         Device::ConstructDeviceInfoStruct(device); | 
|   51     devices.push_back(std::move(device_info)); |   61     devices.push_back(std::move(device_info)); | 
|   52   } |   62   } | 
| (...skipping 22 matching lines...) Expand all  Loading... | 
|   75 } |   85 } | 
|   76  |   86  | 
|   77 void Adapter::DeviceChanged(device::BluetoothAdapter* adapter, |   87 void Adapter::DeviceChanged(device::BluetoothAdapter* adapter, | 
|   78                             device::BluetoothDevice* device) { |   88                             device::BluetoothDevice* device) { | 
|   79   if (client_) { |   89   if (client_) { | 
|   80     auto device_info = Device::ConstructDeviceInfoStruct(device); |   90     auto device_info = Device::ConstructDeviceInfoStruct(device); | 
|   81     client_->DeviceChanged(std::move(device_info)); |   91     client_->DeviceChanged(std::move(device_info)); | 
|   82   } |   92   } | 
|   83 } |   93 } | 
|   84  |   94  | 
 |   95 void Adapter::OnGattConnected( | 
 |   96     const ConnectToDeviceCallback& callback, | 
 |   97     std::unique_ptr<device::BluetoothGattConnection> connection) { | 
 |   98   mojom::DevicePtr device_ptr; | 
 |   99   Device::Create(adapter_, std::move(connection), mojo::GetProxy(&device_ptr)); | 
 |  100   callback.Run(mojom::ConnectResult::SUCCESS, std::move(device_ptr)); | 
 |  101 } | 
 |  102  | 
 |  103 void Adapter::OnConnectError( | 
 |  104     const ConnectToDeviceCallback& callback, | 
 |  105     device::BluetoothDevice::ConnectErrorCode error_code) { | 
 |  106   callback.Run(mojo::ConvertTo<mojom::ConnectResult>(error_code), | 
 |  107                nullptr /* Device */); | 
 |  108 } | 
|   85 }  // namespace bluetooth |  109 }  // namespace bluetooth | 
| OLD | NEW |