OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "components/proximity_auth/ble/bluetooth_low_energy_connection_finder.h
" | 5 #include "components/proximity_auth/ble/bluetooth_low_energy_connection_finder.h
" |
6 | 6 |
7 #include <string> | 7 #include <string> |
| 8 #include <utility> |
8 | 9 |
9 #include "base/bind.h" | 10 #include "base/bind.h" |
10 #include "base/bind_helpers.h" | 11 #include "base/bind_helpers.h" |
11 #include "base/location.h" | 12 #include "base/location.h" |
12 #include "base/logging.h" | 13 #include "base/logging.h" |
13 #include "base/memory/scoped_ptr.h" | 14 #include "base/memory/scoped_ptr.h" |
14 #include "base/strings/utf_string_conversions.h" | 15 #include "base/strings/utf_string_conversions.h" |
15 #include "base/thread_task_runner_handle.h" | 16 #include "base/thread_task_runner_handle.h" |
16 #include "components/proximity_auth/ble/bluetooth_low_energy_connection.h" | 17 #include "components/proximity_auth/ble/bluetooth_low_energy_connection.h" |
17 #include "components/proximity_auth/ble/bluetooth_low_energy_device_whitelist.h" | 18 #include "components/proximity_auth/ble/bluetooth_low_energy_device_whitelist.h" |
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
203 // Note: It's possible to connect to the paired directly, so when using | 204 // Note: It's possible to connect to the paired directly, so when using |
204 // FIND_PAIRED_DEVICE strategy this is not necessary. However, the discovery | 205 // FIND_PAIRED_DEVICE strategy this is not necessary. However, the discovery |
205 // doesn't add a lot of latency, and the makes the code path for both | 206 // doesn't add a lot of latency, and the makes the code path for both |
206 // strategies more similar. | 207 // strategies more similar. |
207 StartDiscoverySession(); | 208 StartDiscoverySession(); |
208 } | 209 } |
209 | 210 |
210 void BluetoothLowEnergyConnectionFinder::OnDiscoverySessionStarted( | 211 void BluetoothLowEnergyConnectionFinder::OnDiscoverySessionStarted( |
211 scoped_ptr<device::BluetoothDiscoverySession> discovery_session) { | 212 scoped_ptr<device::BluetoothDiscoverySession> discovery_session) { |
212 PA_LOG(INFO) << "Discovery session started"; | 213 PA_LOG(INFO) << "Discovery session started"; |
213 discovery_session_ = discovery_session.Pass(); | 214 discovery_session_ = std::move(discovery_session); |
214 } | 215 } |
215 | 216 |
216 void BluetoothLowEnergyConnectionFinder::OnStartDiscoverySessionError() { | 217 void BluetoothLowEnergyConnectionFinder::OnStartDiscoverySessionError() { |
217 PA_LOG(WARNING) << "Error starting discovery session"; | 218 PA_LOG(WARNING) << "Error starting discovery session"; |
218 } | 219 } |
219 | 220 |
220 void BluetoothLowEnergyConnectionFinder::StartDiscoverySession() { | 221 void BluetoothLowEnergyConnectionFinder::StartDiscoverySession() { |
221 DCHECK(adapter_); | 222 DCHECK(adapter_); |
222 if (discovery_session_ && discovery_session_->IsActive()) { | 223 if (discovery_session_ && discovery_session_->IsActive()) { |
223 PA_LOG(INFO) << "Discovery session already active"; | 224 PA_LOG(INFO) << "Discovery session already active"; |
224 return; | 225 return; |
225 } | 226 } |
226 | 227 |
227 // Discover only low energy (LE) devices with strong enough signal. | 228 // Discover only low energy (LE) devices with strong enough signal. |
228 scoped_ptr<BluetoothDiscoveryFilter> filter(new BluetoothDiscoveryFilter( | 229 scoped_ptr<BluetoothDiscoveryFilter> filter(new BluetoothDiscoveryFilter( |
229 BluetoothDiscoveryFilter::Transport::TRANSPORT_LE)); | 230 BluetoothDiscoveryFilter::Transport::TRANSPORT_LE)); |
230 filter->SetRSSI(kMinDiscoveryRSSI); | 231 filter->SetRSSI(kMinDiscoveryRSSI); |
231 | 232 |
232 adapter_->StartDiscoverySessionWithFilter( | 233 adapter_->StartDiscoverySessionWithFilter( |
233 filter.Pass(), | 234 std::move(filter), |
234 base::Bind(&BluetoothLowEnergyConnectionFinder::OnDiscoverySessionStarted, | 235 base::Bind(&BluetoothLowEnergyConnectionFinder::OnDiscoverySessionStarted, |
235 weak_ptr_factory_.GetWeakPtr()), | 236 weak_ptr_factory_.GetWeakPtr()), |
236 base::Bind( | 237 base::Bind( |
237 &BluetoothLowEnergyConnectionFinder::OnStartDiscoverySessionError, | 238 &BluetoothLowEnergyConnectionFinder::OnStartDiscoverySessionError, |
238 weak_ptr_factory_.GetWeakPtr())); | 239 weak_ptr_factory_.GetWeakPtr())); |
239 } | 240 } |
240 | 241 |
241 void BluetoothLowEnergyConnectionFinder::StopDiscoverySession() { | 242 void BluetoothLowEnergyConnectionFinder::StopDiscoverySession() { |
242 PA_LOG(INFO) << "Stopping discovery session"; | 243 PA_LOG(INFO) << "Stopping discovery session"; |
243 // Destroying the discovery session also stops it. | 244 // Destroying the discovery session also stops it. |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
303 // (see crbug.com/497841). | 304 // (see crbug.com/497841). |
304 std::vector<BluetoothDevice*> devices = adapter_->GetDevices(); | 305 std::vector<BluetoothDevice*> devices = adapter_->GetDevices(); |
305 for (const auto& device : devices) { | 306 for (const auto& device : devices) { |
306 if (device->GetAddress() == device_address) | 307 if (device->GetAddress() == device_address) |
307 return device; | 308 return device; |
308 } | 309 } |
309 return nullptr; | 310 return nullptr; |
310 } | 311 } |
311 | 312 |
312 void BluetoothLowEnergyConnectionFinder::InvokeCallbackAsync() { | 313 void BluetoothLowEnergyConnectionFinder::InvokeCallbackAsync() { |
313 connection_callback_.Run(connection_.Pass()); | 314 connection_callback_.Run(std::move(connection_)); |
314 } | 315 } |
315 | 316 |
316 } // namespace proximity_auth | 317 } // namespace proximity_auth |
OLD | NEW |