Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(282)

Side by Side Diff: device/bluetooth/test/bluetooth_test_mac.mm

Issue 2052513002: Read characteristic implementation on macOS (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@characteristicscan_servicescan_cleanup
Patch Set: Addressing msarda's comment Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 "device/bluetooth/test/bluetooth_test_mac.h" 5 #include "device/bluetooth/test/bluetooth_test_mac.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include "base/mac/foundation_util.h" 9 #include "base/mac/foundation_util.h"
10 #include "base/strings/string_number_conversions.h" 10 #include "base/strings/string_number_conversions.h"
11 #include "build/build_config.h" 11 #include "build/build_config.h"
12 #include "device/bluetooth/bluetooth_adapter_mac.h" 12 #include "device/bluetooth/bluetooth_adapter_mac.h"
13 #include "device/bluetooth/bluetooth_device_mac.h"
13 #include "device/bluetooth/bluetooth_remote_gatt_characteristic_mac.h" 14 #include "device/bluetooth/bluetooth_remote_gatt_characteristic_mac.h"
14 #include "device/bluetooth/bluetooth_remote_gatt_service_mac.h" 15 #include "device/bluetooth/bluetooth_remote_gatt_service_mac.h"
15 #include "device/bluetooth/test/mock_bluetooth_cbcharacteristic_mac.h" 16 #include "device/bluetooth/test/mock_bluetooth_cbcharacteristic_mac.h"
16 #include "device/bluetooth/test/mock_bluetooth_cbperipheral_mac.h" 17 #include "device/bluetooth/test/mock_bluetooth_cbperipheral_mac.h"
17 #include "device/bluetooth/test/mock_bluetooth_cbservice_mac.h" 18 #include "device/bluetooth/test/mock_bluetooth_cbservice_mac.h"
18 #include "device/bluetooth/test/mock_bluetooth_central_manager_mac.h" 19 #include "device/bluetooth/test/mock_bluetooth_central_manager_mac.h"
19 #include "device/bluetooth/test/test_bluetooth_adapter_observer.h" 20 #include "device/bluetooth/test/test_bluetooth_adapter_observer.h"
20 #include "third_party/ocmock/OCMock/OCMock.h" 21 #include "third_party/ocmock/OCMock/OCMock.h"
21 22
22 #import <CoreBluetooth/CoreBluetooth.h> 23 #import <CoreBluetooth/CoreBluetooth.h>
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
73 } 74 }
74 75
75 } // namespace 76 } // namespace
76 77
77 // UUID1 hashes to kTestDeviceAddress1, and UUID2 to kTestDeviceAddress2. 78 // UUID1 hashes to kTestDeviceAddress1, and UUID2 to kTestDeviceAddress2.
78 const std::string BluetoothTestMac::kTestPeripheralUUID1 = 79 const std::string BluetoothTestMac::kTestPeripheralUUID1 =
79 "34045B00-0000-0000-0000-000000000000"; 80 "34045B00-0000-0000-0000-000000000000";
80 const std::string BluetoothTestMac::kTestPeripheralUUID2 = 81 const std::string BluetoothTestMac::kTestPeripheralUUID2 =
81 "EC1B8F00-0000-0000-0000-000000000000"; 82 "EC1B8F00-0000-0000-0000-000000000000";
82 83
83 BluetoothTestMac::BluetoothTestMac() {} 84 BluetoothTestMac::BluetoothTestMac() : BluetoothTestBase() {}
84 85
85 BluetoothTestMac::~BluetoothTestMac() {} 86 BluetoothTestMac::~BluetoothTestMac() {}
86 87
87 void BluetoothTestMac::SetUp() {} 88 void BluetoothTestMac::SetUp() {}
88 89
89 bool BluetoothTestMac::PlatformSupportsLowEnergy() { 90 bool BluetoothTestMac::PlatformSupportsLowEnergy() {
90 return BluetoothAdapterMac::IsLowEnergyAvailable(); 91 return BluetoothAdapterMac::IsLowEnergyAvailable();
91 } 92 }
92 93
93 void BluetoothTestMac::InitWithDefaultAdapter() { 94 void BluetoothTestMac::InitWithDefaultAdapter() {
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after
282 MockCBService* service_mock = ObjCCast<MockCBService>(cb_service); 283 MockCBService* service_mock = ObjCCast<MockCBService>(cb_service);
283 CBUUID* cb_uuid = [CBUUID UUIDWithString:@(uuid.c_str())]; 284 CBUUID* cb_uuid = [CBUUID UUIDWithString:@(uuid.c_str())];
284 [service_mock addCharacteristicWithUUID:cb_uuid properties:properties]; 285 [service_mock addCharacteristicWithUUID:cb_uuid properties:properties];
285 MockCBPeripheral* peripheral_mock = GetMockCBPeripheral(service); 286 MockCBPeripheral* peripheral_mock = GetMockCBPeripheral(service);
286 [peripheral_mock didModifyServices:@[]]; 287 [peripheral_mock didModifyServices:@[]];
287 // After -[MockCBPeripheral didModifyServices:], BluetoothLowEnergyDeviceMac 288 // After -[MockCBPeripheral didModifyServices:], BluetoothLowEnergyDeviceMac
288 // is expected to call -[CBPeripheral discoverServices:] 289 // is expected to call -[CBPeripheral discoverServices:]
289 DidDiscoverServices(peripheral_mock); 290 DidDiscoverServices(peripheral_mock);
290 } 291 }
291 292
293 void BluetoothTestMac::SimulateGattCharacteristicRead(
294 BluetoothRemoteGattCharacteristic* characteristic,
295 const std::vector<uint8_t>& value) {
296 MockCBCharacteristic* characteristic_mock =
297 GetCBMockCharacteristic(characteristic);
298 scoped_nsobject<NSData> data(
299 [[NSData alloc] initWithBytes:value.data() length:value.size()]);
300 [characteristic_mock simulateReadWithValue:data error:nil];
301 }
302
303 void BluetoothTestMac::SimulateGattCharacteristicReadError(
304 BluetoothRemoteGattCharacteristic* characteristic,
305 BluetoothRemoteGattService::GattErrorCode error_code) {
306 MockCBCharacteristic* characteristic_mock =
307 GetCBMockCharacteristic(characteristic);
308 NSError* error = BluetoothDeviceMac::GetNSErrorFromGattErrorCode(error_code);
309 [characteristic_mock simulateReadWithValue:nil error:error];
310 }
311
292 void BluetoothTestMac::SimulateGattCharacteristicRemoved( 312 void BluetoothTestMac::SimulateGattCharacteristicRemoved(
293 BluetoothRemoteGattService* service, 313 BluetoothRemoteGattService* service,
294 BluetoothRemoteGattCharacteristic* characteristic) { 314 BluetoothRemoteGattCharacteristic* characteristic) {
295 MockCBPeripheral* peripheral_mock = GetMockCBPeripheral(service); 315 MockCBPeripheral* peripheral_mock = GetMockCBPeripheral(service);
296 BluetoothRemoteGattServiceMac* mac_gatt_service = 316 BluetoothRemoteGattServiceMac* mac_gatt_service =
297 static_cast<BluetoothRemoteGattServiceMac*>(service); 317 static_cast<BluetoothRemoteGattServiceMac*>(service);
298 CBService* cb_service = mac_gatt_service->GetService(); 318 CBService* cb_service = mac_gatt_service->GetService();
299 MockCBService* service_mock = ObjCCast<MockCBService>(cb_service); 319 MockCBService* service_mock = ObjCCast<MockCBService>(cb_service);
300 BluetoothRemoteGattCharacteristicMac* characteristic_mac = 320 BluetoothRemoteGattCharacteristicMac* characteristic_mac =
301 static_cast<BluetoothRemoteGattCharacteristicMac*>(characteristic); 321 static_cast<BluetoothRemoteGattCharacteristicMac*>(characteristic);
(...skipping 10 matching lines...) Expand all
312 } 332 }
313 333
314 void BluetoothTestMac::OnFakeBluetoothGattDisconnect() { 334 void BluetoothTestMac::OnFakeBluetoothGattDisconnect() {
315 gatt_disconnection_attempts_++; 335 gatt_disconnection_attempts_++;
316 } 336 }
317 337
318 void BluetoothTestMac::OnFakeBluetoothServiceDiscovery() { 338 void BluetoothTestMac::OnFakeBluetoothServiceDiscovery() {
319 gatt_discovery_attempts_++; 339 gatt_discovery_attempts_++;
320 } 340 }
321 341
342 void BluetoothTest::OnFakeBluetoothCharacteristicReadValue() {
343 gatt_read_characteristic_attempts_++;
344 }
345
322 MockCBPeripheral* BluetoothTestMac::GetMockCBPeripheral( 346 MockCBPeripheral* BluetoothTestMac::GetMockCBPeripheral(
323 BluetoothRemoteGattService* service) const { 347 BluetoothRemoteGattService* service) const {
324 BluetoothDevice* device = service->GetDevice(); 348 BluetoothDevice* device = service->GetDevice();
325 BluetoothLowEnergyDeviceMac* device_mac = 349 BluetoothLowEnergyDeviceMac* device_mac =
326 static_cast<BluetoothLowEnergyDeviceMac*>(device); 350 static_cast<BluetoothLowEnergyDeviceMac*>(device);
327 CBPeripheral* cb_peripheral = device_mac->GetPeripheral(); 351 CBPeripheral* cb_peripheral = device_mac->GetPeripheral();
328 return ObjCCast<MockCBPeripheral>(cb_peripheral); 352 return ObjCCast<MockCBPeripheral>(cb_peripheral);
329 } 353 }
330 354
355 MockCBCharacteristic* BluetoothTest::GetCBMockCharacteristic(
356 device::BluetoothRemoteGattCharacteristic* characteristic) const {
357 device::BluetoothRemoteGattCharacteristicMac* mac_gatt_characteristic =
358 static_cast<device::BluetoothRemoteGattCharacteristicMac*>(
359 characteristic);
360 CBCharacteristic* cb_characteristic =
361 mac_gatt_characteristic->GetCBCharacteristic();
362 return ObjCCast<MockCBCharacteristic>(cb_characteristic);
363 }
364
331 // Utility function for generating new (CBUUID, address) pairs where CBUUID 365 // Utility function for generating new (CBUUID, address) pairs where CBUUID
332 // hashes to address. For use when adding a new device address to the testing 366 // hashes to address. For use when adding a new device address to the testing
333 // suite because CoreBluetooth peripherals have CBUUIDs in place of addresses, 367 // suite because CoreBluetooth peripherals have CBUUIDs in place of addresses,
334 // and we construct fake addresses for them by hashing the CBUUID. By changing 368 // and we construct fake addresses for them by hashing the CBUUID. By changing
335 // |target| the user can generate sequentially numbered test addresses. 369 // |target| the user can generate sequentially numbered test addresses.
336 // 370 //
337 // std::string BluetoothTestMac::FindCBUUIDForHashTarget() { 371 // std::string BluetoothTestMac::FindCBUUIDForHashTarget() {
338 // // The desired first 6 digits of the hash. For example 0100000, 020000, 372 // // The desired first 6 digits of the hash. For example 0100000, 020000,
339 // // 030000, ... 373 // // 030000, ...
340 // const std::string target = "010000"; 374 // const std::string target = "010000";
(...skipping 16 matching lines...) Expand all
357 // crypto::SHA256HashString(input_str, raw, sizeof(raw)); 391 // crypto::SHA256HashString(input_str, raw, sizeof(raw));
358 // if (base::HexEncode(raw, sizeof(raw)) == target) { 392 // if (base::HexEncode(raw, sizeof(raw)) == target) {
359 // return input_str; 393 // return input_str;
360 // } 394 // }
361 // ++input[0]; 395 // ++input[0];
362 // } 396 // }
363 // return ""; 397 // return "";
364 // } 398 // }
365 399
366 } // namespace device 400 } // namespace device
OLDNEW
« no previous file with comments | « device/bluetooth/test/bluetooth_test_mac.h ('k') | device/bluetooth/test/mock_bluetooth_cbcharacteristic_mac.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698