Chromium Code Reviews| Index: device/bluetooth/bluetooth_device_unittest.cc |
| diff --git a/device/bluetooth/bluetooth_device_unittest.cc b/device/bluetooth/bluetooth_device_unittest.cc |
| index 3f1ba60a6d259df012064f0a1028eefbf3b77249..22ba74840241dddff0e52b7ab8baa57a9cd2d03b 100644 |
| --- a/device/bluetooth/bluetooth_device_unittest.cc |
| +++ b/device/bluetooth/bluetooth_device_unittest.cc |
| @@ -27,6 +27,18 @@ |
| namespace device { |
| +namespace { |
| + |
| +int8_t ToInt8(BluetoothTest::TestRSSI rssi) { |
| + return static_cast<int8_t>(rssi); |
| +} |
| + |
| +int8_t ToInt8(BluetoothTest::TestTxPower tx_power) { |
| + return static_cast<int8_t>(tx_power); |
| +} |
| + |
| +} // namespace |
| + |
| using UUIDSet = BluetoothDevice::UUIDSet; |
| using ServiceDataMap = BluetoothDevice::ServiceDataMap; |
| @@ -122,6 +134,65 @@ TEST_F(BluetoothTest, LowEnergyDeviceNoUUIDs) { |
| } |
| #endif // defined(OS_ANDROID) || defined(OS_MACOSX) || defined(OS_WIN) |
| +#if defined(OS_MACOSX) |
| +// TODO(ortuno): Enable on Android once it supports Service Data. |
| +// http://crbug.com/639408 |
|
scheib
2016/08/29 02:58:13
BTW I think we should stick with TODO(639408) styl
ortuno
2016/08/29 15:53:58
Acknowledged.
|
| +TEST_F(BluetoothTest, GetServiceDataUUIDs_GetServiceDataForUUID) { |
| + if (!PlatformSupportsLowEnergy()) { |
| + LOG(WARNING) << "Low Energy Bluetooth unavailable, skipping unit test."; |
| + return; |
| + } |
| + InitWithFakeAdapter(); |
| + StartLowEnergyDiscoverySession(); |
| + |
| + // Receive Advertisement with service data. |
| + BluetoothDevice* device = SimulateLowEnergyDevice(1); |
| + |
| + EXPECT_EQ(ServiceDataMap({{BluetoothUUID(kTestUUIDHeartRate), {1}}}), |
| + device->GetServiceData()); |
| + EXPECT_EQ(UUIDSet({BluetoothUUID(kTestUUIDHeartRate)}), |
| + device->GetServiceDataUUIDs()); |
| + EXPECT_EQ(std::vector<uint8_t>({1}), |
| + *device->GetServiceDataForUUID(BluetoothUUID(kTestUUIDHeartRate))); |
| + |
| + // Receive Advertisement with no service data. |
| + SimulateLowEnergyDevice(3); |
| + |
| + EXPECT_TRUE(device->GetServiceData().empty()); |
| + EXPECT_TRUE(device->GetServiceDataUUIDs().empty()); |
| + EXPECT_EQ(nullptr, |
| + device->GetServiceDataForUUID(BluetoothUUID(kTestUUIDHeartRate))); |
| + |
| + // Receive Advertisement with new service data. |
| + SimulateLowEnergyDevice(2); |
| + |
| + EXPECT_EQ(ServiceDataMap({{BluetoothUUID(kTestUUIDHeartRate), {2}}, |
| + {BluetoothUUID(kTestUUIDImmediateAlert), {0}}}), |
| + device->GetServiceData()); |
| + EXPECT_EQ(UUIDSet({BluetoothUUID(kTestUUIDHeartRate), |
| + BluetoothUUID(kTestUUIDImmediateAlert)}), |
| + device->GetServiceDataUUIDs()); |
| + EXPECT_EQ(std::vector<uint8_t>({2}), |
| + *device->GetServiceDataForUUID(BluetoothUUID(kTestUUIDHeartRate))); |
| + EXPECT_EQ( |
| + std::vector<uint8_t>({0}), |
| + *device->GetServiceDataForUUID(BluetoothUUID(kTestUUIDImmediateAlert))); |
| + |
| + // Stop discovery. |
| + discovery_sessions_[0]->Stop(GetCallback(Call::EXPECTED), |
| + GetErrorCallback(Call::NOT_EXPECTED)); |
| + ASSERT_FALSE(adapter_->IsDiscovering()); |
| + ASSERT_FALSE(discovery_sessions_[0]->IsActive()); |
| + |
| + EXPECT_TRUE(device->GetServiceData().empty()); |
| + EXPECT_TRUE(device->GetServiceDataUUIDs().empty()); |
| + EXPECT_EQ(nullptr, |
| + device->GetServiceDataForUUID(BluetoothUUID(kTestUUIDHeartRate))); |
| + EXPECT_EQ(nullptr, device->GetServiceDataForUUID( |
| + BluetoothUUID(kTestUUIDImmediateAlert))); |
| +} |
| +#endif // defined(OS_MACOSX) |
| + |
| #if defined(OS_ANDROID) || defined(OS_MACOSX) |
| // Tests that the Advertisement Data fields are correctly updated during |
| // discovery. |
| @@ -133,128 +204,114 @@ TEST_F(BluetoothTest, AdvertisementData_Discovery) { |
| InitWithFakeAdapter(); |
| TestBluetoothAdapterObserver observer(adapter_); |
| - // Start Discovery Session and receive Advertisement. No DeviceChanged event |
| - // because the device is new. |
| + // Start Discovery Session and receive Advertisement, should |
| + // not notify of device changed because the device is new. |
| + // - GetInquiryRSSI: Should return the packet's rssi. |
| // - GetUUIDs: Should return Advertised UUIDs. |
| // - GetServiceData: Should return advertised Service Data. |
| + // - GetInquiryTxPower: Should return the packet's advertised Tx Power. |
| StartLowEnergyDiscoverySession(); |
| BluetoothDevice* device = SimulateLowEnergyDevice(1); |
| EXPECT_EQ(0, observer.device_changed_count()); |
| - EXPECT_EQ(2u, device->GetUUIDs().size()); |
| - EXPECT_TRUE(base::ContainsKey(device->GetUUIDs(), |
| - BluetoothUUID(kTestUUIDGenericAccess))); |
| - EXPECT_TRUE(base::ContainsKey(device->GetUUIDs(), |
| - BluetoothUUID(kTestUUIDGenericAttribute))); |
| + EXPECT_EQ(ToInt8(TestRSSI::LOWEST), device->GetInquiryRSSI().value()); |
| + EXPECT_EQ(UUIDSet({BluetoothUUID(kTestUUIDGenericAccess), |
| + BluetoothUUID(kTestUUIDGenericAttribute)}), |
| + device->GetUUIDs()); |
| #if defined(OS_MACOSX) |
| // TODO(ortuno): Enable on Android once it supports Service Data. |
| // http://crbug.com/639408 |
| EXPECT_EQ(ServiceDataMap({{BluetoothUUID(kTestUUIDHeartRate), {1}}}), |
| device->GetServiceData()); |
| - |
| - EXPECT_EQ(UUIDSet({BluetoothUUID(kTestUUIDHeartRate)}), |
| - device->GetServiceDataUUIDs()); |
| - |
| - EXPECT_EQ(std::vector<uint8_t>({1}), |
| - *device->GetServiceDataForUUID(BluetoothUUID(kTestUUIDHeartRate))); |
| #endif // defined(OS_MACOSX) |
| + EXPECT_EQ(ToInt8(TestTxPower::LOWEST), device->GetInquiryTxPower().value()); |
| - // Receive Advertisement with no UUIDs or Service Data, should notify |
| - // device changed. |
| + // Receive Advertisement with no UUIDs, Service Data, or Tx Power, should |
| + // notify device changed. |
| + // - GetInquiryRSSI: Should return packet's rssi. |
| // - GetUUIDs: Should return no UUIDs. |
| // - GetServiceData: Should return empty map. |
| + // - GetInquiryTxPower: Should return nullopt because of no Tx Power. |
| SimulateLowEnergyDevice(3); |
| EXPECT_EQ(1, observer.device_changed_count()); |
| - EXPECT_EQ(0u, device->GetUUIDs().size()); |
| + EXPECT_EQ(ToInt8(TestRSSI::LOW), device->GetInquiryRSSI().value()); |
| + EXPECT_TRUE(device->GetUUIDs().empty()); |
| #if defined(OS_MACOSX) |
| // TODO(ortuno): Enable on Android once it supports Service Data. |
| // http://crbug.com/639408 |
| - EXPECT_EQ(ServiceDataMap(), device->GetServiceData()); |
| - EXPECT_EQ(UUIDSet(), device->GetServiceDataUUIDs()); |
| - EXPECT_EQ(nullptr, |
| - device->GetServiceDataForUUID(BluetoothUUID(kTestUUIDHeartRate))); |
| + EXPECT_TRUE(device->GetServiceData().empty()); |
| #endif // defined(OS_MACOSX) |
| + EXPECT_FALSE(device->GetInquiryTxPower()); |
| - // Receive Advertisement with different UUIDs and Service Data, should notify |
| - // device changed. |
| + // Receive Advertisement with different UUIDs, Service Data, and Tx Power, |
| + // should notify device changed. |
| + // - GetInquiryRSSI: Should return last packet's rssi. |
| // - GetUUIDs: Should return latest Advertised UUIDs. |
| // - GetServiceData: Should return last advertised Service Data. |
| + // - GetInquiryTxPower: Should return last advertised Tx Power. |
| SimulateLowEnergyDevice(2); |
| EXPECT_EQ(2, observer.device_changed_count()); |
| - EXPECT_EQ(2u, device->GetUUIDs().size()); |
| - EXPECT_FALSE(base::ContainsKey(device->GetUUIDs(), |
| - BluetoothUUID(kTestUUIDGenericAccess))); |
| - EXPECT_TRUE(base::ContainsKey(device->GetUUIDs(), |
| - BluetoothUUID(kTestUUIDImmediateAlert))); |
| + EXPECT_EQ(ToInt8(TestRSSI::LOWER), device->GetInquiryRSSI().value()); |
| + EXPECT_EQ(UUIDSet({BluetoothUUID(kTestUUIDImmediateAlert), |
| + BluetoothUUID(kTestUUIDLinkLoss)}), |
| + device->GetUUIDs()); |
| #if defined(OS_MACOSX) |
| // TODO(ortuno): Enable on Android once it supports Service Data. |
| // http://crbug.com/639408 |
| EXPECT_EQ(ServiceDataMap({{BluetoothUUID(kTestUUIDHeartRate), {2}}, |
| {BluetoothUUID(kTestUUIDImmediateAlert), {0}}}), |
| device->GetServiceData()); |
| - |
| - EXPECT_EQ(UUIDSet({BluetoothUUID(kTestUUIDHeartRate), |
| - BluetoothUUID(kTestUUIDImmediateAlert)}), |
| - device->GetServiceDataUUIDs()); |
| - |
| - EXPECT_EQ(std::vector<uint8_t>({2}), |
| - *device->GetServiceDataForUUID(BluetoothUUID(kTestUUIDHeartRate))); |
| - EXPECT_EQ( |
| - std::vector<uint8_t>({0}), |
| - *device->GetServiceDataForUUID(BluetoothUUID(kTestUUIDImmediateAlert))); |
| #endif // defined(OS_MACOSX) |
| + EXPECT_EQ(ToInt8(TestTxPower::LOWER), device->GetInquiryTxPower().value()); |
| // Stop discovery session, should notify of device changed. |
| + // - GetInquiryRSSI: Should return nullopt because we are no longer |
| + // discovering. |
| // - GetUUIDs: Should not return any UUIDs. |
| // - GetServiceData: Should return empty map. |
| + // - GetInquiryTxPower: Should return nullopt because we are no longer |
| + // discovering. |
| discovery_sessions_[0]->Stop(GetCallback(Call::EXPECTED), |
| GetErrorCallback(Call::NOT_EXPECTED)); |
| ASSERT_FALSE(adapter_->IsDiscovering()); |
| ASSERT_FALSE(discovery_sessions_[0]->IsActive()); |
| EXPECT_EQ(3, observer.device_changed_count()); |
| - EXPECT_EQ(0u, device->GetUUIDs().size()); |
| + EXPECT_FALSE(device->GetInquiryRSSI()); |
| + EXPECT_TRUE(device->GetUUIDs().empty()); |
| #if defined(OS_MACOSX) |
| // TODO(ortuno): Enable on Android once it supports Service Data. |
| // http://crbug.com/639408 |
| - EXPECT_EQ(ServiceDataMap(), device->GetServiceData()); |
| - EXPECT_EQ(UUIDSet(), device->GetServiceDataUUIDs()); |
| - EXPECT_EQ(nullptr, |
| - device->GetServiceDataForUUID(BluetoothUUID(kTestUUIDHeartRate))); |
| - EXPECT_EQ(nullptr, device->GetServiceDataForUUID( |
| - BluetoothUUID(kTestUUIDImmediateAlert))); |
| + EXPECT_TRUE(device->GetServiceData().empty()); |
| #endif // defined(OS_MACOSX) |
| + EXPECT_FALSE(device->GetInquiryTxPower()); |
| // Discover the device again with different UUIDs, should notify of device |
| // changed. |
| + // - GetInquiryRSSI: Should return last packet's rssi. |
| // - GetUUIDs: Should return only the latest Advertised UUIDs. |
| // - GetServiceData: Should return last advertise Service Data. |
| + // - GetInquiryTxPower: Should return last advertised Tx Power. |
| StartLowEnergyDiscoverySession(); |
| device = SimulateLowEnergyDevice(1); |
| EXPECT_EQ(4, observer.device_changed_count()); |
| - EXPECT_EQ(2u, device->GetUUIDs().size()); |
| - EXPECT_TRUE(base::ContainsKey(device->GetUUIDs(), |
| - BluetoothUUID(kTestUUIDGenericAccess))); |
| - EXPECT_TRUE(base::ContainsKey(device->GetUUIDs(), |
| - BluetoothUUID(kTestUUIDGenericAttribute))); |
| + EXPECT_EQ(ToInt8(TestRSSI::LOWEST), device->GetInquiryRSSI().value()); |
| + EXPECT_EQ(UUIDSet({BluetoothUUID(kTestUUIDGenericAccess), |
| + BluetoothUUID(kTestUUIDGenericAttribute)}), |
| + device->GetUUIDs()); |
| #if defined(OS_MACOSX) |
| // TODO(ortuno): Enable on Android once it supports Service Data. |
| // http://crbug.com/639408 |
| EXPECT_EQ(ServiceDataMap({{BluetoothUUID(kTestUUIDHeartRate), {1}}}), |
| device->GetServiceData()); |
| - |
| - EXPECT_EQ(UUIDSet({BluetoothUUID(kTestUUIDHeartRate)}), |
| - device->GetServiceDataUUIDs()); |
| - |
| - EXPECT_EQ(std::vector<uint8_t>({1}), |
| - *device->GetServiceDataForUUID(BluetoothUUID(kTestUUIDHeartRate))); |
| #endif // defined(OS_MACOSX) |
| + EXPECT_EQ(ToInt8(TestTxPower::LOWEST), device->GetInquiryTxPower().value()); |
| } |
| #endif // defined(OS_ANDROID) || defined(OS_MACOSX) |
| @@ -277,41 +334,25 @@ TEST_F(BluetoothTest, GetUUIDs_Connection) { |
| // Connect to the device. |
| // - GetUUIDs: Should return no UUIDs because Services have not been |
| // discovered. |
| - // - GetServiceData: Should return empty map because we are no longer |
| - // discovering. |
| device->CreateGattConnection(GetGattConnectionCallback(Call::EXPECTED), |
| GetConnectErrorCallback(Call::NOT_EXPECTED)); |
| SimulateGattConnection(device); |
| ASSERT_TRUE(device->IsConnected()); |
| - EXPECT_EQ(0u, device->GetUUIDs().size()); |
| -#if defined(OS_MACOSX) |
| - // TODO(ortuno): Enable on Android once it supports Service Data. |
| - // http://crbug.com/639408 |
| - EXPECT_EQ(ServiceDataMap(), device->GetServiceData()); |
| - EXPECT_EQ(UUIDSet(), device->GetServiceDataUUIDs()); |
| -#endif // defined(OS_MACOSX) |
| + EXPECT_TRUE(device->GetUUIDs().empty()); |
| observer.Reset(); |
| // Discover services, should notify of device changed. |
| // - GetUUIDs: Should return the device's services' UUIDs. |
| - // - GetServiceData: Should return empty map. |
| std::vector<std::string> services; |
| services.push_back(BluetoothUUID(kTestUUIDGenericAccess).canonical_value()); |
| SimulateGattServicesDiscovered(device, services); |
| EXPECT_EQ(1, observer.device_changed_count()); |
| - EXPECT_EQ(1u, device->GetUUIDs().size()); |
| - EXPECT_TRUE(base::ContainsKey(device->GetUUIDs(), |
| - BluetoothUUID(kTestUUIDGenericAccess))); |
| -#if defined(OS_MACOSX) |
| - // TODO(ortuno): Enable on Android once it supports Service Data. |
| - // http://crbug.com/639408 |
| - EXPECT_EQ(ServiceDataMap(), device->GetServiceData()); |
| - EXPECT_EQ(UUIDSet(), device->GetServiceDataUUIDs()); |
| -#endif // defined(OS_MACOSX) |
| + EXPECT_EQ(UUIDSet({BluetoothUUID(kTestUUIDGenericAccess)}), |
| + device->GetUUIDs()); |
| #if defined(OS_MACOSX) |
| // TODO(ortuno): Enable in Android and Windows. |
| @@ -324,29 +365,20 @@ TEST_F(BluetoothTest, GetUUIDs_Connection) { |
| // Notify of services changed, should notify of device changed. |
| // - GetUUIDs: Should return no UUIDs because we no longer know what services |
| // the device has. |
| - // - GetServiceData: Should return empty map. |
| - |
| SimulateGattServicesChanged(device); |
| ASSERT_FALSE(device->IsGattServicesDiscoveryComplete()); |
| EXPECT_EQ(1, observer.device_changed_count()); |
| - EXPECT_EQ(0u, device->GetUUIDs().size()); |
| - |
| - EXPECT_EQ(ServiceDataMap(), device->GetServiceData()); |
| - EXPECT_EQ(UUIDSet(), device->GetServiceDataUUIDs()); |
| + EXPECT_TRUE(device->GetUUIDs().empty()); |
| // Services discovered again, should notify of device changed. |
| // - GetUUIDs: Should return Service UUIDs. |
| - // - GetServiceData: Should return empty map. |
| SimulateGattServicesDiscovered(device, {} /* services */); |
| EXPECT_EQ(2, observer.device_changed_count()); |
| - EXPECT_EQ(1u, device->GetUUIDs().size()); |
| - EXPECT_TRUE(base::ContainsKey(device->GetUUIDs(), |
| - BluetoothUUID(kTestUUIDGenericAccess))); |
| + EXPECT_EQ(UUIDSet({BluetoothUUID(kTestUUIDGenericAccess)}), |
| + device->GetUUIDs()); |
| - EXPECT_EQ(ServiceDataMap(), device->GetServiceData()); |
| - EXPECT_EQ(UUIDSet(), device->GetServiceDataUUIDs()); |
| #endif // defined(OS_MACOSX) |
| observer.Reset(); |
| @@ -354,27 +386,19 @@ TEST_F(BluetoothTest, GetUUIDs_Connection) { |
| // Disconnect, should notify device changed. |
| // - GetUUIDs: Should return no UUIDs since we no longer know what services |
| // the device holds and notify of device changed. |
| - // - GetServiceData: Should return empty map. |
| gatt_connections_[0]->Disconnect(); |
| SimulateGattDisconnection(device); |
| ASSERT_FALSE(device->IsGattConnected()); |
| EXPECT_EQ(1, observer.device_changed_count()); |
| - EXPECT_EQ(0u, device->GetUUIDs().size()); |
| - |
| -#if defined(OS_MACOSX) |
| - // TODO(ortuno): Enable on Android once it supports Service Data. |
| - // http://crbug.com/639408 |
| - EXPECT_EQ(ServiceDataMap(), device->GetServiceData()); |
| - EXPECT_EQ(UUIDSet(), device->GetServiceDataUUIDs()); |
| -#endif // defined(OS_MACOSX) |
| + EXPECT_TRUE(device->GetUUIDs().empty()); |
| } |
| #endif // defined(OS_ANDROID) || defined(OS_MACOSX) |
| #if defined(OS_ANDROID) || defined(OS_MACOSX) |
| // Tests Advertisement Data is updated correctly when we start discovery |
| // during a connection. |
| -TEST_F(BluetoothTest, GetUUIDs_DiscoveryDuringConnection) { |
| +TEST_F(BluetoothTest, AdvertisementData_DiscoveryDuringConnection) { |
| if (!PlatformSupportsLowEnergy()) { |
| LOG(WARNING) << "Low Energy Bluetooth unavailable, skipping unit test."; |
| return; |
| @@ -386,11 +410,9 @@ TEST_F(BluetoothTest, GetUUIDs_DiscoveryDuringConnection) { |
| StartLowEnergyDiscoverySession(); |
| BluetoothDevice* device = SimulateLowEnergyDevice(1); |
| - EXPECT_EQ(2u, device->GetUUIDs().size()); |
| - EXPECT_TRUE(base::ContainsKey(device->GetUUIDs(), |
| - BluetoothUUID(kTestUUIDGenericAccess))); |
| - EXPECT_TRUE(base::ContainsKey(device->GetUUIDs(), |
| - BluetoothUUID(kTestUUIDGenericAttribute))); |
| + EXPECT_EQ(UUIDSet({BluetoothUUID(kTestUUIDGenericAccess), |
| + BluetoothUUID(kTestUUIDGenericAttribute)}), |
| + device->GetUUIDs()); |
| discovery_sessions_[0]->Stop(GetCallback(Call::EXPECTED), |
| GetErrorCallback(Call::NOT_EXPECTED)); |
| ASSERT_FALSE(adapter_->IsDiscovering()); |
| @@ -408,115 +430,97 @@ TEST_F(BluetoothTest, GetUUIDs_DiscoveryDuringConnection) { |
| // Start Discovery and receive advertisement during connection, |
| // should notify of device changed. |
| + // - GetInquiryRSSI: Should return the packet's rssi. |
| // - GetUUIDs: Should return only Advertised UUIDs since services haven't |
| // been discovered yet. |
| // - GetServiceData: Should return last advertised Service Data. |
| + // - GetInquiryTxPower: Should return the packet's advertised Tx Power. |
| StartLowEnergyDiscoverySession(); |
| ASSERT_TRUE(adapter_->IsDiscovering()); |
| ASSERT_TRUE(discovery_sessions_[0]->IsActive()); |
| device = SimulateLowEnergyDevice(1); |
| EXPECT_EQ(1, observer.device_changed_count()); |
| - EXPECT_EQ(2u, device->GetUUIDs().size()); |
| - EXPECT_TRUE(base::ContainsKey(device->GetUUIDs(), |
| - BluetoothUUID(kTestUUIDGenericAccess))); |
| - EXPECT_TRUE(base::ContainsKey(device->GetUUIDs(), |
| - BluetoothUUID(kTestUUIDGenericAttribute))); |
| + EXPECT_EQ(ToInt8(TestRSSI::LOWEST), device->GetInquiryRSSI().value()); |
| + EXPECT_EQ(UUIDSet({BluetoothUUID(kTestUUIDGenericAccess), |
| + BluetoothUUID(kTestUUIDGenericAttribute)}), |
| + device->GetUUIDs()); |
| #if defined(OS_MACOSX) |
| // TODO(ortuno): Enable on Android once it supports Service Data. |
| // http://crbug.com/639408 |
| EXPECT_EQ(ServiceDataMap({{BluetoothUUID(kTestUUIDHeartRate), {1}}}), |
| device->GetServiceData()); |
| - |
| - EXPECT_EQ(UUIDSet({BluetoothUUID(kTestUUIDHeartRate)}), |
| - device->GetServiceDataUUIDs()); |
| - |
| - EXPECT_EQ(std::vector<uint8_t>({1}), |
| - *device->GetServiceDataForUUID(BluetoothUUID(kTestUUIDHeartRate))); |
| #endif // defined(OS_MACOSX) |
| + EXPECT_EQ(ToInt8(TestTxPower::LOWEST), device->GetInquiryTxPower().value()); |
| // Discover services, should notify of device changed. |
| // - GetUUIDs: Should return both Advertised UUIDs and Service UUIDs. |
| - // - GetServiceData: Should return same data as before since there was |
| - // no new advertised data. |
| std::vector<std::string> services; |
| services.push_back(BluetoothUUID(kTestUUIDHeartRate).canonical_value()); |
| SimulateGattServicesDiscovered(device, services); |
| EXPECT_EQ(2, observer.device_changed_count()); |
| - EXPECT_EQ(3u, device->GetUUIDs().size()); |
| - EXPECT_TRUE(base::ContainsKey(device->GetUUIDs(), |
| - BluetoothUUID(kTestUUIDGenericAccess))); |
| - EXPECT_TRUE(base::ContainsKey(device->GetUUIDs(), |
| - BluetoothUUID(kTestUUIDGenericAttribute))); |
| - EXPECT_TRUE( |
| - base::ContainsKey(device->GetUUIDs(), BluetoothUUID(kTestUUIDHeartRate))); |
| - |
| -#if defined(OS_MACOSX) |
| - // TODO(ortuno): Enable on Android once it supports Service Data. |
| - // http://crbug.com/639408 |
| - EXPECT_EQ(ServiceDataMap({{BluetoothUUID(kTestUUIDHeartRate), {1}}}), |
| - device->GetServiceData()); |
| - |
| - EXPECT_EQ(UUIDSet({BluetoothUUID(kTestUUIDHeartRate)}), |
| - device->GetServiceDataUUIDs()); |
| - EXPECT_EQ(std::vector<uint8_t>({1}), |
| - *device->GetServiceDataForUUID(BluetoothUUID(kTestUUIDHeartRate))); |
| -#endif // defined(OS_MACOSX) |
| + EXPECT_EQ(UUIDSet({BluetoothUUID(kTestUUIDGenericAccess), |
| + BluetoothUUID(kTestUUIDGenericAttribute), |
| + BluetoothUUID(kTestUUIDHeartRate)}), |
| + device->GetUUIDs()); |
| // Receive advertisement again, notify of device changed. |
| + // - GetInquiryRSSI: Should return last packet's rssi. |
| // - GetUUIDs: Should return only new Advertised UUIDs and Service UUIDs. |
| // - GetServiceData: Should return last advertised Service Data. |
| + // - GetInquiryTxPower: Should return the last packet's advertised Tx Power. |
| device = SimulateLowEnergyDevice(2); |
| EXPECT_EQ(3, observer.device_changed_count()); |
| - EXPECT_EQ(3u, device->GetUUIDs().size()); |
| - EXPECT_TRUE( |
| - base::ContainsKey(device->GetUUIDs(), BluetoothUUID(kTestUUIDLinkLoss))); |
| - EXPECT_TRUE(base::ContainsKey(device->GetUUIDs(), |
| - BluetoothUUID(kTestUUIDImmediateAlert))); |
| - EXPECT_TRUE( |
| - base::ContainsKey(device->GetUUIDs(), BluetoothUUID(kTestUUIDHeartRate))); |
| + EXPECT_EQ(ToInt8(TestRSSI::LOWER), device->GetInquiryRSSI().value()); |
| + EXPECT_EQ(UUIDSet({BluetoothUUID(kTestUUIDLinkLoss), |
| + BluetoothUUID(kTestUUIDImmediateAlert), |
| + BluetoothUUID(kTestUUIDHeartRate)}), |
| + device->GetUUIDs()); |
| +#if defined(OS_MACOSX) |
| + // TODO(ortuno): Enable on Android once it supports Service Data. |
| + // http://crbug.com/639408 |
| + EXPECT_EQ(ServiceDataMap({{BluetoothUUID(kTestUUIDHeartRate), {2}}, |
| + {BluetoothUUID(kTestUUIDImmediateAlert), {0}}}), |
| + device->GetServiceData()); |
| +#endif // defined(OS_MACOSX) |
| + EXPECT_EQ(ToInt8(TestTxPower::LOWER), device->GetInquiryTxPower().value()); |
| // Stop discovery session, should notify of device changed. |
| + // - GetInquiryRSSI: Should return nullopt because we are no longer |
| + // discovering. |
| // - GetUUIDs: Should only return Service UUIDs. |
| // - GetServiceData: Should return an empty map since we are no longer |
| // discovering. |
| + // - GetInquiryTxPower: Should return nullopt because we are no longer |
| + // discovering. |
| discovery_sessions_[0]->Stop(GetCallback(Call::EXPECTED), |
| GetErrorCallback(Call::NOT_EXPECTED)); |
| ASSERT_FALSE(adapter_->IsDiscovering()); |
| ASSERT_FALSE(discovery_sessions_[0]->IsActive()); |
| EXPECT_EQ(4, observer.device_changed_count()); |
| - EXPECT_EQ(1u, device->GetUUIDs().size()); |
| - EXPECT_TRUE( |
| - base::ContainsKey(device->GetUUIDs(), BluetoothUUID(kTestUUIDHeartRate))); |
| - |
| + EXPECT_FALSE(device->GetInquiryRSSI()); |
| + EXPECT_EQ(UUIDSet({BluetoothUUID(kTestUUIDHeartRate)}), device->GetUUIDs()); |
| #if defined(OS_MACOSX) |
| // TODO(ortuno): Enable on Android once it supports Service Data. |
| // http://crbug.com/639408 |
| EXPECT_EQ(ServiceDataMap(), device->GetServiceData()); |
| - EXPECT_EQ(UUIDSet(), device->GetServiceDataUUIDs()); |
| #endif // defined(OS_MACOSX) |
| + EXPECT_FALSE(device->GetInquiryTxPower()); |
| // Disconnect device, should notify of device changed. |
| // - GetUUIDs: Should return no UUIDs. |
| - // - GetServiceData: Should still return an empty map. |
| gatt_connections_[0]->Disconnect(); |
| SimulateGattDisconnection(device); |
| ASSERT_FALSE(device->IsGattConnected()); |
| EXPECT_EQ(5, observer.device_changed_count()); |
| - EXPECT_EQ(0u, device->GetUUIDs().size()); |
| -#if defined(OS_MACOSX) |
| - // TODO(ortuno): Enable on Android once it supports Service Data. |
| - // http://crbug.com/639408 |
| - EXPECT_EQ(ServiceDataMap(), device->GetServiceData()); |
| - EXPECT_EQ(UUIDSet(), device->GetServiceDataUUIDs()); |
| -#endif // defined(OS_MACOSX) |
| + EXPECT_TRUE(device->GetUUIDs().empty()); |
| } |
| #endif // defined(OS_ANDROID) || defined(OS_MACOSX) |
| @@ -534,138 +538,88 @@ TEST_F(BluetoothTest, AdvertisementData_ConnectionDuringDiscovery) { |
| // Start discovery session and receive and advertisement. No device changed |
| // notification because it's a new device. |
| + // - GetInquiryRSSI: Should return the packet's rssi. |
| // - GetUUIDs: Should return Advertised UUIDs. |
| // - GetServiceData: Should return advertised Service Data. |
| + // - GetInquiryTxPower: Should return the packet's advertised Tx Power. |
| StartLowEnergyDiscoverySession(); |
| ASSERT_TRUE(adapter_->IsDiscovering()); |
| ASSERT_TRUE(discovery_sessions_[0]->IsActive()); |
| BluetoothDevice* device = SimulateLowEnergyDevice(1); |
| EXPECT_EQ(0, observer.device_changed_count()); |
| - EXPECT_EQ(2u, device->GetUUIDs().size()); |
| - EXPECT_TRUE(base::ContainsKey(device->GetUUIDs(), |
| - BluetoothUUID(kTestUUIDGenericAccess))); |
| - EXPECT_TRUE(base::ContainsKey(device->GetUUIDs(), |
| - BluetoothUUID(kTestUUIDGenericAttribute))); |
| - |
| + EXPECT_EQ(ToInt8(TestRSSI::LOWEST), device->GetInquiryRSSI().value()); |
| + EXPECT_EQ(UUIDSet({BluetoothUUID(kTestUUIDGenericAccess), |
| + BluetoothUUID(kTestUUIDGenericAttribute)}), |
| + device->GetUUIDs()); |
| #if defined(OS_MACOSX) |
| // TODO(ortuno): Enable on Android once it supports Service Data. |
| // http://crbug.com/639408 |
| EXPECT_EQ(ServiceDataMap({{BluetoothUUID(kTestUUIDHeartRate), {1}}}), |
| device->GetServiceData()); |
| - |
| - EXPECT_EQ(UUIDSet({BluetoothUUID(kTestUUIDHeartRate)}), |
| - device->GetServiceDataUUIDs()); |
| - |
| - EXPECT_EQ(std::vector<uint8_t>({1}), |
| - *device->GetServiceDataForUUID(BluetoothUUID(kTestUUIDHeartRate))); |
| #endif // defined(OS_MACOSX) |
| + EXPECT_EQ(ToInt8(TestTxPower::LOWEST), device->GetInquiryTxPower().value()); |
| // Connect, should notify of device changed. |
| // - GetUUIDs: Should return Advertised UUIDs even before GATT Discovery. |
| - // - GetServiceData: Should still return the same Service Data. |
| device->CreateGattConnection(GetGattConnectionCallback(Call::EXPECTED), |
| GetConnectErrorCallback(Call::NOT_EXPECTED)); |
| SimulateGattConnection(device); |
| ASSERT_TRUE(device->IsConnected()); |
| observer.Reset(); |
| - EXPECT_EQ(2u, device->GetUUIDs().size()); |
| - EXPECT_TRUE(base::ContainsKey(device->GetUUIDs(), |
| - BluetoothUUID(kTestUUIDGenericAccess))); |
| - EXPECT_TRUE(base::ContainsKey(device->GetUUIDs(), |
| - BluetoothUUID(kTestUUIDGenericAttribute))); |
| - |
| -#if defined(OS_MACOSX) |
| - // TODO(ortuno): Enable on Android once it supports Service Data. |
| - // http://crbug.com/639408 |
| - EXPECT_EQ(ServiceDataMap({{BluetoothUUID(kTestUUIDHeartRate), {1}}}), |
| - device->GetServiceData()); |
| - |
| - EXPECT_EQ(UUIDSet({BluetoothUUID(kTestUUIDHeartRate)}), |
| - device->GetServiceDataUUIDs()); |
| - |
| - EXPECT_EQ(std::vector<uint8_t>({1}), |
| - *device->GetServiceDataForUUID(BluetoothUUID(kTestUUIDHeartRate))); |
| -#endif // defined(OS_MACOSX) |
| + EXPECT_EQ(UUIDSet({BluetoothUUID(kTestUUIDGenericAccess), |
| + BluetoothUUID(kTestUUIDGenericAttribute)}), |
| + device->GetUUIDs()); |
| // Receive Advertisement with new UUIDs, should notify of device changed. |
| + // - GetInquiryRSSI: Should return the packet's rssi. |
| // - GetUUIDs: Should return new Advertised UUIDs. |
| // - GetServiceData: Should return new advertised Service Data. |
| + // - GetInquiryTxPower: Should return the packet's advertised Tx Power. |
| device = SimulateLowEnergyDevice(2); |
| EXPECT_EQ(1, observer.device_changed_count()); |
| - EXPECT_EQ(2u, device->GetUUIDs().size()); |
| - EXPECT_TRUE( |
| - base::ContainsKey(device->GetUUIDs(), BluetoothUUID(kTestUUIDLinkLoss))); |
| - EXPECT_TRUE(base::ContainsKey(device->GetUUIDs(), |
| - BluetoothUUID(kTestUUIDImmediateAlert))); |
| - |
| + EXPECT_EQ(ToInt8(TestRSSI::LOWER), device->GetInquiryRSSI().value()); |
| + EXPECT_EQ(UUIDSet({BluetoothUUID(kTestUUIDLinkLoss), |
| + BluetoothUUID(kTestUUIDImmediateAlert)}), |
| + device->GetUUIDs()); |
| #if defined(OS_MACOSX) |
| // TODO(ortuno): Enable on Android once it supports Service Data. |
| // http://crbug.com/639408 |
| EXPECT_EQ(ServiceDataMap({{BluetoothUUID(kTestUUIDHeartRate), {2}}, |
| {BluetoothUUID(kTestUUIDImmediateAlert), {0}}}), |
| device->GetServiceData()); |
| - |
| - EXPECT_EQ(UUIDSet({BluetoothUUID(kTestUUIDHeartRate), |
| - BluetoothUUID(kTestUUIDImmediateAlert)}), |
| - device->GetServiceDataUUIDs()); |
| - |
| - EXPECT_EQ(std::vector<uint8_t>({2}), |
| - *device->GetServiceDataForUUID(BluetoothUUID(kTestUUIDHeartRate))); |
| - EXPECT_EQ( |
| - std::vector<uint8_t>({0}), |
| - *device->GetServiceDataForUUID(BluetoothUUID(kTestUUIDImmediateAlert))); |
| #endif // defined(OS_MACOSX) |
| + EXPECT_EQ(ToInt8(TestTxPower::LOWER), device->GetInquiryTxPower().value()); |
| - // Discover Service, should notify of device changed. |
| + // Discover Services, should notify of device changed. |
| // - GetUUIDs: Should return Advertised UUIDs and Service UUIDs. |
| - // - GetServiceData: Should return same advertised Service Data. |
| std::vector<std::string> services; |
| services.push_back(BluetoothUUID(kTestUUIDHeartRate).canonical_value()); |
| SimulateGattServicesDiscovered(device, services); |
| EXPECT_EQ(2, observer.device_changed_count()); |
| - EXPECT_EQ(3u, device->GetUUIDs().size()); |
| - EXPECT_TRUE( |
| - base::ContainsKey(device->GetUUIDs(), BluetoothUUID(kTestUUIDLinkLoss))); |
| - EXPECT_TRUE(base::ContainsKey(device->GetUUIDs(), |
| - BluetoothUUID(kTestUUIDImmediateAlert))); |
| - EXPECT_TRUE( |
| - base::ContainsKey(device->GetUUIDs(), BluetoothUUID(kTestUUIDHeartRate))); |
| -#if defined(OS_MACOSX) |
| - // TODO(ortuno): Enable on Android once it supports Service Data. |
| - // http://crbug.com/639408 |
| - EXPECT_EQ(ServiceDataMap({{BluetoothUUID(kTestUUIDHeartRate), {2}}, |
| - {BluetoothUUID(kTestUUIDImmediateAlert), {0}}}), |
| - device->GetServiceData()); |
| - |
| - EXPECT_EQ(UUIDSet({BluetoothUUID(kTestUUIDHeartRate), |
| - BluetoothUUID(kTestUUIDImmediateAlert)}), |
| - device->GetServiceDataUUIDs()); |
| - |
| - EXPECT_EQ(std::vector<uint8_t>({2}), |
| - *device->GetServiceDataForUUID(BluetoothUUID(kTestUUIDHeartRate))); |
| - EXPECT_EQ( |
| - std::vector<uint8_t>({0}), |
| - *device->GetServiceDataForUUID(BluetoothUUID(kTestUUIDImmediateAlert))); |
| -#endif // defined(OS_MACOSX) |
| + EXPECT_EQ(UUIDSet({BluetoothUUID(kTestUUIDLinkLoss), |
| + BluetoothUUID(kTestUUIDImmediateAlert), |
| + BluetoothUUID(kTestUUIDHeartRate)}), |
| + device->GetUUIDs()); |
| // Disconnect, should notify of device changed. |
| + // - GetInquiryRSSI: Should return last packet's rssi. |
| // - GetUUIDs: Should return only Advertised UUIDs. |
| // - GetServiceData: Should still return same advertised Service Data. |
| + // - GetInquiryTxPower: Should return the last packet's advertised Tx Power. |
| gatt_connections_[0]->Disconnect(); |
| SimulateGattDisconnection(device); |
| ASSERT_FALSE(device->IsGattConnected()); |
| EXPECT_EQ(3, observer.device_changed_count()); |
| - EXPECT_EQ(2u, device->GetUUIDs().size()); |
| - EXPECT_TRUE( |
| - base::ContainsKey(device->GetUUIDs(), BluetoothUUID(kTestUUIDLinkLoss))); |
| - EXPECT_TRUE(base::ContainsKey(device->GetUUIDs(), |
| - BluetoothUUID(kTestUUIDImmediateAlert))); |
| + EXPECT_EQ(ToInt8(TestRSSI::LOWER), device->GetInquiryRSSI().value()); |
| + EXPECT_EQ(UUIDSet({BluetoothUUID(kTestUUIDLinkLoss), |
| + BluetoothUUID(kTestUUIDImmediateAlert)}), |
| + device->GetUUIDs()); |
| #if defined(OS_MACOSX) |
| // TODO(ortuno): Enable on Android once it supports Service Data. |
| @@ -673,60 +627,49 @@ TEST_F(BluetoothTest, AdvertisementData_ConnectionDuringDiscovery) { |
| EXPECT_EQ(ServiceDataMap({{BluetoothUUID(kTestUUIDHeartRate), {2}}, |
| {BluetoothUUID(kTestUUIDImmediateAlert), {0}}}), |
| device->GetServiceData()); |
| - |
| - EXPECT_EQ(UUIDSet({BluetoothUUID(kTestUUIDHeartRate), |
| - BluetoothUUID(kTestUUIDImmediateAlert)}), |
| - device->GetServiceDataUUIDs()); |
| - |
| - EXPECT_EQ(std::vector<uint8_t>({2}), |
| - *device->GetServiceDataForUUID(BluetoothUUID(kTestUUIDHeartRate))); |
| - EXPECT_EQ( |
| - std::vector<uint8_t>({0}), |
| - *device->GetServiceDataForUUID(BluetoothUUID(kTestUUIDImmediateAlert))); |
| #endif // defined(OS_MACOSX) |
| + EXPECT_EQ(ToInt8(TestTxPower::LOWER), device->GetInquiryTxPower().value()); |
| // Receive Advertisement with new UUIDs, should notify of device changed. |
| + // - GetInquiryRSSI: Should return last packet's rssi. |
| // - GetUUIDs: Should return only new Advertised UUIDs. |
| // - GetServiceData: Should return only new advertised Service Data. |
| + // - GetInquiryTxPower: Should return the last packet's advertised Tx Power. |
| device = SimulateLowEnergyDevice(1); |
| EXPECT_EQ(4, observer.device_changed_count()); |
| - EXPECT_EQ(2u, device->GetUUIDs().size()); |
| - EXPECT_TRUE(base::ContainsKey(device->GetUUIDs(), |
| - BluetoothUUID(kTestUUIDGenericAccess))); |
| - EXPECT_TRUE(base::ContainsKey(device->GetUUIDs(), |
| - BluetoothUUID(kTestUUIDGenericAttribute))); |
| - |
| + EXPECT_EQ(ToInt8(TestRSSI::LOWEST), device->GetInquiryRSSI().value()); |
| + EXPECT_EQ(UUIDSet({BluetoothUUID(kTestUUIDGenericAccess), |
| + BluetoothUUID(kTestUUIDGenericAttribute)}), |
| + device->GetUUIDs()); |
| #if defined(OS_MACOSX) |
| // TODO(ortuno): Enable on Android once it supports Service Data. |
| // http://crbug.com/639408 |
| EXPECT_EQ(ServiceDataMap({{BluetoothUUID(kTestUUIDHeartRate), {1}}}), |
| device->GetServiceData()); |
| - |
| - EXPECT_EQ(UUIDSet({BluetoothUUID(kTestUUIDHeartRate)}), |
| - device->GetServiceDataUUIDs()); |
| - |
| - EXPECT_EQ(std::vector<uint8_t>({1}), |
| - *device->GetServiceDataForUUID(BluetoothUUID(kTestUUIDHeartRate))); |
| #endif // defined(OS_MACOSX) |
| + EXPECT_EQ(ToInt8(TestTxPower::LOWEST), device->GetInquiryTxPower().value()); |
| // Stop discovery session, should notify of device changed. |
| + // - GetInquiryRSSI: Should return nullopt because we are no longer |
| + // discovering. |
| // - GetUUIDs: Should return no UUIDs. |
| - // - GetServiceData: Should return no UUIDs since we are no longer |
| - // discovering. |
| + // - GetServiceData: Should return no UUIDs since we are no longer |
| + // discovering. |
| + // - GetInquiryTxPower: Should return nullopt because we are no longer |
| + // discovering. |
| discovery_sessions_[0]->Stop(GetCallback(Call::EXPECTED), |
| GetErrorCallback(Call::NOT_EXPECTED)); |
| EXPECT_EQ(5, observer.device_changed_count()); |
| - EXPECT_EQ(0u, device->GetUUIDs().size()); |
| + EXPECT_FALSE(device->GetInquiryRSSI()); |
| + EXPECT_TRUE(device->GetUUIDs().empty()); |
| #if defined(OS_MACOSX) |
| // TODO(ortuno): Enable on Android once it supports Service Data. |
| // http://crbug.com/639408 |
| - EXPECT_EQ(ServiceDataMap(), device->GetServiceData()); |
| - EXPECT_EQ(UUIDSet(), device->GetServiceDataUUIDs()); |
| - EXPECT_EQ(nullptr, |
| - device->GetServiceDataForUUID(BluetoothUUID(kTestUUIDHeartRate))); |
| + EXPECT_TRUE(device->GetServiceData().empty()); |
| #endif // defined(OS_MACOSX) |
| + EXPECT_FALSE(device->GetInquiryTxPower()); |
| } |
| #endif // defined(OS_ANDROID) || defined(OS_MACOSX) |