Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 <stdint.h> | 5 #include <stdint.h> |
| 6 #include <utility> | 6 #include <utility> |
| 7 | 7 |
| 8 #include "base/bind.h" | 8 #include "base/bind.h" |
| 9 #include "base/macros.h" | 9 #include "base/macros.h" |
| 10 #include "base/run_loop.h" | 10 #include "base/run_loop.h" |
| (...skipping 1151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1162 | 1162 |
| 1163 SimulateGattNotifySessionStarted(/* use remembered characteristic */ nullptr); | 1163 SimulateGattNotifySessionStarted(/* use remembered characteristic */ nullptr); |
| 1164 EXPECT_EQ(0, callback_count_); | 1164 EXPECT_EQ(0, callback_count_); |
| 1165 EXPECT_EQ(1, error_callback_count_); | 1165 EXPECT_EQ(1, error_callback_count_); |
| 1166 ASSERT_EQ(0u, notify_sessions_.size()); | 1166 ASSERT_EQ(0u, notify_sessions_.size()); |
| 1167 EXPECT_EQ(BluetoothRemoteGattService::GATT_ERROR_FAILED, | 1167 EXPECT_EQ(BluetoothRemoteGattService::GATT_ERROR_FAILED, |
| 1168 last_gatt_error_code_); | 1168 last_gatt_error_code_); |
| 1169 } | 1169 } |
| 1170 #endif // defined(OS_ANDROID) | 1170 #endif // defined(OS_ANDROID) |
| 1171 | 1171 |
| 1172 #if defined(OS_ANDROID) | |
| 1173 // Tests StartNotifySession completing before chrome objects are deleted. | |
| 1174 TEST_F(BluetoothRemoteGattCharacteristicTest, | |
| 1175 StartNotifySession_BeforeDeleted) { | |
| 1176 ASSERT_NO_FATAL_FAILURE( | |
| 1177 FakeCharacteristicBoilerplate(/* properties: NOTIFY */ 0x10)); | |
| 1178 SimulateGattDescriptor( | |
| 1179 characteristic1_, | |
| 1180 BluetoothRemoteGattDescriptor::ClientCharacteristicConfigurationUuid() | |
| 1181 .canonical_value()); | |
| 1182 ASSERT_EQ(1u, characteristic1_->GetDescriptors().size()); | |
| 1183 | |
| 1184 characteristic1_->StartNotifySession( | |
| 1185 GetNotifyCallback(Call::EXPECTED), | |
| 1186 GetGattErrorCallback(Call::NOT_EXPECTED)); | |
| 1187 EXPECT_EQ(1, gatt_notify_characteristic_attempts_); | |
| 1188 EXPECT_EQ(0, callback_count_); | |
| 1189 | |
| 1190 RememberCharacteristicForSubsequentAction(characteristic1_); | |
|
ortuno
2016/08/02 01:56:33
nit: Move this after SimulateGattNotifySessionStar
tommyt
2016/08/05 12:22:29
Done.
| |
| 1191 RememberCCCDescriptorForSubsequentAction(characteristic1_); | |
| 1192 | |
| 1193 SimulateGattNotifySessionStarted(/* use remembered characteristic */ nullptr); | |
|
ortuno
2016/08/02 01:56:33
nit: the characteristic is still alive so you don'
tommyt
2016/08/05 12:22:28
Done.
| |
| 1194 ASSERT_EQ(1u, notify_sessions_.size()); | |
| 1195 | |
| 1196 DeleteDevice(device_); // TODO(576906) delete only the characteristic. | |
| 1197 | |
|
ortuno
2016/08/02 01:56:33
We should also test the state of the notify sessio
tommyt
2016/08/05 12:22:29
Done.
| |
| 1198 notify_sessions_[0]->Stop( | |
| 1199 GetStopNotifyCallback(Call::EXPECTED, notify_sessions_[0])); | |
| 1200 SimulateGattNotifySessionStopped(/* use remembered characteristic */ nullptr); | |
| 1201 EXPECT_TRUE("Did not crash!"); | |
| 1202 ASSERT_EQ(0u, notify_sessions_.size()); | |
| 1203 } | |
| 1204 #endif // defined(OS_ANDROID) | |
| 1205 | |
| 1172 #if defined(OS_MACOSX) || defined(OS_WIN) | 1206 #if defined(OS_MACOSX) || defined(OS_WIN) |
| 1173 // Tests StartNotifySession reentrant in start notify session success callback | 1207 // Tests StartNotifySession reentrant in start notify session success callback |
| 1174 // and the reentrant start notify session success. | 1208 // and the reentrant start notify session success. |
| 1175 TEST_F(BluetoothRemoteGattCharacteristicTest, | 1209 TEST_F(BluetoothRemoteGattCharacteristicTest, |
| 1176 StartNotifySession_Reentrant_Success_Success) { | 1210 StartNotifySession_Reentrant_Success_Success) { |
| 1177 if (!PlatformSupportsLowEnergy()) { | 1211 if (!PlatformSupportsLowEnergy()) { |
| 1178 LOG(WARNING) << "Low Energy Bluetooth unavailable, skipping unit test."; | 1212 LOG(WARNING) << "Low Energy Bluetooth unavailable, skipping unit test."; |
| 1179 return; | 1213 return; |
| 1180 } | 1214 } |
| 1181 ASSERT_NO_FATAL_FAILURE( | 1215 ASSERT_NO_FATAL_FAILURE( |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1280 // Simulate reentrant StartNotifySession request from | 1314 // Simulate reentrant StartNotifySession request from |
| 1281 // BluetoothTestBase::ReentrantStartNotifySessionErrorCallback. | 1315 // BluetoothTestBase::ReentrantStartNotifySessionErrorCallback. |
| 1282 SimulateGattNotifySessionStarted(characteristic1_); | 1316 SimulateGattNotifySessionStarted(characteristic1_); |
| 1283 EXPECT_EQ(0, gatt_notify_characteristic_attempts_); | 1317 EXPECT_EQ(0, gatt_notify_characteristic_attempts_); |
| 1284 EXPECT_EQ(0, callback_count_); | 1318 EXPECT_EQ(0, callback_count_); |
| 1285 EXPECT_EQ(2, error_callback_count_); | 1319 EXPECT_EQ(2, error_callback_count_); |
| 1286 ASSERT_EQ(0u, notify_sessions_.size()); | 1320 ASSERT_EQ(0u, notify_sessions_.size()); |
| 1287 } | 1321 } |
| 1288 #endif // defined(OS_WIN) | 1322 #endif // defined(OS_WIN) |
| 1289 | 1323 |
| 1324 #if defined(OS_ANDROID) | |
| 1325 // Tests StopNotifySession success on a characteristic enabling Notify. | |
|
ortuno
2016/08/02 01:56:33
nit: on a characteristic that enabled Notify.
tommyt
2016/08/05 12:22:29
Done.
| |
| 1326 TEST_F(BluetoothRemoteGattCharacteristicTest, StopNotifySession) { | |
|
ortuno
2016/08/02 01:56:32
Also add a test to make sure notifications are sto
tommyt
2016/08/05 12:22:29
Done.
| |
| 1327 ASSERT_NO_FATAL_FAILURE(StartNotifyBoilerplate( | |
| 1328 /* properties: NOTIFY */ 0x10, | |
| 1329 /* expected_config_descriptor_value: NOTIFY */ 1)); | |
| 1330 notify_sessions_[0]->Stop( | |
| 1331 GetStopNotifyCallback(Call::EXPECTED, notify_sessions_[0])); | |
|
ortuno
2016/08/02 01:56:32
There are two things you need to make sure right a
tommyt
2016/08/05 12:22:30
Done.
| |
| 1332 SimulateGattNotifySessionStopped(characteristic1_); | |
| 1333 base::RunLoop().RunUntilIdle(); | |
| 1334 ASSERT_EQ(0u, notify_sessions_.size()); | |
|
ortuno
2016/08/02 01:56:33
Also add EXPECTS for IsNotifying()
tommyt
2016/08/05 12:22:29
Done.
| |
| 1335 } | |
| 1336 #endif // defined(OS_ANDROID) | |
| 1337 | |
| 1338 #if defined(OS_ANDROID) | |
| 1339 // Tests StopNotifySession success on a characteristic enabling Indicate. | |
|
ortuno
2016/08/02 01:56:32
nit: on a characteristic that enabled Notify.
tommyt
2016/08/05 12:22:28
Done.
| |
| 1340 TEST_F(BluetoothRemoteGattCharacteristicTest, StopNotifySession_OnIndicate) { | |
| 1341 ASSERT_NO_FATAL_FAILURE(StartNotifyBoilerplate( | |
| 1342 /* properties: INDICATE */ 0x20, | |
| 1343 /* expected_config_descriptor_value: INDICATE */ 2)); | |
| 1344 notify_sessions_[0]->Stop( | |
| 1345 GetStopNotifyCallback(Call::EXPECTED, notify_sessions_[0])); | |
| 1346 SimulateGattNotifySessionStopped(characteristic1_); | |
|
ortuno
2016/08/02 01:56:33
Same here. Add the same EXPECTS as above.
tommyt
2016/08/05 12:22:29
Done.
| |
| 1347 base::RunLoop().RunUntilIdle(); | |
| 1348 ASSERT_EQ(0u, notify_sessions_.size()); | |
| 1349 } | |
| 1350 #endif // defined(OS_ANDROID) | |
| 1351 | |
| 1352 #if defined(OS_ANDROID) | |
| 1353 // Tests StopNotifySession success on a characteristic enabling Notify & | |
|
ortuno
2016/08/02 01:56:33
nit: on a characteristic that enabled Notify & Ind
tommyt
2016/08/05 12:22:29
Done.
| |
| 1354 // Indicate. | |
| 1355 TEST_F(BluetoothRemoteGattCharacteristicTest, | |
| 1356 StopNotifySession_OnNotifyAndIndicate) { | |
| 1357 ASSERT_NO_FATAL_FAILURE(StartNotifyBoilerplate( | |
| 1358 /* properties: INDICATE */ 0x30, | |
|
ortuno
2016/08/02 01:56:33
nit: properties: NOTIFY & INDICATE
tommyt
2016/08/05 12:22:29
Done.
| |
| 1359 /* expected_config_descriptor_value: INDICATE */ 1)); | |
| 1360 notify_sessions_[0]->Stop( | |
| 1361 GetStopNotifyCallback(Call::EXPECTED, notify_sessions_[0])); | |
| 1362 SimulateGattNotifySessionStopped(characteristic1_); | |
|
ortuno
2016/08/02 01:56:32
Same here. Please add same EXPECTS as above.
tommyt
2016/08/05 12:22:30
Done.
| |
| 1363 base::RunLoop().RunUntilIdle(); | |
| 1364 ASSERT_EQ(0u, notify_sessions_.size()); | |
| 1365 } | |
| 1366 #endif // defined(OS_ANDROID) | |
| 1367 | |
| 1368 #if defined(OS_ANDROID) | |
| 1369 // Tests StopNotifySession error | |
| 1370 TEST_F(BluetoothRemoteGattCharacteristicTest, StopNotifySession_Error) { | |
| 1371 ASSERT_NO_FATAL_FAILURE(StartNotifyBoilerplate( | |
| 1372 /* properties: NOTIFY */ 0x10, | |
| 1373 /* expected_config_descriptor_value: NOTIFY */ 1)); | |
| 1374 notify_sessions_[0]->Stop( | |
| 1375 GetStopNotifyCallback(Call::EXPECTED, notify_sessions_[0])); | |
|
ortuno
2016/08/02 01:56:32
Test the state of the notify session before and af
tommyt
2016/08/05 12:22:29
Done.
| |
| 1376 SimulateGattNotifySessionStopError( | |
| 1377 characteristic1_, BluetoothRemoteGattService::GATT_ERROR_UNKNOWN); | |
| 1378 base::RunLoop().RunUntilIdle(); | |
| 1379 ASSERT_EQ(0u, notify_sessions_.size()); | |
|
ortuno
2016/08/02 01:56:33
Also test IsNotifying()
tommyt
2016/08/05 12:22:29
Done.
| |
| 1380 } | |
| 1381 #endif // defined(OS_ANDROID) | |
| 1382 | |
| 1383 #if defined(OS_ANDROID) | |
| 1384 // Tests multiple StopNotifySession calls for a single session. | |
| 1385 TEST_F(BluetoothRemoteGattCharacteristicTest, StopNotifySession_Multiple1) { | |
| 1386 ASSERT_NO_FATAL_FAILURE( | |
| 1387 FakeCharacteristicBoilerplate(/* properties: NOTIFY */ 0x10)); | |
| 1388 SimulateGattDescriptor( | |
| 1389 characteristic1_, | |
| 1390 BluetoothRemoteGattDescriptor::ClientCharacteristicConfigurationUuid() | |
| 1391 .canonical_value()); | |
| 1392 ASSERT_EQ(1u, characteristic1_->GetDescriptors().size()); | |
| 1393 | |
| 1394 // Start notify session | |
| 1395 characteristic1_->StartNotifySession( | |
| 1396 GetNotifyCallback(Call::EXPECTED), | |
| 1397 GetGattErrorCallback(Call::NOT_EXPECTED)); | |
| 1398 EXPECT_EQ(0, callback_count_); | |
| 1399 SimulateGattNotifySessionStarted(characteristic1_); | |
| 1400 base::RunLoop().RunUntilIdle(); | |
| 1401 EXPECT_EQ(1, gatt_notify_characteristic_attempts_); | |
| 1402 EXPECT_EQ(1, callback_count_); | |
| 1403 EXPECT_EQ(0, error_callback_count_); | |
| 1404 ASSERT_EQ(1u, notify_sessions_.size()); | |
| 1405 ASSERT_TRUE(notify_sessions_[0]); | |
| 1406 EXPECT_EQ(characteristic1_, notify_sessions_[0]->GetCharacteristic()); | |
| 1407 EXPECT_TRUE(notify_sessions_[0]->IsActive()); | |
| 1408 | |
| 1409 // Stop the notify session twice | |
| 1410 notify_sessions_[0]->Stop( | |
| 1411 GetStopNotifyCallback(Call::EXPECTED, notify_sessions_[0])); | |
|
ortuno
2016/08/02 01:56:33
We need a way to test that callbacks are called in
tommyt
2016/08/05 12:22:29
Done.
| |
| 1412 notify_sessions_[0]->Stop( | |
| 1413 GetStopNotifyCallback(Call::EXPECTED, notify_sessions_[0])); | |
| 1414 SimulateGattNotifySessionStopped(characteristic1_); | |
| 1415 base::RunLoop().RunUntilIdle(); | |
| 1416 ASSERT_EQ(0u, notify_sessions_.size()); | |
|
ortuno
2016/08/02 01:56:34
optional nit: maybe test IsNotifying(). Not as imp
tommyt
2016/08/05 12:22:29
Done.
| |
| 1417 } | |
| 1418 #endif // defined(OS_ANDROID) | |
| 1419 | |
| 1420 #if defined(OS_ANDROID) | |
| 1421 // Tests multiple StartNotifySession calls and multiple StopNotifySession calls. | |
| 1422 TEST_F(BluetoothRemoteGattCharacteristicTest, StopNotifySession_Multiple2) { | |
| 1423 ASSERT_NO_FATAL_FAILURE( | |
| 1424 FakeCharacteristicBoilerplate(/* properties: NOTIFY */ 0x10)); | |
| 1425 SimulateGattDescriptor( | |
|
ortuno
2016/08/02 01:56:32
Surround this with # !defined(OS_MACOSX) with a to
tommyt
2016/08/05 12:22:29
Done.
| |
| 1426 characteristic1_, | |
| 1427 BluetoothRemoteGattDescriptor::ClientCharacteristicConfigurationUuid() | |
| 1428 .canonical_value()); | |
| 1429 ASSERT_EQ(1u, characteristic1_->GetDescriptors().size()); | |
| 1430 | |
| 1431 // Start notify sessions | |
| 1432 characteristic1_->StartNotifySession( | |
|
ortuno
2016/08/02 01:56:32
Same here. I think we need a way to test that call
tommyt
2016/08/05 12:22:29
Done.
ortuno
2016/08/09 21:57:55
I think you forgot to change this test :)
tommyt
2016/08/10 12:07:17
Yes, or I did change it but I only added these tes
| |
| 1433 GetNotifyCallback(Call::EXPECTED), | |
| 1434 GetGattErrorCallback(Call::NOT_EXPECTED)); | |
| 1435 characteristic1_->StartNotifySession( | |
| 1436 GetNotifyCallback(Call::EXPECTED), | |
| 1437 GetGattErrorCallback(Call::NOT_EXPECTED)); | |
| 1438 EXPECT_EQ(0, callback_count_); | |
| 1439 SimulateGattNotifySessionStarted(characteristic1_); | |
| 1440 base::RunLoop().RunUntilIdle(); | |
| 1441 EXPECT_EQ(1, gatt_notify_characteristic_attempts_); | |
| 1442 EXPECT_EQ(2, callback_count_); | |
| 1443 EXPECT_EQ(0, error_callback_count_); | |
| 1444 ASSERT_EQ(2u, notify_sessions_.size()); | |
|
ortuno
2016/08/02 01:56:33
Also test is IsNotifying()
tommyt
2016/08/05 12:22:29
Done.
| |
| 1445 ASSERT_TRUE(notify_sessions_[0]); | |
| 1446 ASSERT_TRUE(notify_sessions_[1]); | |
| 1447 EXPECT_EQ(characteristic1_, notify_sessions_[0]->GetCharacteristic()); | |
| 1448 EXPECT_EQ(characteristic1_, notify_sessions_[1]->GetCharacteristic()); | |
| 1449 EXPECT_TRUE(notify_sessions_[0]->IsActive()); | |
| 1450 EXPECT_TRUE(notify_sessions_[1]->IsActive()); | |
| 1451 | |
| 1452 // Stop the notify sessions | |
| 1453 notify_sessions_[1]->Stop( | |
| 1454 GetStopNotifyCallback(Call::EXPECTED, notify_sessions_[1])); | |
| 1455 base::RunLoop().RunUntilIdle(); | |
| 1456 ASSERT_EQ(1u, notify_sessions_.size()); | |
|
ortuno
2016/08/02 01:56:33
Also test IsNotifying() and that the other session
tommyt
2016/08/05 12:22:29
Done.
| |
| 1457 | |
| 1458 notify_sessions_[0]->Stop( | |
| 1459 GetStopNotifyCallback(Call::EXPECTED, notify_sessions_[0])); | |
| 1460 SimulateGattNotifySessionStopped(characteristic1_); | |
| 1461 base::RunLoop().RunUntilIdle(); | |
| 1462 ASSERT_EQ(0u, notify_sessions_.size()); | |
| 1463 } | |
| 1464 #endif // defined(OS_ANDROID) | |
| 1465 | |
| 1466 #if defined(OS_ANDROID) | |
| 1467 // Tests starting a new notify session before the previous stop request resolves | |
|
ortuno
2016/08/02 01:56:32
nit: Period at the end of sentence.
tommyt
2016/08/05 12:22:28
Done.
| |
| 1468 TEST_F(BluetoothRemoteGattCharacteristicTest, StopNotifySession_StopStart) { | |
| 1469 ASSERT_NO_FATAL_FAILURE( | |
| 1470 FakeCharacteristicBoilerplate(/* properties: NOTIFY */ 0x10)); | |
| 1471 SimulateGattDescriptor( | |
| 1472 characteristic1_, | |
| 1473 BluetoothRemoteGattDescriptor::ClientCharacteristicConfigurationUuid() | |
| 1474 .canonical_value()); | |
| 1475 ASSERT_EQ(1u, characteristic1_->GetDescriptors().size()); | |
| 1476 | |
| 1477 // Start notify session | |
|
ortuno
2016/08/02 01:56:32
Same here. Please add some code to make sure the c
tommyt
2016/08/05 12:22:29
Done.
| |
| 1478 characteristic1_->StartNotifySession( | |
| 1479 GetNotifyCallback(Call::EXPECTED), | |
| 1480 GetGattErrorCallback(Call::NOT_EXPECTED)); | |
| 1481 SimulateGattNotifySessionStarted(characteristic1_); | |
| 1482 base::RunLoop().RunUntilIdle(); | |
| 1483 ASSERT_EQ(1u, notify_sessions_.size()); | |
| 1484 ASSERT_TRUE(notify_sessions_[0]); | |
| 1485 EXPECT_TRUE(notify_sessions_[0]->IsActive()); | |
| 1486 | |
| 1487 // Stop the notify session | |
| 1488 notify_sessions_[0]->Stop( | |
| 1489 GetStopNotifyCallback(Call::EXPECTED, notify_sessions_[0])); | |
| 1490 | |
| 1491 // Start another notify session | |
| 1492 characteristic1_->StartNotifySession( | |
| 1493 GetNotifyCallback(Call::EXPECTED), | |
| 1494 GetGattErrorCallback(Call::NOT_EXPECTED)); | |
| 1495 | |
| 1496 SimulateGattNotifySessionStopped(characteristic1_); | |
| 1497 base::RunLoop().RunUntilIdle(); | |
| 1498 ASSERT_EQ(0u, notify_sessions_.size()); | |
| 1499 | |
| 1500 SimulateGattNotifySessionStarted(characteristic1_); | |
| 1501 base::RunLoop().RunUntilIdle(); | |
| 1502 ASSERT_EQ(1u, notify_sessions_.size()); | |
| 1503 ASSERT_TRUE(notify_sessions_[0]); | |
| 1504 EXPECT_TRUE(notify_sessions_[0]->IsActive()); | |
| 1505 } | |
|
ortuno
2016/08/02 01:56:32
Also test IsNotifying()
tommyt
2016/08/05 12:22:30
Done.
| |
| 1506 #endif // defined(OS_ANDROID) | |
| 1507 | |
| 1508 #if defined(OS_ANDROID) | |
| 1509 // Tests starting a new notify session before the previous stop request resolves | |
|
ortuno
2016/08/02 01:56:33
nit: Period at the end of sentence.
before previo
tommyt
2016/08/05 12:22:29
Done.
| |
| 1510 TEST_F(BluetoothRemoteGattCharacteristicTest, StopNotifySession_StopStopStart) { | |
|
ortuno
2016/08/02 01:56:32
Another similar test but for StartNotifySession to
tommyt
2016/08/05 12:22:29
This test case would have to be added later, after
ortuno
2016/08/05 14:47:00
There are three StartNotifications calls. The stop
tommyt
2016/08/08 13:55:08
Right, this approach is possible. The latest patch
| |
| 1511 ASSERT_NO_FATAL_FAILURE( | |
| 1512 FakeCharacteristicBoilerplate(/* properties: NOTIFY */ 0x10)); | |
| 1513 SimulateGattDescriptor( | |
| 1514 characteristic1_, | |
| 1515 BluetoothRemoteGattDescriptor::ClientCharacteristicConfigurationUuid() | |
| 1516 .canonical_value()); | |
| 1517 ASSERT_EQ(1u, characteristic1_->GetDescriptors().size()); | |
| 1518 | |
| 1519 // Start notify session | |
| 1520 characteristic1_->StartNotifySession( | |
| 1521 GetNotifyCallback(Call::EXPECTED), | |
| 1522 GetGattErrorCallback(Call::NOT_EXPECTED)); | |
| 1523 SimulateGattNotifySessionStarted(characteristic1_); | |
| 1524 base::RunLoop().RunUntilIdle(); | |
| 1525 ASSERT_EQ(1u, notify_sessions_.size()); | |
| 1526 ASSERT_TRUE(notify_sessions_[0]); | |
| 1527 EXPECT_TRUE(notify_sessions_[0]->IsActive()); | |
| 1528 | |
| 1529 // Stop the notify session twice | |
| 1530 notify_sessions_[0]->Stop( | |
| 1531 GetStopNotifyCallback(Call::EXPECTED, notify_sessions_[0])); | |
| 1532 notify_sessions_[0]->Stop( | |
| 1533 GetStopNotifyCallback(Call::EXPECTED, notify_sessions_[0])); | |
| 1534 | |
| 1535 // Start another notify session | |
| 1536 characteristic1_->StartNotifySession( | |
| 1537 GetNotifyCallback(Call::EXPECTED), | |
| 1538 GetGattErrorCallback(Call::NOT_EXPECTED)); | |
| 1539 | |
| 1540 SimulateGattNotifySessionStopped(characteristic1_); | |
| 1541 base::RunLoop().RunUntilIdle(); | |
| 1542 ASSERT_EQ(0u, notify_sessions_.size()); | |
| 1543 | |
| 1544 SimulateGattNotifySessionStarted(characteristic1_); | |
| 1545 base::RunLoop().RunUntilIdle(); | |
| 1546 ASSERT_EQ(1u, notify_sessions_.size()); | |
| 1547 ASSERT_TRUE(notify_sessions_[0]); | |
| 1548 EXPECT_TRUE(notify_sessions_[0]->IsActive()); | |
| 1549 } | |
|
ortuno
2016/08/02 01:56:33
Same here we need to make sure that the callbacks
tommyt
2016/08/05 12:22:29
Done.
| |
| 1550 #endif // defined(OS_ANDROID) | |
| 1551 | |
| 1290 #if defined(OS_ANDROID) || defined(OS_MACOSX) || defined(OS_WIN) | 1552 #if defined(OS_ANDROID) || defined(OS_MACOSX) || defined(OS_WIN) |
|
ortuno
2016/08/02 01:56:33
Also tests for reentrancy i.e. you need to make su
tommyt
2016/08/05 12:22:29
Done.
| |
| 1291 // Tests Characteristic Value changes during a Notify Session. | 1553 // Tests Characteristic Value changes during a Notify Session. |
| 1292 TEST_F(BluetoothRemoteGattCharacteristicTest, GattCharacteristicValueChanged) { | 1554 TEST_F(BluetoothRemoteGattCharacteristicTest, GattCharacteristicValueChanged) { |
| 1293 if (!PlatformSupportsLowEnergy()) { | 1555 if (!PlatformSupportsLowEnergy()) { |
| 1294 LOG(WARNING) << "Low Energy Bluetooth unavailable, skipping unit test."; | 1556 LOG(WARNING) << "Low Energy Bluetooth unavailable, skipping unit test."; |
| 1295 return; | 1557 return; |
| 1296 } | 1558 } |
| 1297 ASSERT_NO_FATAL_FAILURE(StartNotifyBoilerplate( | 1559 ASSERT_NO_FATAL_FAILURE(StartNotifyBoilerplate( |
| 1298 /* properties: NOTIFY */ 0x10, | 1560 /* properties: NOTIFY */ 0x10, |
| 1299 /* expected_config_descriptor_value: NOTIFY */ 1)); | 1561 /* expected_config_descriptor_value: NOTIFY */ 1)); |
| 1300 | 1562 |
| (...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1415 EXPECT_EQ(1u, characteristic1_->GetDescriptorsByUUID(id2).size()); | 1677 EXPECT_EQ(1u, characteristic1_->GetDescriptorsByUUID(id2).size()); |
| 1416 EXPECT_EQ(2u, characteristic2_->GetDescriptorsByUUID(id3).size()); | 1678 EXPECT_EQ(2u, characteristic2_->GetDescriptorsByUUID(id3).size()); |
| 1417 | 1679 |
| 1418 EXPECT_EQ(0u, characteristic2_->GetDescriptorsByUUID(id1).size()); | 1680 EXPECT_EQ(0u, characteristic2_->GetDescriptorsByUUID(id1).size()); |
| 1419 EXPECT_EQ(0u, characteristic2_->GetDescriptorsByUUID(id2).size()); | 1681 EXPECT_EQ(0u, characteristic2_->GetDescriptorsByUUID(id2).size()); |
| 1420 EXPECT_EQ(0u, characteristic1_->GetDescriptorsByUUID(id3).size()); | 1682 EXPECT_EQ(0u, characteristic1_->GetDescriptorsByUUID(id3).size()); |
| 1421 } | 1683 } |
| 1422 #endif // defined(OS_ANDROID) || defined(OS_WIN) | 1684 #endif // defined(OS_ANDROID) || defined(OS_WIN) |
| 1423 | 1685 |
| 1424 } // namespace device | 1686 } // namespace device |
| OLD | NEW |