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 ab478fc7386df4a49d9bf91a0645488354e48239..a72e07a05d6fdc3ecfc31270bd70d32f72a07d36 100644 |
| --- a/device/bluetooth/bluetooth_device_unittest.cc |
| +++ b/device/bluetooth/bluetooth_device_unittest.cc |
| @@ -167,7 +167,7 @@ TEST_F(BluetoothTest, LowEnergyDeviceNoUUIDs) { |
| EXPECT_EQ(0u, uuids.size()); |
| } |
| -#if defined(OS_MACOSX) |
| +#if defined(OS_MACOSX) || defined(OS_CHROMEOS) || defined(OS_LINUX) |
| // TODO(ortuno): Enable on Android once it supports Service Data. |
| // http://crbug.com/639408 |
| TEST_F(BluetoothTest, GetServiceDataUUIDs_GetServiceDataForUUID) { |
| @@ -176,7 +176,12 @@ TEST_F(BluetoothTest, GetServiceDataUUIDs_GetServiceDataForUUID) { |
| return; |
| } |
| InitWithFakeAdapter(); |
| + |
| +#if defined(OS_MACOSX) |
|
ortuno
2017/04/03 02:47:24
#if !defined(OS_LINUX) && !defined(OS_CHROMEOS)
S
xiaoyinh(OOO Sep 11-29)
2017/04/03 21:28:22
Done.
|
| + // TODO(crbug.com/706043): Remove #if once StartLowEnergyDiscoverySession is |
| + // implemented for bluez. |
| StartLowEnergyDiscoverySession(); |
| +#endif // defined(OS_MACOSX) |
| // Receive Advertisement with service data. |
|
ortuno
2017/04/03 02:47:24
optional: Could we add a test for when the service
xiaoyinh(OOO Sep 11-29)
2017/04/03 21:28:22
Thanks for the suggestion. I added another device
ortuno
2017/04/03 22:39:34
Looks great. Thanks.
|
| BluetoothDevice* device = SimulateLowEnergyDevice(1); |
| @@ -191,26 +196,44 @@ TEST_F(BluetoothTest, GetServiceDataUUIDs_GetServiceDataForUUID) { |
| // Receive Advertisement with no service data. |
| SimulateLowEnergyDevice(3); |
| +// TODO(crbug.com/707039): Remove #if once the BlueZ caching behavior is |
| +// changed. |
| +#if defined(OS_MACOSX) |
|
ortuno
2017/04/03 02:47:24
To avoid having this #if for future platforms:
#i
xiaoyinh(OOO Sep 11-29)
2017/04/03 21:28:22
Done.
|
| EXPECT_TRUE(device->GetServiceData().empty()); |
| EXPECT_TRUE(device->GetServiceDataUUIDs().empty()); |
| EXPECT_EQ(nullptr, |
| device->GetServiceDataForUUID(BluetoothUUID(kTestUUIDHeartRate))); |
| +#else |
| + // On ChromeOS and Linux, BlueZ persists all service data meaning if |
| + // a device stops advertising service data for a UUID, BlueZ will |
| + // still return the cached value for that UUID. |
| + 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 |
| // Receive Advertisement with new service data. |
| SimulateLowEnergyDevice(2); |
| - EXPECT_EQ(ServiceDataMap({{BluetoothUUID(kTestUUIDHeartRate), {2}}, |
| - {BluetoothUUID(kTestUUIDImmediateAlert), {0}}}), |
| + EXPECT_EQ(ServiceDataMap( |
| + {{BluetoothUUID(kTestUUIDHeartRate), std::vector<uint8_t>({})}, |
| + {BluetoothUUID(kTestUUIDImmediateAlert), {0, 2}}}), |
| device->GetServiceData()); |
| EXPECT_EQ(UUIDSet({BluetoothUUID(kTestUUIDHeartRate), |
| BluetoothUUID(kTestUUIDImmediateAlert)}), |
| device->GetServiceDataUUIDs()); |
| - EXPECT_EQ(std::vector<uint8_t>({2}), |
| + EXPECT_EQ(std::vector<uint8_t>({}), |
| *device->GetServiceDataForUUID(BluetoothUUID(kTestUUIDHeartRate))); |
| EXPECT_EQ( |
| - std::vector<uint8_t>({0}), |
| + std::vector<uint8_t>({0, 2}), |
| *device->GetServiceDataForUUID(BluetoothUUID(kTestUUIDImmediateAlert))); |
| +#if defined(OS_MACOSX) |
|
ortuno
2017/04/03 02:47:24
#if !defined(OS_LINUX) && !defined(OS_CHROMEOS)
xiaoyinh(OOO Sep 11-29)
2017/04/03 21:28:22
Done.
|
| + // TODO(crbug.com/706043): Remove #if once StartLowEnergyDiscoverySession is |
| + // implemented for bluez. |
| // Stop discovery. |
| discovery_sessions_[0]->Stop(GetCallback(Call::EXPECTED), |
| GetErrorCallback(Call::NOT_EXPECTED)); |
| @@ -223,8 +246,9 @@ TEST_F(BluetoothTest, GetServiceDataUUIDs_GetServiceDataForUUID) { |
| device->GetServiceDataForUUID(BluetoothUUID(kTestUUIDHeartRate))); |
| EXPECT_EQ(nullptr, device->GetServiceDataForUUID( |
| BluetoothUUID(kTestUUIDImmediateAlert))); |
| -} |
| #endif // defined(OS_MACOSX) |
| +} |
| +#endif // defined(OS_MACOSX) || defined(OS_CHROMEOS) || defined(OS_LINUX) |
| #if defined(OS_ANDROID) || defined(OS_MACOSX) |
| // Tests that the Advertisement Data fields are correctly updated during |