Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(473)

Side by Side Diff: device/bluetooth/bluetooth_device_unittest.cc

Issue 2783733002: Bluetooth: Add service data unit tests for chromeos (Closed)
Patch Set: trybot Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "device/bluetooth/bluetooth_device.h" 5 #include "device/bluetooth/bluetooth_device.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "base/run_loop.h" 10 #include "base/run_loop.h"
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
160 return; 160 return;
161 } 161 }
162 InitWithFakeAdapter(); 162 InitWithFakeAdapter();
163 StartLowEnergyDiscoverySession(); 163 StartLowEnergyDiscoverySession();
164 BluetoothDevice* device = SimulateLowEnergyDevice(3); 164 BluetoothDevice* device = SimulateLowEnergyDevice(3);
165 ASSERT_TRUE(device); 165 ASSERT_TRUE(device);
166 UUIDSet uuids = device->GetUUIDs(); 166 UUIDSet uuids = device->GetUUIDs();
167 EXPECT_EQ(0u, uuids.size()); 167 EXPECT_EQ(0u, uuids.size());
168 } 168 }
169 169
170 #if defined(OS_MACOSX) 170 #if defined(OS_MACOSX) || defined(OS_CHROMEOS) || defined(OS_LINUX)
171 // TODO(ortuno): Enable on Android once it supports Service Data. 171 // TODO(ortuno): Enable on Android once it supports Service Data.
172 // http://crbug.com/639408 172 // http://crbug.com/639408
173 TEST_F(BluetoothTest, GetServiceDataUUIDs_GetServiceDataForUUID) { 173 TEST_F(BluetoothTest, GetServiceDataUUIDs_GetServiceDataForUUID) {
174 if (!PlatformSupportsLowEnergy()) { 174 if (!PlatformSupportsLowEnergy()) {
175 LOG(WARNING) << "Low Energy Bluetooth unavailable, skipping unit test."; 175 LOG(WARNING) << "Low Energy Bluetooth unavailable, skipping unit test.";
176 return; 176 return;
177 } 177 }
178 InitWithFakeAdapter(); 178 InitWithFakeAdapter();
179
180 #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.
181 // TODO(crbug.com/706043): Remove #if once StartLowEnergyDiscoverySession is
182 // implemented for bluez.
179 StartLowEnergyDiscoverySession(); 183 StartLowEnergyDiscoverySession();
184 #endif // defined(OS_MACOSX)
180 185
181 // Receive Advertisement with service data. 186 // 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.
182 BluetoothDevice* device = SimulateLowEnergyDevice(1); 187 BluetoothDevice* device = SimulateLowEnergyDevice(1);
183 188
184 EXPECT_EQ(ServiceDataMap({{BluetoothUUID(kTestUUIDHeartRate), {1}}}), 189 EXPECT_EQ(ServiceDataMap({{BluetoothUUID(kTestUUIDHeartRate), {1}}}),
185 device->GetServiceData()); 190 device->GetServiceData());
186 EXPECT_EQ(UUIDSet({BluetoothUUID(kTestUUIDHeartRate)}), 191 EXPECT_EQ(UUIDSet({BluetoothUUID(kTestUUIDHeartRate)}),
187 device->GetServiceDataUUIDs()); 192 device->GetServiceDataUUIDs());
188 EXPECT_EQ(std::vector<uint8_t>({1}), 193 EXPECT_EQ(std::vector<uint8_t>({1}),
189 *device->GetServiceDataForUUID(BluetoothUUID(kTestUUIDHeartRate))); 194 *device->GetServiceDataForUUID(BluetoothUUID(kTestUUIDHeartRate)));
190 195
191 // Receive Advertisement with no service data. 196 // Receive Advertisement with no service data.
192 SimulateLowEnergyDevice(3); 197 SimulateLowEnergyDevice(3);
193 198
199 // TODO(crbug.com/707039): Remove #if once the BlueZ caching behavior is
200 // changed.
201 #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.
194 EXPECT_TRUE(device->GetServiceData().empty()); 202 EXPECT_TRUE(device->GetServiceData().empty());
195 EXPECT_TRUE(device->GetServiceDataUUIDs().empty()); 203 EXPECT_TRUE(device->GetServiceDataUUIDs().empty());
196 EXPECT_EQ(nullptr, 204 EXPECT_EQ(nullptr,
197 device->GetServiceDataForUUID(BluetoothUUID(kTestUUIDHeartRate))); 205 device->GetServiceDataForUUID(BluetoothUUID(kTestUUIDHeartRate)));
206 #else
207 // On ChromeOS and Linux, BlueZ persists all service data meaning if
208 // a device stops advertising service data for a UUID, BlueZ will
209 // still return the cached value for that UUID.
210 EXPECT_EQ(ServiceDataMap({{BluetoothUUID(kTestUUIDHeartRate), {1}}}),
211 device->GetServiceData());
212 EXPECT_EQ(UUIDSet({BluetoothUUID(kTestUUIDHeartRate)}),
213 device->GetServiceDataUUIDs());
214 EXPECT_EQ(std::vector<uint8_t>({1}),
215 *device->GetServiceDataForUUID(BluetoothUUID(kTestUUIDHeartRate)));
216 #endif
198 217
199 // Receive Advertisement with new service data. 218 // Receive Advertisement with new service data.
200 SimulateLowEnergyDevice(2); 219 SimulateLowEnergyDevice(2);
201 220
202 EXPECT_EQ(ServiceDataMap({{BluetoothUUID(kTestUUIDHeartRate), {2}}, 221 EXPECT_EQ(ServiceDataMap(
203 {BluetoothUUID(kTestUUIDImmediateAlert), {0}}}), 222 {{BluetoothUUID(kTestUUIDHeartRate), std::vector<uint8_t>({})},
223 {BluetoothUUID(kTestUUIDImmediateAlert), {0, 2}}}),
204 device->GetServiceData()); 224 device->GetServiceData());
205 EXPECT_EQ(UUIDSet({BluetoothUUID(kTestUUIDHeartRate), 225 EXPECT_EQ(UUIDSet({BluetoothUUID(kTestUUIDHeartRate),
206 BluetoothUUID(kTestUUIDImmediateAlert)}), 226 BluetoothUUID(kTestUUIDImmediateAlert)}),
207 device->GetServiceDataUUIDs()); 227 device->GetServiceDataUUIDs());
208 EXPECT_EQ(std::vector<uint8_t>({2}), 228 EXPECT_EQ(std::vector<uint8_t>({}),
209 *device->GetServiceDataForUUID(BluetoothUUID(kTestUUIDHeartRate))); 229 *device->GetServiceDataForUUID(BluetoothUUID(kTestUUIDHeartRate)));
210 EXPECT_EQ( 230 EXPECT_EQ(
211 std::vector<uint8_t>({0}), 231 std::vector<uint8_t>({0, 2}),
212 *device->GetServiceDataForUUID(BluetoothUUID(kTestUUIDImmediateAlert))); 232 *device->GetServiceDataForUUID(BluetoothUUID(kTestUUIDImmediateAlert)));
213 233
234 #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.
235 // TODO(crbug.com/706043): Remove #if once StartLowEnergyDiscoverySession is
236 // implemented for bluez.
214 // Stop discovery. 237 // Stop discovery.
215 discovery_sessions_[0]->Stop(GetCallback(Call::EXPECTED), 238 discovery_sessions_[0]->Stop(GetCallback(Call::EXPECTED),
216 GetErrorCallback(Call::NOT_EXPECTED)); 239 GetErrorCallback(Call::NOT_EXPECTED));
217 ASSERT_FALSE(adapter_->IsDiscovering()); 240 ASSERT_FALSE(adapter_->IsDiscovering());
218 ASSERT_FALSE(discovery_sessions_[0]->IsActive()); 241 ASSERT_FALSE(discovery_sessions_[0]->IsActive());
219 242
220 EXPECT_TRUE(device->GetServiceData().empty()); 243 EXPECT_TRUE(device->GetServiceData().empty());
221 EXPECT_TRUE(device->GetServiceDataUUIDs().empty()); 244 EXPECT_TRUE(device->GetServiceDataUUIDs().empty());
222 EXPECT_EQ(nullptr, 245 EXPECT_EQ(nullptr,
223 device->GetServiceDataForUUID(BluetoothUUID(kTestUUIDHeartRate))); 246 device->GetServiceDataForUUID(BluetoothUUID(kTestUUIDHeartRate)));
224 EXPECT_EQ(nullptr, device->GetServiceDataForUUID( 247 EXPECT_EQ(nullptr, device->GetServiceDataForUUID(
225 BluetoothUUID(kTestUUIDImmediateAlert))); 248 BluetoothUUID(kTestUUIDImmediateAlert)));
249 #endif // defined(OS_MACOSX)
226 } 250 }
227 #endif // defined(OS_MACOSX) 251 #endif // defined(OS_MACOSX) || defined(OS_CHROMEOS) || defined(OS_LINUX)
228 252
229 #if defined(OS_ANDROID) || defined(OS_MACOSX) 253 #if defined(OS_ANDROID) || defined(OS_MACOSX)
230 // Tests that the Advertisement Data fields are correctly updated during 254 // Tests that the Advertisement Data fields are correctly updated during
231 // discovery. 255 // discovery.
232 TEST_F(BluetoothTest, AdvertisementData_Discovery) { 256 TEST_F(BluetoothTest, AdvertisementData_Discovery) {
233 if (!PlatformSupportsLowEnergy()) { 257 if (!PlatformSupportsLowEnergy()) {
234 LOG(WARNING) << "Low Energy Bluetooth unavailable, skipping unit test."; 258 LOG(WARNING) << "Low Energy Bluetooth unavailable, skipping unit test.";
235 return; 259 return;
236 } 260 }
237 InitWithFakeAdapter(); 261 InitWithFakeAdapter();
(...skipping 1375 matching lines...) Expand 10 before | Expand all | Expand 10 after
1613 .empty()); 1637 .empty());
1614 EXPECT_TRUE(device_ 1638 EXPECT_TRUE(device_
1615 ->GetCharacteristicsByUUID( 1639 ->GetCharacteristicsByUUID(
1616 service_instance_id2, 1640 service_instance_id2,
1617 BluetoothUUID(characteristic_uuid_not_exist_in_setup)) 1641 BluetoothUUID(characteristic_uuid_not_exist_in_setup))
1618 .empty()); 1642 .empty());
1619 } 1643 }
1620 #endif // defined(OS_ANDROID) || defined(OS_MACOSX) 1644 #endif // defined(OS_ANDROID) || defined(OS_MACOSX)
1621 1645
1622 } // namespace device 1646 } // namespace device
OLDNEW
« no previous file with comments | « no previous file | device/bluetooth/bluez/bluetooth_bluez_unittest.cc » ('j') | device/bluetooth/test/bluetooth_test.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698