| 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
|
|
|