| OLD | NEW |
| 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 "base/memory/scoped_vector.h" | 5 #include "base/memory/scoped_vector.h" |
| 6 #include "base/message_loop/message_loop.h" | 6 #include "base/message_loop/message_loop.h" |
| 7 #include "base/run_loop.h" | 7 #include "base/run_loop.h" |
| 8 #include "chromeos/dbus/fake_bluetooth_adapter_client.h" | 8 #include "chromeos/dbus/fake_bluetooth_adapter_client.h" |
| 9 #include "chromeos/dbus/fake_bluetooth_agent_manager_client.h" | 9 #include "chromeos/dbus/fake_bluetooth_agent_manager_client.h" |
| 10 #include "chromeos/dbus/fake_bluetooth_device_client.h" | 10 #include "chromeos/dbus/fake_bluetooth_device_client.h" |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 127 std::string device_address_; | 127 std::string device_address_; |
| 128 scoped_refptr<BluetoothAdapter> adapter_; | 128 scoped_refptr<BluetoothAdapter> adapter_; |
| 129 }; | 129 }; |
| 130 | 130 |
| 131 class TestGattServiceObserver : public BluetoothGattService::Observer { | 131 class TestGattServiceObserver : public BluetoothGattService::Observer { |
| 132 public: | 132 public: |
| 133 TestGattServiceObserver(scoped_refptr<BluetoothAdapter> adapter, | 133 TestGattServiceObserver(scoped_refptr<BluetoothAdapter> adapter, |
| 134 BluetoothDevice* device, | 134 BluetoothDevice* device, |
| 135 BluetoothGattService* service) | 135 BluetoothGattService* service) |
| 136 : gatt_service_changed_count_(0), | 136 : gatt_service_changed_count_(0), |
| 137 gatt_discovery_complete_count_(0), |
| 137 gatt_characteristic_added_count_(0), | 138 gatt_characteristic_added_count_(0), |
| 138 gatt_characteristic_removed_count_(0), | 139 gatt_characteristic_removed_count_(0), |
| 139 gatt_characteristic_value_changed_count_(0), | 140 gatt_characteristic_value_changed_count_(0), |
| 140 gatt_descriptor_added_count_(0), | 141 gatt_descriptor_added_count_(0), |
| 141 gatt_descriptor_removed_count_(0), | 142 gatt_descriptor_removed_count_(0), |
| 142 gatt_descriptor_value_changed_count_(0), | 143 gatt_descriptor_value_changed_count_(0), |
| 143 device_address_(device->GetAddress()), | 144 device_address_(device->GetAddress()), |
| 144 gatt_service_id_(service->GetIdentifier()), | 145 gatt_service_id_(service->GetIdentifier()), |
| 145 adapter_(adapter) { | 146 adapter_(adapter) { |
| 146 service->AddObserver(this); | 147 service->AddObserver(this); |
| 147 } | 148 } |
| 148 | 149 |
| 149 virtual ~TestGattServiceObserver() { | 150 virtual ~TestGattServiceObserver() { |
| 150 // See if either the device or the service even exist. | 151 // See if either the device or the service even exist. |
| 151 BluetoothDevice* device = adapter_->GetDevice(device_address_); | 152 BluetoothDevice* device = adapter_->GetDevice(device_address_); |
| 152 if (!device) | 153 if (!device) |
| 153 return; | 154 return; |
| 154 | 155 |
| 155 BluetoothGattService* service = device->GetGattService(gatt_service_id_); | 156 BluetoothGattService* service = device->GetGattService(gatt_service_id_); |
| 156 if (!service) | 157 if (!service) |
| 157 return; | 158 return; |
| 158 | 159 |
| 159 service->RemoveObserver(this); | 160 service->RemoveObserver(this); |
| 160 } | 161 } |
| 161 | 162 |
| 162 // BluetoothGattService::Observer overrides. | 163 // BluetoothGattService::Observer overrides. |
| 164 virtual void GattDiscoveryCompleteForService( |
| 165 BluetoothGattService* service) OVERRIDE { |
| 166 ASSERT_EQ(gatt_service_id_, service->GetIdentifier()); |
| 167 ++gatt_discovery_complete_count_; |
| 168 |
| 169 QuitMessageLoop(); |
| 170 } |
| 171 |
| 163 virtual void GattServiceChanged(BluetoothGattService* service) OVERRIDE { | 172 virtual void GattServiceChanged(BluetoothGattService* service) OVERRIDE { |
| 164 ASSERT_EQ(gatt_service_id_, service->GetIdentifier()); | 173 ASSERT_EQ(gatt_service_id_, service->GetIdentifier()); |
| 165 ++gatt_service_changed_count_; | 174 ++gatt_service_changed_count_; |
| 166 | 175 |
| 167 QuitMessageLoop(); | 176 QuitMessageLoop(); |
| 168 } | 177 } |
| 169 | 178 |
| 170 virtual void GattCharacteristicAdded( | 179 virtual void GattCharacteristicAdded( |
| 171 BluetoothGattService* service, | 180 BluetoothGattService* service, |
| 172 BluetoothGattCharacteristic* characteristic) OVERRIDE { | 181 BluetoothGattCharacteristic* characteristic) OVERRIDE { |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 261 last_changed_descriptor_value_ = value; | 270 last_changed_descriptor_value_ = value; |
| 262 | 271 |
| 263 EXPECT_EQ(characteristic->GetDescriptor(last_gatt_descriptor_id_), | 272 EXPECT_EQ(characteristic->GetDescriptor(last_gatt_descriptor_id_), |
| 264 descriptor); | 273 descriptor); |
| 265 EXPECT_EQ(characteristic, descriptor->GetCharacteristic()); | 274 EXPECT_EQ(characteristic, descriptor->GetCharacteristic()); |
| 266 | 275 |
| 267 QuitMessageLoop(); | 276 QuitMessageLoop(); |
| 268 } | 277 } |
| 269 | 278 |
| 270 int gatt_service_changed_count_; | 279 int gatt_service_changed_count_; |
| 280 int gatt_discovery_complete_count_; |
| 271 int gatt_characteristic_added_count_; | 281 int gatt_characteristic_added_count_; |
| 272 int gatt_characteristic_removed_count_; | 282 int gatt_characteristic_removed_count_; |
| 273 int gatt_characteristic_value_changed_count_; | 283 int gatt_characteristic_value_changed_count_; |
| 274 int gatt_descriptor_added_count_; | 284 int gatt_descriptor_added_count_; |
| 275 int gatt_descriptor_removed_count_; | 285 int gatt_descriptor_removed_count_; |
| 276 int gatt_descriptor_value_changed_count_; | 286 int gatt_descriptor_value_changed_count_; |
| 277 std::string last_gatt_characteristic_id_; | 287 std::string last_gatt_characteristic_id_; |
| 278 BluetoothUUID last_gatt_characteristic_uuid_; | 288 BluetoothUUID last_gatt_characteristic_uuid_; |
| 279 std::vector<uint8> last_changed_characteristic_value_; | 289 std::vector<uint8> last_changed_characteristic_value_; |
| 280 std::string last_gatt_descriptor_id_; | 290 std::string last_gatt_descriptor_id_; |
| (...skipping 320 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 601 // characteristics. | 611 // characteristics. |
| 602 fake_bluetooth_gatt_service_client_->ExposeHeartRateService( | 612 fake_bluetooth_gatt_service_client_->ExposeHeartRateService( |
| 603 dbus::ObjectPath(FakeBluetoothDeviceClient::kLowEnergyPath)); | 613 dbus::ObjectPath(FakeBluetoothDeviceClient::kLowEnergyPath)); |
| 604 ASSERT_EQ(1, observer.gatt_service_added_count_); | 614 ASSERT_EQ(1, observer.gatt_service_added_count_); |
| 605 | 615 |
| 606 BluetoothGattService* service = | 616 BluetoothGattService* service = |
| 607 device->GetGattService(observer.last_gatt_service_id_); | 617 device->GetGattService(observer.last_gatt_service_id_); |
| 608 | 618 |
| 609 TestGattServiceObserver service_observer(adapter_, device, service); | 619 TestGattServiceObserver service_observer(adapter_, device, service); |
| 610 EXPECT_EQ(0, service_observer.gatt_service_changed_count_); | 620 EXPECT_EQ(0, service_observer.gatt_service_changed_count_); |
| 621 EXPECT_EQ(0, service_observer.gatt_discovery_complete_count_); |
| 611 EXPECT_EQ(0, service_observer.gatt_characteristic_added_count_); | 622 EXPECT_EQ(0, service_observer.gatt_characteristic_added_count_); |
| 612 EXPECT_EQ(0, service_observer.gatt_characteristic_removed_count_); | 623 EXPECT_EQ(0, service_observer.gatt_characteristic_removed_count_); |
| 613 EXPECT_EQ(0, service_observer.gatt_characteristic_value_changed_count_); | 624 EXPECT_EQ(0, service_observer.gatt_characteristic_value_changed_count_); |
| 614 EXPECT_TRUE(service->GetCharacteristics().empty()); | 625 EXPECT_TRUE(service->GetCharacteristics().empty()); |
| 615 | 626 |
| 616 // Run the message loop so that the characteristics appear. | 627 // Run the message loop so that the characteristics appear. |
| 617 base::MessageLoop::current()->Run(); | 628 base::MessageLoop::current()->Run(); |
| 618 | 629 |
| 619 // 3 characteristics should appear. Only 1 of the characteristics sends | 630 // 3 characteristics should appear. Only 1 of the characteristics sends |
| 620 // value changed signals. Service changed should be fired once for | 631 // value changed signals. Service changed should be fired once for |
| 621 // descriptor added. | 632 // descriptor added. |
| 622 EXPECT_EQ(4, service_observer.gatt_service_changed_count_); | 633 EXPECT_EQ(0, service_observer.gatt_service_changed_count_); |
| 634 EXPECT_EQ(1, service_observer.gatt_discovery_complete_count_); |
| 623 EXPECT_EQ(3, service_observer.gatt_characteristic_added_count_); | 635 EXPECT_EQ(3, service_observer.gatt_characteristic_added_count_); |
| 624 EXPECT_EQ(0, service_observer.gatt_characteristic_removed_count_); | 636 EXPECT_EQ(0, service_observer.gatt_characteristic_removed_count_); |
| 625 EXPECT_EQ(0, service_observer.gatt_characteristic_value_changed_count_); | 637 EXPECT_EQ(0, service_observer.gatt_characteristic_value_changed_count_); |
| 626 EXPECT_EQ(3U, service->GetCharacteristics().size()); | 638 EXPECT_EQ(3U, service->GetCharacteristics().size()); |
| 627 | 639 |
| 628 // Hide the characteristics. 3 removed signals should be received. | 640 // Hide the characteristics. 3 removed signals should be received. |
| 629 fake_bluetooth_gatt_characteristic_client_->HideHeartRateCharacteristics(); | 641 fake_bluetooth_gatt_characteristic_client_->HideHeartRateCharacteristics(); |
| 630 EXPECT_EQ(8, service_observer.gatt_service_changed_count_); | 642 EXPECT_EQ(0, service_observer.gatt_service_changed_count_); |
| 631 EXPECT_EQ(3, service_observer.gatt_characteristic_added_count_); | 643 EXPECT_EQ(3, service_observer.gatt_characteristic_added_count_); |
| 632 EXPECT_EQ(3, service_observer.gatt_characteristic_removed_count_); | 644 EXPECT_EQ(3, service_observer.gatt_characteristic_removed_count_); |
| 633 EXPECT_EQ(0, service_observer.gatt_characteristic_value_changed_count_); | 645 EXPECT_EQ(0, service_observer.gatt_characteristic_value_changed_count_); |
| 634 EXPECT_TRUE(service->GetCharacteristics().empty()); | 646 EXPECT_TRUE(service->GetCharacteristics().empty()); |
| 635 | 647 |
| 636 // Re-expose the heart rate characteristics. | 648 // Re-expose the heart rate characteristics. We shouldn't get another |
| 649 // GattDiscoveryCompleteForService call, since the service thinks that |
| 650 // discovery is done. On the bluetoothd side, characteristics will be removed |
| 651 // only if the service will also be subsequently removed. |
| 637 fake_bluetooth_gatt_characteristic_client_->ExposeHeartRateCharacteristics( | 652 fake_bluetooth_gatt_characteristic_client_->ExposeHeartRateCharacteristics( |
| 638 fake_bluetooth_gatt_service_client_->GetHeartRateServicePath()); | 653 fake_bluetooth_gatt_service_client_->GetHeartRateServicePath()); |
| 639 EXPECT_EQ(12, service_observer.gatt_service_changed_count_); | 654 EXPECT_EQ(0, service_observer.gatt_service_changed_count_); |
| 655 EXPECT_EQ(1, service_observer.gatt_discovery_complete_count_); |
| 640 EXPECT_EQ(6, service_observer.gatt_characteristic_added_count_); | 656 EXPECT_EQ(6, service_observer.gatt_characteristic_added_count_); |
| 641 EXPECT_EQ(3, service_observer.gatt_characteristic_removed_count_); | 657 EXPECT_EQ(3, service_observer.gatt_characteristic_removed_count_); |
| 642 EXPECT_EQ(0, service_observer.gatt_characteristic_value_changed_count_); | 658 EXPECT_EQ(0, service_observer.gatt_characteristic_value_changed_count_); |
| 643 EXPECT_EQ(3U, service->GetCharacteristics().size()); | 659 EXPECT_EQ(3U, service->GetCharacteristics().size()); |
| 644 | 660 |
| 645 // Hide the service. All characteristics should disappear. | 661 // Hide the service. All characteristics should disappear. |
| 646 fake_bluetooth_gatt_service_client_->HideHeartRateService(); | 662 fake_bluetooth_gatt_service_client_->HideHeartRateService(); |
| 647 EXPECT_EQ(16, service_observer.gatt_service_changed_count_); | 663 EXPECT_EQ(0, service_observer.gatt_service_changed_count_); |
| 648 EXPECT_EQ(6, service_observer.gatt_characteristic_added_count_); | 664 EXPECT_EQ(6, service_observer.gatt_characteristic_added_count_); |
| 649 EXPECT_EQ(6, service_observer.gatt_characteristic_removed_count_); | 665 EXPECT_EQ(6, service_observer.gatt_characteristic_removed_count_); |
| 650 EXPECT_EQ(0, service_observer.gatt_characteristic_value_changed_count_); | 666 EXPECT_EQ(0, service_observer.gatt_characteristic_value_changed_count_); |
| 651 } | 667 } |
| 652 | 668 |
| 653 TEST_F(BluetoothGattChromeOSTest, GattDescriptorAddedAndRemoved) { | 669 TEST_F(BluetoothGattChromeOSTest, GattDescriptorAddedAndRemoved) { |
| 654 fake_bluetooth_device_client_->CreateDevice( | 670 fake_bluetooth_device_client_->CreateDevice( |
| 655 dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath), | 671 dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath), |
| 656 dbus::ObjectPath(FakeBluetoothDeviceClient::kLowEnergyPath)); | 672 dbus::ObjectPath(FakeBluetoothDeviceClient::kLowEnergyPath)); |
| 657 BluetoothDevice* device = adapter_->GetDevice( | 673 BluetoothDevice* device = adapter_->GetDevice( |
| (...skipping 14 matching lines...) Expand all Loading... |
| 672 TestGattServiceObserver service_observer(adapter_, device, service); | 688 TestGattServiceObserver service_observer(adapter_, device, service); |
| 673 EXPECT_EQ(0, service_observer.gatt_service_changed_count_); | 689 EXPECT_EQ(0, service_observer.gatt_service_changed_count_); |
| 674 EXPECT_EQ(0, service_observer.gatt_descriptor_added_count_); | 690 EXPECT_EQ(0, service_observer.gatt_descriptor_added_count_); |
| 675 EXPECT_EQ(0, service_observer.gatt_descriptor_removed_count_); | 691 EXPECT_EQ(0, service_observer.gatt_descriptor_removed_count_); |
| 676 EXPECT_EQ(0, service_observer.gatt_descriptor_value_changed_count_); | 692 EXPECT_EQ(0, service_observer.gatt_descriptor_value_changed_count_); |
| 677 | 693 |
| 678 EXPECT_TRUE(service->GetCharacteristics().empty()); | 694 EXPECT_TRUE(service->GetCharacteristics().empty()); |
| 679 | 695 |
| 680 // Run the message loop so that the characteristics appear. | 696 // Run the message loop so that the characteristics appear. |
| 681 base::MessageLoop::current()->Run(); | 697 base::MessageLoop::current()->Run(); |
| 682 EXPECT_EQ(4, service_observer.gatt_service_changed_count_); | 698 EXPECT_EQ(0, service_observer.gatt_service_changed_count_); |
| 683 | 699 |
| 684 // Only the Heart Rate Measurement characteristic has a descriptor. | 700 // Only the Heart Rate Measurement characteristic has a descriptor. |
| 685 EXPECT_EQ(1, service_observer.gatt_descriptor_added_count_); | 701 EXPECT_EQ(1, service_observer.gatt_descriptor_added_count_); |
| 686 EXPECT_EQ(0, service_observer.gatt_descriptor_removed_count_); | 702 EXPECT_EQ(0, service_observer.gatt_descriptor_removed_count_); |
| 687 EXPECT_EQ(0, service_observer.gatt_descriptor_value_changed_count_); | 703 EXPECT_EQ(0, service_observer.gatt_descriptor_value_changed_count_); |
| 688 | 704 |
| 689 BluetoothGattCharacteristic* characteristic = service->GetCharacteristic( | 705 BluetoothGattCharacteristic* characteristic = service->GetCharacteristic( |
| 690 fake_bluetooth_gatt_characteristic_client_-> | 706 fake_bluetooth_gatt_characteristic_client_-> |
| 691 GetBodySensorLocationPath().value()); | 707 GetBodySensorLocationPath().value()); |
| 692 ASSERT_TRUE(characteristic); | 708 ASSERT_TRUE(characteristic); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 710 descriptor->GetUUID()); | 726 descriptor->GetUUID()); |
| 711 EXPECT_EQ(descriptor->GetUUID(), | 727 EXPECT_EQ(descriptor->GetUUID(), |
| 712 service_observer.last_gatt_descriptor_uuid_); | 728 service_observer.last_gatt_descriptor_uuid_); |
| 713 EXPECT_EQ(descriptor->GetIdentifier(), | 729 EXPECT_EQ(descriptor->GetIdentifier(), |
| 714 service_observer.last_gatt_descriptor_id_); | 730 service_observer.last_gatt_descriptor_id_); |
| 715 | 731 |
| 716 // Hide the descriptor. | 732 // Hide the descriptor. |
| 717 fake_bluetooth_gatt_descriptor_client_->HideDescriptor( | 733 fake_bluetooth_gatt_descriptor_client_->HideDescriptor( |
| 718 dbus::ObjectPath(descriptor->GetIdentifier())); | 734 dbus::ObjectPath(descriptor->GetIdentifier())); |
| 719 EXPECT_TRUE(characteristic->GetDescriptors().empty()); | 735 EXPECT_TRUE(characteristic->GetDescriptors().empty()); |
| 720 EXPECT_EQ(5, service_observer.gatt_service_changed_count_); | 736 EXPECT_EQ(0, service_observer.gatt_service_changed_count_); |
| 721 EXPECT_EQ(1, service_observer.gatt_descriptor_added_count_); | 737 EXPECT_EQ(1, service_observer.gatt_descriptor_added_count_); |
| 722 EXPECT_EQ(1, service_observer.gatt_descriptor_removed_count_); | 738 EXPECT_EQ(1, service_observer.gatt_descriptor_removed_count_); |
| 723 EXPECT_EQ(0, service_observer.gatt_descriptor_value_changed_count_); | 739 EXPECT_EQ(0, service_observer.gatt_descriptor_value_changed_count_); |
| 724 | 740 |
| 725 // Expose the descriptor again. | 741 // Expose the descriptor again. |
| 726 service_observer.last_gatt_descriptor_id_.clear(); | 742 service_observer.last_gatt_descriptor_id_.clear(); |
| 727 service_observer.last_gatt_descriptor_uuid_ = BluetoothUUID(); | 743 service_observer.last_gatt_descriptor_uuid_ = BluetoothUUID(); |
| 728 fake_bluetooth_gatt_descriptor_client_->ExposeDescriptor( | 744 fake_bluetooth_gatt_descriptor_client_->ExposeDescriptor( |
| 729 dbus::ObjectPath(characteristic->GetIdentifier()), | 745 dbus::ObjectPath(characteristic->GetIdentifier()), |
| 730 FakeBluetoothGattDescriptorClient:: | 746 FakeBluetoothGattDescriptorClient:: |
| 731 kClientCharacteristicConfigurationUUID); | 747 kClientCharacteristicConfigurationUUID); |
| 732 EXPECT_EQ(6, service_observer.gatt_service_changed_count_); | 748 EXPECT_EQ(0, service_observer.gatt_service_changed_count_); |
| 733 EXPECT_EQ(1U, characteristic->GetDescriptors().size()); | 749 EXPECT_EQ(1U, characteristic->GetDescriptors().size()); |
| 734 EXPECT_EQ(2, service_observer.gatt_descriptor_added_count_); | 750 EXPECT_EQ(2, service_observer.gatt_descriptor_added_count_); |
| 735 EXPECT_EQ(1, service_observer.gatt_descriptor_removed_count_); | 751 EXPECT_EQ(1, service_observer.gatt_descriptor_removed_count_); |
| 736 EXPECT_EQ(0, service_observer.gatt_descriptor_value_changed_count_); | 752 EXPECT_EQ(0, service_observer.gatt_descriptor_value_changed_count_); |
| 737 | 753 |
| 738 descriptor = characteristic->GetDescriptors()[0]; | 754 descriptor = characteristic->GetDescriptors()[0]; |
| 739 EXPECT_FALSE(descriptor->IsLocal()); | 755 EXPECT_FALSE(descriptor->IsLocal()); |
| 740 EXPECT_EQ(BluetoothGattDescriptor::ClientCharacteristicConfigurationUuid(), | 756 EXPECT_EQ(BluetoothGattDescriptor::ClientCharacteristicConfigurationUuid(), |
| 741 descriptor->GetUUID()); | 757 descriptor->GetUUID()); |
| 742 EXPECT_EQ(descriptor->GetUUID(), service_observer.last_gatt_descriptor_uuid_); | 758 EXPECT_EQ(descriptor->GetUUID(), service_observer.last_gatt_descriptor_uuid_); |
| (...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 994 // characteristics. | 1010 // characteristics. |
| 995 fake_bluetooth_gatt_service_client_->ExposeHeartRateService( | 1011 fake_bluetooth_gatt_service_client_->ExposeHeartRateService( |
| 996 dbus::ObjectPath(FakeBluetoothDeviceClient::kLowEnergyPath)); | 1012 dbus::ObjectPath(FakeBluetoothDeviceClient::kLowEnergyPath)); |
| 997 ASSERT_EQ(1, observer.gatt_service_added_count_); | 1013 ASSERT_EQ(1, observer.gatt_service_added_count_); |
| 998 | 1014 |
| 999 BluetoothGattService* service = | 1015 BluetoothGattService* service = |
| 1000 device->GetGattService(observer.last_gatt_service_id_); | 1016 device->GetGattService(observer.last_gatt_service_id_); |
| 1001 | 1017 |
| 1002 TestGattServiceObserver service_observer(adapter_, device, service); | 1018 TestGattServiceObserver service_observer(adapter_, device, service); |
| 1003 EXPECT_EQ(0, service_observer.gatt_service_changed_count_); | 1019 EXPECT_EQ(0, service_observer.gatt_service_changed_count_); |
| 1020 EXPECT_EQ(0, service_observer.gatt_discovery_complete_count_); |
| 1004 EXPECT_EQ(0, service_observer.gatt_descriptor_value_changed_count_); | 1021 EXPECT_EQ(0, service_observer.gatt_descriptor_value_changed_count_); |
| 1005 EXPECT_TRUE(service->GetCharacteristics().empty()); | 1022 EXPECT_TRUE(service->GetCharacteristics().empty()); |
| 1006 | 1023 |
| 1007 // Run the message loop so that the characteristics appear. | 1024 // Run the message loop so that the characteristics appear. |
| 1008 base::MessageLoop::current()->Run(); | 1025 base::MessageLoop::current()->Run(); |
| 1009 EXPECT_EQ(4, service_observer.gatt_service_changed_count_); | 1026 EXPECT_EQ(0, service_observer.gatt_service_changed_count_); |
| 1027 EXPECT_EQ(1, service_observer.gatt_discovery_complete_count_); |
| 1010 | 1028 |
| 1011 // Only the Heart Rate Measurement characteristic has a descriptor. | 1029 // Only the Heart Rate Measurement characteristic has a descriptor. |
| 1012 BluetoothGattCharacteristic* characteristic = service->GetCharacteristic( | 1030 BluetoothGattCharacteristic* characteristic = service->GetCharacteristic( |
| 1013 fake_bluetooth_gatt_characteristic_client_-> | 1031 fake_bluetooth_gatt_characteristic_client_-> |
| 1014 GetHeartRateMeasurementPath().value()); | 1032 GetHeartRateMeasurementPath().value()); |
| 1015 ASSERT_TRUE(characteristic); | 1033 ASSERT_TRUE(characteristic); |
| 1016 EXPECT_EQ(1U, characteristic->GetDescriptors().size()); | 1034 EXPECT_EQ(1U, characteristic->GetDescriptors().size()); |
| 1017 | 1035 |
| 1018 BluetoothGattDescriptor* descriptor = characteristic->GetDescriptors()[0]; | 1036 BluetoothGattDescriptor* descriptor = characteristic->GetDescriptors()[0]; |
| 1019 EXPECT_FALSE(descriptor->IsLocal()); | 1037 EXPECT_FALSE(descriptor->IsLocal()); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 1036 // successful read. | 1054 // successful read. |
| 1037 descriptor->ReadRemoteDescriptor( | 1055 descriptor->ReadRemoteDescriptor( |
| 1038 base::Bind(&BluetoothGattChromeOSTest::ValueCallback, | 1056 base::Bind(&BluetoothGattChromeOSTest::ValueCallback, |
| 1039 base::Unretained(this)), | 1057 base::Unretained(this)), |
| 1040 base::Bind(&BluetoothGattChromeOSTest::ErrorCallback, | 1058 base::Bind(&BluetoothGattChromeOSTest::ErrorCallback, |
| 1041 base::Unretained(this))); | 1059 base::Unretained(this))); |
| 1042 EXPECT_EQ(1, success_callback_count_); | 1060 EXPECT_EQ(1, success_callback_count_); |
| 1043 EXPECT_EQ(0, error_callback_count_); | 1061 EXPECT_EQ(0, error_callback_count_); |
| 1044 EXPECT_TRUE(ValuesEqual(last_read_value_, descriptor->GetValue())); | 1062 EXPECT_TRUE(ValuesEqual(last_read_value_, descriptor->GetValue())); |
| 1045 EXPECT_TRUE(ValuesEqual(desc_value, descriptor->GetValue())); | 1063 EXPECT_TRUE(ValuesEqual(desc_value, descriptor->GetValue())); |
| 1046 EXPECT_EQ(4, service_observer.gatt_service_changed_count_); | 1064 EXPECT_EQ(0, service_observer.gatt_service_changed_count_); |
| 1047 EXPECT_EQ(1, service_observer.gatt_descriptor_value_changed_count_); | 1065 EXPECT_EQ(1, service_observer.gatt_descriptor_value_changed_count_); |
| 1048 | 1066 |
| 1049 // Write value. Writes to this descriptor will fail. | 1067 // Write value. Writes to this descriptor will fail. |
| 1050 desc_value[0] = 0x03; | 1068 desc_value[0] = 0x03; |
| 1051 descriptor->WriteRemoteDescriptor( | 1069 descriptor->WriteRemoteDescriptor( |
| 1052 desc_value, | 1070 desc_value, |
| 1053 base::Bind(&BluetoothGattChromeOSTest::SuccessCallback, | 1071 base::Bind(&BluetoothGattChromeOSTest::SuccessCallback, |
| 1054 base::Unretained(this)), | 1072 base::Unretained(this)), |
| 1055 base::Bind(&BluetoothGattChromeOSTest::ErrorCallback, | 1073 base::Bind(&BluetoothGattChromeOSTest::ErrorCallback, |
| 1056 base::Unretained(this))); | 1074 base::Unretained(this))); |
| 1057 EXPECT_EQ(1, success_callback_count_); | 1075 EXPECT_EQ(1, success_callback_count_); |
| 1058 EXPECT_EQ(1, error_callback_count_); | 1076 EXPECT_EQ(1, error_callback_count_); |
| 1059 EXPECT_TRUE(ValuesEqual(last_read_value_, descriptor->GetValue())); | 1077 EXPECT_TRUE(ValuesEqual(last_read_value_, descriptor->GetValue())); |
| 1060 EXPECT_FALSE(ValuesEqual(desc_value, descriptor->GetValue())); | 1078 EXPECT_FALSE(ValuesEqual(desc_value, descriptor->GetValue())); |
| 1061 EXPECT_EQ(4, service_observer.gatt_service_changed_count_); | 1079 EXPECT_EQ(0, service_observer.gatt_service_changed_count_); |
| 1062 EXPECT_EQ(1, service_observer.gatt_descriptor_value_changed_count_); | 1080 EXPECT_EQ(1, service_observer.gatt_descriptor_value_changed_count_); |
| 1063 | 1081 |
| 1064 // Read new value. | 1082 // Read new value. |
| 1065 descriptor->ReadRemoteDescriptor( | 1083 descriptor->ReadRemoteDescriptor( |
| 1066 base::Bind(&BluetoothGattChromeOSTest::ValueCallback, | 1084 base::Bind(&BluetoothGattChromeOSTest::ValueCallback, |
| 1067 base::Unretained(this)), | 1085 base::Unretained(this)), |
| 1068 base::Bind(&BluetoothGattChromeOSTest::ErrorCallback, | 1086 base::Bind(&BluetoothGattChromeOSTest::ErrorCallback, |
| 1069 base::Unretained(this))); | 1087 base::Unretained(this))); |
| 1070 EXPECT_EQ(2, success_callback_count_); | 1088 EXPECT_EQ(2, success_callback_count_); |
| 1071 EXPECT_EQ(1, error_callback_count_); | 1089 EXPECT_EQ(1, error_callback_count_); |
| 1072 EXPECT_TRUE(ValuesEqual(last_read_value_, descriptor->GetValue())); | 1090 EXPECT_TRUE(ValuesEqual(last_read_value_, descriptor->GetValue())); |
| 1073 EXPECT_FALSE(ValuesEqual(desc_value, descriptor->GetValue())); | 1091 EXPECT_FALSE(ValuesEqual(desc_value, descriptor->GetValue())); |
| 1074 EXPECT_EQ(4, service_observer.gatt_service_changed_count_); | 1092 EXPECT_EQ(0, service_observer.gatt_service_changed_count_); |
| 1075 EXPECT_EQ(2, service_observer.gatt_descriptor_value_changed_count_); | 1093 EXPECT_EQ(2, service_observer.gatt_descriptor_value_changed_count_); |
| 1076 } | 1094 } |
| 1077 | 1095 |
| 1078 TEST_F(BluetoothGattChromeOSTest, NotifySessions) { | 1096 TEST_F(BluetoothGattChromeOSTest, NotifySessions) { |
| 1079 fake_bluetooth_device_client_->CreateDevice( | 1097 fake_bluetooth_device_client_->CreateDevice( |
| 1080 dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath), | 1098 dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath), |
| 1081 dbus::ObjectPath(FakeBluetoothDeviceClient::kLowEnergyPath)); | 1099 dbus::ObjectPath(FakeBluetoothDeviceClient::kLowEnergyPath)); |
| 1082 BluetoothDevice* device = | 1100 BluetoothDevice* device = |
| 1083 adapter_->GetDevice(FakeBluetoothDeviceClient::kLowEnergyAddress); | 1101 adapter_->GetDevice(FakeBluetoothDeviceClient::kLowEnergyAddress); |
| 1084 ASSERT_TRUE(device); | 1102 ASSERT_TRUE(device); |
| (...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1337 | 1355 |
| 1338 EXPECT_EQ(1, success_callback_count_); | 1356 EXPECT_EQ(1, success_callback_count_); |
| 1339 EXPECT_EQ(0, error_callback_count_); | 1357 EXPECT_EQ(0, error_callback_count_); |
| 1340 EXPECT_EQ(1, service_observer.gatt_characteristic_value_changed_count_); | 1358 EXPECT_EQ(1, service_observer.gatt_characteristic_value_changed_count_); |
| 1341 EXPECT_TRUE(characteristic->IsNotifying()); | 1359 EXPECT_TRUE(characteristic->IsNotifying()); |
| 1342 EXPECT_EQ(1U, update_sessions_.size()); | 1360 EXPECT_EQ(1U, update_sessions_.size()); |
| 1343 EXPECT_TRUE(update_sessions_[0]->IsActive()); | 1361 EXPECT_TRUE(update_sessions_[0]->IsActive()); |
| 1344 } | 1362 } |
| 1345 | 1363 |
| 1346 } // namespace chromeos | 1364 } // namespace chromeos |
| OLD | NEW |