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

Side by Side Diff: chrome/browser/extensions/api/bluetooth_socket/bluetooth_socket_api.cc

Issue 491753002: [EasyUnlock] Add a private API for establishing an insecure Bluetooth connection. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix non-ChromeOS build Created 6 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 | Annotate | Revision Log
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 "chrome/browser/extensions/api/bluetooth_socket/bluetooth_socket_api.h" 5 #include "chrome/browser/extensions/api/bluetooth_socket/bluetooth_socket_api.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include "chrome/browser/extensions/api/bluetooth_socket/bluetooth_api_socket.h" 9 #include "chrome/browser/extensions/api/bluetooth_socket/bluetooth_api_socket.h"
10 #include "chrome/browser/extensions/api/bluetooth_socket/bluetooth_socket_event_ dispatcher.h" 10 #include "chrome/browser/extensions/api/bluetooth_socket/bluetooth_socket_event_ dispatcher.h"
(...skipping 418 matching lines...) Expand 10 before | Expand all | Expand 10 after
429 } 429 }
430 } 430 }
431 431
432 adapter->CreateL2capService(uuid, service_options, callback, error_callback); 432 adapter->CreateL2capService(uuid, service_options, callback, error_callback);
433 } 433 }
434 434
435 void BluetoothSocketListenUsingL2capFunction::CreateResults() { 435 void BluetoothSocketListenUsingL2capFunction::CreateResults() {
436 results_ = bluetooth_socket::ListenUsingL2cap::Results::Create(); 436 results_ = bluetooth_socket::ListenUsingL2cap::Results::Create();
437 } 437 }
438 438
439 BluetoothSocketConnectFunction::BluetoothSocketConnectFunction() {} 439 BluetoothSocketAbstractConnectFunction::
440 BluetoothSocketAbstractConnectFunction() {}
440 441
441 BluetoothSocketConnectFunction::~BluetoothSocketConnectFunction() {} 442 BluetoothSocketAbstractConnectFunction::
443 ~BluetoothSocketAbstractConnectFunction() {}
442 444
443 bool BluetoothSocketConnectFunction::Prepare() { 445 bool BluetoothSocketAbstractConnectFunction::Prepare() {
444 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 446 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
445 params_ = bluetooth_socket::Connect::Params::Create(*args_); 447 params_ = bluetooth_socket::Connect::Params::Create(*args_);
446 EXTENSION_FUNCTION_VALIDATE(params_.get()); 448 EXTENSION_FUNCTION_VALIDATE(params_.get());
447 449
448 socket_event_dispatcher_ = GetSocketEventDispatcher(browser_context()); 450 socket_event_dispatcher_ = GetSocketEventDispatcher(browser_context());
449 return socket_event_dispatcher_ != NULL; 451 return socket_event_dispatcher_ != NULL;
450 } 452 }
451 453
452 void BluetoothSocketConnectFunction::AsyncWorkStart() { 454 void BluetoothSocketAbstractConnectFunction::AsyncWorkStart() {
453 DCHECK(BrowserThread::CurrentlyOn(work_thread_id())); 455 DCHECK(BrowserThread::CurrentlyOn(work_thread_id()));
454 device::BluetoothAdapterFactory::GetAdapter( 456 device::BluetoothAdapterFactory::GetAdapter(
455 base::Bind(&BluetoothSocketConnectFunction::OnGetAdapter, this)); 457 base::Bind(&BluetoothSocketAbstractConnectFunction::OnGetAdapter, this));
456 } 458 }
457 459
458 void BluetoothSocketConnectFunction::OnGetAdapter( 460 void BluetoothSocketAbstractConnectFunction::OnGetAdapter(
459 scoped_refptr<device::BluetoothAdapter> adapter) { 461 scoped_refptr<device::BluetoothAdapter> adapter) {
460 DCHECK(BrowserThread::CurrentlyOn(work_thread_id())); 462 DCHECK(BrowserThread::CurrentlyOn(work_thread_id()));
461 BluetoothApiSocket* socket = GetSocket(params_->socket_id); 463 BluetoothApiSocket* socket = GetSocket(params_->socket_id);
462 if (!socket) { 464 if (!socket) {
463 error_ = kSocketNotFoundError; 465 error_ = kSocketNotFoundError;
464 AsyncWorkCompleted(); 466 AsyncWorkCompleted();
465 return; 467 return;
466 } 468 }
467 469
468 device::BluetoothDevice* device = adapter->GetDevice(params_->address); 470 device::BluetoothDevice* device = adapter->GetDevice(params_->address);
(...skipping 10 matching lines...) Expand all
479 return; 481 return;
480 } 482 }
481 483
482 BluetoothPermissionRequest param(params_->uuid); 484 BluetoothPermissionRequest param(params_->uuid);
483 if (!BluetoothManifestData::CheckRequest(extension(), param)) { 485 if (!BluetoothManifestData::CheckRequest(extension(), param)) {
484 error_ = kPermissionDeniedError; 486 error_ = kPermissionDeniedError;
485 AsyncWorkCompleted(); 487 AsyncWorkCompleted();
486 return; 488 return;
487 } 489 }
488 490
489 device->ConnectToService( 491 ConnectToService(device, uuid);
490 uuid,
491 base::Bind(&BluetoothSocketConnectFunction::OnConnect, this),
492 base::Bind(&BluetoothSocketConnectFunction::OnConnectError, this));
493 } 492 }
494 493
495 void BluetoothSocketConnectFunction::OnConnect( 494 void BluetoothSocketAbstractConnectFunction::OnConnect(
496 scoped_refptr<device::BluetoothSocket> socket) { 495 scoped_refptr<device::BluetoothSocket> socket) {
497 DCHECK(BrowserThread::CurrentlyOn(work_thread_id())); 496 DCHECK(BrowserThread::CurrentlyOn(work_thread_id()));
498 497
499 // Fetch the socket again since this is not a reference-counted object, and 498 // Fetch the socket again since this is not a reference-counted object, and
500 // it may have gone away in the meantime (we check earlier to avoid making 499 // it may have gone away in the meantime (we check earlier to avoid making
501 // a connection in the case of an obvious programming error). 500 // a connection in the case of an obvious programming error).
502 BluetoothApiSocket* api_socket = GetSocket(params_->socket_id); 501 BluetoothApiSocket* api_socket = GetSocket(params_->socket_id);
503 if (!api_socket) { 502 if (!api_socket) {
504 error_ = kSocketNotFoundError; 503 error_ = kSocketNotFoundError;
505 AsyncWorkCompleted(); 504 AsyncWorkCompleted();
506 return; 505 return;
507 } 506 }
508 507
509 api_socket->AdoptConnectedSocket(socket, 508 api_socket->AdoptConnectedSocket(socket,
510 params_->address, 509 params_->address,
511 device::BluetoothUUID(params_->uuid)); 510 device::BluetoothUUID(params_->uuid));
512 socket_event_dispatcher_->OnSocketConnect(extension_id(), 511 socket_event_dispatcher_->OnSocketConnect(extension_id(),
513 params_->socket_id); 512 params_->socket_id);
514 513
515 results_ = bluetooth_socket::Connect::Results::Create(); 514 results_ = bluetooth_socket::Connect::Results::Create();
516 AsyncWorkCompleted(); 515 AsyncWorkCompleted();
517 } 516 }
518 517
519 void BluetoothSocketConnectFunction::OnConnectError( 518 void BluetoothSocketAbstractConnectFunction::OnConnectError(
520 const std::string& message) { 519 const std::string& message) {
521 DCHECK(BrowserThread::CurrentlyOn(work_thread_id())); 520 DCHECK(BrowserThread::CurrentlyOn(work_thread_id()));
522 error_ = message; 521 error_ = message;
523 AsyncWorkCompleted(); 522 AsyncWorkCompleted();
524 } 523 }
525 524
525 BluetoothSocketConnectFunction::BluetoothSocketConnectFunction() {}
526
527 BluetoothSocketConnectFunction::~BluetoothSocketConnectFunction() {}
528
529 void BluetoothSocketConnectFunction::ConnectToService(
530 device::BluetoothDevice* device,
531 const device::BluetoothUUID& uuid) {
532 device->ConnectToService(
533 uuid,
534 base::Bind(&BluetoothSocketConnectFunction::OnConnect, this),
535 base::Bind(&BluetoothSocketConnectFunction::OnConnectError, this));
536 }
537
526 BluetoothSocketDisconnectFunction::BluetoothSocketDisconnectFunction() {} 538 BluetoothSocketDisconnectFunction::BluetoothSocketDisconnectFunction() {}
527 539
528 BluetoothSocketDisconnectFunction::~BluetoothSocketDisconnectFunction() {} 540 BluetoothSocketDisconnectFunction::~BluetoothSocketDisconnectFunction() {}
529 541
530 bool BluetoothSocketDisconnectFunction::Prepare() { 542 bool BluetoothSocketDisconnectFunction::Prepare() {
531 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 543 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
532 params_ = bluetooth_socket::Disconnect::Params::Create(*args_); 544 params_ = bluetooth_socket::Disconnect::Params::Create(*args_);
533 EXTENSION_FUNCTION_VALIDATE(params_.get()); 545 EXTENSION_FUNCTION_VALIDATE(params_.get());
534 return true; 546 return true;
535 } 547 }
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
657 if (socket) { 669 if (socket) {
658 socket_infos.push_back(CreateSocketInfo(socket_id, socket)); 670 socket_infos.push_back(CreateSocketInfo(socket_id, socket));
659 } 671 }
660 } 672 }
661 } 673 }
662 results_ = bluetooth_socket::GetSockets::Results::Create(socket_infos); 674 results_ = bluetooth_socket::GetSockets::Results::Create(socket_infos);
663 } 675 }
664 676
665 } // namespace api 677 } // namespace api
666 } // namespace extensions 678 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698