| Index: device/bluetooth/bluetooth_gatt_chromeos_unittest.cc
|
| diff --git a/device/bluetooth/bluetooth_gatt_chromeos_unittest.cc b/device/bluetooth/bluetooth_gatt_chromeos_unittest.cc
|
| index 673ed5f35fb01974d7edf4acbb0dbb03ecb0fccc..a585f819799a78255a5b281678bc843a616dc696 100644
|
| --- a/device/bluetooth/bluetooth_gatt_chromeos_unittest.cc
|
| +++ b/device/bluetooth/bluetooth_gatt_chromeos_unittest.cc
|
| @@ -134,6 +134,7 @@ class TestGattServiceObserver : public BluetoothGattService::Observer {
|
| BluetoothDevice* device,
|
| BluetoothGattService* service)
|
| : gatt_service_changed_count_(0),
|
| + gatt_discovery_complete_count_(0),
|
| gatt_characteristic_added_count_(0),
|
| gatt_characteristic_removed_count_(0),
|
| gatt_characteristic_value_changed_count_(0),
|
| @@ -160,6 +161,14 @@ class TestGattServiceObserver : public BluetoothGattService::Observer {
|
| }
|
|
|
| // BluetoothGattService::Observer overrides.
|
| + virtual void GattDiscoveryCompleteForService(
|
| + BluetoothGattService* service) OVERRIDE {
|
| + ASSERT_EQ(gatt_service_id_, service->GetIdentifier());
|
| + ++gatt_discovery_complete_count_;
|
| +
|
| + QuitMessageLoop();
|
| + }
|
| +
|
| virtual void GattServiceChanged(BluetoothGattService* service) OVERRIDE {
|
| ASSERT_EQ(gatt_service_id_, service->GetIdentifier());
|
| ++gatt_service_changed_count_;
|
| @@ -268,6 +277,7 @@ class TestGattServiceObserver : public BluetoothGattService::Observer {
|
| }
|
|
|
| int gatt_service_changed_count_;
|
| + int gatt_discovery_complete_count_;
|
| int gatt_characteristic_added_count_;
|
| int gatt_characteristic_removed_count_;
|
| int gatt_characteristic_value_changed_count_;
|
| @@ -608,6 +618,7 @@ TEST_F(BluetoothGattChromeOSTest, GattCharacteristicAddedAndRemoved) {
|
|
|
| TestGattServiceObserver service_observer(adapter_, device, service);
|
| EXPECT_EQ(0, service_observer.gatt_service_changed_count_);
|
| + EXPECT_EQ(0, service_observer.gatt_discovery_complete_count_);
|
| EXPECT_EQ(0, service_observer.gatt_characteristic_added_count_);
|
| EXPECT_EQ(0, service_observer.gatt_characteristic_removed_count_);
|
| EXPECT_EQ(0, service_observer.gatt_characteristic_value_changed_count_);
|
| @@ -619,7 +630,8 @@ TEST_F(BluetoothGattChromeOSTest, GattCharacteristicAddedAndRemoved) {
|
| // 3 characteristics should appear. Only 1 of the characteristics sends
|
| // value changed signals. Service changed should be fired once for
|
| // descriptor added.
|
| - EXPECT_EQ(4, service_observer.gatt_service_changed_count_);
|
| + EXPECT_EQ(0, service_observer.gatt_service_changed_count_);
|
| + EXPECT_EQ(1, service_observer.gatt_discovery_complete_count_);
|
| EXPECT_EQ(3, service_observer.gatt_characteristic_added_count_);
|
| EXPECT_EQ(0, service_observer.gatt_characteristic_removed_count_);
|
| EXPECT_EQ(0, service_observer.gatt_characteristic_value_changed_count_);
|
| @@ -627,16 +639,20 @@ TEST_F(BluetoothGattChromeOSTest, GattCharacteristicAddedAndRemoved) {
|
|
|
| // Hide the characteristics. 3 removed signals should be received.
|
| fake_bluetooth_gatt_characteristic_client_->HideHeartRateCharacteristics();
|
| - EXPECT_EQ(8, service_observer.gatt_service_changed_count_);
|
| + EXPECT_EQ(0, service_observer.gatt_service_changed_count_);
|
| EXPECT_EQ(3, service_observer.gatt_characteristic_added_count_);
|
| EXPECT_EQ(3, service_observer.gatt_characteristic_removed_count_);
|
| EXPECT_EQ(0, service_observer.gatt_characteristic_value_changed_count_);
|
| EXPECT_TRUE(service->GetCharacteristics().empty());
|
|
|
| - // Re-expose the heart rate characteristics.
|
| + // Re-expose the heart rate characteristics. We shouldn't get another
|
| + // GattDiscoveryCompleteForService call, since the service thinks that
|
| + // discovery is done. On the bluetoothd side, characteristics will be removed
|
| + // only if the service will also be subsequently removed.
|
| fake_bluetooth_gatt_characteristic_client_->ExposeHeartRateCharacteristics(
|
| fake_bluetooth_gatt_service_client_->GetHeartRateServicePath());
|
| - EXPECT_EQ(12, service_observer.gatt_service_changed_count_);
|
| + EXPECT_EQ(0, service_observer.gatt_service_changed_count_);
|
| + EXPECT_EQ(1, service_observer.gatt_discovery_complete_count_);
|
| EXPECT_EQ(6, service_observer.gatt_characteristic_added_count_);
|
| EXPECT_EQ(3, service_observer.gatt_characteristic_removed_count_);
|
| EXPECT_EQ(0, service_observer.gatt_characteristic_value_changed_count_);
|
| @@ -644,7 +660,7 @@ TEST_F(BluetoothGattChromeOSTest, GattCharacteristicAddedAndRemoved) {
|
|
|
| // Hide the service. All characteristics should disappear.
|
| fake_bluetooth_gatt_service_client_->HideHeartRateService();
|
| - EXPECT_EQ(16, service_observer.gatt_service_changed_count_);
|
| + EXPECT_EQ(0, service_observer.gatt_service_changed_count_);
|
| EXPECT_EQ(6, service_observer.gatt_characteristic_added_count_);
|
| EXPECT_EQ(6, service_observer.gatt_characteristic_removed_count_);
|
| EXPECT_EQ(0, service_observer.gatt_characteristic_value_changed_count_);
|
| @@ -679,7 +695,7 @@ TEST_F(BluetoothGattChromeOSTest, GattDescriptorAddedAndRemoved) {
|
|
|
| // Run the message loop so that the characteristics appear.
|
| base::MessageLoop::current()->Run();
|
| - EXPECT_EQ(4, service_observer.gatt_service_changed_count_);
|
| + EXPECT_EQ(0, service_observer.gatt_service_changed_count_);
|
|
|
| // Only the Heart Rate Measurement characteristic has a descriptor.
|
| EXPECT_EQ(1, service_observer.gatt_descriptor_added_count_);
|
| @@ -717,7 +733,7 @@ TEST_F(BluetoothGattChromeOSTest, GattDescriptorAddedAndRemoved) {
|
| fake_bluetooth_gatt_descriptor_client_->HideDescriptor(
|
| dbus::ObjectPath(descriptor->GetIdentifier()));
|
| EXPECT_TRUE(characteristic->GetDescriptors().empty());
|
| - EXPECT_EQ(5, service_observer.gatt_service_changed_count_);
|
| + EXPECT_EQ(0, service_observer.gatt_service_changed_count_);
|
| EXPECT_EQ(1, service_observer.gatt_descriptor_added_count_);
|
| EXPECT_EQ(1, service_observer.gatt_descriptor_removed_count_);
|
| EXPECT_EQ(0, service_observer.gatt_descriptor_value_changed_count_);
|
| @@ -729,7 +745,7 @@ TEST_F(BluetoothGattChromeOSTest, GattDescriptorAddedAndRemoved) {
|
| dbus::ObjectPath(characteristic->GetIdentifier()),
|
| FakeBluetoothGattDescriptorClient::
|
| kClientCharacteristicConfigurationUUID);
|
| - EXPECT_EQ(6, service_observer.gatt_service_changed_count_);
|
| + EXPECT_EQ(0, service_observer.gatt_service_changed_count_);
|
| EXPECT_EQ(1U, characteristic->GetDescriptors().size());
|
| EXPECT_EQ(2, service_observer.gatt_descriptor_added_count_);
|
| EXPECT_EQ(1, service_observer.gatt_descriptor_removed_count_);
|
| @@ -1001,12 +1017,14 @@ TEST_F(BluetoothGattChromeOSTest, GattDescriptorValue) {
|
|
|
| TestGattServiceObserver service_observer(adapter_, device, service);
|
| EXPECT_EQ(0, service_observer.gatt_service_changed_count_);
|
| + EXPECT_EQ(0, service_observer.gatt_discovery_complete_count_);
|
| EXPECT_EQ(0, service_observer.gatt_descriptor_value_changed_count_);
|
| EXPECT_TRUE(service->GetCharacteristics().empty());
|
|
|
| // Run the message loop so that the characteristics appear.
|
| base::MessageLoop::current()->Run();
|
| - EXPECT_EQ(4, service_observer.gatt_service_changed_count_);
|
| + EXPECT_EQ(0, service_observer.gatt_service_changed_count_);
|
| + EXPECT_EQ(1, service_observer.gatt_discovery_complete_count_);
|
|
|
| // Only the Heart Rate Measurement characteristic has a descriptor.
|
| BluetoothGattCharacteristic* characteristic = service->GetCharacteristic(
|
| @@ -1043,7 +1061,7 @@ TEST_F(BluetoothGattChromeOSTest, GattDescriptorValue) {
|
| EXPECT_EQ(0, error_callback_count_);
|
| EXPECT_TRUE(ValuesEqual(last_read_value_, descriptor->GetValue()));
|
| EXPECT_TRUE(ValuesEqual(desc_value, descriptor->GetValue()));
|
| - EXPECT_EQ(4, service_observer.gatt_service_changed_count_);
|
| + EXPECT_EQ(0, service_observer.gatt_service_changed_count_);
|
| EXPECT_EQ(1, service_observer.gatt_descriptor_value_changed_count_);
|
|
|
| // Write value. Writes to this descriptor will fail.
|
| @@ -1058,7 +1076,7 @@ TEST_F(BluetoothGattChromeOSTest, GattDescriptorValue) {
|
| EXPECT_EQ(1, error_callback_count_);
|
| EXPECT_TRUE(ValuesEqual(last_read_value_, descriptor->GetValue()));
|
| EXPECT_FALSE(ValuesEqual(desc_value, descriptor->GetValue()));
|
| - EXPECT_EQ(4, service_observer.gatt_service_changed_count_);
|
| + EXPECT_EQ(0, service_observer.gatt_service_changed_count_);
|
| EXPECT_EQ(1, service_observer.gatt_descriptor_value_changed_count_);
|
|
|
| // Read new value.
|
| @@ -1071,7 +1089,7 @@ TEST_F(BluetoothGattChromeOSTest, GattDescriptorValue) {
|
| EXPECT_EQ(1, error_callback_count_);
|
| EXPECT_TRUE(ValuesEqual(last_read_value_, descriptor->GetValue()));
|
| EXPECT_FALSE(ValuesEqual(desc_value, descriptor->GetValue()));
|
| - EXPECT_EQ(4, service_observer.gatt_service_changed_count_);
|
| + EXPECT_EQ(0, service_observer.gatt_service_changed_count_);
|
| EXPECT_EQ(2, service_observer.gatt_descriptor_value_changed_count_);
|
| }
|
|
|
|
|