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

Unified Diff: components/proximity_auth/ble/bluetooth_low_energy_connection.cc

Issue 1144333007: Adding unit tests for BLE connection. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixing compilation on OS X and Windows 2 Created 5 years, 6 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 side-by-side diff with in-line comments
Download patch
Index: components/proximity_auth/ble/bluetooth_low_energy_connection.cc
diff --git a/components/proximity_auth/ble/bluetooth_low_energy_connection.cc b/components/proximity_auth/ble/bluetooth_low_energy_connection.cc
index 54ca0333ba13e2a216e1904fd9f56d84f90ca531..d5d7860f03f35decfed4743329fdc5ab121af011 100644
--- a/components/proximity_auth/ble/bluetooth_low_energy_connection.cc
+++ b/components/proximity_auth/ble/bluetooth_low_energy_connection.cc
@@ -45,6 +45,7 @@ BluetoothLowEnergyConnection::BluetoothLowEnergyConnection(
remote_service_({remote_service_uuid, ""}),
to_peripheral_char_({to_peripheral_char_uuid, ""}),
from_peripheral_char_({from_peripheral_char_uuid, ""}),
+ connection_(gatt_connection.Pass()),
sub_status_(SubStatus::DISCONNECTED),
receiving_bytes_(false),
write_remote_characteristic_pending_(false),
@@ -55,9 +56,6 @@ BluetoothLowEnergyConnection::BluetoothLowEnergyConnection(
start_time_ = base::TimeTicks::Now();
adapter_->AddObserver(this);
-
- if (gatt_connection && gatt_connection->IsConnected())
- OnGattConnectionCreated(gatt_connection.Pass());
}
BluetoothLowEnergyConnection::~BluetoothLowEnergyConnection() {
@@ -69,6 +67,11 @@ BluetoothLowEnergyConnection::~BluetoothLowEnergyConnection() {
}
void BluetoothLowEnergyConnection::Connect() {
+ if (connection_ && connection_->IsConnected()) {
+ OnGattConnectionCreated(connection_.Pass());
+ return;
+ }
+
BluetoothDevice* remote_device = GetRemoteDevice();
if (remote_device) {
SetSubStatus(SubStatus::WAITING_GATT_CONNECTION);
@@ -84,15 +87,17 @@ void BluetoothLowEnergyConnection::Connect() {
// connect to BLE devices advertising the SmartLock service (assuming this
// device has no other connection).
void BluetoothLowEnergyConnection::Disconnect() {
- ClearWriteRequestsQueue();
- StopNotifySession();
- SetSubStatus(SubStatus::DISCONNECTED);
- if (connection_) {
- connection_.reset();
- BluetoothDevice* device = GetRemoteDevice();
- if (device) {
- VLOG(1) << "Forget device " << device->GetAddress();
- device->Forget(base::Bind(&base::DoNothing));
+ if (sub_status_ != SubStatus::DISCONNECTED) {
+ ClearWriteRequestsQueue();
+ StopNotifySession();
+ SetSubStatus(SubStatus::DISCONNECTED);
+ if (connection_) {
+ connection_.reset();
+ BluetoothDevice* device = GetRemoteDevice();
+ if (device) {
+ VLOG(1) << "Forget device " << device->GetAddress();
+ device->Forget(base::Bind(&base::DoNothing));
+ }
}
}
}
@@ -213,16 +218,22 @@ void BluetoothLowEnergyConnection::OnGattConnectionCreated(
scoped_ptr<device::BluetoothGattConnection> gatt_connection) {
connection_ = gatt_connection.Pass();
SetSubStatus(SubStatus::WAITING_CHARACTERISTICS);
+ characteristic_finder_.reset(CreateCharacteristicsFinder(
+ base::Bind(&BluetoothLowEnergyConnection::OnCharacteristicsFound,
+ weak_ptr_factory_.GetWeakPtr()),
+ base::Bind(&BluetoothLowEnergyConnection::OnCharacteristicsFinderError,
+ weak_ptr_factory_.GetWeakPtr())));
+}
- characteristic_finder_ =
- make_scoped_ptr(new BluetoothLowEnergyCharacteristicsFinder(
- adapter_, GetRemoteDevice(), remote_service_, to_peripheral_char_,
- from_peripheral_char_,
- base::Bind(&BluetoothLowEnergyConnection::OnCharacteristicsFound,
- weak_ptr_factory_.GetWeakPtr()),
- base::Bind(
- &BluetoothLowEnergyConnection::OnCharacteristicsFinderError,
- weak_ptr_factory_.GetWeakPtr())));
+BluetoothLowEnergyCharacteristicsFinder*
+BluetoothLowEnergyConnection::CreateCharacteristicsFinder(
+ const BluetoothLowEnergyCharacteristicsFinder::SuccessCallback&
+ success_callback,
+ const BluetoothLowEnergyCharacteristicsFinder::ErrorCallback&
+ error_callback) {
+ return new BluetoothLowEnergyCharacteristicsFinder(
+ adapter_, GetRemoteDevice(), remote_service_, to_peripheral_char_,
+ from_peripheral_char_, success_callback, error_callback);
}
void BluetoothLowEnergyConnection::OnCharacteristicsFound(
@@ -355,7 +366,7 @@ void BluetoothLowEnergyConnection::OnWriteRemoteCharacteristicError(
// Increases the number of failed attempts and retry.
DCHECK(!write_requests_queue_.empty());
- if (write_requests_queue_.front().number_of_failed_attempts++ >=
+ if (++write_requests_queue_.front().number_of_failed_attempts >=
max_number_of_write_attempts_) {
Disconnect();
return;

Powered by Google App Engine
This is Rietveld 408576698