| Index: device/bluetooth/bluetooth_device_unittest.cc
|
| diff --git a/device/bluetooth/bluetooth_device_unittest.cc b/device/bluetooth/bluetooth_device_unittest.cc
|
| index f395764df919cf492ace28bdd388f55d58e51c70..69410b55ad3904c1e6c017ed76c35a3ddec1b7e3 100644
|
| --- a/device/bluetooth/bluetooth_device_unittest.cc
|
| +++ b/device/bluetooth/bluetooth_device_unittest.cc
|
| @@ -395,6 +395,55 @@ TEST_F(BluetoothTest,
|
| #endif // defined(OS_ANDROID)
|
|
|
| #if defined(OS_ANDROID)
|
| +// Calls CreateGattConnection & DisconnectGatt, then checks that gatt services
|
| +// have been cleaned up.
|
| +TEST_F(BluetoothTest, BluetoothGattConnection_DisconnectGatt_Cleanup) {
|
| + InitWithFakeAdapter();
|
| + StartLowEnergyDiscoverySession();
|
| + BluetoothDevice* device = DiscoverLowEnergyDevice(3);
|
| + EXPECT_FALSE(device->IsConnected());
|
| +
|
| + // Connect to the device
|
| + ResetEventCounts();
|
| + device->CreateGattConnection(GetGattConnectionCallback(Call::EXPECTED),
|
| + GetConnectErrorCallback(Call::NOT_EXPECTED));
|
| + TestBluetoothAdapterObserver observer(adapter_);
|
| + SimulateGattConnection(device);
|
| + EXPECT_TRUE(device->IsConnected());
|
| +
|
| + // Discover services
|
| + std::vector<std::string> services;
|
| + services.push_back("00000000-0000-1000-8000-00805f9b34fb");
|
| + services.push_back("00000001-0000-1000-8000-00805f9b34fb");
|
| + SimulateGattServicesDiscovered(device, services);
|
| + EXPECT_TRUE(device->IsGattServicesDiscoveryComplete());
|
| + EXPECT_EQ(2u, device->GetGattServices().size());
|
| + EXPECT_EQ(1, observer.gatt_services_discovered_count());
|
| +
|
| + // Disconnect from the device
|
| + device->DisconnectGatt();
|
| + SimulateGattDisconnection(device);
|
| + EXPECT_FALSE(device->IsConnected());
|
| + EXPECT_FALSE(device->IsGattServicesDiscoveryComplete());
|
| + EXPECT_EQ(0u, device->GetGattServices().size());
|
| +
|
| + // Verify that the device can be connected to again
|
| + device->CreateGattConnection(GetGattConnectionCallback(Call::EXPECTED),
|
| + GetConnectErrorCallback(Call::NOT_EXPECTED));
|
| + SimulateGattConnection(device);
|
| + EXPECT_TRUE(device->IsConnected());
|
| +
|
| + // Verify that service discovery can be done again
|
| + std::vector<std::string> services2;
|
| + services2.push_back("00000002-0000-1000-8000-00805f9b34fb");
|
| + SimulateGattServicesDiscovered(device, services2);
|
| + EXPECT_TRUE(device->IsGattServicesDiscoveryComplete());
|
| + EXPECT_EQ(1u, device->GetGattServices().size());
|
| + EXPECT_EQ(2, observer.gatt_services_discovered_count());
|
| +}
|
| +#endif // defined(OS_ANDROID)
|
| +
|
| +#if defined(OS_ANDROID)
|
| // Calls CreateGattConnection, but simulate errors connecting. Also, verifies
|
| // multiple errors should only invoke callbacks once.
|
| TEST_F(BluetoothTest, BluetoothGattConnection_ErrorAfterConnection) {
|
|
|