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 |