| Index: device/bluetooth/test/mock_bluetooth_cbcharacteristic_mac.mm
|
| diff --git a/device/bluetooth/test/mock_bluetooth_cbcharacteristic_mac.mm b/device/bluetooth/test/mock_bluetooth_cbcharacteristic_mac.mm
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..97d260a41709dc7f8db72c1ed4127c0cb69ebd06
|
| --- /dev/null
|
| +++ b/device/bluetooth/test/mock_bluetooth_cbcharacteristic_mac.mm
|
| @@ -0,0 +1,138 @@
|
| +// Copyright 2016 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "device/bluetooth/test/mock_bluetooth_cbcharacteristic_mac.h"
|
| +
|
| +#include "base/mac/foundation_util.h"
|
| +#include "base/mac/scoped_nsobject.h"
|
| +#include "device/bluetooth/bluetooth_gatt_characteristic.h"
|
| +
|
| +using base::mac::ObjCCast;
|
| +using base::scoped_nsobject;
|
| +
|
| +namespace device {
|
| +
|
| +namespace {
|
| +
|
| +CBCharacteristicProperties AddCBCharacteristicProperties(
|
| + CBCharacteristicProperties value1,
|
| + CBCharacteristicProperties value2) {
|
| + return static_cast<CBCharacteristicProperties>(value1 | value2);
|
| +}
|
| +
|
| +CBCharacteristicProperties GattCharacteristicPropertyToCBCharacteristicProperty(
|
| + BluetoothGattCharacteristic::Properties gatt_property) {
|
| + CBCharacteristicProperties result =
|
| + static_cast<CBCharacteristicProperties>(0);
|
| + if (gatt_property & BluetoothGattCharacteristic::PROPERTY_BROADCAST) {
|
| + result = AddCBCharacteristicProperties(result,
|
| + CBCharacteristicPropertyBroadcast);
|
| + }
|
| + if (gatt_property & BluetoothGattCharacteristic::PROPERTY_READ) {
|
| + result =
|
| + AddCBCharacteristicProperties(result, CBCharacteristicPropertyRead);
|
| + }
|
| + if (gatt_property &
|
| + BluetoothGattCharacteristic::PROPERTY_WRITE_WITHOUT_RESPONSE) {
|
| + result = AddCBCharacteristicProperties(
|
| + result, CBCharacteristicPropertyWriteWithoutResponse);
|
| + }
|
| + if (gatt_property & BluetoothGattCharacteristic::PROPERTY_WRITE) {
|
| + result =
|
| + AddCBCharacteristicProperties(result, CBCharacteristicPropertyWrite);
|
| + }
|
| + if (gatt_property & BluetoothGattCharacteristic::PROPERTY_NOTIFY) {
|
| + result =
|
| + AddCBCharacteristicProperties(result, CBCharacteristicPropertyNotify);
|
| + }
|
| + if (gatt_property & BluetoothGattCharacteristic::PROPERTY_INDICATE) {
|
| + result =
|
| + AddCBCharacteristicProperties(result, CBCharacteristicPropertyIndicate);
|
| + }
|
| + if (gatt_property &
|
| + BluetoothGattCharacteristic::PROPERTY_AUTHENTICATED_SIGNED_WRITES) {
|
| + result = AddCBCharacteristicProperties(
|
| + result, CBCharacteristicPropertyAuthenticatedSignedWrites);
|
| + }
|
| + if (gatt_property &
|
| + BluetoothGattCharacteristic::PROPERTY_EXTENDED_PROPERTIES) {
|
| + result = AddCBCharacteristicProperties(
|
| + result, CBCharacteristicPropertyExtendedProperties);
|
| + }
|
| + if (gatt_property & BluetoothGattCharacteristic::PROPERTY_RELIABLE_WRITE) {
|
| + }
|
| + if (gatt_property &
|
| + BluetoothGattCharacteristic::PROPERTY_WRITABLE_AUXILIARIES) {
|
| + }
|
| + if (gatt_property & BluetoothGattCharacteristic::PROPERTY_READ_ENCRYPTED) {
|
| + result =
|
| + AddCBCharacteristicProperties(result, CBCharacteristicPropertyRead);
|
| + }
|
| + if (gatt_property & BluetoothGattCharacteristic::PROPERTY_WRITE_ENCRYPTED) {
|
| + result =
|
| + AddCBCharacteristicProperties(result, CBCharacteristicPropertyWrite);
|
| + }
|
| + if (gatt_property &
|
| + BluetoothGattCharacteristic::PROPERTY_READ_ENCRYPTED_AUTHENTICATED) {
|
| + result =
|
| + AddCBCharacteristicProperties(result, CBCharacteristicPropertyRead);
|
| + }
|
| + if (gatt_property &
|
| + BluetoothGattCharacteristic::PROPERTY_WRITE_ENCRYPTED_AUTHENTICATED) {
|
| + result =
|
| + AddCBCharacteristicProperties(result, CBCharacteristicPropertyWrite);
|
| + }
|
| + return result;
|
| +}
|
| +} // namespace
|
| +} // device
|
| +
|
| +@interface MockCBCharacteristic () {
|
| + scoped_nsobject<CBUUID> _UUID;
|
| + CBCharacteristicProperties _cb_properties;
|
| +}
|
| +@end
|
| +
|
| +@implementation MockCBCharacteristic
|
| +
|
| +- (instancetype)initWithCBUUID:(CBUUID*)uuid properties:(int)properties {
|
| + self = [super init];
|
| + if (self) {
|
| + _UUID.reset([uuid retain]);
|
| + _cb_properties =
|
| + device::GattCharacteristicPropertyToCBCharacteristicProperty(
|
| + properties);
|
| + }
|
| + return self;
|
| +}
|
| +
|
| +- (BOOL)isKindOfClass:(Class)aClass {
|
| + if (aClass == [CBCharacteristic class] ||
|
| + [aClass isSubclassOfClass:[CBCharacteristic class]]) {
|
| + return YES;
|
| + }
|
| + return [super isKindOfClass:aClass];
|
| +}
|
| +
|
| +- (BOOL)isMemberOfClass:(Class)aClass {
|
| + if (aClass == [CBCharacteristic class] ||
|
| + [aClass isSubclassOfClass:[CBCharacteristic class]]) {
|
| + return YES;
|
| + }
|
| + return [super isKindOfClass:aClass];
|
| +}
|
| +
|
| +- (CBUUID*)UUID {
|
| + return _UUID.get();
|
| +}
|
| +
|
| +- (CBCharacteristic*)characteristic {
|
| + return ObjCCast<CBCharacteristic>(self);
|
| +}
|
| +
|
| +- (CBCharacteristicProperties)properties {
|
| + return _cb_properties;
|
| +}
|
| +
|
| +@end
|
|
|