| 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> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
| (...skipping 11 matching lines...) Expand all Loading... |
| 22 #include "device/bluetooth/bluetooth_uuid.h" | 22 #include "device/bluetooth/bluetooth_uuid.h" |
| 23 #include "device/bluetooth/test/mock_bluetooth_adapter.h" | 23 #include "device/bluetooth/test/mock_bluetooth_adapter.h" |
| 24 #include "device/bluetooth/test/mock_bluetooth_discovery_session.h" | 24 #include "device/bluetooth/test/mock_bluetooth_discovery_session.h" |
| 25 #include "device/bluetooth/test/mock_bluetooth_gatt_connection.h" | 25 #include "device/bluetooth/test/mock_bluetooth_gatt_connection.h" |
| 26 #include "device/bluetooth/test/mock_bluetooth_gatt_notify_session.h" | 26 #include "device/bluetooth/test/mock_bluetooth_gatt_notify_session.h" |
| 27 #include "testing/gmock/include/gmock/gmock.h" | 27 #include "testing/gmock/include/gmock/gmock.h" |
| 28 | 28 |
| 29 using base::StringPiece; | 29 using base::StringPiece; |
| 30 using device::BluetoothAdapter; | 30 using device::BluetoothAdapter; |
| 31 using device::BluetoothDevice; | 31 using device::BluetoothDevice; |
| 32 using device::BluetoothGattCharacteristic; | 32 using device::BluetoothRemoteGattCharacteristic; |
| 33 using device::BluetoothGattService; | 33 using device::BluetoothRemoteGattService; |
| 34 using device::BluetoothUUID; | 34 using device::BluetoothUUID; |
| 35 using device::MockBluetoothAdapter; | 35 using device::MockBluetoothAdapter; |
| 36 using device::MockBluetoothDevice; | 36 using device::MockBluetoothDevice; |
| 37 using device::MockBluetoothDiscoverySession; | 37 using device::MockBluetoothDiscoverySession; |
| 38 using device::MockBluetoothGattCharacteristic; | 38 using device::MockBluetoothGattCharacteristic; |
| 39 using device::MockBluetoothGattConnection; | 39 using device::MockBluetoothGattConnection; |
| 40 using device::MockBluetoothGattNotifySession; | 40 using device::MockBluetoothGattNotifySession; |
| 41 using device::MockBluetoothGattService; | 41 using device::MockBluetoothGattService; |
| 42 using testing::ElementsAre; | 42 using testing::ElementsAre; |
| 43 using testing::Invoke; | 43 using testing::Invoke; |
| (...skipping 408 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 452 // that task until GetGattServices is called. | 452 // that task until GetGattServices is called. |
| 453 ON_CALL(*device, CreateGattConnection(_, _)) | 453 ON_CALL(*device, CreateGattConnection(_, _)) |
| 454 .WillByDefault(RunCallbackWithResult<0 /* success_callback */>( | 454 .WillByDefault(RunCallbackWithResult<0 /* success_callback */>( |
| 455 [adapter_ptr, device_ptr]() { | 455 [adapter_ptr, device_ptr]() { |
| 456 return base::WrapUnique(new NiceMockBluetoothGattConnection( | 456 return base::WrapUnique(new NiceMockBluetoothGattConnection( |
| 457 adapter_ptr, device_ptr->GetAddress())); | 457 adapter_ptr, device_ptr->GetAddress())); |
| 458 })); | 458 })); |
| 459 | 459 |
| 460 ON_CALL(*device, GetGattServices()) | 460 ON_CALL(*device, GetGattServices()) |
| 461 .WillByDefault(Invoke([adapter_ptr, device_ptr] { | 461 .WillByDefault(Invoke([adapter_ptr, device_ptr] { |
| 462 std::vector<BluetoothGattService*> services = | 462 std::vector<BluetoothRemoteGattService*> services = |
| 463 device_ptr->GetMockServices(); | 463 device_ptr->GetMockServices(); |
| 464 | 464 |
| 465 if (services.size() > 0) { | 465 if (services.size() > 0) { |
| 466 return services; | 466 return services; |
| 467 } | 467 } |
| 468 | 468 |
| 469 std::unique_ptr<NiceMockBluetoothGattService> heart_rate( | 469 std::unique_ptr<NiceMockBluetoothGattService> heart_rate( |
| 470 GetBaseGATTService(device_ptr, kHeartRateServiceUUID)); | 470 GetBaseGATTService(device_ptr, kHeartRateServiceUUID)); |
| 471 | 471 |
| 472 device_ptr->AddMockService(std::move(heart_rate)); | 472 device_ptr->AddMockService(std::move(heart_rate)); |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 549 | 549 |
| 550 BluetoothDevice::UUIDList uuids; | 550 BluetoothDevice::UUIDList uuids; |
| 551 uuids.push_back(BluetoothUUID(errorsServiceUUID)); | 551 uuids.push_back(BluetoothUUID(errorsServiceUUID)); |
| 552 | 552 |
| 553 std::unique_ptr<NiceMockBluetoothDevice> device( | 553 std::unique_ptr<NiceMockBluetoothDevice> device( |
| 554 GetConnectableDevice(adapter.get(), "Errors Device", uuids)); | 554 GetConnectableDevice(adapter.get(), "Errors Device", uuids)); |
| 555 | 555 |
| 556 std::unique_ptr<NiceMockBluetoothGattService> service( | 556 std::unique_ptr<NiceMockBluetoothGattService> service( |
| 557 GetBaseGATTService(device.get(), errorsServiceUUID)); | 557 GetBaseGATTService(device.get(), errorsServiceUUID)); |
| 558 | 558 |
| 559 for (int error = BluetoothGattService::GATT_ERROR_UNKNOWN; | 559 for (int error = BluetoothRemoteGattService::GATT_ERROR_UNKNOWN; |
| 560 error <= BluetoothGattService::GATT_ERROR_NOT_SUPPORTED; error++) { | 560 error <= BluetoothRemoteGattService::GATT_ERROR_NOT_SUPPORTED; error++) { |
| 561 service->AddMockCharacteristic(GetErrorCharacteristic( | 561 service->AddMockCharacteristic(GetErrorCharacteristic( |
| 562 service.get(), | 562 service.get(), |
| 563 static_cast<BluetoothGattService::GattErrorCode>(error))); | 563 static_cast<BluetoothRemoteGattService::GattErrorCode>(error))); |
| 564 } | 564 } |
| 565 | 565 |
| 566 device->AddMockService(std::move(service)); | 566 device->AddMockService(std::move(service)); |
| 567 adapter->AddMockDevice(std::move(device)); | 567 adapter->AddMockDevice(std::move(device)); |
| 568 | 568 |
| 569 return adapter; | 569 return adapter; |
| 570 } | 570 } |
| 571 | 571 |
| 572 // Discovery Sessions | 572 // Discovery Sessions |
| 573 | 573 |
| (...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 724 std::unique_ptr<NiceMockBluetoothGattService> | 724 std::unique_ptr<NiceMockBluetoothGattService> |
| 725 LayoutTestBluetoothAdapterProvider::GetBlacklistTestService( | 725 LayoutTestBluetoothAdapterProvider::GetBlacklistTestService( |
| 726 device::MockBluetoothDevice* device) { | 726 device::MockBluetoothDevice* device) { |
| 727 std::unique_ptr<NiceMockBluetoothGattService> blacklist_test_service( | 727 std::unique_ptr<NiceMockBluetoothGattService> blacklist_test_service( |
| 728 GetBaseGATTService(device, kBlacklistTestServiceUUID)); | 728 GetBaseGATTService(device, kBlacklistTestServiceUUID)); |
| 729 | 729 |
| 730 std::unique_ptr<NiceMockBluetoothGattCharacteristic> | 730 std::unique_ptr<NiceMockBluetoothGattCharacteristic> |
| 731 blacklist_exclude_reads_characteristic(GetBaseGATTCharacteristic( | 731 blacklist_exclude_reads_characteristic(GetBaseGATTCharacteristic( |
| 732 "Excluded Reads Characteristic", blacklist_test_service.get(), | 732 "Excluded Reads Characteristic", blacklist_test_service.get(), |
| 733 kBlacklistExcludeReadsCharacteristicUUID, | 733 kBlacklistExcludeReadsCharacteristicUUID, |
| 734 BluetoothGattCharacteristic::PROPERTY_READ | | 734 BluetoothRemoteGattCharacteristic::PROPERTY_READ | |
| 735 BluetoothGattCharacteristic::PROPERTY_WRITE)); | 735 BluetoothRemoteGattCharacteristic::PROPERTY_WRITE)); |
| 736 | 736 |
| 737 // Crash if ReadRemoteCharacteristic called. Not using GoogleMock's Expect | 737 // Crash if ReadRemoteCharacteristic called. Not using GoogleMock's Expect |
| 738 // because this is used in layout tests that may not report a mock expectation | 738 // because this is used in layout tests that may not report a mock expectation |
| 739 // error correctly as a layout test failure. | 739 // error correctly as a layout test failure. |
| 740 ON_CALL(*blacklist_exclude_reads_characteristic, | 740 ON_CALL(*blacklist_exclude_reads_characteristic, |
| 741 ReadRemoteCharacteristic(_, _)) | 741 ReadRemoteCharacteristic(_, _)) |
| 742 .WillByDefault( | 742 .WillByDefault( |
| 743 Invoke([](const BluetoothGattCharacteristic::ValueCallback&, | 743 Invoke([](const BluetoothRemoteGattCharacteristic::ValueCallback&, |
| 744 const BluetoothGattCharacteristic::ErrorCallback&) { | 744 const BluetoothRemoteGattCharacteristic::ErrorCallback&) { |
| 745 NOTREACHED(); | 745 NOTREACHED(); |
| 746 })); | 746 })); |
| 747 | 747 |
| 748 // Write response. | 748 // Write response. |
| 749 ON_CALL(*blacklist_exclude_reads_characteristic, | 749 ON_CALL(*blacklist_exclude_reads_characteristic, |
| 750 WriteRemoteCharacteristic(_, _, _)) | 750 WriteRemoteCharacteristic(_, _, _)) |
| 751 .WillByDefault(RunCallback<1 /* success callback */>()); | 751 .WillByDefault(RunCallback<1 /* success callback */>()); |
| 752 | 752 |
| 753 blacklist_test_service->AddMockCharacteristic( | 753 blacklist_test_service->AddMockCharacteristic( |
| 754 std::move(blacklist_exclude_reads_characteristic)); | 754 std::move(blacklist_exclude_reads_characteristic)); |
| 755 | 755 |
| 756 return blacklist_test_service; | 756 return blacklist_test_service; |
| 757 } | 757 } |
| 758 | 758 |
| 759 // static | 759 // static |
| 760 std::unique_ptr<NiceMockBluetoothGattService> | 760 std::unique_ptr<NiceMockBluetoothGattService> |
| 761 LayoutTestBluetoothAdapterProvider::GetDeviceInformationService( | 761 LayoutTestBluetoothAdapterProvider::GetDeviceInformationService( |
| 762 device::MockBluetoothDevice* device) { | 762 device::MockBluetoothDevice* device) { |
| 763 std::unique_ptr<NiceMockBluetoothGattService> device_information( | 763 std::unique_ptr<NiceMockBluetoothGattService> device_information( |
| 764 GetBaseGATTService(device, kDeviceInformationServiceUUID)); | 764 GetBaseGATTService(device, kDeviceInformationServiceUUID)); |
| 765 | 765 |
| 766 std::unique_ptr<NiceMockBluetoothGattCharacteristic> serial_number_string( | 766 std::unique_ptr<NiceMockBluetoothGattCharacteristic> serial_number_string( |
| 767 GetBaseGATTCharacteristic( | 767 GetBaseGATTCharacteristic( |
| 768 "Serial Number String", device_information.get(), | 768 "Serial Number String", device_information.get(), |
| 769 kSerialNumberStringUUID, BluetoothGattCharacteristic::PROPERTY_READ)); | 769 kSerialNumberStringUUID, |
| 770 BluetoothRemoteGattCharacteristic::PROPERTY_READ)); |
| 770 | 771 |
| 771 // Crash if ReadRemoteCharacteristic called. Not using GoogleMock's Expect | 772 // Crash if ReadRemoteCharacteristic called. Not using GoogleMock's Expect |
| 772 // because this is used in layout tests that may not report a mock expectation | 773 // because this is used in layout tests that may not report a mock expectation |
| 773 // error correctly as a layout test failure. | 774 // error correctly as a layout test failure. |
| 774 ON_CALL(*serial_number_string, ReadRemoteCharacteristic(_, _)) | 775 ON_CALL(*serial_number_string, ReadRemoteCharacteristic(_, _)) |
| 775 .WillByDefault( | 776 .WillByDefault( |
| 776 Invoke([](const BluetoothGattCharacteristic::ValueCallback&, | 777 Invoke([](const BluetoothRemoteGattCharacteristic::ValueCallback&, |
| 777 const BluetoothGattCharacteristic::ErrorCallback&) { | 778 const BluetoothRemoteGattCharacteristic::ErrorCallback&) { |
| 778 NOTREACHED(); | 779 NOTREACHED(); |
| 779 })); | 780 })); |
| 780 | 781 |
| 781 device_information->AddMockCharacteristic(std::move(serial_number_string)); | 782 device_information->AddMockCharacteristic(std::move(serial_number_string)); |
| 782 | 783 |
| 783 return device_information; | 784 return device_information; |
| 784 } | 785 } |
| 785 | 786 |
| 786 // static | 787 // static |
| 787 std::unique_ptr<NiceMockBluetoothGattService> | 788 std::unique_ptr<NiceMockBluetoothGattService> |
| 788 LayoutTestBluetoothAdapterProvider::GetGenericAccessService( | 789 LayoutTestBluetoothAdapterProvider::GetGenericAccessService( |
| 789 device::MockBluetoothDevice* device) { | 790 device::MockBluetoothDevice* device) { |
| 790 std::unique_ptr<NiceMockBluetoothGattService> generic_access( | 791 std::unique_ptr<NiceMockBluetoothGattService> generic_access( |
| 791 GetBaseGATTService(device, kGenericAccessServiceUUID)); | 792 GetBaseGATTService(device, kGenericAccessServiceUUID)); |
| 792 | 793 |
| 793 { // Device Name: | 794 { // Device Name: |
| 794 std::unique_ptr<NiceMockBluetoothGattCharacteristic> device_name( | 795 std::unique_ptr<NiceMockBluetoothGattCharacteristic> device_name( |
| 795 GetBaseGATTCharacteristic( | 796 GetBaseGATTCharacteristic( |
| 796 "Device Name", generic_access.get(), kDeviceNameUUID, | 797 "Device Name", generic_access.get(), kDeviceNameUUID, |
| 797 BluetoothGattCharacteristic::PROPERTY_READ | | 798 BluetoothRemoteGattCharacteristic::PROPERTY_READ | |
| 798 BluetoothGattCharacteristic::PROPERTY_WRITE)); | 799 BluetoothRemoteGattCharacteristic::PROPERTY_WRITE)); |
| 799 | 800 |
| 800 // Read response. | 801 // Read response. |
| 801 std::string device_name_str = device->GetDeviceName(); | 802 std::string device_name_str = device->GetDeviceName(); |
| 802 std::vector<uint8_t> device_name_value(device_name_str.begin(), | 803 std::vector<uint8_t> device_name_value(device_name_str.begin(), |
| 803 device_name_str.end()); | 804 device_name_str.end()); |
| 804 | 805 |
| 805 ON_CALL(*device_name, ReadRemoteCharacteristic(_, _)) | 806 ON_CALL(*device_name, ReadRemoteCharacteristic(_, _)) |
| 806 .WillByDefault(RunCallback<0>(device_name_value)); | 807 .WillByDefault(RunCallback<0>(device_name_value)); |
| 807 | 808 |
| 808 // Write response. | 809 // Write response. |
| 809 ON_CALL(*device_name, WriteRemoteCharacteristic(_, _, _)) | 810 ON_CALL(*device_name, WriteRemoteCharacteristic(_, _, _)) |
| 810 .WillByDefault(RunCallback<1 /* success callback */>()); | 811 .WillByDefault(RunCallback<1 /* success callback */>()); |
| 811 | 812 |
| 812 generic_access->AddMockCharacteristic(std::move(device_name)); | 813 generic_access->AddMockCharacteristic(std::move(device_name)); |
| 813 } | 814 } |
| 814 | 815 |
| 815 { // Peripheral Privacy Flag: | 816 { // Peripheral Privacy Flag: |
| 816 std::unique_ptr<NiceMockBluetoothGattCharacteristic> | 817 std::unique_ptr<NiceMockBluetoothGattCharacteristic> |
| 817 peripheral_privacy_flag(GetBaseGATTCharacteristic( | 818 peripheral_privacy_flag(GetBaseGATTCharacteristic( |
| 818 "Peripheral Privacy Flag", generic_access.get(), | 819 "Peripheral Privacy Flag", generic_access.get(), |
| 819 kPeripheralPrivacyFlagUUID, | 820 kPeripheralPrivacyFlagUUID, |
| 820 BluetoothGattCharacteristic::PROPERTY_READ | | 821 BluetoothRemoteGattCharacteristic::PROPERTY_READ | |
| 821 BluetoothGattCharacteristic::PROPERTY_WRITE)); | 822 BluetoothRemoteGattCharacteristic::PROPERTY_WRITE)); |
| 822 | 823 |
| 823 // Read response. | 824 // Read response. |
| 824 std::vector<uint8_t> value(1); | 825 std::vector<uint8_t> value(1); |
| 825 value[0] = false; | 826 value[0] = false; |
| 826 | 827 |
| 827 ON_CALL(*peripheral_privacy_flag, ReadRemoteCharacteristic(_, _)) | 828 ON_CALL(*peripheral_privacy_flag, ReadRemoteCharacteristic(_, _)) |
| 828 .WillByDefault(RunCallback<0>(value)); | 829 .WillByDefault(RunCallback<0>(value)); |
| 829 | 830 |
| 830 // Crash if WriteRemoteCharacteristic called. Not using GoogleMock's Expect | 831 // Crash if WriteRemoteCharacteristic called. Not using GoogleMock's Expect |
| 831 // because this is used in layout tests that may not report a mock | 832 // because this is used in layout tests that may not report a mock |
| 832 // expectation error correctly as a layout test failure. | 833 // expectation error correctly as a layout test failure. |
| 833 ON_CALL(*peripheral_privacy_flag, WriteRemoteCharacteristic(_, _, _)) | 834 ON_CALL(*peripheral_privacy_flag, WriteRemoteCharacteristic(_, _, _)) |
| 834 .WillByDefault( | 835 .WillByDefault( |
| 835 Invoke([](const std::vector<uint8_t>&, const base::Closure&, | 836 Invoke([](const std::vector<uint8_t>&, const base::Closure&, |
| 836 const BluetoothGattCharacteristic::ErrorCallback&) { | 837 const BluetoothRemoteGattCharacteristic::ErrorCallback&) { |
| 837 NOTREACHED(); | 838 NOTREACHED(); |
| 838 })); | 839 })); |
| 839 | 840 |
| 840 generic_access->AddMockCharacteristic(std::move(peripheral_privacy_flag)); | 841 generic_access->AddMockCharacteristic(std::move(peripheral_privacy_flag)); |
| 841 } | 842 } |
| 842 | 843 |
| 843 return generic_access; | 844 return generic_access; |
| 844 } | 845 } |
| 845 | 846 |
| 846 // static | 847 // static |
| 847 std::unique_ptr<NiceMockBluetoothGattService> | 848 std::unique_ptr<NiceMockBluetoothGattService> |
| 848 LayoutTestBluetoothAdapterProvider::GetHeartRateService( | 849 LayoutTestBluetoothAdapterProvider::GetHeartRateService( |
| 849 MockBluetoothAdapter* adapter, | 850 MockBluetoothAdapter* adapter, |
| 850 MockBluetoothDevice* device) { | 851 MockBluetoothDevice* device) { |
| 851 std::unique_ptr<NiceMockBluetoothGattService> heart_rate( | 852 std::unique_ptr<NiceMockBluetoothGattService> heart_rate( |
| 852 GetBaseGATTService(device, kHeartRateServiceUUID)); | 853 GetBaseGATTService(device, kHeartRateServiceUUID)); |
| 853 | 854 |
| 854 // Heart Rate Measurement | 855 // Heart Rate Measurement |
| 855 std::unique_ptr<NiceMockBluetoothGattCharacteristic> heart_rate_measurement( | 856 std::unique_ptr<NiceMockBluetoothGattCharacteristic> heart_rate_measurement( |
| 856 GetBaseGATTCharacteristic("Heart Rate Measurement", heart_rate.get(), | 857 GetBaseGATTCharacteristic( |
| 857 kHeartRateMeasurementUUID, | 858 "Heart Rate Measurement", heart_rate.get(), kHeartRateMeasurementUUID, |
| 858 BluetoothGattCharacteristic::PROPERTY_NOTIFY)); | 859 BluetoothRemoteGattCharacteristic::PROPERTY_NOTIFY)); |
| 859 NiceMockBluetoothGattCharacteristic* measurement_ptr = | 860 NiceMockBluetoothGattCharacteristic* measurement_ptr = |
| 860 heart_rate_measurement.get(); | 861 heart_rate_measurement.get(); |
| 861 | 862 |
| 862 ON_CALL(*heart_rate_measurement, StartNotifySession(_, _)) | 863 ON_CALL(*heart_rate_measurement, StartNotifySession(_, _)) |
| 863 .WillByDefault(RunCallbackWithResult<0 /* success_callback */>( | 864 .WillByDefault(RunCallbackWithResult<0 /* success_callback */>( |
| 864 [adapter, measurement_ptr]() { | 865 [adapter, measurement_ptr]() { |
| 865 std::unique_ptr<NiceMockBluetoothGattNotifySession> notify_session( | 866 std::unique_ptr<NiceMockBluetoothGattNotifySession> notify_session( |
| 866 GetBaseGATTNotifySession(measurement_ptr->GetIdentifier())); | 867 GetBaseGATTNotifySession(measurement_ptr->GetIdentifier())); |
| 867 | 868 |
| 868 std::vector<uint8_t> rate(1 /* size */); | 869 std::vector<uint8_t> rate(1 /* size */); |
| 869 rate[0] = 60; | 870 rate[0] = 60; |
| 870 | 871 |
| 871 notify_session->StartTestNotifications(adapter, measurement_ptr, | 872 notify_session->StartTestNotifications(adapter, measurement_ptr, |
| 872 rate); | 873 rate); |
| 873 | 874 |
| 874 return notify_session; | 875 return notify_session; |
| 875 })); | 876 })); |
| 876 | 877 |
| 877 // Body Sensor Location Characteristic (Chest) | 878 // Body Sensor Location Characteristic (Chest) |
| 878 std::unique_ptr<NiceMockBluetoothGattCharacteristic> | 879 std::unique_ptr<NiceMockBluetoothGattCharacteristic> |
| 879 body_sensor_location_chest(GetBaseGATTCharacteristic( | 880 body_sensor_location_chest(GetBaseGATTCharacteristic( |
| 880 "Body Sensor Location Chest", heart_rate.get(), kBodySensorLocation, | 881 "Body Sensor Location Chest", heart_rate.get(), kBodySensorLocation, |
| 881 BluetoothGattCharacteristic::PROPERTY_READ)); | 882 BluetoothRemoteGattCharacteristic::PROPERTY_READ)); |
| 882 BluetoothGattCharacteristic* location_chest_ptr = | 883 BluetoothRemoteGattCharacteristic* location_chest_ptr = |
| 883 body_sensor_location_chest.get(); | 884 body_sensor_location_chest.get(); |
| 884 | 885 |
| 885 ON_CALL(*body_sensor_location_chest, ReadRemoteCharacteristic(_, _)) | 886 ON_CALL(*body_sensor_location_chest, ReadRemoteCharacteristic(_, _)) |
| 886 .WillByDefault(RunCallbackWithResult<0 /* success_callback */>( | 887 .WillByDefault(RunCallbackWithResult<0 /* success_callback */>( |
| 887 [adapter, location_chest_ptr]() { | 888 [adapter, location_chest_ptr]() { |
| 888 std::vector<uint8_t> location(1 /* size */); | 889 std::vector<uint8_t> location(1 /* size */); |
| 889 location[0] = 1; // Chest | 890 location[0] = 1; // Chest |
| 890 // Read a characteristic has a side effect of | 891 // Read a characteristic has a side effect of |
| 891 // GattCharacteristicValueChanged being called. | 892 // GattCharacteristicValueChanged being called. |
| 892 FOR_EACH_OBSERVER(BluetoothAdapter::Observer, | 893 FOR_EACH_OBSERVER(BluetoothAdapter::Observer, |
| 893 adapter->GetObservers(), | 894 adapter->GetObservers(), |
| 894 GattCharacteristicValueChanged( | 895 GattCharacteristicValueChanged( |
| 895 adapter, location_chest_ptr, location)); | 896 adapter, location_chest_ptr, location)); |
| 896 return location; | 897 return location; |
| 897 })); | 898 })); |
| 898 | 899 |
| 899 // Body Sensor Location Characteristic (Wrist) | 900 // Body Sensor Location Characteristic (Wrist) |
| 900 std::unique_ptr<NiceMockBluetoothGattCharacteristic> | 901 std::unique_ptr<NiceMockBluetoothGattCharacteristic> |
| 901 body_sensor_location_wrist(GetBaseGATTCharacteristic( | 902 body_sensor_location_wrist(GetBaseGATTCharacteristic( |
| 902 "Body Sensor Location Wrist", heart_rate.get(), kBodySensorLocation, | 903 "Body Sensor Location Wrist", heart_rate.get(), kBodySensorLocation, |
| 903 BluetoothGattCharacteristic::PROPERTY_READ)); | 904 BluetoothRemoteGattCharacteristic::PROPERTY_READ)); |
| 904 BluetoothGattCharacteristic* location_wrist_ptr = | 905 BluetoothRemoteGattCharacteristic* location_wrist_ptr = |
| 905 body_sensor_location_wrist.get(); | 906 body_sensor_location_wrist.get(); |
| 906 | 907 |
| 907 ON_CALL(*body_sensor_location_wrist, ReadRemoteCharacteristic(_, _)) | 908 ON_CALL(*body_sensor_location_wrist, ReadRemoteCharacteristic(_, _)) |
| 908 .WillByDefault(RunCallbackWithResult<0 /* success_callback */>( | 909 .WillByDefault(RunCallbackWithResult<0 /* success_callback */>( |
| 909 [adapter, location_wrist_ptr]() { | 910 [adapter, location_wrist_ptr]() { |
| 910 std::vector<uint8_t> location(1 /* size */); | 911 std::vector<uint8_t> location(1 /* size */); |
| 911 location[0] = 2; // Wrist | 912 location[0] = 2; // Wrist |
| 912 // Read a characteristic has a side effect of | 913 // Read a characteristic has a side effect of |
| 913 // GattCharacteristicValueChanged being called. | 914 // GattCharacteristicValueChanged being called. |
| 914 FOR_EACH_OBSERVER(BluetoothAdapter::Observer, | 915 FOR_EACH_OBSERVER(BluetoothAdapter::Observer, |
| (...skipping 11 matching lines...) Expand all Loading... |
| 926 } | 927 } |
| 927 | 928 |
| 928 // Characteristics | 929 // Characteristics |
| 929 | 930 |
| 930 // static | 931 // static |
| 931 std::unique_ptr<NiceMockBluetoothGattCharacteristic> | 932 std::unique_ptr<NiceMockBluetoothGattCharacteristic> |
| 932 LayoutTestBluetoothAdapterProvider::GetBaseGATTCharacteristic( | 933 LayoutTestBluetoothAdapterProvider::GetBaseGATTCharacteristic( |
| 933 const std::string& identifier, | 934 const std::string& identifier, |
| 934 MockBluetoothGattService* service, | 935 MockBluetoothGattService* service, |
| 935 const std::string& uuid, | 936 const std::string& uuid, |
| 936 BluetoothGattCharacteristic::Properties properties) { | 937 BluetoothRemoteGattCharacteristic::Properties properties) { |
| 937 return base::WrapUnique(new NiceMockBluetoothGattCharacteristic( | 938 return base::WrapUnique(new NiceMockBluetoothGattCharacteristic( |
| 938 service, identifier, BluetoothUUID(uuid), false /* is_local */, | 939 service, identifier, BluetoothUUID(uuid), false /* is_local */, |
| 939 properties, NULL /* permissions */)); | 940 properties, NULL /* permissions */)); |
| 940 } | 941 } |
| 941 | 942 |
| 942 // static | 943 // static |
| 943 std::unique_ptr<NiceMockBluetoothGattCharacteristic> | 944 std::unique_ptr<NiceMockBluetoothGattCharacteristic> |
| 944 LayoutTestBluetoothAdapterProvider::GetErrorCharacteristic( | 945 LayoutTestBluetoothAdapterProvider::GetErrorCharacteristic( |
| 945 MockBluetoothGattService* service, | 946 MockBluetoothGattService* service, |
| 946 BluetoothGattService::GattErrorCode error_code) { | 947 BluetoothRemoteGattService::GattErrorCode error_code) { |
| 947 uint32_t error_alias = error_code + 0xA1; // Error UUIDs start at 0xA1. | 948 uint32_t error_alias = error_code + 0xA1; // Error UUIDs start at 0xA1. |
| 948 std::unique_ptr<NiceMockBluetoothGattCharacteristic> characteristic( | 949 std::unique_ptr<NiceMockBluetoothGattCharacteristic> characteristic( |
| 949 GetBaseGATTCharacteristic( | 950 GetBaseGATTCharacteristic( |
| 950 // Use the UUID to generate unique identifiers. | 951 // Use the UUID to generate unique identifiers. |
| 951 "Error Characteristic " + errorUUID(error_alias), service, | 952 "Error Characteristic " + errorUUID(error_alias), service, |
| 952 errorUUID(error_alias), | 953 errorUUID(error_alias), |
| 953 BluetoothGattCharacteristic::PROPERTY_READ | | 954 BluetoothRemoteGattCharacteristic::PROPERTY_READ | |
| 954 BluetoothGattCharacteristic::PROPERTY_WRITE | | 955 BluetoothRemoteGattCharacteristic::PROPERTY_WRITE | |
| 955 BluetoothGattCharacteristic::PROPERTY_INDICATE)); | 956 BluetoothRemoteGattCharacteristic::PROPERTY_INDICATE)); |
| 956 | 957 |
| 957 // Read response. | 958 // Read response. |
| 958 ON_CALL(*characteristic, ReadRemoteCharacteristic(_, _)) | 959 ON_CALL(*characteristic, ReadRemoteCharacteristic(_, _)) |
| 959 .WillByDefault(RunCallback<1 /* error_callback */>(error_code)); | 960 .WillByDefault(RunCallback<1 /* error_callback */>(error_code)); |
| 960 | 961 |
| 961 // Write response. | 962 // Write response. |
| 962 ON_CALL(*characteristic, WriteRemoteCharacteristic(_, _, _)) | 963 ON_CALL(*characteristic, WriteRemoteCharacteristic(_, _, _)) |
| 963 .WillByDefault(RunCallback<2 /* error_callback */>(error_code)); | 964 .WillByDefault(RunCallback<2 /* error_callback */>(error_code)); |
| 964 | 965 |
| 965 // StartNotifySession response | 966 // StartNotifySession response |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1040 return BluetoothUUID(); | 1041 return BluetoothUUID(); |
| 1041 } | 1042 } |
| 1042 | 1043 |
| 1043 // static | 1044 // static |
| 1044 std::string LayoutTestBluetoothAdapterProvider::makeMACAddress(uint64_t addr) { | 1045 std::string LayoutTestBluetoothAdapterProvider::makeMACAddress(uint64_t addr) { |
| 1045 return BluetoothDevice::CanonicalizeAddress( | 1046 return BluetoothDevice::CanonicalizeAddress( |
| 1046 base::StringPrintf("%012" PRIx64, addr)); | 1047 base::StringPrintf("%012" PRIx64, addr)); |
| 1047 } | 1048 } |
| 1048 | 1049 |
| 1049 } // namespace content | 1050 } // namespace content |
| OLD | NEW |