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

Unified Diff: device/bluetooth/bluetooth_gatt_chromeos_unittest.cc

Issue 1341103004: Handle change of BLE address after pairing (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: ***ADDED BY MISTAKE, OMMIT *** Created 5 years, 3 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
« no previous file with comments | « device/bluetooth/bluetooth_device_chromeos.cc ('k') | device/bluetooth/bluetooth_gatt_connection.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: device/bluetooth/bluetooth_gatt_chromeos_unittest.cc
diff --git a/device/bluetooth/bluetooth_gatt_chromeos_unittest.cc b/device/bluetooth/bluetooth_gatt_chromeos_unittest.cc
index cc5860dee0c2d138e4fc468d948488a7bb73d9f2..b01ef789819e473b85223b8e059ce01b86bdafdc 100644
--- a/device/bluetooth/bluetooth_gatt_chromeos_unittest.cc
+++ b/device/bluetooth/bluetooth_gatt_chromeos_unittest.cc
@@ -113,7 +113,6 @@ class BluetoothGattChromeOSTest : public testing::Test {
void TearDown() override {
adapter_ = NULL;
update_sessions_.clear();
- gatt_conn_.reset();
bluez::BluezDBusManager::Shutdown();
}
@@ -139,10 +138,7 @@ class BluetoothGattChromeOSTest : public testing::Test {
last_read_value_ = value;
}
- void GattConnectionCallback(scoped_ptr<BluetoothGattConnection> conn) {
- ++success_callback_count_;
- gatt_conn_ = conn.Pass();
- }
+ void GattConnectionCallback() { ++success_callback_count_; }
void NotifySessionCallback(scoped_ptr<BluetoothGattNotifySession> session) {
++success_callback_count_;
@@ -183,7 +179,6 @@ class BluetoothGattChromeOSTest : public testing::Test {
fake_bluetooth_gatt_characteristic_client_;
bluez::FakeBluetoothGattDescriptorClient*
fake_bluetooth_gatt_descriptor_client_;
- scoped_ptr<device::BluetoothGattConnection> gatt_conn_;
ScopedVector<BluetoothGattNotifySession> update_sessions_;
scoped_refptr<BluetoothAdapter> adapter_;
@@ -194,6 +189,8 @@ class BluetoothGattChromeOSTest : public testing::Test {
};
TEST_F(BluetoothGattChromeOSTest, GattConnection) {
+ scoped_ptr<device::BluetoothGattConnection> gatt_conn_;
+
fake_bluetooth_device_client_->CreateDevice(
dbus::ObjectPath(bluez::FakeBluetoothAdapterClient::kAdapterPath),
dbus::ObjectPath(bluez::FakeBluetoothDeviceClient::kLowEnergyPath));
@@ -205,7 +202,7 @@ TEST_F(BluetoothGattChromeOSTest, GattConnection) {
ASSERT_EQ(0, success_callback_count_);
ASSERT_EQ(0, error_callback_count_);
- device->CreateGattConnection(
+ gatt_conn_ = device->CreateGattConnection(
base::Bind(&BluetoothGattChromeOSTest::GattConnectionCallback,
base::Unretained(this)),
base::Bind(&BluetoothGattChromeOSTest::ConnectErrorCallback,
@@ -216,14 +213,15 @@ TEST_F(BluetoothGattChromeOSTest, GattConnection) {
EXPECT_TRUE(device->IsConnected());
ASSERT_TRUE(gatt_conn_.get());
EXPECT_TRUE(gatt_conn_->IsConnected());
+ EXPECT_FALSE(gatt_conn_->InProgress());
EXPECT_EQ(bluez::FakeBluetoothDeviceClient::kLowEnergyAddress,
gatt_conn_->GetDeviceAddress());
gatt_conn_->Disconnect();
- EXPECT_TRUE(device->IsConnected());
+ EXPECT_FALSE(device->IsConnected());
EXPECT_FALSE(gatt_conn_->IsConnected());
- device->CreateGattConnection(
+ gatt_conn_ = device->CreateGattConnection(
base::Bind(&BluetoothGattChromeOSTest::GattConnectionCallback,
base::Unretained(this)),
base::Bind(&BluetoothGattChromeOSTest::ConnectErrorCallback,
@@ -243,10 +241,11 @@ TEST_F(BluetoothGattChromeOSTest, GattConnection) {
EXPECT_EQ(3, success_callback_count_);
EXPECT_EQ(0, error_callback_count_);
+ EXPECT_FALSE(device->IsConnected());
ASSERT_TRUE(gatt_conn_.get());
EXPECT_FALSE(gatt_conn_->IsConnected());
- device->CreateGattConnection(
+ gatt_conn_ = device->CreateGattConnection(
base::Bind(&BluetoothGattChromeOSTest::GattConnectionCallback,
base::Unretained(this)),
base::Bind(&BluetoothGattChromeOSTest::ConnectErrorCallback,
@@ -264,6 +263,141 @@ TEST_F(BluetoothGattChromeOSTest, GattConnection) {
EXPECT_FALSE(gatt_conn_->IsConnected());
}
+TEST_F(BluetoothGattChromeOSTest, MultipleGattConnections) {
+ scoped_ptr<device::BluetoothGattConnection> gatt_conn_1;
+ scoped_ptr<device::BluetoothGattConnection> gatt_conn_2;
+
+ fake_bluetooth_device_client_->CreateDevice(
+ dbus::ObjectPath(bluez::FakeBluetoothAdapterClient::kAdapterPath),
+ dbus::ObjectPath(bluez::FakeBluetoothDeviceClient::kLowEnergyPath));
+ BluetoothDevice* device =
+ adapter_->GetDevice(bluez::FakeBluetoothDeviceClient::kLowEnergyAddress);
+ ASSERT_TRUE(device);
+ ASSERT_FALSE(device->IsConnected());
+ ASSERT_FALSE(gatt_conn_1.get());
+ ASSERT_FALSE(gatt_conn_2.get());
+ ASSERT_EQ(0, success_callback_count_);
+ ASSERT_EQ(0, error_callback_count_);
+
+ // Connect first gatt client
+ gatt_conn_1 = device->CreateGattConnection(
+ base::Bind(&BluetoothGattChromeOSTest::GattConnectionCallback,
+ base::Unretained(this)),
+ base::Bind(&BluetoothGattChromeOSTest::ConnectErrorCallback,
+ base::Unretained(this)));
+
+ EXPECT_EQ(1, success_callback_count_);
+ EXPECT_EQ(0, error_callback_count_);
+ EXPECT_TRUE(device->IsConnected());
+ ASSERT_TRUE(gatt_conn_1.get());
+ EXPECT_TRUE(gatt_conn_1->IsConnected());
+ EXPECT_FALSE(gatt_conn_1->InProgress());
+ EXPECT_EQ(bluez::FakeBluetoothDeviceClient::kLowEnergyAddress,
+ gatt_conn_1->GetDeviceAddress());
+
+ // Connect second gatt client
+ gatt_conn_2 = device->CreateGattConnection(
+ base::Bind(&BluetoothGattChromeOSTest::GattConnectionCallback,
+ base::Unretained(this)),
+ base::Bind(&BluetoothGattChromeOSTest::ConnectErrorCallback,
+ base::Unretained(this)));
+
+ EXPECT_EQ(2, success_callback_count_);
+ EXPECT_EQ(0, error_callback_count_);
+ EXPECT_TRUE(device->IsConnected());
+ ASSERT_TRUE(gatt_conn_2.get());
+ EXPECT_TRUE(gatt_conn_2->IsConnected());
+ EXPECT_FALSE(gatt_conn_2->InProgress());
+ EXPECT_EQ(bluez::FakeBluetoothDeviceClient::kLowEnergyAddress,
+ gatt_conn_2->GetDeviceAddress());
+
+ // Disconnect first client
+ gatt_conn_1->Disconnect();
+ EXPECT_TRUE(device->IsConnected());
+ EXPECT_FALSE(gatt_conn_1->IsConnected());
+ EXPECT_TRUE(gatt_conn_2->IsConnected());
+
+ // Connect firt client again
+ gatt_conn_1 = device->CreateGattConnection(
+ base::Bind(&BluetoothGattChromeOSTest::GattConnectionCallback,
+ base::Unretained(this)),
+ base::Bind(&BluetoothGattChromeOSTest::ConnectErrorCallback,
+ base::Unretained(this)));
+
+ EXPECT_EQ(3, success_callback_count_);
+ EXPECT_EQ(0, error_callback_count_);
+ EXPECT_TRUE(device->IsConnected());
+ ASSERT_TRUE(gatt_conn_1.get());
+ EXPECT_TRUE(gatt_conn_1->IsConnected());
+ EXPECT_TRUE(gatt_conn_2->IsConnected());
+
+ gatt_conn_1->Disconnect();
+ EXPECT_TRUE(device->IsConnected());
+ EXPECT_FALSE(gatt_conn_1->IsConnected());
+ EXPECT_TRUE(gatt_conn_2->IsConnected());
+
+ gatt_conn_2->Disconnect();
+ EXPECT_FALSE(device->IsConnected());
+ EXPECT_FALSE(gatt_conn_1->IsConnected());
+ EXPECT_FALSE(gatt_conn_2->IsConnected());
+
+ // Connect both clients again
+ gatt_conn_1 = device->CreateGattConnection(
+ base::Bind(&BluetoothGattChromeOSTest::GattConnectionCallback,
+ base::Unretained(this)),
+ base::Bind(&BluetoothGattChromeOSTest::ConnectErrorCallback,
+ base::Unretained(this)));
+ gatt_conn_2 = device->CreateGattConnection(
+ base::Bind(&BluetoothGattChromeOSTest::GattConnectionCallback,
+ base::Unretained(this)),
+ base::Bind(&BluetoothGattChromeOSTest::ConnectErrorCallback,
+ base::Unretained(this)));
+
+ EXPECT_EQ(5, success_callback_count_);
+ EXPECT_TRUE(device->IsConnected());
+ EXPECT_TRUE(gatt_conn_1->IsConnected());
+ EXPECT_TRUE(gatt_conn_2->IsConnected());
+
+ // Disconnect whole device
+ device->Disconnect(base::Bind(&BluetoothGattChromeOSTest::SuccessCallback,
+ base::Unretained(this)),
+ base::Bind(&BluetoothGattChromeOSTest::ErrorCallback,
+ base::Unretained(this)));
+
+ EXPECT_EQ(6, success_callback_count_);
+ EXPECT_EQ(0, error_callback_count_);
+ EXPECT_FALSE(device->IsConnected());
+ ASSERT_TRUE(gatt_conn_1.get());
+ EXPECT_FALSE(gatt_conn_1->IsConnected());
+ ASSERT_TRUE(gatt_conn_1.get());
+ EXPECT_FALSE(gatt_conn_1->IsConnected());
+
+ // Connect both clients again
+ gatt_conn_1 = device->CreateGattConnection(
+ base::Bind(&BluetoothGattChromeOSTest::GattConnectionCallback,
+ base::Unretained(this)),
+ base::Bind(&BluetoothGattChromeOSTest::ConnectErrorCallback,
+ base::Unretained(this)));
+ gatt_conn_2 = device->CreateGattConnection(
+ base::Bind(&BluetoothGattChromeOSTest::GattConnectionCallback,
+ base::Unretained(this)),
+ base::Bind(&BluetoothGattChromeOSTest::ConnectErrorCallback,
+ base::Unretained(this)));
+
+ EXPECT_EQ(8, success_callback_count_);
+ EXPECT_TRUE(device->IsConnected());
+ EXPECT_TRUE(gatt_conn_1->IsConnected());
+ EXPECT_TRUE(gatt_conn_2->IsConnected());
+
+ fake_bluetooth_device_client_->RemoveDevice(
+ dbus::ObjectPath(bluez::FakeBluetoothAdapterClient::kAdapterPath),
+ dbus::ObjectPath(bluez::FakeBluetoothDeviceClient::kLowEnergyPath));
+ ASSERT_TRUE(gatt_conn_1.get());
+ EXPECT_FALSE(gatt_conn_1->IsConnected());
+ ASSERT_TRUE(gatt_conn_2.get());
+ EXPECT_FALSE(gatt_conn_2->IsConnected());
+}
+
TEST_F(BluetoothGattChromeOSTest, GattServiceAddedAndRemoved) {
// Create a fake LE device. We store the device pointer here because this is a
// test. It's unsafe to do this in production as the device might get deleted.
« no previous file with comments | « device/bluetooth/bluetooth_device_chromeos.cc ('k') | device/bluetooth/bluetooth_gatt_connection.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698