| Index: device/bluetooth/test/bluetooth_test_mac.mm
|
| diff --git a/device/bluetooth/test/bluetooth_test_mac.mm b/device/bluetooth/test/bluetooth_test_mac.mm
|
| index fc1c81fc78d323ed31239426a416479837e75d00..3f9f72f833a7cb6a13cdbf6aed93c5268a8dfe59 100644
|
| --- a/device/bluetooth/test/bluetooth_test_mac.mm
|
| +++ b/device/bluetooth/test/bluetooth_test_mac.mm
|
| @@ -2,68 +2,17 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#include "base/strings/string_number_conversions.h"
|
| #include "device/bluetooth/bluetooth_adapter_mac.h"
|
| #include "device/bluetooth/test/bluetooth_test_mac.h"
|
| #include "device/bluetooth/test/mock_bluetooth_central_manager_mac.h"
|
| -#include "third_party/ocmock/OCMock/OCMock.h"
|
| -
|
| -#if defined(OS_IOS)
|
| -#import <CoreBluetooth/CoreBluetooth.h>
|
| -#else // !defined(OS_IOS)
|
| -#import <IOBluetooth/IOBluetooth.h>
|
| -#endif // defined(OS_IOS)
|
|
|
| namespace device {
|
| -
|
| -namespace {
|
| -
|
| -CBPeripheral* CreateMockPeripheral(NSString* identifier) {
|
| - Class peripheral_class = NSClassFromString(@"CBPeripheral");
|
| - id mock_peripheral = [OCMockObject mockForClass:[peripheral_class class]];
|
| - [static_cast<CBPeripheral*>(
|
| - [[mock_peripheral stub] andReturnValue:@(CBPeripheralStateDisconnected)])
|
| - performSelector:@selector(state)];
|
| - [[[mock_peripheral stub] andReturn:[NSString string]] name];
|
| - Class uuid_class = NSClassFromString(@"NSUUID");
|
| - [[[mock_peripheral stub]
|
| - andReturn:[[uuid_class performSelector:@selector(UUID)]
|
| - performSelector:@selector(initWithUUIDString:)
|
| - withObject:identifier]] identifier];
|
| -
|
| - return mock_peripheral;
|
| -}
|
| -
|
| -NSDictionary* CreateAdvertisementData(NSString* name, NSArray* uuids) {
|
| - NSMutableDictionary* advertisement_data =
|
| - [NSMutableDictionary dictionaryWithDictionary:@{
|
| - @"CBAdvertisementDataLocalNameKey" : name,
|
| - @"CBAdvertisementDataServiceDataKey" : [NSDictionary dictionary],
|
| - @"CBAdvertisementDataIsConnectable" : @(YES),
|
| - }];
|
| - if (uuids)
|
| - [advertisement_data setObject:uuids
|
| - forKey:@"CBAdvertisementDataServiceUUIDsKey"];
|
| - return advertisement_data;
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -// UUID1 hashes to kTestDeviceAddress1, and UUID2 to kTestDeviceAddress2.
|
| -const std::string BluetoothTestMac::kTestPeripheralUUID1 =
|
| - "34045B00-0000-0000-0000-000000000000";
|
| -const std::string BluetoothTestMac::kTestPeripheralUUID2 =
|
| - "EC1B8F00-0000-0000-0000-000000000000";
|
|
|
| BluetoothTestMac::BluetoothTestMac() {}
|
|
|
| BluetoothTestMac::~BluetoothTestMac() {}
|
|
|
| void BluetoothTestMac::SetUp() {}
|
| -
|
| -bool BluetoothTestMac::PlatformSupportsLowEnergy() {
|
| - return BluetoothAdapterMac::IsLowEnergyAvailable();
|
| -}
|
|
|
| void BluetoothTestMac::InitWithDefaultAdapter() {
|
| adapter_mac_ = BluetoothAdapterMac::CreateAdapter().get();
|
| @@ -97,112 +46,4 @@
|
| }
|
| }
|
|
|
| -void BluetoothTestMac::DiscoverLowEnergyDevice(int device_ordinal) {
|
| - CBCentralManager* central_manager = adapter_mac_->low_energy_central_manager_;
|
| - BluetoothLowEnergyCentralManagerDelegate* central_manager_delegate =
|
| - adapter_mac_->low_energy_central_manager_delegate_;
|
| - switch (device_ordinal) {
|
| - case 1: {
|
| - CBPeripheral* peripheral = CreateMockPeripheral(
|
| - [NSString stringWithUTF8String:kTestPeripheralUUID1.c_str()]);
|
| - NSString* name = [NSString stringWithUTF8String:kTestDeviceName.c_str()];
|
| - NSArray* uuids = @[
|
| - [CBUUID
|
| - UUIDWithString:[NSString stringWithUTF8String:kTestUUIDGenericAccess
|
| - .c_str()]],
|
| - [CBUUID
|
| - UUIDWithString:[NSString
|
| - stringWithUTF8String:kTestUUIDGenericAttribute
|
| - .c_str()]]
|
| - ];
|
| - NSDictionary* advertisement_data = CreateAdvertisementData(name, uuids);
|
| - [central_manager_delegate centralManager:central_manager
|
| - didDiscoverPeripheral:peripheral
|
| - advertisementData:advertisement_data
|
| - RSSI:0];
|
| - break;
|
| - }
|
| - case 2: {
|
| - CBPeripheral* peripheral = CreateMockPeripheral(
|
| - [NSString stringWithUTF8String:kTestPeripheralUUID1.c_str()]);
|
| - NSString* name = [NSString stringWithUTF8String:kTestDeviceName.c_str()];
|
| - NSArray* uuids = @[
|
| - [CBUUID UUIDWithString:[NSString
|
| - stringWithUTF8String:kTestUUIDImmediateAlert
|
| - .c_str()]],
|
| - [CBUUID
|
| - UUIDWithString:[NSString
|
| - stringWithUTF8String:kTestUUIDLinkLoss.c_str()]]
|
| - ];
|
| - NSDictionary* advertisement_data = CreateAdvertisementData(name, uuids);
|
| - [central_manager_delegate centralManager:central_manager
|
| - didDiscoverPeripheral:peripheral
|
| - advertisementData:advertisement_data
|
| - RSSI:0];
|
| - break;
|
| - }
|
| - case 3: {
|
| - CBPeripheral* peripheral = CreateMockPeripheral(
|
| - [NSString stringWithUTF8String:kTestPeripheralUUID1.c_str()]);
|
| - NSString* name =
|
| - [NSString stringWithUTF8String:kTestDeviceNameEmpty.c_str()];
|
| - NSArray* uuids = nil;
|
| - NSDictionary* advertisement_data = CreateAdvertisementData(name, uuids);
|
| - [central_manager_delegate centralManager:central_manager
|
| - didDiscoverPeripheral:peripheral
|
| - advertisementData:advertisement_data
|
| - RSSI:0];
|
| - break;
|
| - }
|
| - case 4: {
|
| - CBPeripheral* peripheral = CreateMockPeripheral(
|
| - [NSString stringWithUTF8String:kTestPeripheralUUID2.c_str()]);
|
| - NSString* name =
|
| - [NSString stringWithUTF8String:kTestDeviceNameEmpty.c_str()];
|
| - NSArray* uuids = nil;
|
| - NSDictionary* advertisement_data = CreateAdvertisementData(name, uuids);
|
| - [central_manager_delegate centralManager:central_manager
|
| - didDiscoverPeripheral:peripheral
|
| - advertisementData:advertisement_data
|
| - RSSI:0];
|
| - break;
|
| - }
|
| - }
|
| -}
|
| -
|
| -// Utility function for generating new (CBUUID, address) pairs where CBUUID
|
| -// hashes to address. For use when adding a new device address to the testing
|
| -// suite because CoreBluetooth peripherals have CBUUIDs in place of addresses,
|
| -// and we construct fake addresses for them by hashing the CBUUID. By changing
|
| -// |target| the user can generate sequentially numbered test addresses.
|
| -//
|
| -// std::string BluetoothTestMac::FindCBUUIDForHashTarget() {
|
| -// // The desired first 6 digits of the hash. For example 0100000, 020000,
|
| -// // 030000, ...
|
| -// const std::string target = "010000";
|
| -// // 128 bit buffer to be encoded as a hex string.
|
| -// int64_t input[2] = {0};
|
| -// // There are 2^24 ~ 10^7 possible configurations for the first 6 digits,
|
| -// // ie. each input has probability 10^-7 of succeeding, under the dubious
|
| -// // assumption that traversing inputs sequentially is as good as traversing
|
| -// // them randomly. After 10^8 iterations then the probability of never
|
| -// // succeeding is ((10^7-1)/10^7)^(10^8) ~= 10^-5.
|
| -// while (input[0] < LLONG_MAX) {
|
| -// // Encode as a hexidecimal number. Note that on x86 input[0] is stored
|
| -// // as a little-endian number, and so read backwards by HexEncode.
|
| -// std::string input_str = base::HexEncode(&input, sizeof(input));
|
| -// input_str.insert(20, "-");
|
| -// input_str.insert(16, "-");
|
| -// input_str.insert(12, "-");
|
| -// input_str.insert(8, "-");
|
| -// char raw[3];
|
| -// crypto::SHA256HashString(input_str, raw, sizeof(raw));
|
| -// if (base::HexEncode(raw, sizeof(raw)) == target) {
|
| -// return input_str;
|
| -// }
|
| -// ++input[0];
|
| -// }
|
| -// return "";
|
| -// }
|
| -
|
| } // namespace device
|
|
|