| Index: device/bluetooth/bluetooth_adapter_unittest.cc
|
| diff --git a/device/bluetooth/bluetooth_adapter_unittest.cc b/device/bluetooth/bluetooth_adapter_unittest.cc
|
| index d7948bf56f000f453faca6e3dc76894d8300f12c..406875b62a5c16604eea3546ed482c2e47bc01f5 100644
|
| --- a/device/bluetooth/bluetooth_adapter_unittest.cc
|
| +++ b/device/bluetooth/bluetooth_adapter_unittest.cc
|
| @@ -763,4 +763,91 @@ 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.
|
| + observer.Reset();
|
| + StartLowEnergyDiscoverySession();
|
| + 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();
|
| + TestBluetoothAdapterObserver observer(adapter_);
|
| + StartLowEnergyDiscoverySession();
|
| + BluetoothDevice* device1 = SimulateLowEnergyDevice(1);
|
| + BluetoothDevice* device2 = SimulateLowEnergyDevice(4);
|
| +
|
| + EXPECT_EQ(2u, adapter_->GetDevices().size());
|
| + device1->SetAsExpiredForTesting();
|
| +
|
| + // Check that the outdated device is removed.
|
| + RemoveTimedOutDevices();
|
| + EXPECT_EQ(1, observer.device_removed_count());
|
| + EXPECT_EQ(1u, adapter_->GetDevices().size());
|
| + EXPECT_EQ(adapter_->GetDevices()[0]->GetAddress(), device2->GetAddress());
|
| +}
|
| +#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, RemoveOutdatedDeviceGattConnect) {
|
| + // Test that a device with GATT connection isn't removed.
|
| + if (!PlatformSupportsLowEnergy()) {
|
| + LOG(WARNING) << "Low Energy Bluetooth unavailable, skipping unit test.";
|
| + return;
|
| + }
|
| + InitWithFakeAdapter();
|
| + TestBluetoothAdapterObserver observer(adapter_);
|
| + StartLowEnergyDiscoverySession();
|
| + BluetoothDevice* device = SimulateLowEnergyDevice(1);
|
| + device->SetAsExpiredForTesting();
|
| + device->CreateGattConnection(GetGattConnectionCallback(Call::EXPECTED),
|
| + GetConnectErrorCallback(Call::NOT_EXPECTED));
|
| + SimulateGattConnection(device);
|
| + EXPECT_EQ(1u, adapter_->GetDevices().size());
|
| + RemoveTimedOutDevices();
|
| + EXPECT_EQ(0, observer.device_removed_count());
|
| + EXPECT_EQ(1u, adapter_->GetDevices().size());
|
| +}
|
| +#endif // defined(OS_ANDROID) || defined(OS_MACOSX)
|
| +
|
| } // namespace device
|
|
|