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

Unified Diff: device/bluetooth/bluetooth_remote_gatt_characteristic_unittest.cc

Issue 2094633003: Bluetooth: Mac: implementation for start notification (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@write_read_characteristicscan_servicescan_cleanup
Patch Set: Tests working Created 4 years, 6 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 side-by-side diff with in-line comments
Download patch
Index: device/bluetooth/bluetooth_remote_gatt_characteristic_unittest.cc
diff --git a/device/bluetooth/bluetooth_remote_gatt_characteristic_unittest.cc b/device/bluetooth/bluetooth_remote_gatt_characteristic_unittest.cc
index fda119d5c47371d4cf40e94abe53ba8e88e76a31..d9d65b27859cabc829b54ca5a0c60645a31510f4 100644
--- a/device/bluetooth/bluetooth_remote_gatt_characteristic_unittest.cc
+++ b/device/bluetooth/bluetooth_remote_gatt_characteristic_unittest.cc
@@ -86,8 +86,11 @@ class BluetoothRemoteGattCharacteristicTest : public BluetoothTest {
.canonical_value());
expected_descriptors_count++;
}
+#if !defined(OS_MACOSX)
ortuno 2016/06/28 16:24:50 Move this right before expected_descriptors_count
jlebel 2016/06/28 18:09:52 Done.
+ // TODO(jlebel) Need to implement descriptors.
ortuno 2016/06/28 16:24:50 I don't think we need the TODO as we don't need to
jlebel 2016/06/28 18:09:53 Done.
ASSERT_EQ(expected_descriptors_count,
characteristic1_->GetDescriptors().size());
+#endif // !defined(OS_MACOSX)
if (error == StartNotifySetupError::SET_NOTIFY) {
SimulateGattCharacteristicSetNotifyWillFailSynchronouslyOnce(
@@ -122,12 +125,15 @@ class BluetoothRemoteGattCharacteristicTest : public BluetoothTest {
EXPECT_TRUE(notify_sessions_[0]->IsActive());
// Verify the Client Characteristic Configuration descriptor was written to.
+#if !defined(OS_MACOSX)
+ // TODO(jlebel) Need to implement descriptors.
ortuno 2016/06/28 16:24:50 No need for the TODO. Change to match the same com
jlebel 2016/06/28 18:09:53 Done.
EXPECT_EQ(1, gatt_write_descriptor_attempts_);
EXPECT_EQ(2u, last_write_value_.size());
uint8_t expected_byte0 = expected_config_descriptor_value & 0xFF;
uint8_t expected_byte1 = (expected_config_descriptor_value >> 8) & 0xFF;
EXPECT_EQ(expected_byte0, last_write_value_[0]);
EXPECT_EQ(expected_byte1, last_write_value_[1]);
+#endif // !defined(OS_MACOSX)
}
BluetoothDevice* device_ = nullptr;
@@ -343,8 +349,7 @@ TEST_F(BluetoothRemoteGattCharacteristicTest, WriteRemoteCharacteristic_Empty) {
#if defined(OS_ANDROID) || defined(OS_WIN)
// Tests ReadRemoteCharacteristic completing after Chrome objects are deleted.
-// This test is not relevant for macOS. This can never happen if CBPeripheral
-// delegate is set to nil.
+// macOS: Not applicable: CoreBluetooth doesn't support synchronous API.
ortuno 2016/06/28 16:24:50 I think you meant to use the comment on the follow
jlebel 2016/06/28 18:09:53 Done.
TEST_F(BluetoothRemoteGattCharacteristicTest,
ReadRemoteCharacteristic_AfterDeleted) {
if (!PlatformSupportsLowEnergy()) {
@@ -370,8 +375,8 @@ TEST_F(BluetoothRemoteGattCharacteristicTest,
#if defined(OS_ANDROID) || defined(OS_WIN)
// Tests WriteRemoteCharacteristic completing after Chrome objects are deleted.
-// This test is not relevant for macOS. This can never happen if CBPeripheral
-// delegate is set to nil.
+// macOS: Not applicable: This can never happen if CBPeripheral delegate is set
+// to nil.
TEST_F(BluetoothRemoteGattCharacteristicTest,
WriteRemoteCharacteristic_AfterDeleted) {
if (!PlatformSupportsLowEnergy()) {
@@ -895,7 +900,7 @@ TEST_F(BluetoothRemoteGattCharacteristicTest,
}
#endif // defined(OS_ANDROID) || defined(OS_MACOSX) || defined(OS_WIN)
-#if defined(OS_ANDROID) || defined(OS_WIN)
+#if defined(OS_ANDROID) || defined(OS_MACOSX) || defined(OS_WIN)
// StartNotifySession fails if characteristic doesn't have Notify or Indicate
// property.
TEST_F(BluetoothRemoteGattCharacteristicTest,
@@ -914,7 +919,7 @@ TEST_F(BluetoothRemoteGattCharacteristicTest,
EXPECT_EQ(BluetoothRemoteGattService::GATT_ERROR_NOT_SUPPORTED,
last_gatt_error_code_);
}
-#endif // defined(OS_ANDROID) || defined(OS_WIN)
+#endif // defined(OS_ANDROID) || defined(OS_MACOSX) || defined(OS_WIN)
#if defined(OS_ANDROID) || defined(OS_WIN)
// StartNotifySession fails if the characteristic is missing the Client
@@ -962,6 +967,7 @@ TEST_F(BluetoothRemoteGattCharacteristicTest,
// StartNotifySession fails synchronously when failing to set a characteristic
// to enable notifications.
// Android: This is mBluetoothGatt.setCharacteristicNotification failing.
+// macOS: Not applicable: CoreBluetooth doesn't support synchronous API.
// Windows: Synchronous Test Not Applicable: OS calls are all made
// asynchronously from BluetoothTaskManagerWin.
TEST_F(BluetoothRemoteGattCharacteristicTest,
@@ -983,6 +989,7 @@ TEST_F(BluetoothRemoteGattCharacteristicTest,
#if defined(OS_ANDROID)
// Tests StartNotifySession descriptor write synchronous failure.
+// macOS: Not applicable: CoreBluetooth doesn't support synchronous API.
ortuno 2016/06/28 16:24:50 I think this should be: macOS. Not applicable: No
jlebel 2016/06/28 18:09:52 Done.
// Windows: Synchronous Test Not Applicable: OS calls are all made
// asynchronously from BluetoothTaskManagerWin.
TEST_F(BluetoothRemoteGattCharacteristicTest,
@@ -1002,25 +1009,25 @@ TEST_F(BluetoothRemoteGattCharacteristicTest,
}
#endif // defined(OS_ANDROID)
-#if defined(OS_ANDROID) || defined(OS_WIN)
+#if defined(OS_ANDROID) || defined(OS_MACOSX) || defined(OS_WIN)
// Tests StartNotifySession success on a characteristic enabling Notify.
TEST_F(BluetoothRemoteGattCharacteristicTest, StartNotifySession) {
ASSERT_NO_FATAL_FAILURE(StartNotifyBoilerplate(
/* properties: NOTIFY */ 0x10,
/* expected_config_descriptor_value: NOTIFY */ 1));
}
-#endif // defined(OS_ANDROID) || defined(OS_WIN)
+#endif // defined(OS_ANDROID) || defined(OS_MACOSX) || defined(OS_WIN)
-#if defined(OS_ANDROID) || defined(OS_WIN)
+#if defined(OS_ANDROID) || defined(OS_MACOSX) || defined(OS_WIN)
// Tests StartNotifySession success on a characteristic enabling Indicate.
TEST_F(BluetoothRemoteGattCharacteristicTest, StartNotifySession_OnIndicate) {
ASSERT_NO_FATAL_FAILURE(StartNotifyBoilerplate(
/* properties: INDICATE */ 0x20,
/* expected_config_descriptor_value: INDICATE */ 2));
}
-#endif // defined(OS_ANDROID) || defined(OS_WIN)
+#endif // defined(OS_ANDROID) || defined(OS_MACOSX) || defined(OS_WIN)
-#if defined(OS_ANDROID) || defined(OS_WIN)
+#if defined(OS_ANDROID) || defined(OS_MACOSX) || defined(OS_WIN)
// Tests StartNotifySession success on a characteristic enabling Notify &
// Indicate.
TEST_F(BluetoothRemoteGattCharacteristicTest,
@@ -1029,9 +1036,9 @@ TEST_F(BluetoothRemoteGattCharacteristicTest,
/* properties: NOTIFY and INDICATE bits set */ 0x30,
/* expected_config_descriptor_value: NOTIFY */ 1));
}
-#endif // defined(OS_ANDROID) || defined(OS_WIN)
+#endif // defined(OS_ANDROID) || defined(OS_MACOSX) || defined(OS_WIN)
-#if defined(OS_ANDROID) || defined(OS_WIN)
+#if defined(OS_ANDROID) || defined(OS_MACOSX) || defined(OS_WIN)
// Tests multiple StartNotifySession success.
TEST_F(BluetoothRemoteGattCharacteristicTest, StartNotifySession_Multiple) {
ASSERT_NO_FATAL_FAILURE(
@@ -1040,7 +1047,10 @@ TEST_F(BluetoothRemoteGattCharacteristicTest, StartNotifySession_Multiple) {
characteristic1_,
BluetoothRemoteGattDescriptor::ClientCharacteristicConfigurationUuid()
.canonical_value());
+#if !defined(OS_MACOSX)
+ // TODO(jlebel) Need to implement descriptors.
ortuno 2016/06/28 16:24:50 nit: open/point to an issue.
jlebel 2016/06/28 18:09:53 Done.
ASSERT_EQ(1u, characteristic1_->GetDescriptors().size());
+#endif // !defined(OS_MACOSX)
characteristic1_->StartNotifySession(
GetNotifyCallback(Call::EXPECTED),
@@ -1063,9 +1073,9 @@ TEST_F(BluetoothRemoteGattCharacteristicTest, StartNotifySession_Multiple) {
EXPECT_TRUE(notify_sessions_[0]->IsActive());
EXPECT_TRUE(notify_sessions_[1]->IsActive());
}
-#endif // defined(OS_ANDROID) || defined(OS_WIN)
+#endif // defined(OS_ANDROID) || defined(OS_MACOSX) || defined(OS_WIN)
-#if defined(OS_ANDROID)
+#if defined(OS_ANDROID) || defined(OS_MACOSX)
// Tests multiple StartNotifySessions pending and then an error.
TEST_F(BluetoothRemoteGattCharacteristicTest,
StartNotifySessionError_Multiple) {
@@ -1075,7 +1085,10 @@ TEST_F(BluetoothRemoteGattCharacteristicTest,
characteristic1_,
BluetoothRemoteGattDescriptor::ClientCharacteristicConfigurationUuid()
.canonical_value());
+#if !defined(OS_MACOSX)
+ // TODO(jlebel) Need to implement descriptors.
ortuno 2016/06/28 16:24:50 nit: same here, point to an issue.
jlebel 2016/06/28 18:09:53 Done.
ASSERT_EQ(1u, characteristic1_->GetDescriptors().size());
+#endif // !defined(OS_MACOSX)
characteristic1_->StartNotifySession(GetNotifyCallback(Call::NOT_EXPECTED),
GetGattErrorCallback(Call::EXPECTED));
@@ -1091,10 +1104,12 @@ TEST_F(BluetoothRemoteGattCharacteristicTest,
EXPECT_EQ(BluetoothRemoteGattService::GATT_ERROR_FAILED,
last_gatt_error_code_);
}
-#endif // defined(OS_ANDROID)
+#endif // defined(OS_ANDROID) || defined(OS_MACOSX)
#if defined(OS_ANDROID)
// Tests StartNotifySession completing after chrome objects are deleted.
+// macOS: Not applicable: This can never happen if CBPeripheral delegate is set
+// to nil.
TEST_F(BluetoothRemoteGattCharacteristicTest, StartNotifySession_AfterDeleted) {
ASSERT_NO_FATAL_FAILURE(
FakeCharacteristicBoilerplate(/* properties: NOTIFY */ 0x10));
@@ -1102,7 +1117,10 @@ TEST_F(BluetoothRemoteGattCharacteristicTest, StartNotifySession_AfterDeleted) {
characteristic1_,
BluetoothRemoteGattDescriptor::ClientCharacteristicConfigurationUuid()
.canonical_value());
+#if !defined(OS_MACOSX)
ortuno 2016/06/28 16:24:50 You don't need this one since this test doesn't ap
jlebel 2016/06/28 18:09:52 Done.
+ // TODO(jlebel) Need to implement descriptors.
ASSERT_EQ(1u, characteristic1_->GetDescriptors().size());
+#endif // !defined(OS_MACOSX)
characteristic1_->StartNotifySession(GetNotifyCallback(Call::NOT_EXPECTED),
GetGattErrorCallback(Call::EXPECTED));
@@ -1122,7 +1140,7 @@ TEST_F(BluetoothRemoteGattCharacteristicTest, StartNotifySession_AfterDeleted) {
}
#endif // defined(OS_ANDROID)
-#if defined(OS_WIN)
+#if defined(OS_MACOSX) || defined(OS_WIN)
// Tests StartNotifySession reentrant in start notify session success callback
// and the reentrant start notify session success.
TEST_F(BluetoothRemoteGattCharacteristicTest,
@@ -1132,7 +1150,10 @@ TEST_F(BluetoothRemoteGattCharacteristicTest,
SimulateGattDescriptor(
characteristic1_,
BluetoothGattDescriptor::ClientCharacteristicConfigurationUuid().value());
+#if !defined(OS_MACOSX)
+ // TODO(jlebel) Need to implement descriptors.
ASSERT_EQ(1u, characteristic1_->GetDescriptors().size());
+#endif // !defined(OS_MACOSX)
characteristic1_->StartNotifySession(
GetReentrantStartNotifySessionSuccessCallback(Call::EXPECTED,
@@ -1146,7 +1167,7 @@ TEST_F(BluetoothRemoteGattCharacteristicTest,
// Simulate reentrant StartNotifySession request from
// BluetoothTestBase::ReentrantStartNotifySessionSuccessCallback.
- SimulateGattNotifySessionStarted(characteristic1_);
+ base::RunLoop().RunUntilIdle();
EXPECT_EQ(1, gatt_notify_characteristic_attempts_);
EXPECT_EQ(2, callback_count_);
EXPECT_EQ(0, error_callback_count_);
@@ -1158,7 +1179,7 @@ TEST_F(BluetoothRemoteGattCharacteristicTest,
EXPECT_TRUE(notify_sessions_[i]->IsActive());
}
}
-#endif // defined(OS_WIN)
+#endif // defined(OS_MACOSX) || defined(OS_WIN)
#if defined(OS_WIN)
// Tests StartNotifySession reentrant in start notify session error callback
@@ -1170,7 +1191,10 @@ TEST_F(BluetoothRemoteGattCharacteristicTest,
SimulateGattDescriptor(
characteristic1_,
BluetoothGattDescriptor::ClientCharacteristicConfigurationUuid().value());
+#if !defined(OS_MACOSX)
+ // TODO(jlebel) Need to implement descriptors.
ortuno 2016/06/28 16:24:50 Remove since this is not enabled on macOS yet.
jlebel 2016/06/28 18:09:52 Done.
ASSERT_EQ(1u, characteristic1_->GetDescriptors().size());
+#endif // !defined(OS_MACOSX)
SimulateGattNotifySessionStartError(
characteristic1_, BluetoothRemoteGattService::GATT_ERROR_UNKNOWN);
@@ -1209,7 +1233,10 @@ TEST_F(BluetoothRemoteGattCharacteristicTest,
SimulateGattDescriptor(
characteristic1_,
BluetoothGattDescriptor::ClientCharacteristicConfigurationUuid().value());
+#if !defined(OS_MACOSX)
ortuno 2016/06/28 16:24:50 Remove since this is not enabled on macOS yet.
jlebel 2016/06/28 18:09:53 Done.
+ // TODO(jlebel) Need to implement descriptors.
ASSERT_EQ(1u, characteristic1_->GetDescriptors().size());
+#endif // !defined(OS_MACOSX)
SimulateGattNotifySessionStartError(
characteristic1_, BluetoothRemoteGattService::GATT_ERROR_UNKNOWN);
@@ -1233,7 +1260,7 @@ TEST_F(BluetoothRemoteGattCharacteristicTest,
}
#endif // defined(OS_WIN)
-#if defined(OS_ANDROID) || defined(OS_WIN)
+#if defined(OS_ANDROID) || defined(OS_MACOSX) || defined(OS_WIN)
// Tests Characteristic Value changes during a Notify Session.
TEST_F(BluetoothRemoteGattCharacteristicTest, GattCharacteristicValueChanged) {
ASSERT_NO_FATAL_FAILURE(StartNotifyBoilerplate(
@@ -1254,11 +1281,13 @@ TEST_F(BluetoothRemoteGattCharacteristicTest, GattCharacteristicValueChanged) {
EXPECT_EQ(2, observer.gatt_characteristic_value_changed_count());
EXPECT_EQ(test_vector2, characteristic1_->GetValue());
}
-#endif // defined(OS_ANDROID) || defined(OS_WIN)
+#endif // defined(OS_ANDROID) || defined(OS_MACOSX) || defined(OS_WIN)
#if defined(OS_ANDROID) || defined(OS_WIN)
// Tests Characteristic Value changing after a Notify Session and objects being
// destroyed.
+// macOS: Not applicable: This can never happen if CBPeripheral delegate is set
+// to nil.
TEST_F(BluetoothRemoteGattCharacteristicTest,
GattCharacteristicValueChanged_AfterDeleted) {
ASSERT_NO_FATAL_FAILURE(StartNotifyBoilerplate(

Powered by Google App Engine
This is Rietveld 408576698