Index: device/bluetooth/bluetooth_adapter_unittest.cc |
diff --git a/device/bluetooth/bluetooth_adapter_unittest.cc b/device/bluetooth/bluetooth_adapter_unittest.cc |
index 834859c101e2acced911bb14a508fec27da19422..e6fe2ae930357adab2c1d76fe4579ff954c14206 100644 |
--- a/device/bluetooth/bluetooth_adapter_unittest.cc |
+++ b/device/bluetooth/bluetooth_adapter_unittest.cc |
@@ -769,4 +769,68 @@ TEST_F(BluetoothTest, RegisterLocalGattServices) { |
} |
#endif // defined(OS_CHROMEOS) || defined(OS_LINUX) |
+// This test should only be enabled for platforms that uses the |
+// BluetoothAdapter#RemoveOutdatedDevices function to purge outdated |
+// devices. |
+#if defined(OS_ANDROID) || defined(OS_MACOSX) |
+TEST_F(BluetoothTest, EnsureUpdatedTimestamps) { |
+ if (!PlatformSupportsLowEnergy()) { |
+ LOG(WARNING) << "Low Energy Bluetooth unavailable, skipping unit test."; |
+ return; |
+ } |
+ InitWithFakeAdapter(); |
+ TestBluetoothAdapterObserver observer(adapter_); |
+ |
+ // Test that the timestamp of a device is updated during multiple |
+ // discovery sessions. |
+ StartLowEnergyDiscoverySession(); |
+ BluetoothDevice* device = SimulateLowEnergyDevice(1); |
+ |
+ EXPECT_EQ(1, observer.device_added_count()); |
+ EXPECT_EQ(1u, adapter_->GetDevices().size()); |
+ base::Time first_timestamp = device->GetLastUpdateTime(); |
+ |
+ // Do a new discovery and check that the timestamp is updated. |
+ StartLowEnergyDiscoverySession(); |
+ observer.Reset(); |
+ SimulateLowEnergyDevice(1); |
+ EXPECT_EQ(0, observer.device_added_count()); |
+ EXPECT_EQ(1u, adapter_->GetDevices().size()); |
+ base::Time second_timestamp = device->GetLastUpdateTime(); |
+ EXPECT_TRUE(second_timestamp > first_timestamp); |
+ |
+ // Check that timestamp doesn't change when there is no discovery. |
+ base::Time third_timestamp = device->GetLastUpdateTime(); |
+ EXPECT_TRUE(second_timestamp == third_timestamp); |
+} |
+#endif // defined(OS_ANDROID) || defined(OS_MACOSX) |
+ |
+// This test should only be enabled for platforms that uses the |
+// BluetoothAdapter#RemoveOutdatedDevices function to purge outdated |
+// devices. |
+#if defined(OS_ANDROID) || defined(OS_MACOSX) |
+TEST_F(BluetoothTest, RemoveOutdatedDevices) { |
+ if (!PlatformSupportsLowEnergy()) { |
+ LOG(WARNING) << "Low Energy Bluetooth unavailable, skipping unit test."; |
+ return; |
+ } |
+ InitWithFakeAdapter(); |
+ StartLowEnergyDiscoverySession(); |
+ BluetoothDevice* device1 = SimulateLowEnergyDevice(1); |
+ BluetoothDevice* device2 = SimulateLowEnergyDevice(4); |
ortuno
2016/06/14 15:29:33
Please add a test to make sure gatt connected devi
perja
2016/06/15 13:03:40
I'm not sure how to test for classic connected dev
ortuno
2016/06/15 17:20:16
I would add two new functions to bluetooth_test.h
perja
2016/06/17 13:39:26
OK, do you know what class should be used for a fa
|
+ |
+ EXPECT_EQ(2u, adapter_->GetDevices().size()); |
+ |
+ // Set timestamp of device1 so that it appears as expired. |
+ device1->last_update_time_ = |
+ base::Time::NowFromSystemTime() - |
+ (BluetoothAdapter::timeoutSec + base::TimeDelta::FromSeconds(1)); |
+ |
+ // Check that outdated devices are removed. |
+ RemoveTimedOutDevices(); |
+ EXPECT_EQ(1u, adapter_->GetDevices().size()); |
+ EXPECT_EQ(adapter_->GetDevices()[0]->GetAddress(), device2->GetAddress()); |
+} |
+#endif // defined(OS_ANDROID) || defined(OS_MACOSX) |
+ |
} // namespace device |