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 "dbus/object_path.h" | 8 #include "dbus/object_path.h" |
9 #include "device/bluetooth/bluetooth_adapter.h" | 9 #include "device/bluetooth/bluetooth_adapter.h" |
10 #include "device/bluetooth/bluetooth_adapter_factory.h" | 10 #include "device/bluetooth/bluetooth_adapter_factory.h" |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
106 adapter_->SetPowered( | 106 adapter_->SetPowered( |
107 true, | 107 true, |
108 base::Bind(&base::DoNothing), | 108 base::Bind(&base::DoNothing), |
109 base::Bind(&base::DoNothing)); | 109 base::Bind(&base::DoNothing)); |
110 ASSERT_TRUE(adapter_->IsPowered()); | 110 ASSERT_TRUE(adapter_->IsPowered()); |
111 } | 111 } |
112 | 112 |
113 void TearDown() override { | 113 void TearDown() override { |
114 adapter_ = NULL; | 114 adapter_ = NULL; |
115 update_sessions_.clear(); | 115 update_sessions_.clear(); |
116 gatt_conn_.reset(); | |
117 bluez::BluezDBusManager::Shutdown(); | 116 bluez::BluezDBusManager::Shutdown(); |
118 } | 117 } |
119 | 118 |
120 void GetAdapter() { | 119 void GetAdapter() { |
121 device::BluetoothAdapterFactory::GetAdapter( | 120 device::BluetoothAdapterFactory::GetAdapter( |
122 base::Bind(&BluetoothGattChromeOSTest::AdapterCallback, | 121 base::Bind(&BluetoothGattChromeOSTest::AdapterCallback, |
123 base::Unretained(this))); | 122 base::Unretained(this))); |
124 ASSERT_TRUE(adapter_.get() != NULL); | 123 ASSERT_TRUE(adapter_.get() != NULL); |
125 ASSERT_TRUE(adapter_->IsInitialized()); | 124 ASSERT_TRUE(adapter_->IsInitialized()); |
126 ASSERT_TRUE(adapter_->IsPresent()); | 125 ASSERT_TRUE(adapter_->IsPresent()); |
127 } | 126 } |
128 | 127 |
129 void AdapterCallback(scoped_refptr<BluetoothAdapter> adapter) { | 128 void AdapterCallback(scoped_refptr<BluetoothAdapter> adapter) { |
130 adapter_ = adapter; | 129 adapter_ = adapter; |
131 } | 130 } |
132 | 131 |
133 void SuccessCallback() { | 132 void SuccessCallback() { |
134 ++success_callback_count_; | 133 ++success_callback_count_; |
135 } | 134 } |
136 | 135 |
137 void ValueCallback(const std::vector<uint8>& value) { | 136 void ValueCallback(const std::vector<uint8>& value) { |
138 ++success_callback_count_; | 137 ++success_callback_count_; |
139 last_read_value_ = value; | 138 last_read_value_ = value; |
140 } | 139 } |
141 | 140 |
142 void GattConnectionCallback(scoped_ptr<BluetoothGattConnection> conn) { | 141 void GattConnectionCallback() { ++success_callback_count_; } |
143 ++success_callback_count_; | |
144 gatt_conn_ = conn.Pass(); | |
145 } | |
146 | 142 |
147 void NotifySessionCallback(scoped_ptr<BluetoothGattNotifySession> session) { | 143 void NotifySessionCallback(scoped_ptr<BluetoothGattNotifySession> session) { |
148 ++success_callback_count_; | 144 ++success_callback_count_; |
149 update_sessions_.push_back(session.release()); | 145 update_sessions_.push_back(session.release()); |
150 QuitMessageLoop(); | 146 QuitMessageLoop(); |
151 } | 147 } |
152 | 148 |
153 void ServiceErrorCallback(BluetoothGattService::GattErrorCode err) { | 149 void ServiceErrorCallback(BluetoothGattService::GattErrorCode err) { |
154 ++error_callback_count_; | 150 ++error_callback_count_; |
155 last_service_error_ = err; | 151 last_service_error_ = err; |
(...skipping 20 matching lines...) Expand all Loading... |
176 } | 172 } |
177 | 173 |
178 base::MessageLoop message_loop_; | 174 base::MessageLoop message_loop_; |
179 | 175 |
180 bluez::FakeBluetoothDeviceClient* fake_bluetooth_device_client_; | 176 bluez::FakeBluetoothDeviceClient* fake_bluetooth_device_client_; |
181 bluez::FakeBluetoothGattServiceClient* fake_bluetooth_gatt_service_client_; | 177 bluez::FakeBluetoothGattServiceClient* fake_bluetooth_gatt_service_client_; |
182 bluez::FakeBluetoothGattCharacteristicClient* | 178 bluez::FakeBluetoothGattCharacteristicClient* |
183 fake_bluetooth_gatt_characteristic_client_; | 179 fake_bluetooth_gatt_characteristic_client_; |
184 bluez::FakeBluetoothGattDescriptorClient* | 180 bluez::FakeBluetoothGattDescriptorClient* |
185 fake_bluetooth_gatt_descriptor_client_; | 181 fake_bluetooth_gatt_descriptor_client_; |
186 scoped_ptr<device::BluetoothGattConnection> gatt_conn_; | |
187 ScopedVector<BluetoothGattNotifySession> update_sessions_; | 182 ScopedVector<BluetoothGattNotifySession> update_sessions_; |
188 scoped_refptr<BluetoothAdapter> adapter_; | 183 scoped_refptr<BluetoothAdapter> adapter_; |
189 | 184 |
190 int success_callback_count_; | 185 int success_callback_count_; |
191 int error_callback_count_; | 186 int error_callback_count_; |
192 std::vector<uint8> last_read_value_; | 187 std::vector<uint8> last_read_value_; |
193 BluetoothGattService::GattErrorCode last_service_error_; | 188 BluetoothGattService::GattErrorCode last_service_error_; |
194 }; | 189 }; |
195 | 190 |
196 TEST_F(BluetoothGattChromeOSTest, GattConnection) { | 191 TEST_F(BluetoothGattChromeOSTest, GattConnection) { |
| 192 scoped_ptr<device::BluetoothGattConnection> gatt_conn_; |
| 193 |
197 fake_bluetooth_device_client_->CreateDevice( | 194 fake_bluetooth_device_client_->CreateDevice( |
198 dbus::ObjectPath(bluez::FakeBluetoothAdapterClient::kAdapterPath), | 195 dbus::ObjectPath(bluez::FakeBluetoothAdapterClient::kAdapterPath), |
199 dbus::ObjectPath(bluez::FakeBluetoothDeviceClient::kLowEnergyPath)); | 196 dbus::ObjectPath(bluez::FakeBluetoothDeviceClient::kLowEnergyPath)); |
200 BluetoothDevice* device = | 197 BluetoothDevice* device = |
201 adapter_->GetDevice(bluez::FakeBluetoothDeviceClient::kLowEnergyAddress); | 198 adapter_->GetDevice(bluez::FakeBluetoothDeviceClient::kLowEnergyAddress); |
202 ASSERT_TRUE(device); | 199 ASSERT_TRUE(device); |
203 ASSERT_FALSE(device->IsConnected()); | 200 ASSERT_FALSE(device->IsConnected()); |
204 ASSERT_FALSE(gatt_conn_.get()); | 201 ASSERT_FALSE(gatt_conn_.get()); |
205 ASSERT_EQ(0, success_callback_count_); | 202 ASSERT_EQ(0, success_callback_count_); |
206 ASSERT_EQ(0, error_callback_count_); | 203 ASSERT_EQ(0, error_callback_count_); |
207 | 204 |
208 device->CreateGattConnection( | 205 gatt_conn_ = device->CreateGattConnection( |
209 base::Bind(&BluetoothGattChromeOSTest::GattConnectionCallback, | 206 base::Bind(&BluetoothGattChromeOSTest::GattConnectionCallback, |
210 base::Unretained(this)), | 207 base::Unretained(this)), |
211 base::Bind(&BluetoothGattChromeOSTest::ConnectErrorCallback, | 208 base::Bind(&BluetoothGattChromeOSTest::ConnectErrorCallback, |
212 base::Unretained(this))); | 209 base::Unretained(this))); |
213 | 210 |
214 EXPECT_EQ(1, success_callback_count_); | 211 EXPECT_EQ(1, success_callback_count_); |
215 EXPECT_EQ(0, error_callback_count_); | 212 EXPECT_EQ(0, error_callback_count_); |
216 EXPECT_TRUE(device->IsConnected()); | 213 EXPECT_TRUE(device->IsConnected()); |
217 ASSERT_TRUE(gatt_conn_.get()); | 214 ASSERT_TRUE(gatt_conn_.get()); |
218 EXPECT_TRUE(gatt_conn_->IsConnected()); | 215 EXPECT_TRUE(gatt_conn_->IsConnected()); |
| 216 EXPECT_FALSE(gatt_conn_->InProgress()); |
219 EXPECT_EQ(bluez::FakeBluetoothDeviceClient::kLowEnergyAddress, | 217 EXPECT_EQ(bluez::FakeBluetoothDeviceClient::kLowEnergyAddress, |
220 gatt_conn_->GetDeviceAddress()); | 218 gatt_conn_->GetDeviceAddress()); |
221 | 219 |
222 gatt_conn_->Disconnect(); | 220 gatt_conn_->Disconnect(); |
223 EXPECT_TRUE(device->IsConnected()); | 221 EXPECT_FALSE(device->IsConnected()); |
224 EXPECT_FALSE(gatt_conn_->IsConnected()); | 222 EXPECT_FALSE(gatt_conn_->IsConnected()); |
225 | 223 |
226 device->CreateGattConnection( | 224 gatt_conn_ = device->CreateGattConnection( |
227 base::Bind(&BluetoothGattChromeOSTest::GattConnectionCallback, | 225 base::Bind(&BluetoothGattChromeOSTest::GattConnectionCallback, |
228 base::Unretained(this)), | 226 base::Unretained(this)), |
229 base::Bind(&BluetoothGattChromeOSTest::ConnectErrorCallback, | 227 base::Bind(&BluetoothGattChromeOSTest::ConnectErrorCallback, |
230 base::Unretained(this))); | 228 base::Unretained(this))); |
231 | 229 |
232 EXPECT_EQ(2, success_callback_count_); | 230 EXPECT_EQ(2, success_callback_count_); |
233 EXPECT_EQ(0, error_callback_count_); | 231 EXPECT_EQ(0, error_callback_count_); |
234 EXPECT_TRUE(device->IsConnected()); | 232 EXPECT_TRUE(device->IsConnected()); |
235 ASSERT_TRUE(gatt_conn_.get()); | 233 ASSERT_TRUE(gatt_conn_.get()); |
236 EXPECT_TRUE(gatt_conn_->IsConnected()); | 234 EXPECT_TRUE(gatt_conn_->IsConnected()); |
237 | 235 |
238 device->Disconnect( | 236 device->Disconnect( |
239 base::Bind(&BluetoothGattChromeOSTest::SuccessCallback, | 237 base::Bind(&BluetoothGattChromeOSTest::SuccessCallback, |
240 base::Unretained(this)), | 238 base::Unretained(this)), |
241 base::Bind(&BluetoothGattChromeOSTest::ErrorCallback, | 239 base::Bind(&BluetoothGattChromeOSTest::ErrorCallback, |
242 base::Unretained(this))); | 240 base::Unretained(this))); |
243 | 241 |
244 EXPECT_EQ(3, success_callback_count_); | 242 EXPECT_EQ(3, success_callback_count_); |
245 EXPECT_EQ(0, error_callback_count_); | 243 EXPECT_EQ(0, error_callback_count_); |
| 244 EXPECT_FALSE(device->IsConnected()); |
246 ASSERT_TRUE(gatt_conn_.get()); | 245 ASSERT_TRUE(gatt_conn_.get()); |
247 EXPECT_FALSE(gatt_conn_->IsConnected()); | 246 EXPECT_FALSE(gatt_conn_->IsConnected()); |
248 | 247 |
249 device->CreateGattConnection( | 248 gatt_conn_ = device->CreateGattConnection( |
250 base::Bind(&BluetoothGattChromeOSTest::GattConnectionCallback, | 249 base::Bind(&BluetoothGattChromeOSTest::GattConnectionCallback, |
251 base::Unretained(this)), | 250 base::Unretained(this)), |
252 base::Bind(&BluetoothGattChromeOSTest::ConnectErrorCallback, | 251 base::Bind(&BluetoothGattChromeOSTest::ConnectErrorCallback, |
253 base::Unretained(this))); | 252 base::Unretained(this))); |
254 | 253 |
255 EXPECT_EQ(4, success_callback_count_); | 254 EXPECT_EQ(4, success_callback_count_); |
256 EXPECT_EQ(0, error_callback_count_); | 255 EXPECT_EQ(0, error_callback_count_); |
257 EXPECT_TRUE(device->IsConnected()); | 256 EXPECT_TRUE(device->IsConnected()); |
258 EXPECT_TRUE(gatt_conn_->IsConnected()); | 257 EXPECT_TRUE(gatt_conn_->IsConnected()); |
259 | 258 |
260 fake_bluetooth_device_client_->RemoveDevice( | 259 fake_bluetooth_device_client_->RemoveDevice( |
261 dbus::ObjectPath(bluez::FakeBluetoothAdapterClient::kAdapterPath), | 260 dbus::ObjectPath(bluez::FakeBluetoothAdapterClient::kAdapterPath), |
262 dbus::ObjectPath(bluez::FakeBluetoothDeviceClient::kLowEnergyPath)); | 261 dbus::ObjectPath(bluez::FakeBluetoothDeviceClient::kLowEnergyPath)); |
263 ASSERT_TRUE(gatt_conn_.get()); | 262 ASSERT_TRUE(gatt_conn_.get()); |
264 EXPECT_FALSE(gatt_conn_->IsConnected()); | 263 EXPECT_FALSE(gatt_conn_->IsConnected()); |
265 } | 264 } |
266 | 265 |
| 266 TEST_F(BluetoothGattChromeOSTest, MultipleGattConnections) { |
| 267 scoped_ptr<device::BluetoothGattConnection> gatt_conn_1; |
| 268 scoped_ptr<device::BluetoothGattConnection> gatt_conn_2; |
| 269 |
| 270 fake_bluetooth_device_client_->CreateDevice( |
| 271 dbus::ObjectPath(bluez::FakeBluetoothAdapterClient::kAdapterPath), |
| 272 dbus::ObjectPath(bluez::FakeBluetoothDeviceClient::kLowEnergyPath)); |
| 273 BluetoothDevice* device = |
| 274 adapter_->GetDevice(bluez::FakeBluetoothDeviceClient::kLowEnergyAddress); |
| 275 ASSERT_TRUE(device); |
| 276 ASSERT_FALSE(device->IsConnected()); |
| 277 ASSERT_FALSE(gatt_conn_1.get()); |
| 278 ASSERT_FALSE(gatt_conn_2.get()); |
| 279 ASSERT_EQ(0, success_callback_count_); |
| 280 ASSERT_EQ(0, error_callback_count_); |
| 281 |
| 282 // Connect first gatt client |
| 283 gatt_conn_1 = device->CreateGattConnection( |
| 284 base::Bind(&BluetoothGattChromeOSTest::GattConnectionCallback, |
| 285 base::Unretained(this)), |
| 286 base::Bind(&BluetoothGattChromeOSTest::ConnectErrorCallback, |
| 287 base::Unretained(this))); |
| 288 |
| 289 EXPECT_EQ(1, success_callback_count_); |
| 290 EXPECT_EQ(0, error_callback_count_); |
| 291 EXPECT_TRUE(device->IsConnected()); |
| 292 ASSERT_TRUE(gatt_conn_1.get()); |
| 293 EXPECT_TRUE(gatt_conn_1->IsConnected()); |
| 294 EXPECT_FALSE(gatt_conn_1->InProgress()); |
| 295 EXPECT_EQ(bluez::FakeBluetoothDeviceClient::kLowEnergyAddress, |
| 296 gatt_conn_1->GetDeviceAddress()); |
| 297 |
| 298 // Connect second gatt client |
| 299 gatt_conn_2 = device->CreateGattConnection( |
| 300 base::Bind(&BluetoothGattChromeOSTest::GattConnectionCallback, |
| 301 base::Unretained(this)), |
| 302 base::Bind(&BluetoothGattChromeOSTest::ConnectErrorCallback, |
| 303 base::Unretained(this))); |
| 304 |
| 305 EXPECT_EQ(2, success_callback_count_); |
| 306 EXPECT_EQ(0, error_callback_count_); |
| 307 EXPECT_TRUE(device->IsConnected()); |
| 308 ASSERT_TRUE(gatt_conn_2.get()); |
| 309 EXPECT_TRUE(gatt_conn_2->IsConnected()); |
| 310 EXPECT_FALSE(gatt_conn_2->InProgress()); |
| 311 EXPECT_EQ(bluez::FakeBluetoothDeviceClient::kLowEnergyAddress, |
| 312 gatt_conn_2->GetDeviceAddress()); |
| 313 |
| 314 // Disconnect first client |
| 315 gatt_conn_1->Disconnect(); |
| 316 EXPECT_TRUE(device->IsConnected()); |
| 317 EXPECT_FALSE(gatt_conn_1->IsConnected()); |
| 318 EXPECT_TRUE(gatt_conn_2->IsConnected()); |
| 319 |
| 320 // Connect firt client again |
| 321 gatt_conn_1 = device->CreateGattConnection( |
| 322 base::Bind(&BluetoothGattChromeOSTest::GattConnectionCallback, |
| 323 base::Unretained(this)), |
| 324 base::Bind(&BluetoothGattChromeOSTest::ConnectErrorCallback, |
| 325 base::Unretained(this))); |
| 326 |
| 327 EXPECT_EQ(3, success_callback_count_); |
| 328 EXPECT_EQ(0, error_callback_count_); |
| 329 EXPECT_TRUE(device->IsConnected()); |
| 330 ASSERT_TRUE(gatt_conn_1.get()); |
| 331 EXPECT_TRUE(gatt_conn_1->IsConnected()); |
| 332 EXPECT_TRUE(gatt_conn_2->IsConnected()); |
| 333 |
| 334 gatt_conn_1->Disconnect(); |
| 335 EXPECT_TRUE(device->IsConnected()); |
| 336 EXPECT_FALSE(gatt_conn_1->IsConnected()); |
| 337 EXPECT_TRUE(gatt_conn_2->IsConnected()); |
| 338 |
| 339 gatt_conn_2->Disconnect(); |
| 340 EXPECT_FALSE(device->IsConnected()); |
| 341 EXPECT_FALSE(gatt_conn_1->IsConnected()); |
| 342 EXPECT_FALSE(gatt_conn_2->IsConnected()); |
| 343 |
| 344 // Connect both clients again |
| 345 gatt_conn_1 = device->CreateGattConnection( |
| 346 base::Bind(&BluetoothGattChromeOSTest::GattConnectionCallback, |
| 347 base::Unretained(this)), |
| 348 base::Bind(&BluetoothGattChromeOSTest::ConnectErrorCallback, |
| 349 base::Unretained(this))); |
| 350 gatt_conn_2 = device->CreateGattConnection( |
| 351 base::Bind(&BluetoothGattChromeOSTest::GattConnectionCallback, |
| 352 base::Unretained(this)), |
| 353 base::Bind(&BluetoothGattChromeOSTest::ConnectErrorCallback, |
| 354 base::Unretained(this))); |
| 355 |
| 356 EXPECT_EQ(5, success_callback_count_); |
| 357 EXPECT_TRUE(device->IsConnected()); |
| 358 EXPECT_TRUE(gatt_conn_1->IsConnected()); |
| 359 EXPECT_TRUE(gatt_conn_2->IsConnected()); |
| 360 |
| 361 // Disconnect whole device |
| 362 device->Disconnect(base::Bind(&BluetoothGattChromeOSTest::SuccessCallback, |
| 363 base::Unretained(this)), |
| 364 base::Bind(&BluetoothGattChromeOSTest::ErrorCallback, |
| 365 base::Unretained(this))); |
| 366 |
| 367 EXPECT_EQ(6, success_callback_count_); |
| 368 EXPECT_EQ(0, error_callback_count_); |
| 369 EXPECT_FALSE(device->IsConnected()); |
| 370 ASSERT_TRUE(gatt_conn_1.get()); |
| 371 EXPECT_FALSE(gatt_conn_1->IsConnected()); |
| 372 ASSERT_TRUE(gatt_conn_1.get()); |
| 373 EXPECT_FALSE(gatt_conn_1->IsConnected()); |
| 374 |
| 375 // Connect both clients again |
| 376 gatt_conn_1 = device->CreateGattConnection( |
| 377 base::Bind(&BluetoothGattChromeOSTest::GattConnectionCallback, |
| 378 base::Unretained(this)), |
| 379 base::Bind(&BluetoothGattChromeOSTest::ConnectErrorCallback, |
| 380 base::Unretained(this))); |
| 381 gatt_conn_2 = device->CreateGattConnection( |
| 382 base::Bind(&BluetoothGattChromeOSTest::GattConnectionCallback, |
| 383 base::Unretained(this)), |
| 384 base::Bind(&BluetoothGattChromeOSTest::ConnectErrorCallback, |
| 385 base::Unretained(this))); |
| 386 |
| 387 EXPECT_EQ(8, success_callback_count_); |
| 388 EXPECT_TRUE(device->IsConnected()); |
| 389 EXPECT_TRUE(gatt_conn_1->IsConnected()); |
| 390 EXPECT_TRUE(gatt_conn_2->IsConnected()); |
| 391 |
| 392 fake_bluetooth_device_client_->RemoveDevice( |
| 393 dbus::ObjectPath(bluez::FakeBluetoothAdapterClient::kAdapterPath), |
| 394 dbus::ObjectPath(bluez::FakeBluetoothDeviceClient::kLowEnergyPath)); |
| 395 ASSERT_TRUE(gatt_conn_1.get()); |
| 396 EXPECT_FALSE(gatt_conn_1->IsConnected()); |
| 397 ASSERT_TRUE(gatt_conn_2.get()); |
| 398 EXPECT_FALSE(gatt_conn_2->IsConnected()); |
| 399 } |
| 400 |
267 TEST_F(BluetoothGattChromeOSTest, GattServiceAddedAndRemoved) { | 401 TEST_F(BluetoothGattChromeOSTest, GattServiceAddedAndRemoved) { |
268 // Create a fake LE device. We store the device pointer here because this is a | 402 // Create a fake LE device. We store the device pointer here because this is a |
269 // test. It's unsafe to do this in production as the device might get deleted. | 403 // test. It's unsafe to do this in production as the device might get deleted. |
270 fake_bluetooth_device_client_->CreateDevice( | 404 fake_bluetooth_device_client_->CreateDevice( |
271 dbus::ObjectPath(bluez::FakeBluetoothAdapterClient::kAdapterPath), | 405 dbus::ObjectPath(bluez::FakeBluetoothAdapterClient::kAdapterPath), |
272 dbus::ObjectPath(bluez::FakeBluetoothDeviceClient::kLowEnergyPath)); | 406 dbus::ObjectPath(bluez::FakeBluetoothDeviceClient::kLowEnergyPath)); |
273 BluetoothDevice* device = | 407 BluetoothDevice* device = |
274 adapter_->GetDevice(bluez::FakeBluetoothDeviceClient::kLowEnergyAddress); | 408 adapter_->GetDevice(bluez::FakeBluetoothDeviceClient::kLowEnergyAddress); |
275 ASSERT_TRUE(device); | 409 ASSERT_TRUE(device); |
276 | 410 |
(...skipping 951 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1228 | 1362 |
1229 EXPECT_EQ(1, success_callback_count_); | 1363 EXPECT_EQ(1, success_callback_count_); |
1230 EXPECT_EQ(0, error_callback_count_); | 1364 EXPECT_EQ(0, error_callback_count_); |
1231 EXPECT_EQ(1, observer.gatt_characteristic_value_changed_count()); | 1365 EXPECT_EQ(1, observer.gatt_characteristic_value_changed_count()); |
1232 EXPECT_TRUE(characteristic->IsNotifying()); | 1366 EXPECT_TRUE(characteristic->IsNotifying()); |
1233 EXPECT_EQ(1U, update_sessions_.size()); | 1367 EXPECT_EQ(1U, update_sessions_.size()); |
1234 EXPECT_TRUE(update_sessions_[0]->IsActive()); | 1368 EXPECT_TRUE(update_sessions_[0]->IsActive()); |
1235 } | 1369 } |
1236 | 1370 |
1237 } // namespace chromeos | 1371 } // namespace chromeos |
OLD | NEW |