Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(453)

Side by Side Diff: device/bluetooth/bluetooth_remote_gatt_descriptor_unittest.cc

Issue 1898643002: Refactor device::BluetoothGattXXX classes to split into remote/local. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 "base/run_loop.h" 5 #include "base/run_loop.h"
6 #include "device/bluetooth/bluetooth_gatt_characteristic.h" 6 #include "device/bluetooth/bluetooth_remote_gatt_characteristic.h"
7 #include "device/bluetooth/bluetooth_gatt_service.h" 7 #include "device/bluetooth/bluetooth_remote_gatt_service.h"
8 #include "testing/gtest/include/gtest/gtest.h" 8 #include "testing/gtest/include/gtest/gtest.h"
9 9
10 #if defined(OS_ANDROID) 10 #if defined(OS_ANDROID)
11 #include "device/bluetooth/test/bluetooth_test_android.h" 11 #include "device/bluetooth/test/bluetooth_test_android.h"
12 #elif defined(OS_MACOSX) 12 #elif defined(OS_MACOSX)
13 #include "device/bluetooth/test/bluetooth_test_mac.h" 13 #include "device/bluetooth/test/bluetooth_test_mac.h"
14 #endif 14 #endif
15 15
16 namespace device { 16 namespace device {
17 17
18 #if defined(OS_ANDROID) || defined(OS_MACOSX) 18 #if defined(OS_ANDROID) || defined(OS_MACOSX)
19 class BluetoothGattDescriptorTest : public BluetoothTest { 19 class BluetoothRemoteGattDescriptorTest : public BluetoothTest {
20 public: 20 public:
21 // Creates adapter_, device_, service_, characteristic_, 21 // Creates adapter_, device_, service_, characteristic_,
22 // descriptor1_, & descriptor2_. 22 // descriptor1_, & descriptor2_.
23 void FakeDescriptorBoilerplate() { 23 void FakeDescriptorBoilerplate() {
24 InitWithFakeAdapter(); 24 InitWithFakeAdapter();
25 StartLowEnergyDiscoverySession(); 25 StartLowEnergyDiscoverySession();
26 device_ = DiscoverLowEnergyDevice(3); 26 device_ = DiscoverLowEnergyDevice(3);
27 device_->CreateGattConnection(GetGattConnectionCallback(Call::EXPECTED), 27 device_->CreateGattConnection(GetGattConnectionCallback(Call::EXPECTED),
28 GetConnectErrorCallback(Call::NOT_EXPECTED)); 28 GetConnectErrorCallback(Call::NOT_EXPECTED));
29 SimulateGattConnection(device_); 29 SimulateGattConnection(device_);
(...skipping 10 matching lines...) Expand all
40 "00000001-0000-1000-8000-00805f9b34fb"); 40 "00000001-0000-1000-8000-00805f9b34fb");
41 SimulateGattDescriptor(characteristic_, 41 SimulateGattDescriptor(characteristic_,
42 "00000002-0000-1000-8000-00805f9b34fb"); 42 "00000002-0000-1000-8000-00805f9b34fb");
43 ASSERT_EQ(2u, characteristic_->GetDescriptors().size()); 43 ASSERT_EQ(2u, characteristic_->GetDescriptors().size());
44 descriptor1_ = characteristic_->GetDescriptors()[0]; 44 descriptor1_ = characteristic_->GetDescriptors()[0];
45 descriptor2_ = characteristic_->GetDescriptors()[1]; 45 descriptor2_ = characteristic_->GetDescriptors()[1];
46 ResetEventCounts(); 46 ResetEventCounts();
47 } 47 }
48 48
49 BluetoothDevice* device_ = nullptr; 49 BluetoothDevice* device_ = nullptr;
50 BluetoothGattService* service_ = nullptr; 50 BluetoothRemoteGattService* service_ = nullptr;
51 BluetoothGattCharacteristic* characteristic_ = nullptr; 51 BluetoothRemoteGattCharacteristic* characteristic_ = nullptr;
52 BluetoothGattDescriptor* descriptor1_ = nullptr; 52 BluetoothRemoteGattDescriptor* descriptor1_ = nullptr;
53 BluetoothGattDescriptor* descriptor2_ = nullptr; 53 BluetoothRemoteGattDescriptor* descriptor2_ = nullptr;
54 }; 54 };
55 #endif 55 #endif
56 56
57 #if defined(OS_ANDROID) 57 #if defined(OS_ANDROID)
58 TEST_F(BluetoothGattDescriptorTest, GetIdentifier) { 58 TEST_F(BluetoothRemoteGattDescriptorTest, GetIdentifier) {
59 InitWithFakeAdapter(); 59 InitWithFakeAdapter();
60 StartLowEnergyDiscoverySession(); 60 StartLowEnergyDiscoverySession();
61 // 2 devices to verify that descriptors on them have distinct IDs. 61 // 2 devices to verify that descriptors on them have distinct IDs.
62 BluetoothDevice* device1 = DiscoverLowEnergyDevice(3); 62 BluetoothDevice* device1 = DiscoverLowEnergyDevice(3);
63 BluetoothDevice* device2 = DiscoverLowEnergyDevice(4); 63 BluetoothDevice* device2 = DiscoverLowEnergyDevice(4);
64 device1->CreateGattConnection(GetGattConnectionCallback(Call::EXPECTED), 64 device1->CreateGattConnection(GetGattConnectionCallback(Call::EXPECTED),
65 GetConnectErrorCallback(Call::NOT_EXPECTED)); 65 GetConnectErrorCallback(Call::NOT_EXPECTED));
66 device2->CreateGattConnection(GetGattConnectionCallback(Call::EXPECTED), 66 device2->CreateGattConnection(GetGattConnectionCallback(Call::EXPECTED),
67 GetConnectErrorCallback(Call::NOT_EXPECTED)); 67 GetConnectErrorCallback(Call::NOT_EXPECTED));
68 SimulateGattConnection(device1); 68 SimulateGattConnection(device1);
69 SimulateGattConnection(device2); 69 SimulateGattConnection(device2);
70 70
71 // 3 services (all with same UUID). 71 // 3 services (all with same UUID).
72 // 1 on the first device (to test characteristic instances across devices). 72 // 1 on the first device (to test characteristic instances across devices).
73 // 2 on the second device (to test same device, multiple service instances). 73 // 2 on the second device (to test same device, multiple service instances).
74 std::vector<std::string> services; 74 std::vector<std::string> services;
75 std::string uuid = "00000000-0000-1000-8000-00805f9b34fb"; 75 std::string uuid = "00000000-0000-1000-8000-00805f9b34fb";
76 services.push_back(uuid); 76 services.push_back(uuid);
77 SimulateGattServicesDiscovered(device1, services); 77 SimulateGattServicesDiscovered(device1, services);
78 services.push_back(uuid); 78 services.push_back(uuid);
79 SimulateGattServicesDiscovered(device2, services); 79 SimulateGattServicesDiscovered(device2, services);
80 BluetoothGattService* service1 = device1->GetGattServices()[0]; 80 BluetoothRemoteGattService* service1 = device1->GetGattServices()[0];
81 BluetoothGattService* service2 = device2->GetGattServices()[0]; 81 BluetoothRemoteGattService* service2 = device2->GetGattServices()[0];
82 BluetoothGattService* service3 = device2->GetGattServices()[1]; 82 BluetoothRemoteGattService* service3 = device2->GetGattServices()[1];
83 // 6 characteristics (same UUID), 2 on each service. 83 // 6 characteristics (same UUID), 2 on each service.
84 SimulateGattCharacteristic(service1, uuid, /* properties */ 0); 84 SimulateGattCharacteristic(service1, uuid, /* properties */ 0);
85 SimulateGattCharacteristic(service1, uuid, /* properties */ 0); 85 SimulateGattCharacteristic(service1, uuid, /* properties */ 0);
86 SimulateGattCharacteristic(service2, uuid, /* properties */ 0); 86 SimulateGattCharacteristic(service2, uuid, /* properties */ 0);
87 SimulateGattCharacteristic(service2, uuid, /* properties */ 0); 87 SimulateGattCharacteristic(service2, uuid, /* properties */ 0);
88 SimulateGattCharacteristic(service3, uuid, /* properties */ 0); 88 SimulateGattCharacteristic(service3, uuid, /* properties */ 0);
89 SimulateGattCharacteristic(service3, uuid, /* properties */ 0); 89 SimulateGattCharacteristic(service3, uuid, /* properties */ 0);
90 BluetoothGattCharacteristic* char1 = service1->GetCharacteristics()[0]; 90 BluetoothRemoteGattCharacteristic* char1 = service1->GetCharacteristics()[0];
91 BluetoothGattCharacteristic* char2 = service1->GetCharacteristics()[1]; 91 BluetoothRemoteGattCharacteristic* char2 = service1->GetCharacteristics()[1];
92 BluetoothGattCharacteristic* char3 = service2->GetCharacteristics()[0]; 92 BluetoothRemoteGattCharacteristic* char3 = service2->GetCharacteristics()[0];
93 BluetoothGattCharacteristic* char4 = service2->GetCharacteristics()[1]; 93 BluetoothRemoteGattCharacteristic* char4 = service2->GetCharacteristics()[1];
94 BluetoothGattCharacteristic* char5 = service3->GetCharacteristics()[0]; 94 BluetoothRemoteGattCharacteristic* char5 = service3->GetCharacteristics()[0];
95 BluetoothGattCharacteristic* char6 = service3->GetCharacteristics()[1]; 95 BluetoothRemoteGattCharacteristic* char6 = service3->GetCharacteristics()[1];
96 // 6 descriptors (same UUID), 1 on each characteristic 96 // 6 descriptors (same UUID), 1 on each characteristic
97 // TODO(576900) Test multiple descriptors with same UUID on one 97 // TODO(576900) Test multiple descriptors with same UUID on one
98 // characteristic. 98 // characteristic.
99 SimulateGattDescriptor(char1, uuid); 99 SimulateGattDescriptor(char1, uuid);
100 SimulateGattDescriptor(char2, uuid); 100 SimulateGattDescriptor(char2, uuid);
101 SimulateGattDescriptor(char3, uuid); 101 SimulateGattDescriptor(char3, uuid);
102 SimulateGattDescriptor(char4, uuid); 102 SimulateGattDescriptor(char4, uuid);
103 SimulateGattDescriptor(char5, uuid); 103 SimulateGattDescriptor(char5, uuid);
104 SimulateGattDescriptor(char6, uuid); 104 SimulateGattDescriptor(char6, uuid);
105 BluetoothGattDescriptor* desc1 = char1->GetDescriptors()[0]; 105 BluetoothRemoteGattDescriptor* desc1 = char1->GetDescriptors()[0];
106 BluetoothGattDescriptor* desc2 = char2->GetDescriptors()[0]; 106 BluetoothRemoteGattDescriptor* desc2 = char2->GetDescriptors()[0];
107 BluetoothGattDescriptor* desc3 = char3->GetDescriptors()[0]; 107 BluetoothRemoteGattDescriptor* desc3 = char3->GetDescriptors()[0];
108 BluetoothGattDescriptor* desc4 = char4->GetDescriptors()[0]; 108 BluetoothRemoteGattDescriptor* desc4 = char4->GetDescriptors()[0];
109 BluetoothGattDescriptor* desc5 = char5->GetDescriptors()[0]; 109 BluetoothRemoteGattDescriptor* desc5 = char5->GetDescriptors()[0];
110 BluetoothGattDescriptor* desc6 = char6->GetDescriptors()[0]; 110 BluetoothRemoteGattDescriptor* desc6 = char6->GetDescriptors()[0];
111 111
112 // All IDs are unique. 112 // All IDs are unique.
113 EXPECT_NE(desc1->GetIdentifier(), desc2->GetIdentifier()); 113 EXPECT_NE(desc1->GetIdentifier(), desc2->GetIdentifier());
114 EXPECT_NE(desc1->GetIdentifier(), desc3->GetIdentifier()); 114 EXPECT_NE(desc1->GetIdentifier(), desc3->GetIdentifier());
115 EXPECT_NE(desc1->GetIdentifier(), desc4->GetIdentifier()); 115 EXPECT_NE(desc1->GetIdentifier(), desc4->GetIdentifier());
116 EXPECT_NE(desc1->GetIdentifier(), desc5->GetIdentifier()); 116 EXPECT_NE(desc1->GetIdentifier(), desc5->GetIdentifier());
117 EXPECT_NE(desc1->GetIdentifier(), desc6->GetIdentifier()); 117 EXPECT_NE(desc1->GetIdentifier(), desc6->GetIdentifier());
118 118
119 EXPECT_NE(desc2->GetIdentifier(), desc3->GetIdentifier()); 119 EXPECT_NE(desc2->GetIdentifier(), desc3->GetIdentifier());
120 EXPECT_NE(desc2->GetIdentifier(), desc4->GetIdentifier()); 120 EXPECT_NE(desc2->GetIdentifier(), desc4->GetIdentifier());
121 EXPECT_NE(desc2->GetIdentifier(), desc5->GetIdentifier()); 121 EXPECT_NE(desc2->GetIdentifier(), desc5->GetIdentifier());
122 EXPECT_NE(desc2->GetIdentifier(), desc6->GetIdentifier()); 122 EXPECT_NE(desc2->GetIdentifier(), desc6->GetIdentifier());
123 123
124 EXPECT_NE(desc3->GetIdentifier(), desc4->GetIdentifier()); 124 EXPECT_NE(desc3->GetIdentifier(), desc4->GetIdentifier());
125 EXPECT_NE(desc3->GetIdentifier(), desc5->GetIdentifier()); 125 EXPECT_NE(desc3->GetIdentifier(), desc5->GetIdentifier());
126 EXPECT_NE(desc3->GetIdentifier(), desc6->GetIdentifier()); 126 EXPECT_NE(desc3->GetIdentifier(), desc6->GetIdentifier());
127 127
128 EXPECT_NE(desc4->GetIdentifier(), desc5->GetIdentifier()); 128 EXPECT_NE(desc4->GetIdentifier(), desc5->GetIdentifier());
129 EXPECT_NE(desc4->GetIdentifier(), desc6->GetIdentifier()); 129 EXPECT_NE(desc4->GetIdentifier(), desc6->GetIdentifier());
130 130
131 EXPECT_NE(desc5->GetIdentifier(), desc6->GetIdentifier()); 131 EXPECT_NE(desc5->GetIdentifier(), desc6->GetIdentifier());
132 } 132 }
133 #endif // defined(OS_ANDROID) 133 #endif // defined(OS_ANDROID)
134 134
135 #if defined(OS_ANDROID) 135 #if defined(OS_ANDROID)
136 TEST_F(BluetoothGattDescriptorTest, GetUUID) { 136 TEST_F(BluetoothRemoteGattDescriptorTest, GetUUID) {
137 InitWithFakeAdapter(); 137 InitWithFakeAdapter();
138 StartLowEnergyDiscoverySession(); 138 StartLowEnergyDiscoverySession();
139 BluetoothDevice* device = DiscoverLowEnergyDevice(3); 139 BluetoothDevice* device = DiscoverLowEnergyDevice(3);
140 device->CreateGattConnection(GetGattConnectionCallback(Call::EXPECTED), 140 device->CreateGattConnection(GetGattConnectionCallback(Call::EXPECTED),
141 GetConnectErrorCallback(Call::NOT_EXPECTED)); 141 GetConnectErrorCallback(Call::NOT_EXPECTED));
142 SimulateGattConnection(device); 142 SimulateGattConnection(device);
143 std::vector<std::string> services; 143 std::vector<std::string> services;
144 services.push_back("00000000-0000-1000-8000-00805f9b34fb"); 144 services.push_back("00000000-0000-1000-8000-00805f9b34fb");
145 SimulateGattServicesDiscovered(device, services); 145 SimulateGattServicesDiscovered(device, services);
146 ASSERT_EQ(1u, device->GetGattServices().size()); 146 ASSERT_EQ(1u, device->GetGattServices().size());
147 BluetoothGattService* service = device->GetGattServices()[0]; 147 BluetoothRemoteGattService* service = device->GetGattServices()[0];
148 148
149 SimulateGattCharacteristic(service, "00000000-0000-1000-8000-00805f9b34fb", 149 SimulateGattCharacteristic(service, "00000000-0000-1000-8000-00805f9b34fb",
150 /* properties */ 0); 150 /* properties */ 0);
151 ASSERT_EQ(1u, service->GetCharacteristics().size()); 151 ASSERT_EQ(1u, service->GetCharacteristics().size());
152 BluetoothGattCharacteristic* characteristic = 152 BluetoothRemoteGattCharacteristic* characteristic =
153 service->GetCharacteristics()[0]; 153 service->GetCharacteristics()[0];
154 154
155 // Create 2 descriptors. 155 // Create 2 descriptors.
156 std::string uuid_str1("11111111-0000-1000-8000-00805f9b34fb"); 156 std::string uuid_str1("11111111-0000-1000-8000-00805f9b34fb");
157 std::string uuid_str2("22222222-0000-1000-8000-00805f9b34fb"); 157 std::string uuid_str2("22222222-0000-1000-8000-00805f9b34fb");
158 BluetoothUUID uuid1(uuid_str1); 158 BluetoothUUID uuid1(uuid_str1);
159 BluetoothUUID uuid2(uuid_str2); 159 BluetoothUUID uuid2(uuid_str2);
160 SimulateGattDescriptor(characteristic, uuid_str1); 160 SimulateGattDescriptor(characteristic, uuid_str1);
161 SimulateGattDescriptor(characteristic, uuid_str2); 161 SimulateGattDescriptor(characteristic, uuid_str2);
162 ASSERT_EQ(2u, characteristic->GetDescriptors().size()); 162 ASSERT_EQ(2u, characteristic->GetDescriptors().size());
163 BluetoothGattDescriptor* descriptor1 = characteristic->GetDescriptors()[0]; 163 BluetoothRemoteGattDescriptor* descriptor1 =
164 BluetoothGattDescriptor* descriptor2 = characteristic->GetDescriptors()[1]; 164 characteristic->GetDescriptors()[0];
165 BluetoothRemoteGattDescriptor* descriptor2 =
166 characteristic->GetDescriptors()[1];
165 167
166 // Swap as needed to have descriptor1 be the one with uuid1. 168 // Swap as needed to have descriptor1 be the one with uuid1.
167 if (descriptor2->GetUUID() == uuid1) 169 if (descriptor2->GetUUID() == uuid1)
168 std::swap(descriptor1, descriptor2); 170 std::swap(descriptor1, descriptor2);
169 171
170 EXPECT_EQ(uuid1, descriptor1->GetUUID()); 172 EXPECT_EQ(uuid1, descriptor1->GetUUID());
171 EXPECT_EQ(uuid2, descriptor2->GetUUID()); 173 EXPECT_EQ(uuid2, descriptor2->GetUUID());
172 } 174 }
173 #endif // defined(OS_ANDROID) 175 #endif // defined(OS_ANDROID)
174 176
175 #if defined(OS_ANDROID) 177 #if defined(OS_ANDROID)
176 // Tests ReadRemoteDescriptor and GetValue with empty value buffer. 178 // Tests ReadRemoteDescriptor and GetValue with empty value buffer.
177 TEST_F(BluetoothGattDescriptorTest, ReadRemoteDescriptor_Empty) { 179 TEST_F(BluetoothRemoteGattDescriptorTest, ReadRemoteDescriptor_Empty) {
178 ASSERT_NO_FATAL_FAILURE(FakeDescriptorBoilerplate()); 180 ASSERT_NO_FATAL_FAILURE(FakeDescriptorBoilerplate());
179 181
180 descriptor1_->ReadRemoteDescriptor(GetReadValueCallback(Call::EXPECTED), 182 descriptor1_->ReadRemoteDescriptor(GetReadValueCallback(Call::EXPECTED),
181 GetGattErrorCallback(Call::NOT_EXPECTED)); 183 GetGattErrorCallback(Call::NOT_EXPECTED));
182 EXPECT_EQ(1, gatt_read_descriptor_attempts_); 184 EXPECT_EQ(1, gatt_read_descriptor_attempts_);
183 std::vector<uint8_t> empty_vector; 185 std::vector<uint8_t> empty_vector;
184 SimulateGattDescriptorRead(descriptor1_, empty_vector); 186 SimulateGattDescriptorRead(descriptor1_, empty_vector);
185 187
186 // Duplicate read reported from OS shouldn't cause a problem: 188 // Duplicate read reported from OS shouldn't cause a problem:
187 SimulateGattDescriptorRead(descriptor1_, empty_vector); 189 SimulateGattDescriptorRead(descriptor1_, empty_vector);
188 190
189 EXPECT_EQ(empty_vector, last_read_value_); 191 EXPECT_EQ(empty_vector, last_read_value_);
190 EXPECT_EQ(empty_vector, descriptor1_->GetValue()); 192 EXPECT_EQ(empty_vector, descriptor1_->GetValue());
191 } 193 }
192 #endif // defined(OS_ANDROID) 194 #endif // defined(OS_ANDROID)
193 195
194 #if defined(OS_ANDROID) 196 #if defined(OS_ANDROID)
195 // Tests WriteRemoteDescriptor with empty value buffer. 197 // Tests WriteRemoteDescriptor with empty value buffer.
196 TEST_F(BluetoothGattDescriptorTest, WriteRemoteDescriptor_Empty) { 198 TEST_F(BluetoothRemoteGattDescriptorTest, WriteRemoteDescriptor_Empty) {
197 ASSERT_NO_FATAL_FAILURE(FakeDescriptorBoilerplate()); 199 ASSERT_NO_FATAL_FAILURE(FakeDescriptorBoilerplate());
198 200
199 std::vector<uint8_t> empty_vector; 201 std::vector<uint8_t> empty_vector;
200 descriptor1_->WriteRemoteDescriptor(empty_vector, GetCallback(Call::EXPECTED), 202 descriptor1_->WriteRemoteDescriptor(empty_vector, GetCallback(Call::EXPECTED),
201 GetGattErrorCallback(Call::NOT_EXPECTED)); 203 GetGattErrorCallback(Call::NOT_EXPECTED));
202 EXPECT_EQ(1, gatt_write_descriptor_attempts_); 204 EXPECT_EQ(1, gatt_write_descriptor_attempts_);
203 SimulateGattDescriptorWrite(descriptor1_); 205 SimulateGattDescriptorWrite(descriptor1_);
204 206
205 // Duplicate write reported from OS shouldn't cause a problem: 207 // Duplicate write reported from OS shouldn't cause a problem:
206 SimulateGattDescriptorWrite(descriptor1_); 208 SimulateGattDescriptorWrite(descriptor1_);
207 209
208 EXPECT_EQ(empty_vector, last_write_value_); 210 EXPECT_EQ(empty_vector, last_write_value_);
209 } 211 }
210 #endif // defined(OS_ANDROID) 212 #endif // defined(OS_ANDROID)
211 213
212 #if defined(OS_ANDROID) 214 #if defined(OS_ANDROID)
213 // Tests ReadRemoteDescriptor completing after Chrome objects are deleted. 215 // Tests ReadRemoteDescriptor completing after Chrome objects are deleted.
214 TEST_F(BluetoothGattDescriptorTest, ReadRemoteDescriptor_AfterDeleted) { 216 TEST_F(BluetoothRemoteGattDescriptorTest, ReadRemoteDescriptor_AfterDeleted) {
215 ASSERT_NO_FATAL_FAILURE(FakeDescriptorBoilerplate()); 217 ASSERT_NO_FATAL_FAILURE(FakeDescriptorBoilerplate());
216 218
217 descriptor1_->ReadRemoteDescriptor(GetReadValueCallback(Call::NOT_EXPECTED), 219 descriptor1_->ReadRemoteDescriptor(GetReadValueCallback(Call::NOT_EXPECTED),
218 GetGattErrorCallback(Call::NOT_EXPECTED)); 220 GetGattErrorCallback(Call::NOT_EXPECTED));
219 221
220 RememberDescriptorForSubsequentAction(descriptor1_); 222 RememberDescriptorForSubsequentAction(descriptor1_);
221 DeleteDevice(device_); // TODO(576906) delete only the descriptor. 223 DeleteDevice(device_); // TODO(576906) delete only the descriptor.
222 224
223 std::vector<uint8_t> empty_vector; 225 std::vector<uint8_t> empty_vector;
224 SimulateGattDescriptorRead(/* use remembered descriptor */ nullptr, 226 SimulateGattDescriptorRead(/* use remembered descriptor */ nullptr,
225 empty_vector); 227 empty_vector);
226 EXPECT_TRUE("Did not crash!"); 228 EXPECT_TRUE("Did not crash!");
227 } 229 }
228 #endif // defined(OS_ANDROID) 230 #endif // defined(OS_ANDROID)
229 231
230 #if defined(OS_ANDROID) 232 #if defined(OS_ANDROID)
231 // Tests WriteRemoteDescriptor completing after Chrome objects are deleted. 233 // Tests WriteRemoteDescriptor completing after Chrome objects are deleted.
232 TEST_F(BluetoothGattDescriptorTest, WriteRemoteDescriptor_AfterDeleted) { 234 TEST_F(BluetoothRemoteGattDescriptorTest, WriteRemoteDescriptor_AfterDeleted) {
233 ASSERT_NO_FATAL_FAILURE(FakeDescriptorBoilerplate()); 235 ASSERT_NO_FATAL_FAILURE(FakeDescriptorBoilerplate());
234 236
235 std::vector<uint8_t> empty_vector; 237 std::vector<uint8_t> empty_vector;
236 descriptor1_->WriteRemoteDescriptor(empty_vector, 238 descriptor1_->WriteRemoteDescriptor(empty_vector,
237 GetCallback(Call::NOT_EXPECTED), 239 GetCallback(Call::NOT_EXPECTED),
238 GetGattErrorCallback(Call::NOT_EXPECTED)); 240 GetGattErrorCallback(Call::NOT_EXPECTED));
239 241
240 RememberDescriptorForSubsequentAction(descriptor1_); 242 RememberDescriptorForSubsequentAction(descriptor1_);
241 DeleteDevice(device_); // TODO(576906) delete only the descriptor. 243 DeleteDevice(device_); // TODO(576906) delete only the descriptor.
242 244
243 SimulateGattDescriptorWrite(/* use remembered descriptor */ nullptr); 245 SimulateGattDescriptorWrite(/* use remembered descriptor */ nullptr);
244 EXPECT_TRUE("Did not crash!"); 246 EXPECT_TRUE("Did not crash!");
245 } 247 }
246 #endif // defined(OS_ANDROID) 248 #endif // defined(OS_ANDROID)
247 249
248 #if defined(OS_ANDROID) 250 #if defined(OS_ANDROID)
249 // Tests ReadRemoteDescriptor and GetValue with non-empty value buffer. 251 // Tests ReadRemoteDescriptor and GetValue with non-empty value buffer.
250 TEST_F(BluetoothGattDescriptorTest, ReadRemoteDescriptor) { 252 TEST_F(BluetoothRemoteGattDescriptorTest, ReadRemoteDescriptor) {
251 ASSERT_NO_FATAL_FAILURE(FakeDescriptorBoilerplate()); 253 ASSERT_NO_FATAL_FAILURE(FakeDescriptorBoilerplate());
252 254
253 descriptor1_->ReadRemoteDescriptor(GetReadValueCallback(Call::EXPECTED), 255 descriptor1_->ReadRemoteDescriptor(GetReadValueCallback(Call::EXPECTED),
254 GetGattErrorCallback(Call::NOT_EXPECTED)); 256 GetGattErrorCallback(Call::NOT_EXPECTED));
255 EXPECT_EQ(1, gatt_read_descriptor_attempts_); 257 EXPECT_EQ(1, gatt_read_descriptor_attempts_);
256 258
257 uint8_t values[] = {0, 1, 2, 3, 4, 0xf, 0xf0, 0xff}; 259 uint8_t values[] = {0, 1, 2, 3, 4, 0xf, 0xf0, 0xff};
258 std::vector<uint8_t> test_vector(values, values + arraysize(values)); 260 std::vector<uint8_t> test_vector(values, values + arraysize(values));
259 SimulateGattDescriptorRead(descriptor1_, test_vector); 261 SimulateGattDescriptorRead(descriptor1_, test_vector);
260 262
261 // Duplicate read reported from OS shouldn't cause a problem: 263 // Duplicate read reported from OS shouldn't cause a problem:
262 std::vector<uint8_t> empty_vector; 264 std::vector<uint8_t> empty_vector;
263 SimulateGattDescriptorRead(descriptor1_, empty_vector); 265 SimulateGattDescriptorRead(descriptor1_, empty_vector);
264 266
265 EXPECT_EQ(test_vector, last_read_value_); 267 EXPECT_EQ(test_vector, last_read_value_);
266 EXPECT_EQ(test_vector, descriptor1_->GetValue()); 268 EXPECT_EQ(test_vector, descriptor1_->GetValue());
267 } 269 }
268 #endif // defined(OS_ANDROID) 270 #endif // defined(OS_ANDROID)
269 271
270 #if defined(OS_ANDROID) 272 #if defined(OS_ANDROID)
271 // Tests WriteRemoteDescriptor with non-empty value buffer. 273 // Tests WriteRemoteDescriptor with non-empty value buffer.
272 TEST_F(BluetoothGattDescriptorTest, WriteRemoteDescriptor) { 274 TEST_F(BluetoothRemoteGattDescriptorTest, WriteRemoteDescriptor) {
273 ASSERT_NO_FATAL_FAILURE(FakeDescriptorBoilerplate()); 275 ASSERT_NO_FATAL_FAILURE(FakeDescriptorBoilerplate());
274 276
275 uint8_t values[] = {0, 1, 2, 3, 4, 0xf, 0xf0, 0xff}; 277 uint8_t values[] = {0, 1, 2, 3, 4, 0xf, 0xf0, 0xff};
276 std::vector<uint8_t> test_vector(values, values + arraysize(values)); 278 std::vector<uint8_t> test_vector(values, values + arraysize(values));
277 descriptor1_->WriteRemoteDescriptor(test_vector, GetCallback(Call::EXPECTED), 279 descriptor1_->WriteRemoteDescriptor(test_vector, GetCallback(Call::EXPECTED),
278 GetGattErrorCallback(Call::NOT_EXPECTED)); 280 GetGattErrorCallback(Call::NOT_EXPECTED));
279 EXPECT_EQ(1, gatt_write_descriptor_attempts_); 281 EXPECT_EQ(1, gatt_write_descriptor_attempts_);
280 282
281 SimulateGattDescriptorWrite(descriptor1_); 283 SimulateGattDescriptorWrite(descriptor1_);
282 284
283 EXPECT_EQ(test_vector, last_write_value_); 285 EXPECT_EQ(test_vector, last_write_value_);
284 } 286 }
285 #endif // defined(OS_ANDROID) 287 #endif // defined(OS_ANDROID)
286 288
287 #if defined(OS_ANDROID) 289 #if defined(OS_ANDROID)
288 // Tests ReadRemoteDescriptor and GetValue multiple times. 290 // Tests ReadRemoteDescriptor and GetValue multiple times.
289 TEST_F(BluetoothGattDescriptorTest, ReadRemoteDescriptor_Twice) { 291 TEST_F(BluetoothRemoteGattDescriptorTest, ReadRemoteDescriptor_Twice) {
290 ASSERT_NO_FATAL_FAILURE(FakeDescriptorBoilerplate()); 292 ASSERT_NO_FATAL_FAILURE(FakeDescriptorBoilerplate());
291 293
292 descriptor1_->ReadRemoteDescriptor(GetReadValueCallback(Call::EXPECTED), 294 descriptor1_->ReadRemoteDescriptor(GetReadValueCallback(Call::EXPECTED),
293 GetGattErrorCallback(Call::NOT_EXPECTED)); 295 GetGattErrorCallback(Call::NOT_EXPECTED));
294 EXPECT_EQ(1, gatt_read_descriptor_attempts_); 296 EXPECT_EQ(1, gatt_read_descriptor_attempts_);
295 297
296 uint8_t values[] = {0, 1, 2, 3, 4, 0xf, 0xf0, 0xff}; 298 uint8_t values[] = {0, 1, 2, 3, 4, 0xf, 0xf0, 0xff};
297 std::vector<uint8_t> test_vector(values, values + arraysize(values)); 299 std::vector<uint8_t> test_vector(values, values + arraysize(values));
298 SimulateGattDescriptorRead(descriptor1_, test_vector); 300 SimulateGattDescriptorRead(descriptor1_, test_vector);
299 EXPECT_EQ(1, callback_count_); 301 EXPECT_EQ(1, callback_count_);
(...skipping 10 matching lines...) Expand all
310 SimulateGattDescriptorRead(descriptor1_, empty_vector); 312 SimulateGattDescriptorRead(descriptor1_, empty_vector);
311 EXPECT_EQ(1, callback_count_); 313 EXPECT_EQ(1, callback_count_);
312 EXPECT_EQ(0, error_callback_count_); 314 EXPECT_EQ(0, error_callback_count_);
313 EXPECT_EQ(empty_vector, last_read_value_); 315 EXPECT_EQ(empty_vector, last_read_value_);
314 EXPECT_EQ(empty_vector, descriptor1_->GetValue()); 316 EXPECT_EQ(empty_vector, descriptor1_->GetValue());
315 } 317 }
316 #endif // defined(OS_ANDROID) 318 #endif // defined(OS_ANDROID)
317 319
318 #if defined(OS_ANDROID) 320 #if defined(OS_ANDROID)
319 // Tests WriteRemoteDescriptor multiple times. 321 // Tests WriteRemoteDescriptor multiple times.
320 TEST_F(BluetoothGattDescriptorTest, WriteRemoteDescriptor_Twice) { 322 TEST_F(BluetoothRemoteGattDescriptorTest, WriteRemoteDescriptor_Twice) {
321 ASSERT_NO_FATAL_FAILURE(FakeDescriptorBoilerplate()); 323 ASSERT_NO_FATAL_FAILURE(FakeDescriptorBoilerplate());
322 324
323 uint8_t values[] = {0, 1, 2, 3, 4, 0xf, 0xf0, 0xff}; 325 uint8_t values[] = {0, 1, 2, 3, 4, 0xf, 0xf0, 0xff};
324 std::vector<uint8_t> test_vector(values, values + arraysize(values)); 326 std::vector<uint8_t> test_vector(values, values + arraysize(values));
325 descriptor1_->WriteRemoteDescriptor(test_vector, GetCallback(Call::EXPECTED), 327 descriptor1_->WriteRemoteDescriptor(test_vector, GetCallback(Call::EXPECTED),
326 GetGattErrorCallback(Call::NOT_EXPECTED)); 328 GetGattErrorCallback(Call::NOT_EXPECTED));
327 EXPECT_EQ(1, gatt_write_descriptor_attempts_); 329 EXPECT_EQ(1, gatt_write_descriptor_attempts_);
328 330
329 SimulateGattDescriptorWrite(descriptor1_); 331 SimulateGattDescriptorWrite(descriptor1_);
330 EXPECT_EQ(1, callback_count_); 332 EXPECT_EQ(1, callback_count_);
331 EXPECT_EQ(0, error_callback_count_); 333 EXPECT_EQ(0, error_callback_count_);
332 EXPECT_EQ(test_vector, last_write_value_); 334 EXPECT_EQ(test_vector, last_write_value_);
333 335
334 // Write again, with different value: 336 // Write again, with different value:
335 ResetEventCounts(); 337 ResetEventCounts();
336 std::vector<uint8_t> empty_vector; 338 std::vector<uint8_t> empty_vector;
337 descriptor1_->WriteRemoteDescriptor(empty_vector, GetCallback(Call::EXPECTED), 339 descriptor1_->WriteRemoteDescriptor(empty_vector, GetCallback(Call::EXPECTED),
338 GetGattErrorCallback(Call::NOT_EXPECTED)); 340 GetGattErrorCallback(Call::NOT_EXPECTED));
339 EXPECT_EQ(1, gatt_write_descriptor_attempts_); 341 EXPECT_EQ(1, gatt_write_descriptor_attempts_);
340 SimulateGattDescriptorWrite(descriptor1_); 342 SimulateGattDescriptorWrite(descriptor1_);
341 EXPECT_EQ(1, callback_count_); 343 EXPECT_EQ(1, callback_count_);
342 EXPECT_EQ(0, error_callback_count_); 344 EXPECT_EQ(0, error_callback_count_);
343 EXPECT_EQ(empty_vector, last_write_value_); 345 EXPECT_EQ(empty_vector, last_write_value_);
344 } 346 }
345 #endif // defined(OS_ANDROID) 347 #endif // defined(OS_ANDROID)
346 348
347 #if defined(OS_ANDROID) 349 #if defined(OS_ANDROID)
348 // Tests ReadRemoteDescriptor on two descriptors. 350 // Tests ReadRemoteDescriptor on two descriptors.
349 TEST_F(BluetoothGattDescriptorTest, ReadRemoteDescriptor_MultipleDescriptors) { 351 TEST_F(BluetoothRemoteGattDescriptorTest,
352 ReadRemoteDescriptor_MultipleDescriptors) {
350 ASSERT_NO_FATAL_FAILURE(FakeDescriptorBoilerplate()); 353 ASSERT_NO_FATAL_FAILURE(FakeDescriptorBoilerplate());
351 354
352 descriptor1_->ReadRemoteDescriptor(GetReadValueCallback(Call::EXPECTED), 355 descriptor1_->ReadRemoteDescriptor(GetReadValueCallback(Call::EXPECTED),
353 GetGattErrorCallback(Call::NOT_EXPECTED)); 356 GetGattErrorCallback(Call::NOT_EXPECTED));
354 descriptor2_->ReadRemoteDescriptor(GetReadValueCallback(Call::EXPECTED), 357 descriptor2_->ReadRemoteDescriptor(GetReadValueCallback(Call::EXPECTED),
355 GetGattErrorCallback(Call::NOT_EXPECTED)); 358 GetGattErrorCallback(Call::NOT_EXPECTED));
356 EXPECT_EQ(2, gatt_read_descriptor_attempts_); 359 EXPECT_EQ(2, gatt_read_descriptor_attempts_);
357 EXPECT_EQ(0, callback_count_); 360 EXPECT_EQ(0, callback_count_);
358 EXPECT_EQ(0, error_callback_count_); 361 EXPECT_EQ(0, error_callback_count_);
359 362
360 std::vector<uint8_t> test_vector1; 363 std::vector<uint8_t> test_vector1;
361 test_vector1.push_back(111); 364 test_vector1.push_back(111);
362 SimulateGattDescriptorRead(descriptor1_, test_vector1); 365 SimulateGattDescriptorRead(descriptor1_, test_vector1);
363 EXPECT_EQ(test_vector1, last_read_value_); 366 EXPECT_EQ(test_vector1, last_read_value_);
364 367
365 std::vector<uint8_t> test_vector2; 368 std::vector<uint8_t> test_vector2;
366 test_vector2.push_back(222); 369 test_vector2.push_back(222);
367 SimulateGattDescriptorRead(descriptor2_, test_vector2); 370 SimulateGattDescriptorRead(descriptor2_, test_vector2);
368 EXPECT_EQ(test_vector2, last_read_value_); 371 EXPECT_EQ(test_vector2, last_read_value_);
369 372
370 EXPECT_EQ(2, callback_count_); 373 EXPECT_EQ(2, callback_count_);
371 EXPECT_EQ(0, error_callback_count_); 374 EXPECT_EQ(0, error_callback_count_);
372 EXPECT_EQ(test_vector1, descriptor1_->GetValue()); 375 EXPECT_EQ(test_vector1, descriptor1_->GetValue());
373 EXPECT_EQ(test_vector2, descriptor2_->GetValue()); 376 EXPECT_EQ(test_vector2, descriptor2_->GetValue());
374 } 377 }
375 #endif // defined(OS_ANDROID) 378 #endif // defined(OS_ANDROID)
376 379
377 #if defined(OS_ANDROID) 380 #if defined(OS_ANDROID)
378 // Tests WriteRemoteDescriptor on two descriptors. 381 // Tests WriteRemoteDescriptor on two descriptors.
379 TEST_F(BluetoothGattDescriptorTest, WriteRemoteDescriptor_MultipleDescriptors) { 382 TEST_F(BluetoothRemoteGattDescriptorTest,
383 WriteRemoteDescriptor_MultipleDescriptors) {
380 ASSERT_NO_FATAL_FAILURE(FakeDescriptorBoilerplate()); 384 ASSERT_NO_FATAL_FAILURE(FakeDescriptorBoilerplate());
381 385
382 std::vector<uint8_t> test_vector1; 386 std::vector<uint8_t> test_vector1;
383 test_vector1.push_back(111); 387 test_vector1.push_back(111);
384 descriptor1_->WriteRemoteDescriptor(test_vector1, GetCallback(Call::EXPECTED), 388 descriptor1_->WriteRemoteDescriptor(test_vector1, GetCallback(Call::EXPECTED),
385 GetGattErrorCallback(Call::NOT_EXPECTED)); 389 GetGattErrorCallback(Call::NOT_EXPECTED));
386 EXPECT_EQ(test_vector1, last_write_value_); 390 EXPECT_EQ(test_vector1, last_write_value_);
387 391
388 std::vector<uint8_t> test_vector2; 392 std::vector<uint8_t> test_vector2;
389 test_vector2.push_back(222); 393 test_vector2.push_back(222);
390 descriptor2_->WriteRemoteDescriptor(test_vector2, GetCallback(Call::EXPECTED), 394 descriptor2_->WriteRemoteDescriptor(test_vector2, GetCallback(Call::EXPECTED),
391 GetGattErrorCallback(Call::NOT_EXPECTED)); 395 GetGattErrorCallback(Call::NOT_EXPECTED));
392 EXPECT_EQ(test_vector2, last_write_value_); 396 EXPECT_EQ(test_vector2, last_write_value_);
393 397
394 EXPECT_EQ(2, gatt_write_descriptor_attempts_); 398 EXPECT_EQ(2, gatt_write_descriptor_attempts_);
395 EXPECT_EQ(0, callback_count_); 399 EXPECT_EQ(0, callback_count_);
396 EXPECT_EQ(0, error_callback_count_); 400 EXPECT_EQ(0, error_callback_count_);
397 401
398 SimulateGattDescriptorWrite(descriptor1_); 402 SimulateGattDescriptorWrite(descriptor1_);
399 SimulateGattDescriptorWrite(descriptor2_); 403 SimulateGattDescriptorWrite(descriptor2_);
400 404
401 EXPECT_EQ(2, callback_count_); 405 EXPECT_EQ(2, callback_count_);
402 EXPECT_EQ(0, error_callback_count_); 406 EXPECT_EQ(0, error_callback_count_);
403 } 407 }
404 #endif // defined(OS_ANDROID) 408 #endif // defined(OS_ANDROID)
405 409
406 #if defined(OS_ANDROID) 410 #if defined(OS_ANDROID)
407 // Tests ReadRemoteDescriptor asynchronous error. 411 // Tests ReadRemoteDescriptor asynchronous error.
408 TEST_F(BluetoothGattDescriptorTest, ReadError) { 412 TEST_F(BluetoothRemoteGattDescriptorTest, ReadError) {
409 ASSERT_NO_FATAL_FAILURE(FakeDescriptorBoilerplate()); 413 ASSERT_NO_FATAL_FAILURE(FakeDescriptorBoilerplate());
410 414
411 descriptor1_->ReadRemoteDescriptor(GetReadValueCallback(Call::NOT_EXPECTED), 415 descriptor1_->ReadRemoteDescriptor(GetReadValueCallback(Call::NOT_EXPECTED),
412 GetGattErrorCallback(Call::EXPECTED)); 416 GetGattErrorCallback(Call::EXPECTED));
413 SimulateGattDescriptorReadError( 417 SimulateGattDescriptorReadError(
414 descriptor1_, BluetoothGattService::GATT_ERROR_INVALID_LENGTH); 418 descriptor1_, BluetoothRemoteGattService::GATT_ERROR_INVALID_LENGTH);
415 SimulateGattDescriptorReadError(descriptor1_, 419 SimulateGattDescriptorReadError(
416 BluetoothGattService::GATT_ERROR_FAILED); 420 descriptor1_, BluetoothRemoteGattService::GATT_ERROR_FAILED);
417 EXPECT_EQ(BluetoothGattService::GATT_ERROR_INVALID_LENGTH, 421 EXPECT_EQ(BluetoothRemoteGattService::GATT_ERROR_INVALID_LENGTH,
418 last_gatt_error_code_); 422 last_gatt_error_code_);
419 } 423 }
420 #endif // defined(OS_ANDROID) 424 #endif // defined(OS_ANDROID)
421 425
422 #if defined(OS_ANDROID) 426 #if defined(OS_ANDROID)
423 // Tests WriteRemoteDescriptor asynchronous error. 427 // Tests WriteRemoteDescriptor asynchronous error.
424 TEST_F(BluetoothGattDescriptorTest, WriteError) { 428 TEST_F(BluetoothRemoteGattDescriptorTest, WriteError) {
425 ASSERT_NO_FATAL_FAILURE(FakeDescriptorBoilerplate()); 429 ASSERT_NO_FATAL_FAILURE(FakeDescriptorBoilerplate());
426 430
427 std::vector<uint8_t> empty_vector; 431 std::vector<uint8_t> empty_vector;
428 descriptor1_->WriteRemoteDescriptor(empty_vector, 432 descriptor1_->WriteRemoteDescriptor(empty_vector,
429 GetCallback(Call::NOT_EXPECTED), 433 GetCallback(Call::NOT_EXPECTED),
430 GetGattErrorCallback(Call::EXPECTED)); 434 GetGattErrorCallback(Call::EXPECTED));
431 SimulateGattDescriptorWriteError( 435 SimulateGattDescriptorWriteError(
432 descriptor1_, BluetoothGattService::GATT_ERROR_INVALID_LENGTH); 436 descriptor1_, BluetoothRemoteGattService::GATT_ERROR_INVALID_LENGTH);
433 SimulateGattDescriptorWriteError(descriptor1_, 437 SimulateGattDescriptorWriteError(
434 BluetoothGattService::GATT_ERROR_FAILED); 438 descriptor1_, BluetoothRemoteGattService::GATT_ERROR_FAILED);
435 439
436 EXPECT_EQ(BluetoothGattService::GATT_ERROR_INVALID_LENGTH, 440 EXPECT_EQ(BluetoothRemoteGattService::GATT_ERROR_INVALID_LENGTH,
437 last_gatt_error_code_); 441 last_gatt_error_code_);
438 } 442 }
439 #endif // defined(OS_ANDROID) 443 #endif // defined(OS_ANDROID)
440 444
441 #if defined(OS_ANDROID) 445 #if defined(OS_ANDROID)
442 // Tests ReadRemoteDescriptor synchronous error. 446 // Tests ReadRemoteDescriptor synchronous error.
443 TEST_F(BluetoothGattDescriptorTest, ReadSynchronousError) { 447 TEST_F(BluetoothRemoteGattDescriptorTest, ReadSynchronousError) {
444 ASSERT_NO_FATAL_FAILURE(FakeDescriptorBoilerplate()); 448 ASSERT_NO_FATAL_FAILURE(FakeDescriptorBoilerplate());
445 449
446 SimulateGattDescriptorReadWillFailSynchronouslyOnce(descriptor1_); 450 SimulateGattDescriptorReadWillFailSynchronouslyOnce(descriptor1_);
447 descriptor1_->ReadRemoteDescriptor(GetReadValueCallback(Call::NOT_EXPECTED), 451 descriptor1_->ReadRemoteDescriptor(GetReadValueCallback(Call::NOT_EXPECTED),
448 GetGattErrorCallback(Call::EXPECTED)); 452 GetGattErrorCallback(Call::EXPECTED));
449 EXPECT_EQ(0, gatt_read_descriptor_attempts_); 453 EXPECT_EQ(0, gatt_read_descriptor_attempts_);
450 base::RunLoop().RunUntilIdle(); 454 base::RunLoop().RunUntilIdle();
451 EXPECT_EQ(0, callback_count_); 455 EXPECT_EQ(0, callback_count_);
452 EXPECT_EQ(1, error_callback_count_); 456 EXPECT_EQ(1, error_callback_count_);
453 EXPECT_EQ(BluetoothGattService::GATT_ERROR_FAILED, last_gatt_error_code_); 457 EXPECT_EQ(BluetoothRemoteGattService::GATT_ERROR_FAILED,
458 last_gatt_error_code_);
454 459
455 // After failing once, can succeed: 460 // After failing once, can succeed:
456 ResetEventCounts(); 461 ResetEventCounts();
457 descriptor1_->ReadRemoteDescriptor(GetReadValueCallback(Call::EXPECTED), 462 descriptor1_->ReadRemoteDescriptor(GetReadValueCallback(Call::EXPECTED),
458 GetGattErrorCallback(Call::NOT_EXPECTED)); 463 GetGattErrorCallback(Call::NOT_EXPECTED));
459 EXPECT_EQ(1, gatt_read_descriptor_attempts_); 464 EXPECT_EQ(1, gatt_read_descriptor_attempts_);
460 std::vector<uint8_t> empty_vector; 465 std::vector<uint8_t> empty_vector;
461 SimulateGattDescriptorRead(descriptor1_, empty_vector); 466 SimulateGattDescriptorRead(descriptor1_, empty_vector);
462 EXPECT_EQ(1, callback_count_); 467 EXPECT_EQ(1, callback_count_);
463 EXPECT_EQ(0, error_callback_count_); 468 EXPECT_EQ(0, error_callback_count_);
464 } 469 }
465 #endif // defined(OS_ANDROID) 470 #endif // defined(OS_ANDROID)
466 471
467 #if defined(OS_ANDROID) 472 #if defined(OS_ANDROID)
468 // Tests WriteRemoteDescriptor synchronous error. 473 // Tests WriteRemoteDescriptor synchronous error.
469 TEST_F(BluetoothGattDescriptorTest, WriteSynchronousError) { 474 TEST_F(BluetoothRemoteGattDescriptorTest, WriteSynchronousError) {
470 ASSERT_NO_FATAL_FAILURE(FakeDescriptorBoilerplate()); 475 ASSERT_NO_FATAL_FAILURE(FakeDescriptorBoilerplate());
471 476
472 SimulateGattDescriptorWriteWillFailSynchronouslyOnce(descriptor1_); 477 SimulateGattDescriptorWriteWillFailSynchronouslyOnce(descriptor1_);
473 std::vector<uint8_t> empty_vector; 478 std::vector<uint8_t> empty_vector;
474 descriptor1_->WriteRemoteDescriptor(empty_vector, 479 descriptor1_->WriteRemoteDescriptor(empty_vector,
475 GetCallback(Call::NOT_EXPECTED), 480 GetCallback(Call::NOT_EXPECTED),
476 GetGattErrorCallback(Call::EXPECTED)); 481 GetGattErrorCallback(Call::EXPECTED));
477 EXPECT_EQ(0, gatt_write_descriptor_attempts_); 482 EXPECT_EQ(0, gatt_write_descriptor_attempts_);
478 base::RunLoop().RunUntilIdle(); 483 base::RunLoop().RunUntilIdle();
479 EXPECT_EQ(0, callback_count_); 484 EXPECT_EQ(0, callback_count_);
480 EXPECT_EQ(1, error_callback_count_); 485 EXPECT_EQ(1, error_callback_count_);
481 EXPECT_EQ(BluetoothGattService::GATT_ERROR_FAILED, last_gatt_error_code_); 486 EXPECT_EQ(BluetoothRemoteGattService::GATT_ERROR_FAILED,
487 last_gatt_error_code_);
482 488
483 // After failing once, can succeed: 489 // After failing once, can succeed:
484 ResetEventCounts(); 490 ResetEventCounts();
485 descriptor1_->WriteRemoteDescriptor(empty_vector, GetCallback(Call::EXPECTED), 491 descriptor1_->WriteRemoteDescriptor(empty_vector, GetCallback(Call::EXPECTED),
486 GetGattErrorCallback(Call::NOT_EXPECTED)); 492 GetGattErrorCallback(Call::NOT_EXPECTED));
487 EXPECT_EQ(1, gatt_write_descriptor_attempts_); 493 EXPECT_EQ(1, gatt_write_descriptor_attempts_);
488 SimulateGattDescriptorWrite(descriptor1_); 494 SimulateGattDescriptorWrite(descriptor1_);
489 EXPECT_EQ(1, callback_count_); 495 EXPECT_EQ(1, callback_count_);
490 EXPECT_EQ(0, error_callback_count_); 496 EXPECT_EQ(0, error_callback_count_);
491 } 497 }
492 #endif // defined(OS_ANDROID) 498 #endif // defined(OS_ANDROID)
493 499
494 #if defined(OS_ANDROID) 500 #if defined(OS_ANDROID)
495 // Tests ReadRemoteDescriptor error with a pending read operation. 501 // Tests ReadRemoteDescriptor error with a pending read operation.
496 TEST_F(BluetoothGattDescriptorTest, ReadRemoteDescriptor_ReadPending) { 502 TEST_F(BluetoothRemoteGattDescriptorTest, ReadRemoteDescriptor_ReadPending) {
497 ASSERT_NO_FATAL_FAILURE(FakeDescriptorBoilerplate()); 503 ASSERT_NO_FATAL_FAILURE(FakeDescriptorBoilerplate());
498 504
499 descriptor1_->ReadRemoteDescriptor(GetReadValueCallback(Call::EXPECTED), 505 descriptor1_->ReadRemoteDescriptor(GetReadValueCallback(Call::EXPECTED),
500 GetGattErrorCallback(Call::NOT_EXPECTED)); 506 GetGattErrorCallback(Call::NOT_EXPECTED));
501 descriptor1_->ReadRemoteDescriptor(GetReadValueCallback(Call::NOT_EXPECTED), 507 descriptor1_->ReadRemoteDescriptor(GetReadValueCallback(Call::NOT_EXPECTED),
502 GetGattErrorCallback(Call::EXPECTED)); 508 GetGattErrorCallback(Call::EXPECTED));
503 509
504 base::RunLoop().RunUntilIdle(); 510 base::RunLoop().RunUntilIdle();
505 511
506 EXPECT_EQ(0, callback_count_); 512 EXPECT_EQ(0, callback_count_);
507 EXPECT_EQ(1, error_callback_count_); 513 EXPECT_EQ(1, error_callback_count_);
508 EXPECT_EQ(BluetoothGattService::GATT_ERROR_IN_PROGRESS, 514 EXPECT_EQ(BluetoothRemoteGattService::GATT_ERROR_IN_PROGRESS,
509 last_gatt_error_code_); 515 last_gatt_error_code_);
510 516
511 // Initial read should still succeed: 517 // Initial read should still succeed:
512 ResetEventCounts(); 518 ResetEventCounts();
513 std::vector<uint8_t> empty_vector; 519 std::vector<uint8_t> empty_vector;
514 SimulateGattDescriptorRead(descriptor1_, empty_vector); 520 SimulateGattDescriptorRead(descriptor1_, empty_vector);
515 EXPECT_EQ(1, callback_count_); 521 EXPECT_EQ(1, callback_count_);
516 EXPECT_EQ(0, error_callback_count_); 522 EXPECT_EQ(0, error_callback_count_);
517 } 523 }
518 #endif // defined(OS_ANDROID) 524 #endif // defined(OS_ANDROID)
519 525
520 #if defined(OS_ANDROID) 526 #if defined(OS_ANDROID)
521 // Tests WriteRemoteDescriptor error with a pending write operation. 527 // Tests WriteRemoteDescriptor error with a pending write operation.
522 TEST_F(BluetoothGattDescriptorTest, WriteRemoteDescriptor_WritePending) { 528 TEST_F(BluetoothRemoteGattDescriptorTest, WriteRemoteDescriptor_WritePending) {
523 ASSERT_NO_FATAL_FAILURE(FakeDescriptorBoilerplate()); 529 ASSERT_NO_FATAL_FAILURE(FakeDescriptorBoilerplate());
524 530
525 std::vector<uint8_t> empty_vector; 531 std::vector<uint8_t> empty_vector;
526 descriptor1_->WriteRemoteDescriptor(empty_vector, GetCallback(Call::EXPECTED), 532 descriptor1_->WriteRemoteDescriptor(empty_vector, GetCallback(Call::EXPECTED),
527 GetGattErrorCallback(Call::NOT_EXPECTED)); 533 GetGattErrorCallback(Call::NOT_EXPECTED));
528 descriptor1_->WriteRemoteDescriptor(empty_vector, 534 descriptor1_->WriteRemoteDescriptor(empty_vector,
529 GetCallback(Call::NOT_EXPECTED), 535 GetCallback(Call::NOT_EXPECTED),
530 GetGattErrorCallback(Call::EXPECTED)); 536 GetGattErrorCallback(Call::EXPECTED));
531 537
532 base::RunLoop().RunUntilIdle(); 538 base::RunLoop().RunUntilIdle();
533 539
534 EXPECT_EQ(0, callback_count_); 540 EXPECT_EQ(0, callback_count_);
535 EXPECT_EQ(1, error_callback_count_); 541 EXPECT_EQ(1, error_callback_count_);
536 EXPECT_EQ(BluetoothGattService::GATT_ERROR_IN_PROGRESS, 542 EXPECT_EQ(BluetoothRemoteGattService::GATT_ERROR_IN_PROGRESS,
537 last_gatt_error_code_); 543 last_gatt_error_code_);
538 544
539 // Initial write should still succeed: 545 // Initial write should still succeed:
540 ResetEventCounts(); 546 ResetEventCounts();
541 SimulateGattDescriptorWrite(descriptor1_); 547 SimulateGattDescriptorWrite(descriptor1_);
542 EXPECT_EQ(1, callback_count_); 548 EXPECT_EQ(1, callback_count_);
543 EXPECT_EQ(0, error_callback_count_); 549 EXPECT_EQ(0, error_callback_count_);
544 } 550 }
545 #endif // defined(OS_ANDROID) 551 #endif // defined(OS_ANDROID)
546 552
547 #if defined(OS_ANDROID) 553 #if defined(OS_ANDROID)
548 // Tests ReadRemoteDescriptor error with a pending write operation. 554 // Tests ReadRemoteDescriptor error with a pending write operation.
549 TEST_F(BluetoothGattDescriptorTest, ReadRemoteDescriptor_WritePending) { 555 TEST_F(BluetoothRemoteGattDescriptorTest, ReadRemoteDescriptor_WritePending) {
550 ASSERT_NO_FATAL_FAILURE(FakeDescriptorBoilerplate()); 556 ASSERT_NO_FATAL_FAILURE(FakeDescriptorBoilerplate());
551 557
552 std::vector<uint8_t> empty_vector; 558 std::vector<uint8_t> empty_vector;
553 descriptor1_->WriteRemoteDescriptor(empty_vector, GetCallback(Call::EXPECTED), 559 descriptor1_->WriteRemoteDescriptor(empty_vector, GetCallback(Call::EXPECTED),
554 GetGattErrorCallback(Call::NOT_EXPECTED)); 560 GetGattErrorCallback(Call::NOT_EXPECTED));
555 descriptor1_->ReadRemoteDescriptor(GetReadValueCallback(Call::NOT_EXPECTED), 561 descriptor1_->ReadRemoteDescriptor(GetReadValueCallback(Call::NOT_EXPECTED),
556 GetGattErrorCallback(Call::EXPECTED)); 562 GetGattErrorCallback(Call::EXPECTED));
557 563
558 base::RunLoop().RunUntilIdle(); 564 base::RunLoop().RunUntilIdle();
559 565
560 EXPECT_EQ(0, callback_count_); 566 EXPECT_EQ(0, callback_count_);
561 EXPECT_EQ(1, error_callback_count_); 567 EXPECT_EQ(1, error_callback_count_);
562 EXPECT_EQ(BluetoothGattService::GATT_ERROR_IN_PROGRESS, 568 EXPECT_EQ(BluetoothRemoteGattService::GATT_ERROR_IN_PROGRESS,
563 last_gatt_error_code_); 569 last_gatt_error_code_);
564 570
565 // Initial write should still succeed: 571 // Initial write should still succeed:
566 ResetEventCounts(); 572 ResetEventCounts();
567 SimulateGattDescriptorWrite(descriptor1_); 573 SimulateGattDescriptorWrite(descriptor1_);
568 EXPECT_EQ(1, callback_count_); 574 EXPECT_EQ(1, callback_count_);
569 EXPECT_EQ(0, error_callback_count_); 575 EXPECT_EQ(0, error_callback_count_);
570 } 576 }
571 #endif // defined(OS_ANDROID) 577 #endif // defined(OS_ANDROID)
572 578
573 #if defined(OS_ANDROID) 579 #if defined(OS_ANDROID)
574 // Tests WriteRemoteDescriptor error with a pending Read operation. 580 // Tests WriteRemoteDescriptor error with a pending Read operation.
575 TEST_F(BluetoothGattDescriptorTest, WriteRemoteDescriptor_ReadPending) { 581 TEST_F(BluetoothRemoteGattDescriptorTest, WriteRemoteDescriptor_ReadPending) {
576 ASSERT_NO_FATAL_FAILURE(FakeDescriptorBoilerplate()); 582 ASSERT_NO_FATAL_FAILURE(FakeDescriptorBoilerplate());
577 583
578 std::vector<uint8_t> empty_vector; 584 std::vector<uint8_t> empty_vector;
579 descriptor1_->ReadRemoteDescriptor(GetReadValueCallback(Call::EXPECTED), 585 descriptor1_->ReadRemoteDescriptor(GetReadValueCallback(Call::EXPECTED),
580 GetGattErrorCallback(Call::NOT_EXPECTED)); 586 GetGattErrorCallback(Call::NOT_EXPECTED));
581 descriptor1_->WriteRemoteDescriptor(empty_vector, 587 descriptor1_->WriteRemoteDescriptor(empty_vector,
582 GetCallback(Call::NOT_EXPECTED), 588 GetCallback(Call::NOT_EXPECTED),
583 GetGattErrorCallback(Call::EXPECTED)); 589 GetGattErrorCallback(Call::EXPECTED));
584 base::RunLoop().RunUntilIdle(); 590 base::RunLoop().RunUntilIdle();
585 591
586 EXPECT_EQ(0, callback_count_); 592 EXPECT_EQ(0, callback_count_);
587 EXPECT_EQ(1, error_callback_count_); 593 EXPECT_EQ(1, error_callback_count_);
588 EXPECT_EQ(BluetoothGattService::GATT_ERROR_IN_PROGRESS, 594 EXPECT_EQ(BluetoothRemoteGattService::GATT_ERROR_IN_PROGRESS,
589 last_gatt_error_code_); 595 last_gatt_error_code_);
590 596
591 // Initial read should still succeed: 597 // Initial read should still succeed:
592 ResetEventCounts(); 598 ResetEventCounts();
593 SimulateGattDescriptorRead(descriptor1_, empty_vector); 599 SimulateGattDescriptorRead(descriptor1_, empty_vector);
594 EXPECT_EQ(1, callback_count_); 600 EXPECT_EQ(1, callback_count_);
595 EXPECT_EQ(0, error_callback_count_); 601 EXPECT_EQ(0, error_callback_count_);
596 } 602 }
597 #endif // defined(OS_ANDROID) 603 #endif // defined(OS_ANDROID)
598 604
599 } // namespace device 605 } // namespace device
OLDNEW
« no previous file with comments | « device/bluetooth/bluetooth_remote_gatt_descriptor_android.cc ('k') | device/bluetooth/bluetooth_remote_gatt_descriptor_win.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698