Index: device/bluetooth/bluetooth_adapter_unittest.cc |
diff --git a/device/bluetooth/bluetooth_adapter_unittest.cc b/device/bluetooth/bluetooth_adapter_unittest.cc |
index feba4304c6ae1d212e2474383fe099550d06f437..d485802318f6f5c2ea04650e9a6a85e8e47cfbcc 100644 |
--- a/device/bluetooth/bluetooth_adapter_unittest.cc |
+++ b/device/bluetooth/bluetooth_adapter_unittest.cc |
@@ -718,4 +718,66 @@ TEST_F(BluetoothTest, TogglePowerBeforeScan) { |
} |
#endif // defined(OS_ANDROID) |
+// 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 = DiscoverLowEnergyDevice(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(); |
+ DiscoverLowEnergyDevice(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 = DiscoverLowEnergyDevice(1); |
+ BluetoothDevice* device2 = DiscoverLowEnergyDevice(4); |
+ 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. |
+ adapter_->RemoveTimedOutDevices(); |
+ EXPECT_EQ(1u, adapter_->GetDevices().size()); |
+ EXPECT_EQ(adapter_->GetDevices()[0]->GetAddress(), device2->GetAddress()); |
+} |
+#endif // defined(OS_ANDROID) || defined(OS_MACOSX) |
+ |
} // namespace device |