Chromium Code Reviews| 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 110e9f992832b5c145b29f2809c64e64f3f5b622..230a48f3bd09efffd12d0786e5066a3678194f31 100644 |
| --- a/device/bluetooth/test/bluetooth_test_mac.mm |
| +++ b/device/bluetooth/test/bluetooth_test_mac.mm |
| @@ -9,15 +9,12 @@ |
| #include "base/strings/string_number_conversions.h" |
| #include "build/build_config.h" |
| #include "device/bluetooth/bluetooth_adapter_mac.h" |
| +#include "device/bluetooth/test/mock_bluetooth_cbperipheral_mac.h" |
| #include "device/bluetooth/test/mock_bluetooth_central_manager_mac.h" |
| #include "device/bluetooth/test/test_bluetooth_adapter_observer.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 { |
| @@ -63,7 +60,9 @@ const std::string BluetoothTestMac::kTestPeripheralUUID2 = |
| BluetoothTestMac::BluetoothTestMac() {} |
| -BluetoothTestMac::~BluetoothTestMac() {} |
| +BluetoothTestMac::~BluetoothTestMac() { |
| + [static_cast<MockCentralManager*>(mock_central_manager_) release]; |
| +} |
| void BluetoothTestMac::SetUp() {} |
| @@ -83,9 +82,12 @@ void BluetoothTestMac::InitWithoutDefaultAdapter() { |
| adapter_ = adapter_mac_; |
| if (BluetoothAdapterMac::IsLowEnergyAvailable()) { |
| - id low_energy_central_manager = [[MockCentralManager alloc] init]; |
| - [low_energy_central_manager setState:CBCentralManagerStateUnsupported]; |
| - adapter_mac_->SetCentralManagerForTesting(low_energy_central_manager); |
| + mock_central_manager_ = [[MockCentralManager alloc] init]; |
|
msarda
2016/02/11 10:55:39
Use scoped_nsobject to avoid having to release thi
jlebel
2016/02/19 11:02:36
I can't use objective-c type in this header file.
|
| + MockCentralManager* mock_central_manager = |
| + static_cast<MockCentralManager*>(mock_central_manager_); |
| + [mock_central_manager setBluetoothTestMac:this]; |
| + [mock_central_manager setState:CBCentralManagerStateUnsupported]; |
| + adapter_mac_->SetCentralManagerForTesting((id)mock_central_manager); |
| } |
| } |
| @@ -97,9 +99,12 @@ void BluetoothTestMac::InitWithFakeAdapter() { |
| adapter_ = adapter_mac_; |
| if (BluetoothAdapterMac::IsLowEnergyAvailable()) { |
| - id low_energy_central_manager = [[MockCentralManager alloc] init]; |
| - [low_energy_central_manager setState:CBCentralManagerStatePoweredOn]; |
| - adapter_mac_->SetCentralManagerForTesting(low_energy_central_manager); |
| + mock_central_manager_ = [[MockCentralManager alloc] init]; |
| + MockCentralManager* mock_central_manager = |
| + static_cast<MockCentralManager*>(mock_central_manager_); |
| + mock_central_manager.bluetoothTestMac = this; |
| + [mock_central_manager setState:CBCentralManagerStatePoweredOn]; |
| + adapter_mac_->SetCentralManagerForTesting((id)mock_central_manager); |
| } |
| } |
| @@ -151,12 +156,17 @@ BluetoothDevice* BluetoothTestMac::DiscoverLowEnergyDevice(int device_ordinal) { |
| 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); |
| + base::scoped_nsobject<NSString> uuid_string( |
| + [[NSString alloc] initWithUTF8String:kTestPeripheralUUID1.c_str()]); |
| + base::scoped_nsobject<NSUUID> identifier( |
| + [[NSUUID alloc] initWithUUIDString:uuid_string]); |
| + base::scoped_nsobject<CBPeripheral> peripheral; |
| + peripheral.reset(static_cast<CBPeripheral*>( |
| + [[MockCBPeripheral alloc] initWithIdentifier:identifier])); |
| + base::scoped_nsobject<NSString> name( |
| + [[NSString alloc] initWithUTF8String:kTestDeviceNameEmpty.c_str()]); |
| + base::scoped_nsobject<NSDictionary> advertisement_data( |
| + [CreateAdvertisementData(name, nil) retain]); |
| [central_manager_delegate centralManager:central_manager |
| didDiscoverPeripheral:peripheral |
| advertisementData:advertisement_data |
| @@ -180,6 +190,59 @@ BluetoothDevice* BluetoothTestMac::DiscoverLowEnergyDevice(int device_ordinal) { |
| return observer.last_device(); |
| } |
| +void BluetoothTestMac::SimulateGattConnection(BluetoothDevice* device) { |
| + BluetoothLowEnergyDeviceMac* lowEnergyDeviceMac = |
| + (BluetoothLowEnergyDeviceMac*)device; |
| + CBPeripheral* peripheral = lowEnergyDeviceMac->GetPeripheral(); |
| + MockCBPeripheral* mockPeripheral = (MockCBPeripheral*)peripheral; |
|
msarda
2016/02/11 10:55:39
Use ObjCCast or ObjCCastStrict from https://code.g
|
| + [mockPeripheral setStateForTesting:CBPeripheralStateConnected]; |
| + CBCentralManager* centralManager = |
|
msarda
2016/02/11 10:55:39
Here and everywhere below:
static_cast on Objectiv
jlebel
2016/02/19 11:02:35
Done.
msarda
2016/02/22 14:01:06
This was not Done.
|
| + static_cast<CBCentralManager*>(mock_central_manager_); |
| + [centralManager.delegate centralManager:centralManager |
| + didConnectPeripheral:peripheral]; |
| +} |
| + |
| +void BluetoothTestMac::SimulateGattDisconnection(BluetoothDevice* device) { |
| + BluetoothLowEnergyDeviceMac* lowEnergyDeviceMac = |
|
msarda
2016/02/11 10:55:39
Cast
jlebel
2016/02/19 11:02:35
Done.
|
| + (BluetoothLowEnergyDeviceMac*)device; |
| + CBPeripheral* peripheral = lowEnergyDeviceMac->GetPeripheral(); |
| + MockCBPeripheral* mockPeripheral = (MockCBPeripheral*)peripheral; |
| + [mockPeripheral setStateForTesting:CBPeripheralStateDisconnected]; |
| + CBCentralManager* centralManager = |
| + static_cast<CBCentralManager*>(mock_central_manager_); |
| + [centralManager.delegate centralManager:centralManager |
| + didDisconnectPeripheral:peripheral |
| + error:nil]; |
| +} |
| + |
| +void BluetoothTestMac::SimulateGattConnectionError( |
| + BluetoothDevice* device, |
| + BluetoothDevice::ConnectErrorCode errorCode) { |
| + BluetoothLowEnergyDeviceMac* lowEnergyDeviceMac = |
| + (BluetoothLowEnergyDeviceMac*)device; |
| + CBPeripheral* peripheral = lowEnergyDeviceMac->GetPeripheral(); |
| + MockCBPeripheral* mockPeripheral = (MockCBPeripheral*)peripheral; |
| + [mockPeripheral setStateForTesting:CBPeripheralStateDisconnected]; |
| + CBCentralManager* centralManager = |
| + static_cast<CBCentralManager*>(mock_central_manager_); |
| + // TODO(http://crbug.com/585894): Need to convert the connect error code into |
| + // NSError |
| + NSError* error = [NSError errorWithDomain:@"BluetoothDevice::ConnectErrorCode" |
| + code:-1 |
| + userInfo:nil]; |
| + [centralManager.delegate centralManager:centralManager |
| + didFailToConnectPeripheral:peripheral |
| + error:error]; |
| +} |
| + |
| +void BluetoothTestMac::OnFakeBluetoothDeviceConnectGattCalled() { |
| + gatt_connection_attempts_++; |
| +} |
| + |
| +void BluetoothTestMac::OnFakeBluetoothGattDisconnect() { |
| + gatt_disconnection_attempts_++; |
| +} |
| + |
| // 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, |