OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "device/bluetooth/bluez/bluetooth_adapter_profile_bluez.h" | 5 #include "device/bluetooth/bluez/bluetooth_adapter_profile_bluez.h" |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
| 11 #include "base/run_loop.h" |
11 #include "device/bluetooth/bluetooth_adapter.h" | 12 #include "device/bluetooth/bluetooth_adapter.h" |
12 #include "device/bluetooth/bluetooth_adapter_factory.h" | 13 #include "device/bluetooth/bluetooth_adapter_factory.h" |
13 #include "device/bluetooth/bluetooth_uuid.h" | 14 #include "device/bluetooth/bluetooth_uuid.h" |
14 #include "device/bluetooth/bluez/bluetooth_adapter_bluez.h" | 15 #include "device/bluetooth/bluez/bluetooth_adapter_bluez.h" |
15 #include "device/bluetooth/dbus/bluetooth_profile_service_provider.h" | 16 #include "device/bluetooth/dbus/bluetooth_profile_service_provider.h" |
16 #include "device/bluetooth/dbus/bluez_dbus_manager.h" | 17 #include "device/bluetooth/dbus/bluez_dbus_manager.h" |
17 #include "device/bluetooth/dbus/fake_bluetooth_adapter_client.h" | 18 #include "device/bluetooth/dbus/fake_bluetooth_adapter_client.h" |
18 #include "device/bluetooth/dbus/fake_bluetooth_agent_manager_client.h" | 19 #include "device/bluetooth/dbus/fake_bluetooth_agent_manager_client.h" |
19 #include "device/bluetooth/dbus/fake_bluetooth_device_client.h" | 20 #include "device/bluetooth/dbus/fake_bluetooth_device_client.h" |
20 #include "device/bluetooth/dbus/fake_bluetooth_profile_manager_client.h" | 21 #include "device/bluetooth/dbus/fake_bluetooth_profile_manager_client.h" |
(...skipping 30 matching lines...) Expand all Loading... |
51 std::unique_ptr<bluez::BluetoothDeviceClient>( | 52 std::unique_ptr<bluez::BluetoothDeviceClient>( |
52 new bluez::FakeBluetoothDeviceClient)); | 53 new bluez::FakeBluetoothDeviceClient)); |
53 dbus_setter->SetBluetoothProfileManagerClient( | 54 dbus_setter->SetBluetoothProfileManagerClient( |
54 std::unique_ptr<bluez::BluetoothProfileManagerClient>( | 55 std::unique_ptr<bluez::BluetoothProfileManagerClient>( |
55 new bluez::FakeBluetoothProfileManagerClient)); | 56 new bluez::FakeBluetoothProfileManagerClient)); |
56 | 57 |
57 // Grab a pointer to the adapter. | 58 // Grab a pointer to the adapter. |
58 device::BluetoothAdapterFactory::GetAdapter( | 59 device::BluetoothAdapterFactory::GetAdapter( |
59 base::Bind(&BluetoothAdapterProfileBlueZTest::AdapterCallback, | 60 base::Bind(&BluetoothAdapterProfileBlueZTest::AdapterCallback, |
60 base::Unretained(this))); | 61 base::Unretained(this))); |
61 base::MessageLoop::current()->Run(); | 62 base::RunLoop().Run(); |
62 ASSERT_TRUE(adapter_.get() != nullptr); | 63 ASSERT_TRUE(adapter_.get() != nullptr); |
63 ASSERT_TRUE(adapter_->IsInitialized()); | 64 ASSERT_TRUE(adapter_->IsInitialized()); |
64 ASSERT_TRUE(adapter_->IsPresent()); | 65 ASSERT_TRUE(adapter_->IsPresent()); |
65 | 66 |
66 // Turn on the adapter. | 67 // Turn on the adapter. |
67 adapter_->SetPowered(true, base::Bind(&base::DoNothing), | 68 adapter_->SetPowered(true, base::Bind(&base::DoNothing), |
68 base::Bind(&base::DoNothing)); | 69 base::Bind(&base::DoNothing)); |
69 ASSERT_TRUE(adapter_->IsPowered()); | 70 ASSERT_TRUE(adapter_->IsPowered()); |
70 } | 71 } |
71 | 72 |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
174 | 175 |
175 options.require_authentication.reset(new bool(false)); | 176 options.require_authentication.reset(new bool(false)); |
176 | 177 |
177 BluetoothAdapterProfileBlueZ::Register( | 178 BluetoothAdapterProfileBlueZ::Register( |
178 uuid, options, | 179 uuid, options, |
179 base::Bind(&BluetoothAdapterProfileBlueZTest::ProfileSuccessCallback, | 180 base::Bind(&BluetoothAdapterProfileBlueZTest::ProfileSuccessCallback, |
180 base::Unretained(this)), | 181 base::Unretained(this)), |
181 base::Bind(&BluetoothAdapterProfileBlueZTest::DBusErrorCallback, | 182 base::Bind(&BluetoothAdapterProfileBlueZTest::DBusErrorCallback, |
182 base::Unretained(this))); | 183 base::Unretained(this))); |
183 | 184 |
184 message_loop_.RunUntilIdle(); | 185 base::RunLoop().RunUntilIdle(); |
185 | 186 |
186 EXPECT_TRUE(profile_); | 187 EXPECT_TRUE(profile_); |
187 EXPECT_EQ(1U, success_callback_count_); | 188 EXPECT_EQ(1U, success_callback_count_); |
188 EXPECT_EQ(0U, error_callback_count_); | 189 EXPECT_EQ(0U, error_callback_count_); |
189 | 190 |
190 EXPECT_EQ(0U, profile_->DelegateCount()); | 191 EXPECT_EQ(0U, profile_->DelegateCount()); |
191 | 192 |
192 profile_->SetDelegate(fake_delegate_paired_.device_path_, | 193 profile_->SetDelegate(fake_delegate_paired_.device_path_, |
193 &fake_delegate_paired_); | 194 &fake_delegate_paired_); |
194 | 195 |
(...skipping 16 matching lines...) Expand all Loading... |
211 | 212 |
212 options.require_authentication.reset(new bool(false)); | 213 options.require_authentication.reset(new bool(false)); |
213 | 214 |
214 BluetoothAdapterProfileBlueZ::Register( | 215 BluetoothAdapterProfileBlueZ::Register( |
215 uuid, options, | 216 uuid, options, |
216 base::Bind(&BluetoothAdapterProfileBlueZTest::ProfileSuccessCallback, | 217 base::Bind(&BluetoothAdapterProfileBlueZTest::ProfileSuccessCallback, |
217 base::Unretained(this)), | 218 base::Unretained(this)), |
218 base::Bind(&BluetoothAdapterProfileBlueZTest::DBusErrorCallback, | 219 base::Bind(&BluetoothAdapterProfileBlueZTest::DBusErrorCallback, |
219 base::Unretained(this))); | 220 base::Unretained(this))); |
220 | 221 |
221 message_loop_.RunUntilIdle(); | 222 base::RunLoop().RunUntilIdle(); |
222 | 223 |
223 EXPECT_TRUE(profile_); | 224 EXPECT_TRUE(profile_); |
224 EXPECT_EQ(1U, success_callback_count_); | 225 EXPECT_EQ(1U, success_callback_count_); |
225 EXPECT_EQ(0U, error_callback_count_); | 226 EXPECT_EQ(0U, error_callback_count_); |
226 | 227 |
227 bluez::BluezDBusManager::Get()->GetBluetoothDeviceClient()->ConnectProfile( | 228 bluez::BluezDBusManager::Get()->GetBluetoothDeviceClient()->ConnectProfile( |
228 dbus::ObjectPath(bluez::FakeBluetoothDeviceClient::kPairedDevicePath), | 229 dbus::ObjectPath(bluez::FakeBluetoothDeviceClient::kPairedDevicePath), |
229 bluez::FakeBluetoothProfileManagerClient::kRfcommUuid, | 230 bluez::FakeBluetoothProfileManagerClient::kRfcommUuid, |
230 base::Bind(&BluetoothAdapterProfileBlueZTest::DBusConnectSuccessCallback, | 231 base::Bind(&BluetoothAdapterProfileBlueZTest::DBusConnectSuccessCallback, |
231 base::Unretained(this)), | 232 base::Unretained(this)), |
232 base::Bind(&BluetoothAdapterProfileBlueZTest::DBusErrorCallback, | 233 base::Bind(&BluetoothAdapterProfileBlueZTest::DBusErrorCallback, |
233 base::Unretained(this))); | 234 base::Unretained(this))); |
234 | 235 |
235 message_loop_.RunUntilIdle(); | 236 base::RunLoop().RunUntilIdle(); |
236 | 237 |
237 EXPECT_EQ(1U, success_callback_count_); | 238 EXPECT_EQ(1U, success_callback_count_); |
238 EXPECT_EQ(1U, error_callback_count_); | 239 EXPECT_EQ(1U, error_callback_count_); |
239 | 240 |
240 EXPECT_EQ(0U, fake_delegate_paired_.connections_); | 241 EXPECT_EQ(0U, fake_delegate_paired_.connections_); |
241 } | 242 } |
242 | 243 |
243 TEST_F(BluetoothAdapterProfileBlueZTest, Routing) { | 244 TEST_F(BluetoothAdapterProfileBlueZTest, Routing) { |
244 BluetoothUUID uuid(bluez::FakeBluetoothProfileManagerClient::kRfcommUuid); | 245 BluetoothUUID uuid(bluez::FakeBluetoothProfileManagerClient::kRfcommUuid); |
245 bluez::BluetoothProfileManagerClient::Options options; | 246 bluez::BluetoothProfileManagerClient::Options options; |
246 | 247 |
247 options.require_authentication.reset(new bool(false)); | 248 options.require_authentication.reset(new bool(false)); |
248 | 249 |
249 BluetoothAdapterProfileBlueZ::Register( | 250 BluetoothAdapterProfileBlueZ::Register( |
250 uuid, options, | 251 uuid, options, |
251 base::Bind(&BluetoothAdapterProfileBlueZTest::ProfileSuccessCallback, | 252 base::Bind(&BluetoothAdapterProfileBlueZTest::ProfileSuccessCallback, |
252 base::Unretained(this)), | 253 base::Unretained(this)), |
253 base::Bind(&BluetoothAdapterProfileBlueZTest::DBusErrorCallback, | 254 base::Bind(&BluetoothAdapterProfileBlueZTest::DBusErrorCallback, |
254 base::Unretained(this))); | 255 base::Unretained(this))); |
255 | 256 |
256 message_loop_.RunUntilIdle(); | 257 base::RunLoop().RunUntilIdle(); |
257 | 258 |
258 ASSERT_TRUE(profile_); | 259 ASSERT_TRUE(profile_); |
259 ASSERT_EQ(1U, success_callback_count_); | 260 ASSERT_EQ(1U, success_callback_count_); |
260 ASSERT_EQ(0U, error_callback_count_); | 261 ASSERT_EQ(0U, error_callback_count_); |
261 | 262 |
262 profile_->SetDelegate(fake_delegate_paired_.device_path_, | 263 profile_->SetDelegate(fake_delegate_paired_.device_path_, |
263 &fake_delegate_paired_); | 264 &fake_delegate_paired_); |
264 profile_->SetDelegate(fake_delegate_autopair_.device_path_, | 265 profile_->SetDelegate(fake_delegate_autopair_.device_path_, |
265 &fake_delegate_autopair_); | 266 &fake_delegate_autopair_); |
266 profile_->SetDelegate(fake_delegate_listen_.device_path_, | 267 profile_->SetDelegate(fake_delegate_listen_.device_path_, |
267 &fake_delegate_listen_); | 268 &fake_delegate_listen_); |
268 | 269 |
269 bluez::BluezDBusManager::Get()->GetBluetoothDeviceClient()->ConnectProfile( | 270 bluez::BluezDBusManager::Get()->GetBluetoothDeviceClient()->ConnectProfile( |
270 dbus::ObjectPath(bluez::FakeBluetoothDeviceClient::kPairedDevicePath), | 271 dbus::ObjectPath(bluez::FakeBluetoothDeviceClient::kPairedDevicePath), |
271 bluez::FakeBluetoothProfileManagerClient::kRfcommUuid, | 272 bluez::FakeBluetoothProfileManagerClient::kRfcommUuid, |
272 base::Bind(&BluetoothAdapterProfileBlueZTest::DBusConnectSuccessCallback, | 273 base::Bind(&BluetoothAdapterProfileBlueZTest::DBusConnectSuccessCallback, |
273 base::Unretained(this)), | 274 base::Unretained(this)), |
274 base::Bind(&BluetoothAdapterProfileBlueZTest::DBusErrorCallback, | 275 base::Bind(&BluetoothAdapterProfileBlueZTest::DBusErrorCallback, |
275 base::Unretained(this))); | 276 base::Unretained(this))); |
276 | 277 |
277 message_loop_.RunUntilIdle(); | 278 base::RunLoop().RunUntilIdle(); |
278 | 279 |
279 EXPECT_EQ(2U, success_callback_count_); | 280 EXPECT_EQ(2U, success_callback_count_); |
280 EXPECT_EQ(0U, error_callback_count_); | 281 EXPECT_EQ(0U, error_callback_count_); |
281 | 282 |
282 EXPECT_EQ(1U, fake_delegate_paired_.connections_); | 283 EXPECT_EQ(1U, fake_delegate_paired_.connections_); |
283 | 284 |
284 bluez::BluezDBusManager::Get()->GetBluetoothDeviceClient()->ConnectProfile( | 285 bluez::BluezDBusManager::Get()->GetBluetoothDeviceClient()->ConnectProfile( |
285 dbus::ObjectPath(bluez::FakeBluetoothDeviceClient::kLegacyAutopairPath), | 286 dbus::ObjectPath(bluez::FakeBluetoothDeviceClient::kLegacyAutopairPath), |
286 bluez::FakeBluetoothProfileManagerClient::kRfcommUuid, | 287 bluez::FakeBluetoothProfileManagerClient::kRfcommUuid, |
287 base::Bind(&BluetoothAdapterProfileBlueZTest::DBusConnectSuccessCallback, | 288 base::Bind(&BluetoothAdapterProfileBlueZTest::DBusConnectSuccessCallback, |
288 base::Unretained(this)), | 289 base::Unretained(this)), |
289 base::Bind(&BluetoothAdapterProfileBlueZTest::DBusErrorCallback, | 290 base::Bind(&BluetoothAdapterProfileBlueZTest::DBusErrorCallback, |
290 base::Unretained(this))); | 291 base::Unretained(this))); |
291 | 292 |
292 message_loop_.RunUntilIdle(); | 293 base::RunLoop().RunUntilIdle(); |
293 | 294 |
294 EXPECT_EQ(3U, success_callback_count_); | 295 EXPECT_EQ(3U, success_callback_count_); |
295 EXPECT_EQ(0U, error_callback_count_); | 296 EXPECT_EQ(0U, error_callback_count_); |
296 | 297 |
297 EXPECT_EQ(1U, fake_delegate_autopair_.connections_); | 298 EXPECT_EQ(1U, fake_delegate_autopair_.connections_); |
298 | 299 |
299 // Incoming connections look the same from BlueZ. | 300 // Incoming connections look the same from BlueZ. |
300 bluez::BluezDBusManager::Get()->GetBluetoothDeviceClient()->ConnectProfile( | 301 bluez::BluezDBusManager::Get()->GetBluetoothDeviceClient()->ConnectProfile( |
301 dbus::ObjectPath(bluez::FakeBluetoothDeviceClient::kDisplayPinCodePath), | 302 dbus::ObjectPath(bluez::FakeBluetoothDeviceClient::kDisplayPinCodePath), |
302 bluez::FakeBluetoothProfileManagerClient::kRfcommUuid, | 303 bluez::FakeBluetoothProfileManagerClient::kRfcommUuid, |
303 base::Bind(&BluetoothAdapterProfileBlueZTest::DBusConnectSuccessCallback, | 304 base::Bind(&BluetoothAdapterProfileBlueZTest::DBusConnectSuccessCallback, |
304 base::Unretained(this)), | 305 base::Unretained(this)), |
305 base::Bind(&BluetoothAdapterProfileBlueZTest::DBusErrorCallback, | 306 base::Bind(&BluetoothAdapterProfileBlueZTest::DBusErrorCallback, |
306 base::Unretained(this))); | 307 base::Unretained(this))); |
307 | 308 |
308 message_loop_.RunUntilIdle(); | 309 base::RunLoop().RunUntilIdle(); |
309 | 310 |
310 EXPECT_EQ(4U, success_callback_count_); | 311 EXPECT_EQ(4U, success_callback_count_); |
311 EXPECT_EQ(0U, error_callback_count_); | 312 EXPECT_EQ(0U, error_callback_count_); |
312 | 313 |
313 EXPECT_EQ(1U, fake_delegate_listen_.connections_); | 314 EXPECT_EQ(1U, fake_delegate_listen_.connections_); |
314 } | 315 } |
315 | 316 |
316 TEST_F(BluetoothAdapterProfileBlueZTest, SimultaneousRegister) { | 317 TEST_F(BluetoothAdapterProfileBlueZTest, SimultaneousRegister) { |
317 BluetoothUUID uuid(bluez::FakeBluetoothProfileManagerClient::kRfcommUuid); | 318 BluetoothUUID uuid(bluez::FakeBluetoothProfileManagerClient::kRfcommUuid); |
318 bluez::BluetoothProfileManagerClient::Options options; | 319 bluez::BluetoothProfileManagerClient::Options options; |
(...skipping 13 matching lines...) Expand all Loading... |
332 base::Unretained(this))); | 333 base::Unretained(this))); |
333 | 334 |
334 adapter->UseProfile( | 335 adapter->UseProfile( |
335 uuid, fake_delegate_autopair_.device_path_, options, | 336 uuid, fake_delegate_autopair_.device_path_, options, |
336 &fake_delegate_autopair_, | 337 &fake_delegate_autopair_, |
337 base::Bind(&BluetoothAdapterProfileBlueZTest::MatchedProfileCallback, | 338 base::Bind(&BluetoothAdapterProfileBlueZTest::MatchedProfileCallback, |
338 base::Unretained(this)), | 339 base::Unretained(this)), |
339 base::Bind(&BluetoothAdapterProfileBlueZTest::BasicErrorCallback, | 340 base::Bind(&BluetoothAdapterProfileBlueZTest::BasicErrorCallback, |
340 base::Unretained(this))); | 341 base::Unretained(this))); |
341 | 342 |
342 message_loop_.RunUntilIdle(); | 343 base::RunLoop().RunUntilIdle(); |
343 | 344 |
344 EXPECT_TRUE(profile_user_ptr_); | 345 EXPECT_TRUE(profile_user_ptr_); |
345 EXPECT_EQ(2U, success_callback_count_); | 346 EXPECT_EQ(2U, success_callback_count_); |
346 EXPECT_EQ(0U, error_callback_count_); | 347 EXPECT_EQ(0U, error_callback_count_); |
347 | 348 |
348 adapter->ReleaseProfile(fake_delegate_paired_.device_path_, | 349 adapter->ReleaseProfile(fake_delegate_paired_.device_path_, |
349 profile_user_ptr_); | 350 profile_user_ptr_); |
350 adapter->ReleaseProfile(fake_delegate_autopair_.device_path_, | 351 adapter->ReleaseProfile(fake_delegate_autopair_.device_path_, |
351 profile_user_ptr_); | 352 profile_user_ptr_); |
352 | 353 |
353 message_loop_.RunUntilIdle(); | 354 base::RunLoop().RunUntilIdle(); |
354 } | 355 } |
355 | 356 |
356 TEST_F(BluetoothAdapterProfileBlueZTest, SimultaneousRegisterFail) { | 357 TEST_F(BluetoothAdapterProfileBlueZTest, SimultaneousRegisterFail) { |
357 BluetoothUUID uuid( | 358 BluetoothUUID uuid( |
358 bluez::FakeBluetoothProfileManagerClient::kUnregisterableUuid); | 359 bluez::FakeBluetoothProfileManagerClient::kUnregisterableUuid); |
359 bluez::BluetoothProfileManagerClient::Options options; | 360 bluez::BluetoothProfileManagerClient::Options options; |
360 BluetoothAdapterBlueZ* adapter = | 361 BluetoothAdapterBlueZ* adapter = |
361 static_cast<BluetoothAdapterBlueZ*>(adapter_.get()); | 362 static_cast<BluetoothAdapterBlueZ*>(adapter_.get()); |
362 | 363 |
363 options.require_authentication.reset(new bool(false)); | 364 options.require_authentication.reset(new bool(false)); |
364 | 365 |
365 success_callback_count_ = 0; | 366 success_callback_count_ = 0; |
366 error_callback_count_ = 0; | 367 error_callback_count_ = 0; |
367 | 368 |
368 adapter->UseProfile( | 369 adapter->UseProfile( |
369 uuid, fake_delegate_paired_.device_path_, options, &fake_delegate_paired_, | 370 uuid, fake_delegate_paired_.device_path_, options, &fake_delegate_paired_, |
370 base::Bind(&BluetoothAdapterProfileBlueZTest::ProfileUserSuccessCallback, | 371 base::Bind(&BluetoothAdapterProfileBlueZTest::ProfileUserSuccessCallback, |
371 base::Unretained(this)), | 372 base::Unretained(this)), |
372 base::Bind(&BluetoothAdapterProfileBlueZTest::BasicErrorCallback, | 373 base::Bind(&BluetoothAdapterProfileBlueZTest::BasicErrorCallback, |
373 base::Unretained(this))); | 374 base::Unretained(this))); |
374 | 375 |
375 adapter->UseProfile( | 376 adapter->UseProfile( |
376 uuid, fake_delegate_autopair_.device_path_, options, | 377 uuid, fake_delegate_autopair_.device_path_, options, |
377 &fake_delegate_autopair_, | 378 &fake_delegate_autopair_, |
378 base::Bind(&BluetoothAdapterProfileBlueZTest::MatchedProfileCallback, | 379 base::Bind(&BluetoothAdapterProfileBlueZTest::MatchedProfileCallback, |
379 base::Unretained(this)), | 380 base::Unretained(this)), |
380 base::Bind(&BluetoothAdapterProfileBlueZTest::BasicErrorCallback, | 381 base::Bind(&BluetoothAdapterProfileBlueZTest::BasicErrorCallback, |
381 base::Unretained(this))); | 382 base::Unretained(this))); |
382 | 383 |
383 message_loop_.RunUntilIdle(); | 384 base::RunLoop().RunUntilIdle(); |
384 | 385 |
385 EXPECT_FALSE(profile_user_ptr_); | 386 EXPECT_FALSE(profile_user_ptr_); |
386 EXPECT_EQ(0U, success_callback_count_); | 387 EXPECT_EQ(0U, success_callback_count_); |
387 EXPECT_EQ(2U, error_callback_count_); | 388 EXPECT_EQ(2U, error_callback_count_); |
388 } | 389 } |
389 | 390 |
390 } // namespace bluez | 391 } // namespace bluez |
OLD | NEW |