| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 <stddef.h> | 5 #include <stddef.h> |
| 6 #include <stdint.h> | 6 #include <stdint.h> |
| 7 | 7 |
| 8 #include <memory> | 8 #include <memory> |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 116 void TearDown() override { | 116 void TearDown() override { |
| 117 adapter_ = NULL; | 117 adapter_ = NULL; |
| 118 update_sessions_.clear(); | 118 update_sessions_.clear(); |
| 119 gatt_conn_.reset(); | 119 gatt_conn_.reset(); |
| 120 bluez::BluezDBusManager::Shutdown(); | 120 bluez::BluezDBusManager::Shutdown(); |
| 121 } | 121 } |
| 122 | 122 |
| 123 void GetAdapter() { | 123 void GetAdapter() { |
| 124 device::BluetoothAdapterFactory::GetAdapter(base::Bind( | 124 device::BluetoothAdapterFactory::GetAdapter(base::Bind( |
| 125 &BluetoothGattBlueZTest::AdapterCallback, base::Unretained(this))); | 125 &BluetoothGattBlueZTest::AdapterCallback, base::Unretained(this))); |
| 126 base::MessageLoop::current()->Run(); | 126 base::RunLoop().Run(); |
| 127 ASSERT_TRUE(adapter_.get() != NULL); | 127 ASSERT_TRUE(adapter_.get() != NULL); |
| 128 ASSERT_TRUE(adapter_->IsInitialized()); | 128 ASSERT_TRUE(adapter_->IsInitialized()); |
| 129 ASSERT_TRUE(adapter_->IsPresent()); | 129 ASSERT_TRUE(adapter_->IsPresent()); |
| 130 } | 130 } |
| 131 | 131 |
| 132 void BatteryServiceShouldBeComplete(BluetoothDevice* device) { | 132 void BatteryServiceShouldBeComplete(BluetoothDevice* device) { |
| 133 ASSERT_TRUE(device); | 133 ASSERT_TRUE(device); |
| 134 ASSERT_GE(device->GetGattServices().size(), 1u); | 134 ASSERT_GE(device->GetGattServices().size(), 1u); |
| 135 | 135 |
| 136 BluetoothRemoteGattService* service = device->GetGattService( | 136 BluetoothRemoteGattService* service = device->GetGattService( |
| (...skipping 343 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 480 dbus::ObjectPath(bluez::FakeBluetoothDeviceClient::kLowEnergyPath)); | 480 dbus::ObjectPath(bluez::FakeBluetoothDeviceClient::kLowEnergyPath)); |
| 481 | 481 |
| 482 ASSERT_TRUE(device); | 482 ASSERT_TRUE(device); |
| 483 | 483 |
| 484 TestBluetoothAdapterObserver observer(adapter_); | 484 TestBluetoothAdapterObserver observer(adapter_); |
| 485 | 485 |
| 486 // Expose the fake Heart Rate Service. | 486 // Expose the fake Heart Rate Service. |
| 487 fake_bluetooth_gatt_service_client_->ExposeHeartRateService( | 487 fake_bluetooth_gatt_service_client_->ExposeHeartRateService( |
| 488 dbus::ObjectPath(bluez::FakeBluetoothDeviceClient::kLowEnergyPath)); | 488 dbus::ObjectPath(bluez::FakeBluetoothDeviceClient::kLowEnergyPath)); |
| 489 // Run the message loop so that the characteristics/descriptors appear. | 489 // Run the message loop so that the characteristics/descriptors appear. |
| 490 base::MessageLoop::current()->Run(); | 490 base::RunLoop().Run(); |
| 491 properties->services_resolved.ReplaceValue(true); | 491 properties->services_resolved.ReplaceValue(true); |
| 492 | 492 |
| 493 EXPECT_TRUE(device->IsGattServicesDiscoveryComplete()); | 493 EXPECT_TRUE(device->IsGattServicesDiscoveryComplete()); |
| 494 EXPECT_EQ(1u, device->GetGattServices().size()); | 494 EXPECT_EQ(1u, device->GetGattServices().size()); |
| 495 EXPECT_EQ(device, observer.last_device()); | 495 EXPECT_EQ(device, observer.last_device()); |
| 496 EXPECT_EQ(bluez::FakeBluetoothDeviceClient::kLowEnergyAddress, | 496 EXPECT_EQ(bluez::FakeBluetoothDeviceClient::kLowEnergyAddress, |
| 497 observer.last_device_address()); | 497 observer.last_device_address()); |
| 498 | 498 |
| 499 // Disconnect from the device: | 499 // Disconnect from the device: |
| 500 device->Disconnect(base::Bind(&BluetoothGattBlueZTest::SuccessCallback, | 500 device->Disconnect(base::Bind(&BluetoothGattBlueZTest::SuccessCallback, |
| (...skipping 14 matching lines...) Expand all Loading... |
| 515 base::Unretained(this)), | 515 base::Unretained(this)), |
| 516 base::Bind(&BluetoothGattBlueZTest::ConnectErrorCallback, | 516 base::Bind(&BluetoothGattBlueZTest::ConnectErrorCallback, |
| 517 base::Unretained(this))); | 517 base::Unretained(this))); |
| 518 properties->connected.ReplaceValue(true); | 518 properties->connected.ReplaceValue(true); |
| 519 EXPECT_TRUE(device->IsConnected()); | 519 EXPECT_TRUE(device->IsConnected()); |
| 520 | 520 |
| 521 // Verify that service discovery can be done again: | 521 // Verify that service discovery can be done again: |
| 522 fake_bluetooth_gatt_service_client_->ExposeHeartRateService( | 522 fake_bluetooth_gatt_service_client_->ExposeHeartRateService( |
| 523 dbus::ObjectPath(bluez::FakeBluetoothDeviceClient::kLowEnergyPath)); | 523 dbus::ObjectPath(bluez::FakeBluetoothDeviceClient::kLowEnergyPath)); |
| 524 // Run the message loop so that the characteristics/descriptors appear. | 524 // Run the message loop so that the characteristics/descriptors appear. |
| 525 base::MessageLoop::current()->Run(); | 525 base::RunLoop().Run(); |
| 526 properties->services_resolved.ReplaceValue(true); | 526 properties->services_resolved.ReplaceValue(true); |
| 527 | 527 |
| 528 EXPECT_TRUE(device->IsGattServicesDiscoveryComplete()); | 528 EXPECT_TRUE(device->IsGattServicesDiscoveryComplete()); |
| 529 EXPECT_EQ(1u, device->GetGattServices().size()); | 529 EXPECT_EQ(1u, device->GetGattServices().size()); |
| 530 } | 530 } |
| 531 | 531 |
| 532 TEST_F(BluetoothGattBlueZTest, DiscoverCachedServices) { | 532 TEST_F(BluetoothGattBlueZTest, DiscoverCachedServices) { |
| 533 // This unit test tests that all remote GATT objects are created for D-Bus | 533 // This unit test tests that all remote GATT objects are created for D-Bus |
| 534 // objects that were already exposed and all relevant events have been | 534 // objects that were already exposed and all relevant events have been |
| 535 // dispatched. | 535 // dispatched. |
| (...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 697 device->GetGattService(observer.last_gatt_service_id()); | 697 device->GetGattService(observer.last_gatt_service_id()); |
| 698 | 698 |
| 699 EXPECT_EQ(0, observer.gatt_service_changed_count()); | 699 EXPECT_EQ(0, observer.gatt_service_changed_count()); |
| 700 EXPECT_EQ(0, observer.gatt_discovery_complete_count()); | 700 EXPECT_EQ(0, observer.gatt_discovery_complete_count()); |
| 701 EXPECT_EQ(0, observer.gatt_characteristic_added_count()); | 701 EXPECT_EQ(0, observer.gatt_characteristic_added_count()); |
| 702 EXPECT_EQ(0, observer.gatt_characteristic_removed_count()); | 702 EXPECT_EQ(0, observer.gatt_characteristic_removed_count()); |
| 703 EXPECT_EQ(0, observer.gatt_characteristic_value_changed_count()); | 703 EXPECT_EQ(0, observer.gatt_characteristic_value_changed_count()); |
| 704 EXPECT_TRUE(service->GetCharacteristics().empty()); | 704 EXPECT_TRUE(service->GetCharacteristics().empty()); |
| 705 | 705 |
| 706 // Run the message loop so that the characteristics appear. | 706 // Run the message loop so that the characteristics appear. |
| 707 base::MessageLoop::current()->Run(); | 707 base::RunLoop().Run(); |
| 708 | 708 |
| 709 // 3 characteristics should appear. Only 1 of the characteristics sends | 709 // 3 characteristics should appear. Only 1 of the characteristics sends |
| 710 // value changed signals. Service changed should be fired once for | 710 // value changed signals. Service changed should be fired once for |
| 711 // descriptor added. | 711 // descriptor added. |
| 712 EXPECT_EQ(0, observer.gatt_service_changed_count()); | 712 EXPECT_EQ(0, observer.gatt_service_changed_count()); |
| 713 EXPECT_EQ(3, observer.gatt_characteristic_added_count()); | 713 EXPECT_EQ(3, observer.gatt_characteristic_added_count()); |
| 714 EXPECT_EQ(0, observer.gatt_characteristic_removed_count()); | 714 EXPECT_EQ(0, observer.gatt_characteristic_removed_count()); |
| 715 EXPECT_EQ(0, observer.gatt_characteristic_value_changed_count()); | 715 EXPECT_EQ(0, observer.gatt_characteristic_value_changed_count()); |
| 716 EXPECT_EQ(3U, service->GetCharacteristics().size()); | 716 EXPECT_EQ(3U, service->GetCharacteristics().size()); |
| 717 | 717 |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 763 device->GetGattService(observer.last_gatt_service_id()); | 763 device->GetGattService(observer.last_gatt_service_id()); |
| 764 | 764 |
| 765 EXPECT_EQ(0, observer.gatt_service_changed_count()); | 765 EXPECT_EQ(0, observer.gatt_service_changed_count()); |
| 766 EXPECT_EQ(0, observer.gatt_descriptor_added_count()); | 766 EXPECT_EQ(0, observer.gatt_descriptor_added_count()); |
| 767 EXPECT_EQ(0, observer.gatt_descriptor_removed_count()); | 767 EXPECT_EQ(0, observer.gatt_descriptor_removed_count()); |
| 768 EXPECT_EQ(0, observer.gatt_descriptor_value_changed_count()); | 768 EXPECT_EQ(0, observer.gatt_descriptor_value_changed_count()); |
| 769 | 769 |
| 770 EXPECT_TRUE(service->GetCharacteristics().empty()); | 770 EXPECT_TRUE(service->GetCharacteristics().empty()); |
| 771 | 771 |
| 772 // Run the message loop so that the characteristics appear. | 772 // Run the message loop so that the characteristics appear. |
| 773 base::MessageLoop::current()->Run(); | 773 base::RunLoop().Run(); |
| 774 EXPECT_EQ(0, observer.gatt_service_changed_count()); | 774 EXPECT_EQ(0, observer.gatt_service_changed_count()); |
| 775 | 775 |
| 776 // Only the Heart Rate Measurement characteristic has a descriptor. | 776 // Only the Heart Rate Measurement characteristic has a descriptor. |
| 777 EXPECT_EQ(1, observer.gatt_descriptor_added_count()); | 777 EXPECT_EQ(1, observer.gatt_descriptor_added_count()); |
| 778 EXPECT_EQ(0, observer.gatt_descriptor_removed_count()); | 778 EXPECT_EQ(0, observer.gatt_descriptor_removed_count()); |
| 779 EXPECT_EQ(0, observer.gatt_descriptor_value_changed_count()); | 779 EXPECT_EQ(0, observer.gatt_descriptor_value_changed_count()); |
| 780 | 780 |
| 781 BluetoothRemoteGattCharacteristic* characteristic = | 781 BluetoothRemoteGattCharacteristic* characteristic = |
| 782 service->GetCharacteristic(fake_bluetooth_gatt_characteristic_client_ | 782 service->GetCharacteristic(fake_bluetooth_gatt_characteristic_client_ |
| 783 ->GetBodySensorLocationPath() | 783 ->GetBodySensorLocationPath() |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 850 fake_bluetooth_gatt_service_client_->ExposeHeartRateService( | 850 fake_bluetooth_gatt_service_client_->ExposeHeartRateService( |
| 851 dbus::ObjectPath(bluez::FakeBluetoothDeviceClient::kLowEnergyPath)); | 851 dbus::ObjectPath(bluez::FakeBluetoothDeviceClient::kLowEnergyPath)); |
| 852 ASSERT_EQ(1, observer.gatt_service_added_count()); | 852 ASSERT_EQ(1, observer.gatt_service_added_count()); |
| 853 | 853 |
| 854 BluetoothRemoteGattService* service = | 854 BluetoothRemoteGattService* service = |
| 855 device->GetGattService(observer.last_gatt_service_id()); | 855 device->GetGattService(observer.last_gatt_service_id()); |
| 856 | 856 |
| 857 EXPECT_EQ(0, observer.gatt_characteristic_value_changed_count()); | 857 EXPECT_EQ(0, observer.gatt_characteristic_value_changed_count()); |
| 858 | 858 |
| 859 // Run the message loop so that the characteristics appear. | 859 // Run the message loop so that the characteristics appear. |
| 860 base::MessageLoop::current()->Run(); | 860 base::RunLoop().Run(); |
| 861 | 861 |
| 862 // Issue write request to non-writable characteristics. | 862 // Issue write request to non-writable characteristics. |
| 863 observer.Reset(); | 863 observer.Reset(); |
| 864 | 864 |
| 865 std::vector<uint8_t> write_value; | 865 std::vector<uint8_t> write_value; |
| 866 write_value.push_back(0x01); | 866 write_value.push_back(0x01); |
| 867 BluetoothRemoteGattCharacteristic* characteristic = | 867 BluetoothRemoteGattCharacteristic* characteristic = |
| 868 service->GetCharacteristic(fake_bluetooth_gatt_characteristic_client_ | 868 service->GetCharacteristic(fake_bluetooth_gatt_characteristic_client_ |
| 869 ->GetHeartRateMeasurementPath() | 869 ->GetHeartRateMeasurementPath() |
| 870 .value()); | 870 .value()); |
| (...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1066 // characteristics. | 1066 // characteristics. |
| 1067 fake_bluetooth_gatt_service_client_->ExposeHeartRateService( | 1067 fake_bluetooth_gatt_service_client_->ExposeHeartRateService( |
| 1068 dbus::ObjectPath(bluez::FakeBluetoothDeviceClient::kLowEnergyPath)); | 1068 dbus::ObjectPath(bluez::FakeBluetoothDeviceClient::kLowEnergyPath)); |
| 1069 | 1069 |
| 1070 BluetoothRemoteGattService* service = | 1070 BluetoothRemoteGattService* service = |
| 1071 device->GetGattService(observer.last_gatt_service_id()); | 1071 device->GetGattService(observer.last_gatt_service_id()); |
| 1072 | 1072 |
| 1073 EXPECT_TRUE(service->GetCharacteristics().empty()); | 1073 EXPECT_TRUE(service->GetCharacteristics().empty()); |
| 1074 | 1074 |
| 1075 // Run the message loop so that the characteristics appear. | 1075 // Run the message loop so that the characteristics appear. |
| 1076 base::MessageLoop::current()->Run(); | 1076 base::RunLoop().Run(); |
| 1077 | 1077 |
| 1078 BluetoothRemoteGattCharacteristic* characteristic = | 1078 BluetoothRemoteGattCharacteristic* characteristic = |
| 1079 service->GetCharacteristic(fake_bluetooth_gatt_characteristic_client_ | 1079 service->GetCharacteristic(fake_bluetooth_gatt_characteristic_client_ |
| 1080 ->GetBodySensorLocationPath() | 1080 ->GetBodySensorLocationPath() |
| 1081 .value()); | 1081 .value()); |
| 1082 EXPECT_EQ(BluetoothRemoteGattCharacteristic::PROPERTY_READ, | 1082 EXPECT_EQ(BluetoothRemoteGattCharacteristic::PROPERTY_READ, |
| 1083 characteristic->GetProperties()); | 1083 characteristic->GetProperties()); |
| 1084 | 1084 |
| 1085 characteristic = service->GetCharacteristic( | 1085 characteristic = service->GetCharacteristic( |
| 1086 fake_bluetooth_gatt_characteristic_client_->GetHeartRateControlPointPath() | 1086 fake_bluetooth_gatt_characteristic_client_->GetHeartRateControlPointPath() |
| (...skipping 25 matching lines...) Expand all Loading... |
| 1112 ASSERT_EQ(1, observer.gatt_service_added_count()); | 1112 ASSERT_EQ(1, observer.gatt_service_added_count()); |
| 1113 | 1113 |
| 1114 BluetoothRemoteGattService* service = | 1114 BluetoothRemoteGattService* service = |
| 1115 device->GetGattService(observer.last_gatt_service_id()); | 1115 device->GetGattService(observer.last_gatt_service_id()); |
| 1116 | 1116 |
| 1117 EXPECT_EQ(0, observer.gatt_service_changed_count()); | 1117 EXPECT_EQ(0, observer.gatt_service_changed_count()); |
| 1118 EXPECT_EQ(0, observer.gatt_descriptor_value_changed_count()); | 1118 EXPECT_EQ(0, observer.gatt_descriptor_value_changed_count()); |
| 1119 EXPECT_TRUE(service->GetCharacteristics().empty()); | 1119 EXPECT_TRUE(service->GetCharacteristics().empty()); |
| 1120 | 1120 |
| 1121 // Run the message loop so that the characteristics appear. | 1121 // Run the message loop so that the characteristics appear. |
| 1122 base::MessageLoop::current()->Run(); | 1122 base::RunLoop().Run(); |
| 1123 EXPECT_EQ(0, observer.gatt_service_changed_count()); | 1123 EXPECT_EQ(0, observer.gatt_service_changed_count()); |
| 1124 | 1124 |
| 1125 // Only the Heart Rate Measurement characteristic has a descriptor. | 1125 // Only the Heart Rate Measurement characteristic has a descriptor. |
| 1126 BluetoothRemoteGattCharacteristic* characteristic = | 1126 BluetoothRemoteGattCharacteristic* characteristic = |
| 1127 service->GetCharacteristic(fake_bluetooth_gatt_characteristic_client_ | 1127 service->GetCharacteristic(fake_bluetooth_gatt_characteristic_client_ |
| 1128 ->GetHeartRateMeasurementPath() | 1128 ->GetHeartRateMeasurementPath() |
| 1129 .value()); | 1129 .value()); |
| 1130 ASSERT_TRUE(characteristic); | 1130 ASSERT_TRUE(characteristic); |
| 1131 EXPECT_EQ(1U, characteristic->GetDescriptors().size()); | 1131 EXPECT_EQ(1U, characteristic->GetDescriptors().size()); |
| 1132 EXPECT_FALSE(characteristic->IsNotifying()); | 1132 EXPECT_FALSE(characteristic->IsNotifying()); |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1190 EXPECT_EQ(0, observer.gatt_service_changed_count()); | 1190 EXPECT_EQ(0, observer.gatt_service_changed_count()); |
| 1191 EXPECT_EQ(1, observer.gatt_descriptor_value_changed_count()); | 1191 EXPECT_EQ(1, observer.gatt_descriptor_value_changed_count()); |
| 1192 | 1192 |
| 1193 // Start notifications on the descriptor's characteristic. The descriptor | 1193 // Start notifications on the descriptor's characteristic. The descriptor |
| 1194 // value should change. | 1194 // value should change. |
| 1195 characteristic->StartNotifySession( | 1195 characteristic->StartNotifySession( |
| 1196 base::Bind(&BluetoothGattBlueZTest::NotifySessionCallback, | 1196 base::Bind(&BluetoothGattBlueZTest::NotifySessionCallback, |
| 1197 base::Unretained(this)), | 1197 base::Unretained(this)), |
| 1198 base::Bind(&BluetoothGattBlueZTest::ServiceErrorCallback, | 1198 base::Bind(&BluetoothGattBlueZTest::ServiceErrorCallback, |
| 1199 base::Unretained(this))); | 1199 base::Unretained(this))); |
| 1200 base::MessageLoop::current()->Run(); | 1200 base::RunLoop().Run(); |
| 1201 EXPECT_EQ(3, success_callback_count_); | 1201 EXPECT_EQ(3, success_callback_count_); |
| 1202 EXPECT_EQ(1, error_callback_count_); | 1202 EXPECT_EQ(1, error_callback_count_); |
| 1203 EXPECT_EQ(1U, update_sessions_.size()); | 1203 EXPECT_EQ(1U, update_sessions_.size()); |
| 1204 EXPECT_TRUE(characteristic->IsNotifying()); | 1204 EXPECT_TRUE(characteristic->IsNotifying()); |
| 1205 | 1205 |
| 1206 // Read the new descriptor value. We should receive a value updated event. | 1206 // Read the new descriptor value. We should receive a value updated event. |
| 1207 descriptor->ReadRemoteDescriptor( | 1207 descriptor->ReadRemoteDescriptor( |
| 1208 base::Bind(&BluetoothGattBlueZTest::ValueCallback, | 1208 base::Bind(&BluetoothGattBlueZTest::ValueCallback, |
| 1209 base::Unretained(this)), | 1209 base::Unretained(this)), |
| 1210 base::Bind(&BluetoothGattBlueZTest::ServiceErrorCallback, | 1210 base::Bind(&BluetoothGattBlueZTest::ServiceErrorCallback, |
| (...skipping 21 matching lines...) Expand all Loading... |
| 1232 fake_bluetooth_gatt_service_client_->ExposeHeartRateService( | 1232 fake_bluetooth_gatt_service_client_->ExposeHeartRateService( |
| 1233 dbus::ObjectPath(bluez::FakeBluetoothDeviceClient::kLowEnergyPath)); | 1233 dbus::ObjectPath(bluez::FakeBluetoothDeviceClient::kLowEnergyPath)); |
| 1234 ASSERT_EQ(1, observer.gatt_service_added_count()); | 1234 ASSERT_EQ(1, observer.gatt_service_added_count()); |
| 1235 | 1235 |
| 1236 BluetoothRemoteGattService* service = | 1236 BluetoothRemoteGattService* service = |
| 1237 device->GetGattService(observer.last_gatt_service_id()); | 1237 device->GetGattService(observer.last_gatt_service_id()); |
| 1238 | 1238 |
| 1239 EXPECT_EQ(0, observer.gatt_characteristic_value_changed_count()); | 1239 EXPECT_EQ(0, observer.gatt_characteristic_value_changed_count()); |
| 1240 | 1240 |
| 1241 // Run the message loop so that the characteristics appear. | 1241 // Run the message loop so that the characteristics appear. |
| 1242 base::MessageLoop::current()->Run(); | 1242 base::RunLoop().Run(); |
| 1243 | 1243 |
| 1244 BluetoothRemoteGattCharacteristic* characteristic = | 1244 BluetoothRemoteGattCharacteristic* characteristic = |
| 1245 service->GetCharacteristic(fake_bluetooth_gatt_characteristic_client_ | 1245 service->GetCharacteristic(fake_bluetooth_gatt_characteristic_client_ |
| 1246 ->GetHeartRateMeasurementPath() | 1246 ->GetHeartRateMeasurementPath() |
| 1247 .value()); | 1247 .value()); |
| 1248 ASSERT_TRUE(characteristic); | 1248 ASSERT_TRUE(characteristic); |
| 1249 EXPECT_FALSE(characteristic->IsNotifying()); | 1249 EXPECT_FALSE(characteristic->IsNotifying()); |
| 1250 EXPECT_TRUE(update_sessions_.empty()); | 1250 EXPECT_TRUE(update_sessions_.empty()); |
| 1251 | 1251 |
| 1252 // Request to start notifications. | 1252 // Request to start notifications. |
| (...skipping 22 matching lines...) Expand all Loading... |
| 1275 base::Bind(&BluetoothGattBlueZTest::ServiceErrorCallback, | 1275 base::Bind(&BluetoothGattBlueZTest::ServiceErrorCallback, |
| 1276 base::Unretained(this))); | 1276 base::Unretained(this))); |
| 1277 EXPECT_EQ(0, success_callback_count_); | 1277 EXPECT_EQ(0, success_callback_count_); |
| 1278 EXPECT_EQ(0, error_callback_count_); | 1278 EXPECT_EQ(0, error_callback_count_); |
| 1279 EXPECT_EQ(1, observer.gatt_characteristic_value_changed_count()); | 1279 EXPECT_EQ(1, observer.gatt_characteristic_value_changed_count()); |
| 1280 EXPECT_TRUE(update_sessions_.empty()); | 1280 EXPECT_TRUE(update_sessions_.empty()); |
| 1281 EXPECT_TRUE(characteristic->IsNotifying()); | 1281 EXPECT_TRUE(characteristic->IsNotifying()); |
| 1282 | 1282 |
| 1283 // Run the main loop. The initial call should complete. The queued call should | 1283 // Run the main loop. The initial call should complete. The queued call should |
| 1284 // succeed immediately. | 1284 // succeed immediately. |
| 1285 base::MessageLoop::current()->Run(); | 1285 base::RunLoop().Run(); |
| 1286 | 1286 |
| 1287 EXPECT_EQ(3, success_callback_count_); | 1287 EXPECT_EQ(3, success_callback_count_); |
| 1288 EXPECT_EQ(0, error_callback_count_); | 1288 EXPECT_EQ(0, error_callback_count_); |
| 1289 EXPECT_EQ(1, observer.gatt_characteristic_value_changed_count()); | 1289 EXPECT_EQ(1, observer.gatt_characteristic_value_changed_count()); |
| 1290 EXPECT_EQ(3U, update_sessions_.size()); | 1290 EXPECT_EQ(3U, update_sessions_.size()); |
| 1291 | 1291 |
| 1292 // Notifications should be getting sent regularly now. | 1292 // Notifications should be getting sent regularly now. |
| 1293 base::MessageLoop::current()->Run(); | 1293 base::RunLoop().Run(); |
| 1294 EXPECT_GT(observer.gatt_characteristic_value_changed_count(), 1); | 1294 EXPECT_GT(observer.gatt_characteristic_value_changed_count(), 1); |
| 1295 | 1295 |
| 1296 // Stop one of the sessions. The session should become inactive but the | 1296 // Stop one of the sessions. The session should become inactive but the |
| 1297 // characteristic should still be notifying. | 1297 // characteristic should still be notifying. |
| 1298 BluetoothGattNotifySession* session = update_sessions_[0]; | 1298 BluetoothGattNotifySession* session = update_sessions_[0]; |
| 1299 EXPECT_TRUE(session->IsActive()); | 1299 EXPECT_TRUE(session->IsActive()); |
| 1300 session->Stop(base::Bind(&BluetoothGattBlueZTest::SuccessCallback, | 1300 session->Stop(base::Bind(&BluetoothGattBlueZTest::SuccessCallback, |
| 1301 base::Unretained(this))); | 1301 base::Unretained(this))); |
| 1302 EXPECT_EQ(4, success_callback_count_); | 1302 EXPECT_EQ(4, success_callback_count_); |
| 1303 EXPECT_EQ(0, error_callback_count_); | 1303 EXPECT_EQ(0, error_callback_count_); |
| (...skipping 23 matching lines...) Expand all Loading... |
| 1327 base::Unretained(this)), | 1327 base::Unretained(this)), |
| 1328 base::Bind(&BluetoothGattBlueZTest::ServiceErrorCallback, | 1328 base::Bind(&BluetoothGattBlueZTest::ServiceErrorCallback, |
| 1329 base::Unretained(this))); | 1329 base::Unretained(this))); |
| 1330 EXPECT_EQ(0, success_callback_count_); | 1330 EXPECT_EQ(0, success_callback_count_); |
| 1331 EXPECT_EQ(0, error_callback_count_); | 1331 EXPECT_EQ(0, error_callback_count_); |
| 1332 EXPECT_EQ(1, observer.gatt_characteristic_value_changed_count()); | 1332 EXPECT_EQ(1, observer.gatt_characteristic_value_changed_count()); |
| 1333 EXPECT_TRUE(update_sessions_.empty()); | 1333 EXPECT_TRUE(update_sessions_.empty()); |
| 1334 EXPECT_TRUE(characteristic->IsNotifying()); | 1334 EXPECT_TRUE(characteristic->IsNotifying()); |
| 1335 | 1335 |
| 1336 // Run the message loop. Notifications should begin. | 1336 // Run the message loop. Notifications should begin. |
| 1337 base::MessageLoop::current()->Run(); | 1337 base::RunLoop().Run(); |
| 1338 | 1338 |
| 1339 EXPECT_EQ(1, success_callback_count_); | 1339 EXPECT_EQ(1, success_callback_count_); |
| 1340 EXPECT_EQ(0, error_callback_count_); | 1340 EXPECT_EQ(0, error_callback_count_); |
| 1341 EXPECT_EQ(1, observer.gatt_characteristic_value_changed_count()); | 1341 EXPECT_EQ(1, observer.gatt_characteristic_value_changed_count()); |
| 1342 EXPECT_EQ(1U, update_sessions_.size()); | 1342 EXPECT_EQ(1U, update_sessions_.size()); |
| 1343 EXPECT_TRUE(update_sessions_[0]->IsActive()); | 1343 EXPECT_TRUE(update_sessions_[0]->IsActive()); |
| 1344 EXPECT_TRUE(characteristic->IsNotifying()); | 1344 EXPECT_TRUE(characteristic->IsNotifying()); |
| 1345 | 1345 |
| 1346 // Check that notifications are happening. | 1346 // Check that notifications are happening. |
| 1347 base::MessageLoop::current()->Run(); | 1347 base::RunLoop().Run(); |
| 1348 EXPECT_GT(observer.gatt_characteristic_value_changed_count(), 1); | 1348 EXPECT_GT(observer.gatt_characteristic_value_changed_count(), 1); |
| 1349 | 1349 |
| 1350 // Request another session. This should return immediately. | 1350 // Request another session. This should return immediately. |
| 1351 characteristic->StartNotifySession( | 1351 characteristic->StartNotifySession( |
| 1352 base::Bind(&BluetoothGattBlueZTest::NotifySessionCallback, | 1352 base::Bind(&BluetoothGattBlueZTest::NotifySessionCallback, |
| 1353 base::Unretained(this)), | 1353 base::Unretained(this)), |
| 1354 base::Bind(&BluetoothGattBlueZTest::ServiceErrorCallback, | 1354 base::Bind(&BluetoothGattBlueZTest::ServiceErrorCallback, |
| 1355 base::Unretained(this))); | 1355 base::Unretained(this))); |
| 1356 EXPECT_EQ(2, success_callback_count_); | 1356 EXPECT_EQ(2, success_callback_count_); |
| 1357 EXPECT_EQ(0, error_callback_count_); | 1357 EXPECT_EQ(0, error_callback_count_); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 1382 fake_bluetooth_gatt_service_client_->ExposeHeartRateService( | 1382 fake_bluetooth_gatt_service_client_->ExposeHeartRateService( |
| 1383 dbus::ObjectPath(bluez::FakeBluetoothDeviceClient::kLowEnergyPath)); | 1383 dbus::ObjectPath(bluez::FakeBluetoothDeviceClient::kLowEnergyPath)); |
| 1384 ASSERT_EQ(1, observer.gatt_service_added_count()); | 1384 ASSERT_EQ(1, observer.gatt_service_added_count()); |
| 1385 | 1385 |
| 1386 BluetoothRemoteGattService* service = | 1386 BluetoothRemoteGattService* service = |
| 1387 device->GetGattService(observer.last_gatt_service_id()); | 1387 device->GetGattService(observer.last_gatt_service_id()); |
| 1388 | 1388 |
| 1389 EXPECT_EQ(0, observer.gatt_characteristic_value_changed_count()); | 1389 EXPECT_EQ(0, observer.gatt_characteristic_value_changed_count()); |
| 1390 | 1390 |
| 1391 // Run the message loop so that the characteristics appear. | 1391 // Run the message loop so that the characteristics appear. |
| 1392 base::MessageLoop::current()->Run(); | 1392 base::RunLoop().Run(); |
| 1393 | 1393 |
| 1394 BluetoothRemoteGattCharacteristic* characteristic = | 1394 BluetoothRemoteGattCharacteristic* characteristic = |
| 1395 service->GetCharacteristic(fake_bluetooth_gatt_characteristic_client_ | 1395 service->GetCharacteristic(fake_bluetooth_gatt_characteristic_client_ |
| 1396 ->GetHeartRateMeasurementPath() | 1396 ->GetHeartRateMeasurementPath() |
| 1397 .value()); | 1397 .value()); |
| 1398 ASSERT_TRUE(characteristic); | 1398 ASSERT_TRUE(characteristic); |
| 1399 EXPECT_FALSE(characteristic->IsNotifying()); | 1399 EXPECT_FALSE(characteristic->IsNotifying()); |
| 1400 EXPECT_TRUE(update_sessions_.empty()); | 1400 EXPECT_TRUE(update_sessions_.empty()); |
| 1401 | 1401 |
| 1402 // Send several requests to start notifications. | 1402 // Send several requests to start notifications. |
| (...skipping 21 matching lines...) Expand all Loading... |
| 1424 // The operation still hasn't completed but we should have received the first | 1424 // The operation still hasn't completed but we should have received the first |
| 1425 // notification. | 1425 // notification. |
| 1426 EXPECT_EQ(0, success_callback_count_); | 1426 EXPECT_EQ(0, success_callback_count_); |
| 1427 EXPECT_EQ(0, error_callback_count_); | 1427 EXPECT_EQ(0, error_callback_count_); |
| 1428 EXPECT_EQ(1, observer.gatt_characteristic_value_changed_count()); | 1428 EXPECT_EQ(1, observer.gatt_characteristic_value_changed_count()); |
| 1429 EXPECT_TRUE(characteristic->IsNotifying()); | 1429 EXPECT_TRUE(characteristic->IsNotifying()); |
| 1430 EXPECT_TRUE(update_sessions_.empty()); | 1430 EXPECT_TRUE(update_sessions_.empty()); |
| 1431 | 1431 |
| 1432 // Run the main loop. The initial call should complete. The queued calls | 1432 // Run the main loop. The initial call should complete. The queued calls |
| 1433 // should succeed immediately. | 1433 // should succeed immediately. |
| 1434 base::MessageLoop::current()->Run(); | 1434 base::RunLoop().Run(); |
| 1435 | 1435 |
| 1436 EXPECT_EQ(4, success_callback_count_); | 1436 EXPECT_EQ(4, success_callback_count_); |
| 1437 EXPECT_EQ(0, error_callback_count_); | 1437 EXPECT_EQ(0, error_callback_count_); |
| 1438 EXPECT_EQ(1, observer.gatt_characteristic_value_changed_count()); | 1438 EXPECT_EQ(1, observer.gatt_characteristic_value_changed_count()); |
| 1439 EXPECT_TRUE(characteristic->IsNotifying()); | 1439 EXPECT_TRUE(characteristic->IsNotifying()); |
| 1440 EXPECT_EQ(4U, update_sessions_.size()); | 1440 EXPECT_EQ(4U, update_sessions_.size()); |
| 1441 | 1441 |
| 1442 for (int i = 0; i < 4; i++) | 1442 for (int i = 0; i < 4; i++) |
| 1443 EXPECT_TRUE(update_sessions_[0]->IsActive()); | 1443 EXPECT_TRUE(update_sessions_[0]->IsActive()); |
| 1444 | 1444 |
| (...skipping 23 matching lines...) Expand all Loading... |
| 1468 base::Unretained(this)), | 1468 base::Unretained(this)), |
| 1469 base::Bind(&BluetoothGattBlueZTest::ServiceErrorCallback, | 1469 base::Bind(&BluetoothGattBlueZTest::ServiceErrorCallback, |
| 1470 base::Unretained(this))); | 1470 base::Unretained(this))); |
| 1471 | 1471 |
| 1472 EXPECT_EQ(0, success_callback_count_); | 1472 EXPECT_EQ(0, success_callback_count_); |
| 1473 EXPECT_EQ(0, error_callback_count_); | 1473 EXPECT_EQ(0, error_callback_count_); |
| 1474 EXPECT_EQ(1, observer.gatt_characteristic_value_changed_count()); | 1474 EXPECT_EQ(1, observer.gatt_characteristic_value_changed_count()); |
| 1475 EXPECT_TRUE(characteristic->IsNotifying()); | 1475 EXPECT_TRUE(characteristic->IsNotifying()); |
| 1476 EXPECT_TRUE(update_sessions_.empty()); | 1476 EXPECT_TRUE(update_sessions_.empty()); |
| 1477 | 1477 |
| 1478 base::MessageLoop::current()->Run(); | 1478 base::RunLoop().Run(); |
| 1479 | 1479 |
| 1480 EXPECT_EQ(1, success_callback_count_); | 1480 EXPECT_EQ(1, success_callback_count_); |
| 1481 EXPECT_EQ(0, error_callback_count_); | 1481 EXPECT_EQ(0, error_callback_count_); |
| 1482 EXPECT_EQ(1, observer.gatt_characteristic_value_changed_count()); | 1482 EXPECT_EQ(1, observer.gatt_characteristic_value_changed_count()); |
| 1483 EXPECT_TRUE(characteristic->IsNotifying()); | 1483 EXPECT_TRUE(characteristic->IsNotifying()); |
| 1484 EXPECT_EQ(1U, update_sessions_.size()); | 1484 EXPECT_EQ(1U, update_sessions_.size()); |
| 1485 EXPECT_TRUE(update_sessions_[0]->IsActive()); | 1485 EXPECT_TRUE(update_sessions_[0]->IsActive()); |
| 1486 } | 1486 } |
| 1487 | 1487 |
| 1488 } // namespace bluez | 1488 } // namespace bluez |
| OLD | NEW |