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

Unified Diff: device/bluetooth/bluetooth_adapter_unittest.cc

Issue 2499913002: bluetooth: android: Implement RetrieveGattConnectedDevicesWithFilter
Patch Set: rebase Created 4 years 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_adapter_android.cc ('k') | device/bluetooth/bluetooth_device_android.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: device/bluetooth/bluetooth_adapter_unittest.cc
diff --git a/device/bluetooth/bluetooth_adapter_unittest.cc b/device/bluetooth/bluetooth_adapter_unittest.cc
index 5217f6edcdfda58fbad879b69d17ac327443f3e3..d4d83bbb7f8dbb1d1f1c85299b8f70db3c393c9f 100644
--- a/device/bluetooth/bluetooth_adapter_unittest.cc
+++ b/device/bluetooth/bluetooth_adapter_unittest.cc
@@ -36,6 +36,8 @@
#endif
using device::BluetoothDevice;
+using UUIDSet = BluetoothDevice::UUIDSet;
+using DeviceToUUIDs = std::unordered_map<BluetoothDevice*, UUIDSet>;
namespace device {
@@ -865,7 +867,37 @@ TEST_F(BluetoothTest, RemoveOutdatedDeviceGattConnect) {
}
#endif // defined(OS_ANDROID) || defined(OS_MACOSX)
-#if defined(OS_MACOSX)
+#if defined(OS_ANDROID) || defined(OS_MACOSX)
+// Make sure devices have a timestamp when they are added.
+TEST_F(BluetoothTest, DiscoverConnectedLowEnergyDevice_Timestamp) {
+ if (!PlatformSupportsLowEnergy()) {
+ LOG(WARNING) << "Low Energy Bluetooth unavailable, skipping unit test.";
+ return;
+ }
+ InitWithFakeAdapter();
+ TestBluetoothAdapterObserver observer(adapter_);
+
+ SimulateConnectedLowEnergyDevice(ConnectedDeviceType::GENERIC_DEVICE);
+ SimulateConnectedLowEnergyDevice(ConnectedDeviceType::HEART_RATE_DEVICE);
+
+ BluetoothDiscoveryFilter discovery_filter(BLUETOOTH_TRANSPORT_LE);
+ std::unordered_map<BluetoothDevice*, UUIDSet> result =
+ adapter_->RetrieveGattConnectedDevicesWithDiscoveryFilter(
+ discovery_filter);
+
+ EXPECT_EQ(2, observer.device_added_count());
+ EXPECT_EQ(0, observer.device_removed_count());
+ EXPECT_EQ(2u, adapter_->GetDevices().size());
+
+ observer.Reset();
+ RemoveTimedOutDevices();
+
+ EXPECT_EQ(0, observer.device_removed_count());
+ EXPECT_EQ(2u, adapter_->GetDevices().size());
+}
+#endif // defined(OS_ANDROID) || defined(OS_MACOSX)
+
+#if defined(OS_ANDROID) || defined(OS_MACOSX)
// Simulate two devices being connected before calling
// RetrieveGattConnectedDevicesWithDiscoveryFilter() with no service filter.
TEST_F(BluetoothTest, DiscoverConnectedLowEnergyDeviceWithNoFilter) {
@@ -878,22 +910,33 @@ TEST_F(BluetoothTest, DiscoverConnectedLowEnergyDeviceWithNoFilter) {
SimulateConnectedLowEnergyDevice(ConnectedDeviceType::GENERIC_DEVICE);
SimulateConnectedLowEnergyDevice(ConnectedDeviceType::HEART_RATE_DEVICE);
+
BluetoothDiscoveryFilter discovery_filter(BLUETOOTH_TRANSPORT_LE);
- std::unordered_map<BluetoothDevice*, BluetoothDevice::UUIDSet> result =
+ std::unordered_map<BluetoothDevice*, UUIDSet> result =
adapter_->RetrieveGattConnectedDevicesWithDiscoveryFilter(
discovery_filter);
- EXPECT_EQ(2u, result.size());
- for (const auto& pair : result) {
- EXPECT_TRUE(adapter_->GetDevice(pair.first->GetAddress()));
- EXPECT_TRUE(pair.second.empty());
- }
- EXPECT_EQ(BluetoothDevice::UUIDSet({BluetoothUUID(kTestUUIDGenericAccess)}),
- RetrieveConnectedPeripheralServiceUUIDs());
EXPECT_EQ(2, observer.device_added_count());
EXPECT_EQ(2u, adapter_->GetDevices().size());
+
+ BluetoothDevice* device1 = adapter_->GetDevice(kTestDeviceAddress1);
+ ASSERT_TRUE(device1);
+ BluetoothDevice* device2 = adapter_->GetDevice(kTestDeviceAddress2);
+ ASSERT_TRUE(device2);
+
+ EXPECT_EQ(DeviceToUUIDs({{device1, UUIDSet()}, {device2, UUIDSet()}}),
+ result);
+
+#if defined(OS_MACOSX)
+ EXPECT_EQ(UUIDSet({BluetoothUUID(kTestUUIDGenericAccess)}),
+ RetrieveConnectedPeripheralServiceUUIDs());
+#elif defined(OS_ANDROID)
+ EXPECT_EQ(1, manager_get_connected_devices_attempts_);
+#endif // defined(OS_MACOSX)
}
+#endif // defined(OS_ANDROID) || defined(OS_MACOSX)
+#if defined(OS_ANDROID) || defined(OS_MACOSX)
// Simulate two devices being connected before calling
// RetrieveGattConnectedDevicesWithDiscoveryFilter() with one service filter.
TEST_F(BluetoothTest, DiscoverConnectedLowEnergyDeviceWithFilter) {
@@ -906,29 +949,35 @@ TEST_F(BluetoothTest, DiscoverConnectedLowEnergyDeviceWithFilter) {
SimulateConnectedLowEnergyDevice(ConnectedDeviceType::GENERIC_DEVICE);
SimulateConnectedLowEnergyDevice(ConnectedDeviceType::HEART_RATE_DEVICE);
+
BluetoothDiscoveryFilter discovery_filter(BLUETOOTH_TRANSPORT_LE);
device::BluetoothUUID heart_service_uuid =
device::BluetoothUUID(kTestUUIDHeartRate);
discovery_filter.AddUUID(heart_service_uuid);
- std::unordered_map<BluetoothDevice*, BluetoothDevice::UUIDSet> result =
+ std::unordered_map<BluetoothDevice*, UUIDSet> result =
adapter_->RetrieveGattConnectedDevicesWithDiscoveryFilter(
discovery_filter);
- EXPECT_EQ(1u, result.size());
- for (const auto& pair : result) {
- EXPECT_EQ(kTestDeviceAddress2, pair.first->GetAddress());
- EXPECT_TRUE(adapter_->GetDevice(pair.first->GetAddress()));
- EXPECT_EQ(BluetoothDevice::UUIDSet({heart_service_uuid}), pair.second);
- }
- EXPECT_EQ(BluetoothDevice::UUIDSet({heart_service_uuid}),
- RetrieveConnectedPeripheralServiceUUIDs());
EXPECT_EQ(1, observer.device_added_count());
EXPECT_EQ(1u, adapter_->GetDevices().size());
+
+ BluetoothDevice* device = adapter_->GetDevice(kTestDeviceAddress2);
+ ASSERT_TRUE(device);
+ EXPECT_EQ(DeviceToUUIDs({{device, UUIDSet({heart_service_uuid})}}), result);
+
+#if defined(OS_MACOSX)
+ EXPECT_EQ(UUIDSet({heart_service_uuid}),
+ RetrieveConnectedPeripheralServiceUUIDs());
+#elif defined(OS_ANDROID)
+ EXPECT_EQ(1, manager_get_connected_devices_attempts_);
+#endif // defined(OS_MACOSX)
}
+#endif // defined(OS_ANDROID) || defined(OS_MACOSX)
// Simulate two devices being connected before calling
// RetrieveGattConnectedDevicesWithDiscoveryFilter() with one service filter
// that doesn't match.
+#if defined(OS_ANDROID) || defined(OS_MACOSX)
TEST_F(BluetoothTest, DiscoverConnectedLowEnergyDeviceWithWrongFilter) {
if (!PlatformSupportsLowEnergy()) {
LOG(WARNING) << "Low Energy Bluetooth unavailable, skipping unit test.";
@@ -939,23 +988,31 @@ TEST_F(BluetoothTest, DiscoverConnectedLowEnergyDeviceWithWrongFilter) {
SimulateConnectedLowEnergyDevice(ConnectedDeviceType::GENERIC_DEVICE);
SimulateConnectedLowEnergyDevice(ConnectedDeviceType::HEART_RATE_DEVICE);
+
BluetoothDiscoveryFilter discovery_filter(BLUETOOTH_TRANSPORT_LE);
discovery_filter.AddUUID(device::BluetoothUUID(kTestUUIDLinkLoss));
- std::unordered_map<BluetoothDevice*, BluetoothDevice::UUIDSet> result =
+ std::unordered_map<BluetoothDevice*, UUIDSet> result =
adapter_->RetrieveGattConnectedDevicesWithDiscoveryFilter(
discovery_filter);
- EXPECT_TRUE(result.empty());
- EXPECT_EQ(
- BluetoothDevice::UUIDSet({device::BluetoothUUID(kTestUUIDLinkLoss)}),
- RetrieveConnectedPeripheralServiceUUIDs());
EXPECT_EQ(0, observer.device_added_count());
EXPECT_EQ(0u, adapter_->GetDevices().size());
+
+ EXPECT_TRUE(result.empty());
+
+#if defined(OS_MACOSX)
+ EXPECT_EQ(UUIDSet({device::BluetoothUUID(kTestUUIDLinkLoss)}),
+ RetrieveConnectedPeripheralServiceUUIDs());
+#elif defined(OS_ANDROID)
+ EXPECT_EQ(1, manager_get_connected_devices_attempts_);
+#endif // defined(OS_MACOSX)
}
+#endif // defined(OS_ANDROID) || defined(OS_MACOSX)
// Simulate two devices being connected before calling
// RetrieveGattConnectedDevicesWithDiscoveryFilter() with two service filters
// that both match.
+#if defined(OS_ANDROID) || defined(OS_MACOSX)
TEST_F(BluetoothTest, DiscoverConnectedLowEnergyDeviceWithTwoFilters) {
if (!PlatformSupportsLowEnergy()) {
LOG(WARNING) << "Low Energy Bluetooth unavailable, skipping unit test.";
@@ -966,6 +1023,7 @@ TEST_F(BluetoothTest, DiscoverConnectedLowEnergyDeviceWithTwoFilters) {
SimulateConnectedLowEnergyDevice(ConnectedDeviceType::GENERIC_DEVICE);
SimulateConnectedLowEnergyDevice(ConnectedDeviceType::HEART_RATE_DEVICE);
+
BluetoothDiscoveryFilter discovery_filter(BLUETOOTH_TRANSPORT_LE);
device::BluetoothUUID heart_service_uuid =
device::BluetoothUUID(kTestUUIDHeartRate);
@@ -973,35 +1031,38 @@ TEST_F(BluetoothTest, DiscoverConnectedLowEnergyDeviceWithTwoFilters) {
device::BluetoothUUID generic_service_uuid =
device::BluetoothUUID(kTestUUIDGenericAccess);
discovery_filter.AddUUID(generic_service_uuid);
- std::unordered_map<BluetoothDevice*, BluetoothDevice::UUIDSet> result =
+ std::unordered_map<BluetoothDevice*, UUIDSet> result =
adapter_->RetrieveGattConnectedDevicesWithDiscoveryFilter(
discovery_filter);
- EXPECT_EQ(2u, result.size());
- for (const auto& pair : result) {
- EXPECT_TRUE(adapter_->GetDevice(pair.first->GetAddress()));
- if (pair.first->GetAddress() == kTestDeviceAddress2) {
- EXPECT_EQ(
- BluetoothDevice::UUIDSet({heart_service_uuid, generic_service_uuid}),
- pair.second);
- } else if (pair.first->GetAddress() == kTestDeviceAddress1) {
- EXPECT_EQ(BluetoothDevice::UUIDSet({generic_service_uuid}), pair.second);
- } else {
- // Unknown device.
- EXPECT_TRUE(false);
- }
- }
- EXPECT_EQ(
- BluetoothDevice::UUIDSet({generic_service_uuid, heart_service_uuid}),
- RetrieveConnectedPeripheralServiceUUIDs());
EXPECT_EQ(2, observer.device_added_count());
EXPECT_EQ(2u, adapter_->GetDevices().size());
+
+ BluetoothDevice* device1 = adapter_->GetDevice(kTestDeviceAddress1);
+ ASSERT_TRUE(device1);
+ BluetoothDevice* device2 = adapter_->GetDevice(kTestDeviceAddress2);
+ ASSERT_TRUE(device2);
+
+ EXPECT_EQ(
+ DeviceToUUIDs(
+ {{device1, UUIDSet({generic_service_uuid})},
+ {device2, UUIDSet({heart_service_uuid, generic_service_uuid})}}),
+ result);
+
+#if defined(OS_MACOSX)
+ EXPECT_EQ(UUIDSet({generic_service_uuid, heart_service_uuid}),
+ RetrieveConnectedPeripheralServiceUUIDs());
+#elif defined(OS_ANDROID)
+ EXPECT_EQ(1, manager_get_connected_devices_attempts_);
+#endif // defined(OS_MACOSX)
}
+#endif // defined(OS_ANDROID) || defined(OS_MACOSX)
// Simulate two devices being connected before calling
// RetrieveGattConnectedDevicesWithDiscoveryFilter() with one service filter
// that one match device, and then
// RetrieveGattConnectedDevicesWithDiscoveryFilter() again.
+#if defined(OS_ANDROID) || defined(OS_MACOSX)
TEST_F(BluetoothTest, DiscoverConnectedLowEnergyDeviceTwice) {
if (!PlatformSupportsLowEnergy()) {
LOG(WARNING) << "Low Energy Bluetooth unavailable, skipping unit test.";
@@ -1012,42 +1073,49 @@ TEST_F(BluetoothTest, DiscoverConnectedLowEnergyDeviceTwice) {
SimulateConnectedLowEnergyDevice(ConnectedDeviceType::GENERIC_DEVICE);
SimulateConnectedLowEnergyDevice(ConnectedDeviceType::HEART_RATE_DEVICE);
+
BluetoothDiscoveryFilter discovery_filter(BLUETOOTH_TRANSPORT_LE);
device::BluetoothUUID heart_service_uuid =
device::BluetoothUUID(kTestUUIDHeartRate);
discovery_filter.AddUUID(heart_service_uuid);
- std::unordered_map<BluetoothDevice*, BluetoothDevice::UUIDSet> result =
+ std::unordered_map<BluetoothDevice*, UUIDSet> result =
adapter_->RetrieveGattConnectedDevicesWithDiscoveryFilter(
discovery_filter);
- EXPECT_EQ(1u, result.size());
- for (const auto& pair : result) {
- EXPECT_EQ(kTestDeviceAddress2, pair.first->GetAddress());
- EXPECT_TRUE(adapter_->GetDevice(pair.first->GetAddress()));
- EXPECT_EQ(BluetoothDevice::UUIDSet({heart_service_uuid}), pair.second);
- }
- EXPECT_EQ(BluetoothDevice::UUIDSet({heart_service_uuid}),
- RetrieveConnectedPeripheralServiceUUIDs());
EXPECT_EQ(1, observer.device_added_count());
EXPECT_EQ(1u, adapter_->GetDevices().size());
+ BluetoothDevice* device = adapter_->GetDevice(kTestDeviceAddress2);
+ ASSERT_TRUE(device);
+ EXPECT_EQ(DeviceToUUIDs({{device, UUIDSet({heart_service_uuid})}}), result);
+
+#if defined(OS_MACOSX)
+ EXPECT_EQ(UUIDSet({heart_service_uuid}),
+ RetrieveConnectedPeripheralServiceUUIDs());
+#elif defined(OS_ANDROID)
+ EXPECT_EQ(1, manager_get_connected_devices_attempts_);
+#endif // defined(OS_MACOSX)
+
observer.Reset();
+#if defined(OS_MACOSX)
ResetRetrieveConnectedPeripheralServiceUUIDs();
+#endif // defined(OS_MACOSX)
+
result = adapter_->RetrieveGattConnectedDevicesWithDiscoveryFilter(
discovery_filter);
- EXPECT_EQ(1u, result.size());
- for (const auto& pair : result) {
- EXPECT_EQ(kTestDeviceAddress2, pair.first->GetAddress());
- EXPECT_TRUE(adapter_->GetDevice(pair.first->GetAddress()));
- EXPECT_EQ(BluetoothDevice::UUIDSet({heart_service_uuid}), pair.second);
- }
- EXPECT_EQ(BluetoothDevice::UUIDSet({heart_service_uuid}),
- RetrieveConnectedPeripheralServiceUUIDs());
-
EXPECT_EQ(0, observer.device_added_count());
EXPECT_EQ(1u, adapter_->GetDevices().size());
-}
+
+ EXPECT_EQ(DeviceToUUIDs({{device, UUIDSet({heart_service_uuid})}}), result);
+
+#if defined(OS_MACOSX)
+ EXPECT_EQ(UUIDSet({heart_service_uuid}),
+ RetrieveConnectedPeripheralServiceUUIDs());
+#elif defined(OS_ANDROID)
+ EXPECT_EQ(2, manager_get_connected_devices_attempts_);
#endif // defined(OS_MACOSX)
+}
+#endif // defined(OS_ANDROID) || defined(OS_MACOSX)
} // namespace device
« no previous file with comments | « device/bluetooth/bluetooth_adapter_android.cc ('k') | device/bluetooth/bluetooth_device_android.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698