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

Side by Side Diff: extensions/browser/api/bluetooth_low_energy/bluetooth_low_energy_event_router.cc

Issue 1287753002: bluetooth: Remove callback from BluetoothGattConnection::Disconnect (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 4 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "extensions/browser/api/bluetooth_low_energy/bluetooth_low_energy_event _router.h" 5 #include "extensions/browser/api/bluetooth_low_energy/bluetooth_low_energy_event _router.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/values.h" 9 #include "base/values.h"
10 #include "content/public/browser/browser_thread.h" 10 #include "content/public/browser/browser_thread.h"
(...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after
295 const base::Closure& callback, 295 const base::Closure& callback,
296 const ErrorCallback& error_callback) { 296 const ErrorCallback& error_callback) {
297 DCHECK_CURRENTLY_ON(BrowserThread::UI); 297 DCHECK_CURRENTLY_ON(BrowserThread::UI);
298 if (!adapter_.get()) { 298 if (!adapter_.get()) {
299 VLOG(1) << "BluetoothAdapter not ready."; 299 VLOG(1) << "BluetoothAdapter not ready.";
300 error_callback.Run(kStatusErrorFailed); 300 error_callback.Run(kStatusErrorFailed);
301 return; 301 return;
302 } 302 }
303 303
304 const std::string extension_id = extension->id(); 304 const std::string extension_id = extension->id();
305 const std::string disconnect_id = extension_id + device_address;
306
307 if (disconnecting_devices_.count(disconnect_id) != 0) {
308 error_callback.Run(kStatusErrorInProgress);
309 return;
310 }
311 305
312 BluetoothLowEnergyConnection* conn = 306 BluetoothLowEnergyConnection* conn =
313 FindConnection(extension_id, device_address); 307 FindConnection(extension_id, device_address);
314 if (!conn || !conn->GetConnection()->IsConnected()) { 308 if (!conn || !conn->GetConnection()->IsConnected()) {
315 VLOG(1) << "Application not connected to device: " << device_address; 309 VLOG(1) << "Application not connected to device: " << device_address;
316 error_callback.Run(kStatusErrorNotConnected); 310 error_callback.Run(kStatusErrorNotConnected);
317 return; 311 return;
318 } 312 }
319 313
320 disconnecting_devices_.insert(disconnect_id); 314 conn->GetConnection()->Disconnect();
321 conn->GetConnection()->Disconnect( 315 VLOG(2) << "GATT connection terminated.";
322 base::Bind(&BluetoothLowEnergyEventRouter::OnDisconnect, 316
323 weak_ptr_factory_.GetWeakPtr(), 317 if (!RemoveConnection(extension_id, device_address)) {
324 extension_id, 318 VLOG(1) << "The connection was removed before disconnect completed, id: "
325 device_address, 319 << extension_id << ", device: " << device_address;
326 callback)); 320 }
321
322 callback.Run();
327 } 323 }
328 324
329 bool BluetoothLowEnergyEventRouter::GetServices( 325 bool BluetoothLowEnergyEventRouter::GetServices(
330 const std::string& device_address, 326 const std::string& device_address,
331 ServiceList* out_services) const { 327 ServiceList* out_services) const {
332 DCHECK_CURRENTLY_ON(BrowserThread::UI); 328 DCHECK_CURRENTLY_ON(BrowserThread::UI);
333 DCHECK(out_services); 329 DCHECK(out_services);
334 if (!adapter_.get()) { 330 if (!adapter_.get()) {
335 VLOG(1) << "BluetoothAdapter not ready."; 331 VLOG(1) << "BluetoothAdapter not ready.";
336 return false; 332 return false;
(...skipping 937 matching lines...) Expand 10 before | Expand all | Expand 10 after
1274 BluetoothLowEnergyConnection* conn = new BluetoothLowEnergyConnection( 1270 BluetoothLowEnergyConnection* conn = new BluetoothLowEnergyConnection(
1275 persistent, extension_id, connection.Pass()); 1271 persistent, extension_id, connection.Pass());
1276 ConnectionResourceManager* manager = 1272 ConnectionResourceManager* manager =
1277 GetConnectionResourceManager(browser_context_); 1273 GetConnectionResourceManager(browser_context_);
1278 manager->Add(conn); 1274 manager->Add(conn);
1279 1275
1280 connecting_devices_.erase(connect_id); 1276 connecting_devices_.erase(connect_id);
1281 callback.Run(); 1277 callback.Run();
1282 } 1278 }
1283 1279
1284 void BluetoothLowEnergyEventRouter::OnDisconnect(
1285 const std::string& extension_id,
1286 const std::string& device_address,
1287 const base::Closure& callback) {
1288 VLOG(2) << "GATT connection terminated.";
1289
1290 const std::string disconnect_id = extension_id + device_address;
1291 DCHECK_NE(0U, disconnecting_devices_.count(disconnect_id));
1292
1293 if (!RemoveConnection(extension_id, device_address)) {
1294 VLOG(1) << "The connection was removed before disconnect completed, id: "
1295 << extension_id << ", device: " << device_address;
1296 }
1297
1298 disconnecting_devices_.erase(disconnect_id);
1299 callback.Run();
1300 }
1301
1302 void BluetoothLowEnergyEventRouter::OnError( 1280 void BluetoothLowEnergyEventRouter::OnError(
1303 const ErrorCallback& error_callback, 1281 const ErrorCallback& error_callback,
1304 BluetoothGattService::GattErrorCode error_code) { 1282 BluetoothGattService::GattErrorCode error_code) {
1305 VLOG(2) << "Remote characteristic/descriptor value read/write failed."; 1283 VLOG(2) << "Remote characteristic/descriptor value read/write failed.";
1306 1284
1307 error_callback.Run(GattErrorToRouterError(error_code)); 1285 error_callback.Run(GattErrorToRouterError(error_code));
1308 } 1286 }
1309 1287
1310 void BluetoothLowEnergyEventRouter::OnConnectError( 1288 void BluetoothLowEnergyEventRouter::OnConnectError(
1311 const std::string& extension_id, 1289 const std::string& extension_id,
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
1491 continue; 1469 continue;
1492 1470
1493 manager->Remove(extension_id, *iter); 1471 manager->Remove(extension_id, *iter);
1494 return true; 1472 return true;
1495 } 1473 }
1496 1474
1497 return false; 1475 return false;
1498 } 1476 }
1499 1477
1500 } // namespace extensions 1478 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698