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 "content/shell/browser/layout_test/layout_test_bluetooth_adapter_provid
er.h" | 5 #include "content/shell/browser/layout_test/layout_test_bluetooth_adapter_provid
er.h" |
6 | 6 |
| 7 #include <utility> |
| 8 |
7 #include "base/bind.h" | 9 #include "base/bind.h" |
8 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
9 #include "base/format_macros.h" | 11 #include "base/format_macros.h" |
10 #include "base/location.h" | 12 #include "base/location.h" |
11 #include "base/strings/string_number_conversions.h" | 13 #include "base/strings/string_number_conversions.h" |
12 #include "base/strings/string_split.h" | 14 #include "base/strings/string_split.h" |
13 #include "base/strings/string_util.h" | 15 #include "base/strings/string_util.h" |
14 #include "base/strings/stringprintf.h" | 16 #include "base/strings/stringprintf.h" |
15 #include "base/thread_task_runner_handle.h" | 17 #include "base/thread_task_runner_handle.h" |
16 #include "device/bluetooth/bluetooth_adapter.h" | 18 #include "device/bluetooth/bluetooth_adapter.h" |
(...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
308 // static | 310 // static |
309 scoped_refptr<NiceMockBluetoothAdapter> | 311 scoped_refptr<NiceMockBluetoothAdapter> |
310 LayoutTestBluetoothAdapterProvider::GetPowerValueAdapter(int8_t tx_power, | 312 LayoutTestBluetoothAdapterProvider::GetPowerValueAdapter(int8_t tx_power, |
311 int8_t rssi) { | 313 int8_t rssi) { |
312 scoped_refptr<NiceMockBluetoothAdapter> adapter(GetEmptyAdapter()); | 314 scoped_refptr<NiceMockBluetoothAdapter> adapter(GetEmptyAdapter()); |
313 scoped_ptr<NiceMockBluetoothDevice> device(GetHeartRateDevice(adapter.get())); | 315 scoped_ptr<NiceMockBluetoothDevice> device(GetHeartRateDevice(adapter.get())); |
314 | 316 |
315 ON_CALL(*device, GetInquiryTxPower()).WillByDefault(Return(tx_power)); | 317 ON_CALL(*device, GetInquiryTxPower()).WillByDefault(Return(tx_power)); |
316 ON_CALL(*device, GetInquiryRSSI()).WillByDefault(Return(rssi)); | 318 ON_CALL(*device, GetInquiryRSSI()).WillByDefault(Return(rssi)); |
317 | 319 |
318 adapter->AddMockDevice(device.Pass()); | 320 adapter->AddMockDevice(std::move(device)); |
319 | 321 |
320 return adapter; | 322 return adapter; |
321 } | 323 } |
322 | 324 |
323 // static | 325 // static |
324 scoped_refptr<NiceMockBluetoothAdapter> | 326 scoped_refptr<NiceMockBluetoothAdapter> |
325 LayoutTestBluetoothAdapterProvider::GetPowerPresenceAdapter( | 327 LayoutTestBluetoothAdapterProvider::GetPowerPresenceAdapter( |
326 bool tx_power_present, | 328 bool tx_power_present, |
327 bool rssi_present) { | 329 bool rssi_present) { |
328 // TODO(ortuno): RSSI Unknown and Tx Power Unknown should have different | 330 // TODO(ortuno): RSSI Unknown and Tx Power Unknown should have different |
(...skipping 24 matching lines...) Expand all Loading... |
353 adapter->AddMockDevice(GetBaseDevice(adapter.get(), "❤❤❤❤❤❤❤❤❤")); | 355 adapter->AddMockDevice(GetBaseDevice(adapter.get(), "❤❤❤❤❤❤❤❤❤")); |
354 | 356 |
355 return adapter; | 357 return adapter; |
356 } | 358 } |
357 | 359 |
358 // Adds a device to |adapter| and notifies all observers about that new device. | 360 // Adds a device to |adapter| and notifies all observers about that new device. |
359 // Mocks can call this asynchronously to cause changes in the middle of a test. | 361 // Mocks can call this asynchronously to cause changes in the middle of a test. |
360 static void AddDevice(scoped_refptr<NiceMockBluetoothAdapter> adapter, | 362 static void AddDevice(scoped_refptr<NiceMockBluetoothAdapter> adapter, |
361 scoped_ptr<NiceMockBluetoothDevice> new_device) { | 363 scoped_ptr<NiceMockBluetoothDevice> new_device) { |
362 NiceMockBluetoothDevice* new_device_ptr = new_device.get(); | 364 NiceMockBluetoothDevice* new_device_ptr = new_device.get(); |
363 adapter->AddMockDevice(new_device.Pass()); | 365 adapter->AddMockDevice(std::move(new_device)); |
364 FOR_EACH_OBSERVER(BluetoothAdapter::Observer, adapter->GetObservers(), | 366 FOR_EACH_OBSERVER(BluetoothAdapter::Observer, adapter->GetObservers(), |
365 DeviceAdded(adapter.get(), new_device_ptr)); | 367 DeviceAdded(adapter.get(), new_device_ptr)); |
366 } | 368 } |
367 | 369 |
368 // static | 370 // static |
369 scoped_refptr<NiceMockBluetoothAdapter> | 371 scoped_refptr<NiceMockBluetoothAdapter> |
370 LayoutTestBluetoothAdapterProvider::GetSecondDiscoveryFindsHeartRateAdapter() { | 372 LayoutTestBluetoothAdapterProvider::GetSecondDiscoveryFindsHeartRateAdapter() { |
371 scoped_refptr<NiceMockBluetoothAdapter> adapter(GetPoweredAdapter()); | 373 scoped_refptr<NiceMockBluetoothAdapter> adapter(GetPoweredAdapter()); |
372 NiceMockBluetoothAdapter* adapter_ptr = adapter.get(); | 374 NiceMockBluetoothAdapter* adapter_ptr = adapter.get(); |
373 | 375 |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
406 | 408 |
407 scoped_ptr<NiceMockBluetoothDevice> device(GetHeartRateDevice(adapter.get())); | 409 scoped_ptr<NiceMockBluetoothDevice> device(GetHeartRateDevice(adapter.get())); |
408 | 410 |
409 scoped_ptr<NiceMockBluetoothGattService> generic_access( | 411 scoped_ptr<NiceMockBluetoothGattService> generic_access( |
410 GetBaseGATTService(device.get(), kGenericAccessServiceUUID)); | 412 GetBaseGATTService(device.get(), kGenericAccessServiceUUID)); |
411 scoped_ptr<NiceMockBluetoothGattService> heart_rate( | 413 scoped_ptr<NiceMockBluetoothGattService> heart_rate( |
412 GetBaseGATTService(device.get(), kHeartRateServiceUUID)); | 414 GetBaseGATTService(device.get(), kHeartRateServiceUUID)); |
413 | 415 |
414 // Intentionally NOT adding a characteristic to heart_rate service. | 416 // Intentionally NOT adding a characteristic to heart_rate service. |
415 | 417 |
416 device->AddMockService(generic_access.Pass()); | 418 device->AddMockService(std::move(generic_access)); |
417 device->AddMockService(heart_rate.Pass()); | 419 device->AddMockService(std::move(heart_rate)); |
418 adapter->AddMockDevice(device.Pass()); | 420 adapter->AddMockDevice(std::move(device)); |
419 | 421 |
420 return adapter; | 422 return adapter; |
421 } | 423 } |
422 | 424 |
423 // static | 425 // static |
424 scoped_refptr<NiceMockBluetoothAdapter> | 426 scoped_refptr<NiceMockBluetoothAdapter> |
425 LayoutTestBluetoothAdapterProvider::GetDelayedServicesDiscoveryAdapter() { | 427 LayoutTestBluetoothAdapterProvider::GetDelayedServicesDiscoveryAdapter() { |
426 scoped_refptr<NiceMockBluetoothAdapter> adapter(GetEmptyAdapter()); | 428 scoped_refptr<NiceMockBluetoothAdapter> adapter(GetEmptyAdapter()); |
427 scoped_ptr<NiceMockBluetoothDevice> device(GetHeartRateDevice(adapter.get())); | 429 scoped_ptr<NiceMockBluetoothDevice> device(GetHeartRateDevice(adapter.get())); |
428 | 430 |
(...skipping 15 matching lines...) Expand all Loading... |
444 std::vector<BluetoothGattService*> services = | 446 std::vector<BluetoothGattService*> services = |
445 device_ptr->GetMockServices(); | 447 device_ptr->GetMockServices(); |
446 | 448 |
447 if (services.size() > 0) { | 449 if (services.size() > 0) { |
448 return services; | 450 return services; |
449 } | 451 } |
450 | 452 |
451 scoped_ptr<NiceMockBluetoothGattService> heart_rate( | 453 scoped_ptr<NiceMockBluetoothGattService> heart_rate( |
452 GetBaseGATTService(device_ptr, kHeartRateServiceUUID)); | 454 GetBaseGATTService(device_ptr, kHeartRateServiceUUID)); |
453 | 455 |
454 device_ptr->AddMockService(heart_rate.Pass()); | 456 device_ptr->AddMockService(std::move(heart_rate)); |
455 base::ThreadTaskRunnerHandle::Get()->PostTask( | 457 base::ThreadTaskRunnerHandle::Get()->PostTask( |
456 FROM_HERE, base::Bind(&NotifyServicesDiscovered, | 458 FROM_HERE, base::Bind(&NotifyServicesDiscovered, |
457 make_scoped_refptr(adapter_ptr), device_ptr)); | 459 make_scoped_refptr(adapter_ptr), device_ptr)); |
458 | 460 |
459 DCHECK(services.size() == 0); | 461 DCHECK(services.size() == 0); |
460 return services; | 462 return services; |
461 })); | 463 })); |
462 | 464 |
463 adapter->AddMockDevice(device.Pass()); | 465 adapter->AddMockDevice(std::move(device)); |
464 | 466 |
465 return adapter; | 467 return adapter; |
466 } | 468 } |
467 | 469 |
468 // static | 470 // static |
469 scoped_refptr<NiceMockBluetoothAdapter> | 471 scoped_refptr<NiceMockBluetoothAdapter> |
470 LayoutTestBluetoothAdapterProvider::GetHeartRateAdapter() { | 472 LayoutTestBluetoothAdapterProvider::GetHeartRateAdapter() { |
471 scoped_refptr<NiceMockBluetoothAdapter> adapter(GetEmptyAdapter()); | 473 scoped_refptr<NiceMockBluetoothAdapter> adapter(GetEmptyAdapter()); |
472 scoped_ptr<NiceMockBluetoothDevice> device(GetHeartRateDevice(adapter.get())); | 474 scoped_ptr<NiceMockBluetoothDevice> device(GetHeartRateDevice(adapter.get())); |
473 | 475 |
474 // TODO(ortuno): Implement the rest of the service's characteristics | 476 // TODO(ortuno): Implement the rest of the service's characteristics |
475 // See: http://crbug.com/529975 | 477 // See: http://crbug.com/529975 |
476 | 478 |
477 device->AddMockService(GetGenericAccessService(adapter.get(), device.get())); | 479 device->AddMockService(GetGenericAccessService(adapter.get(), device.get())); |
478 device->AddMockService(GetHeartRateService(adapter.get(), device.get())); | 480 device->AddMockService(GetHeartRateService(adapter.get(), device.get())); |
479 adapter->AddMockDevice(device.Pass()); | 481 adapter->AddMockDevice(std::move(device)); |
480 | 482 |
481 return adapter; | 483 return adapter; |
482 } | 484 } |
483 | 485 |
484 // static | 486 // static |
485 scoped_refptr<NiceMockBluetoothAdapter> | 487 scoped_refptr<NiceMockBluetoothAdapter> |
486 LayoutTestBluetoothAdapterProvider::GetFailingConnectionsAdapter() { | 488 LayoutTestBluetoothAdapterProvider::GetFailingConnectionsAdapter() { |
487 scoped_refptr<NiceMockBluetoothAdapter> adapter(GetEmptyAdapter()); | 489 scoped_refptr<NiceMockBluetoothAdapter> adapter(GetEmptyAdapter()); |
488 | 490 |
489 for (int error = BluetoothDevice::ERROR_UNKNOWN; | 491 for (int error = BluetoothDevice::ERROR_UNKNOWN; |
(...skipping 21 matching lines...) Expand all Loading... |
511 scoped_ptr<NiceMockBluetoothGattService> service( | 513 scoped_ptr<NiceMockBluetoothGattService> service( |
512 GetBaseGATTService(device.get(), errorsServiceUUID)); | 514 GetBaseGATTService(device.get(), errorsServiceUUID)); |
513 | 515 |
514 for (int error = BluetoothGattService::GATT_ERROR_UNKNOWN; | 516 for (int error = BluetoothGattService::GATT_ERROR_UNKNOWN; |
515 error <= BluetoothGattService::GATT_ERROR_NOT_SUPPORTED; error++) { | 517 error <= BluetoothGattService::GATT_ERROR_NOT_SUPPORTED; error++) { |
516 service->AddMockCharacteristic(GetErrorCharacteristic( | 518 service->AddMockCharacteristic(GetErrorCharacteristic( |
517 service.get(), | 519 service.get(), |
518 static_cast<BluetoothGattService::GattErrorCode>(error))); | 520 static_cast<BluetoothGattService::GattErrorCode>(error))); |
519 } | 521 } |
520 | 522 |
521 device->AddMockService(service.Pass()); | 523 device->AddMockService(std::move(service)); |
522 adapter->AddMockDevice(device.Pass()); | 524 adapter->AddMockDevice(std::move(device)); |
523 | 525 |
524 return adapter; | 526 return adapter; |
525 } | 527 } |
526 | 528 |
527 // Discovery Sessions | 529 // Discovery Sessions |
528 | 530 |
529 // static | 531 // static |
530 scoped_ptr<NiceMockBluetoothDiscoverySession> | 532 scoped_ptr<NiceMockBluetoothDiscoverySession> |
531 LayoutTestBluetoothAdapterProvider::GetDiscoverySession() { | 533 LayoutTestBluetoothAdapterProvider::GetDiscoverySession() { |
532 scoped_ptr<NiceMockBluetoothDiscoverySession> discovery_session( | 534 scoped_ptr<NiceMockBluetoothDiscoverySession> discovery_session( |
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
692 std::vector<uint8_t> device_name_value(device_name_str.begin(), | 694 std::vector<uint8_t> device_name_value(device_name_str.begin(), |
693 device_name_str.end()); | 695 device_name_str.end()); |
694 | 696 |
695 ON_CALL(*device_name, ReadRemoteCharacteristic(_, _)) | 697 ON_CALL(*device_name, ReadRemoteCharacteristic(_, _)) |
696 .WillByDefault(RunCallback<0>(device_name_value)); | 698 .WillByDefault(RunCallback<0>(device_name_value)); |
697 | 699 |
698 // Write response. | 700 // Write response. |
699 ON_CALL(*device_name, WriteRemoteCharacteristic(_, _, _)) | 701 ON_CALL(*device_name, WriteRemoteCharacteristic(_, _, _)) |
700 .WillByDefault(RunCallback<1 /* success callback */>()); | 702 .WillByDefault(RunCallback<1 /* success callback */>()); |
701 | 703 |
702 generic_access->AddMockCharacteristic(device_name.Pass()); | 704 generic_access->AddMockCharacteristic(std::move(device_name)); |
703 | 705 |
704 return generic_access; | 706 return generic_access; |
705 } | 707 } |
706 | 708 |
707 // static | 709 // static |
708 scoped_ptr<NiceMockBluetoothGattService> | 710 scoped_ptr<NiceMockBluetoothGattService> |
709 LayoutTestBluetoothAdapterProvider::GetHeartRateService( | 711 LayoutTestBluetoothAdapterProvider::GetHeartRateService( |
710 MockBluetoothAdapter* adapter, | 712 MockBluetoothAdapter* adapter, |
711 MockBluetoothDevice* device) { | 713 MockBluetoothDevice* device) { |
712 scoped_ptr<NiceMockBluetoothGattService> heart_rate( | 714 scoped_ptr<NiceMockBluetoothGattService> heart_rate( |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
747 location[0] = 1; // Chest | 749 location[0] = 1; // Chest |
748 // Read a characteristic has a side effect of | 750 // Read a characteristic has a side effect of |
749 // GattCharacteristicValueChanged being called. | 751 // GattCharacteristicValueChanged being called. |
750 FOR_EACH_OBSERVER(BluetoothAdapter::Observer, | 752 FOR_EACH_OBSERVER(BluetoothAdapter::Observer, |
751 adapter->GetObservers(), | 753 adapter->GetObservers(), |
752 GattCharacteristicValueChanged( | 754 GattCharacteristicValueChanged( |
753 adapter, location_ptr, location)); | 755 adapter, location_ptr, location)); |
754 return location; | 756 return location; |
755 })); | 757 })); |
756 | 758 |
757 heart_rate->AddMockCharacteristic(heart_rate_measurement.Pass()); | 759 heart_rate->AddMockCharacteristic(std::move(heart_rate_measurement)); |
758 heart_rate->AddMockCharacteristic(body_sensor_location.Pass()); | 760 heart_rate->AddMockCharacteristic(std::move(body_sensor_location)); |
759 | 761 |
760 return heart_rate; | 762 return heart_rate; |
761 } | 763 } |
762 | 764 |
763 // Characteristics | 765 // Characteristics |
764 | 766 |
765 // static | 767 // static |
766 scoped_ptr<NiceMockBluetoothGattCharacteristic> | 768 scoped_ptr<NiceMockBluetoothGattCharacteristic> |
767 LayoutTestBluetoothAdapterProvider::GetBaseGATTCharacteristic( | 769 LayoutTestBluetoothAdapterProvider::GetBaseGATTCharacteristic( |
768 MockBluetoothGattService* service, | 770 MockBluetoothGattService* service, |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
829 return base::StringPrintf("%08x-97e5-4cd7-b9f1-f5a427670c59", alias); | 831 return base::StringPrintf("%08x-97e5-4cd7-b9f1-f5a427670c59", alias); |
830 } | 832 } |
831 | 833 |
832 // static | 834 // static |
833 std::string LayoutTestBluetoothAdapterProvider::makeMACAddress(uint64_t addr) { | 835 std::string LayoutTestBluetoothAdapterProvider::makeMACAddress(uint64_t addr) { |
834 return BluetoothDevice::CanonicalizeAddress( | 836 return BluetoothDevice::CanonicalizeAddress( |
835 base::StringPrintf("%012" PRIx64, addr)); | 837 base::StringPrintf("%012" PRIx64, addr)); |
836 } | 838 } |
837 | 839 |
838 } // namespace content | 840 } // namespace content |
OLD | NEW |