| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/bluetooth_adapter_mac.h" | 5 #include "device/bluetooth/bluetooth_adapter_mac.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/memory/ref_counted.h" | 10 #include "base/memory/ref_counted.h" |
| 11 #include "base/test/test_simple_task_runner.h" | 11 #include "base/test/test_simple_task_runner.h" |
| 12 #include "build/build_config.h" | 12 #include "build/build_config.h" |
| 13 #include "device/bluetooth/bluetooth_adapter.h" | 13 #include "device/bluetooth/bluetooth_adapter.h" |
| 14 #include "device/bluetooth/bluetooth_common.h" |
| 14 #include "device/bluetooth/bluetooth_discovery_session.h" | 15 #include "device/bluetooth/bluetooth_discovery_session.h" |
| 15 #include "device/bluetooth/bluetooth_discovery_session_outcome.h" | 16 #include "device/bluetooth/bluetooth_discovery_session_outcome.h" |
| 16 #include "device/bluetooth/bluetooth_low_energy_device_mac.h" | 17 #include "device/bluetooth/bluetooth_low_energy_device_mac.h" |
| 17 #include "device/bluetooth/test/mock_bluetooth_cbperipheral_mac.h" | 18 #include "device/bluetooth/test/mock_bluetooth_cbperipheral_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 "testing/gtest/include/gtest/gtest.h" | 20 #include "testing/gtest/include/gtest/gtest.h" |
| 20 #include "third_party/ocmock/OCMock/OCMock.h" | 21 #include "third_party/ocmock/OCMock/OCMock.h" |
| 21 | 22 |
| 22 #if defined(OS_IOS) | 23 #if defined(OS_IOS) |
| 23 #import <CoreBluetooth/CoreBluetooth.h> | 24 #import <CoreBluetooth/CoreBluetooth.h> |
| (...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 158 EXPECT_FALSE(ui_task_runner_->GetPendingTasks().empty()); | 159 EXPECT_FALSE(ui_task_runner_->GetPendingTasks().empty()); |
| 159 } | 160 } |
| 160 | 161 |
| 161 TEST_F(BluetoothAdapterMacTest, AddDiscoverySessionWithLowEnergyFilter) { | 162 TEST_F(BluetoothAdapterMacTest, AddDiscoverySessionWithLowEnergyFilter) { |
| 162 if (!SetMockCentralManager(CBCentralManagerStatePoweredOn)) | 163 if (!SetMockCentralManager(CBCentralManagerStatePoweredOn)) |
| 163 return; | 164 return; |
| 164 EXPECT_EQ(0, [mock_central_manager_ scanForPeripheralsCallCount]); | 165 EXPECT_EQ(0, [mock_central_manager_ scanForPeripheralsCallCount]); |
| 165 EXPECT_EQ(0, NumDiscoverySessions()); | 166 EXPECT_EQ(0, NumDiscoverySessions()); |
| 166 | 167 |
| 167 std::unique_ptr<BluetoothDiscoveryFilter> discovery_filter( | 168 std::unique_ptr<BluetoothDiscoveryFilter> discovery_filter( |
| 168 new BluetoothDiscoveryFilter( | 169 new BluetoothDiscoveryFilter(BLUETOOTH_TRANSPORT_LE)); |
| 169 BluetoothDiscoveryFilter::Transport::TRANSPORT_LE)); | |
| 170 AddDiscoverySession(discovery_filter.get()); | 170 AddDiscoverySession(discovery_filter.get()); |
| 171 EXPECT_EQ(1, callback_count_); | 171 EXPECT_EQ(1, callback_count_); |
| 172 EXPECT_EQ(0, error_callback_count_); | 172 EXPECT_EQ(0, error_callback_count_); |
| 173 EXPECT_EQ(1, NumDiscoverySessions()); | 173 EXPECT_EQ(1, NumDiscoverySessions()); |
| 174 | 174 |
| 175 // Check that adding a discovery session resulted in | 175 // Check that adding a discovery session resulted in |
| 176 // scanForPeripheralsWithServices being called on the Central Manager. | 176 // scanForPeripheralsWithServices being called on the Central Manager. |
| 177 EXPECT_EQ(1, [mock_central_manager_ scanForPeripheralsCallCount]); | 177 EXPECT_EQ(1, [mock_central_manager_ scanForPeripheralsCallCount]); |
| 178 } | 178 } |
| 179 | 179 |
| 180 // TODO(krstnmnlsn): Test changing the filter when adding the second discovery | 180 // TODO(krstnmnlsn): Test changing the filter when adding the second discovery |
| 181 // session (once we have that ability). | 181 // session (once we have that ability). |
| 182 TEST_F(BluetoothAdapterMacTest, AddSecondDiscoverySessionWithLowEnergyFilter) { | 182 TEST_F(BluetoothAdapterMacTest, AddSecondDiscoverySessionWithLowEnergyFilter) { |
| 183 if (!SetMockCentralManager(CBCentralManagerStatePoweredOn)) | 183 if (!SetMockCentralManager(CBCentralManagerStatePoweredOn)) |
| 184 return; | 184 return; |
| 185 std::unique_ptr<BluetoothDiscoveryFilter> discovery_filter( | 185 std::unique_ptr<BluetoothDiscoveryFilter> discovery_filter( |
| 186 new BluetoothDiscoveryFilter( | 186 new BluetoothDiscoveryFilter(BLUETOOTH_TRANSPORT_LE)); |
| 187 BluetoothDiscoveryFilter::Transport::TRANSPORT_LE)); | |
| 188 AddDiscoverySession(discovery_filter.get()); | 187 AddDiscoverySession(discovery_filter.get()); |
| 189 EXPECT_EQ(1, callback_count_); | 188 EXPECT_EQ(1, callback_count_); |
| 190 EXPECT_EQ(0, error_callback_count_); | 189 EXPECT_EQ(0, error_callback_count_); |
| 191 EXPECT_EQ(1, NumDiscoverySessions()); | 190 EXPECT_EQ(1, NumDiscoverySessions()); |
| 192 | 191 |
| 193 // We replaced the success callback handed to AddDiscoverySession, so | 192 // We replaced the success callback handed to AddDiscoverySession, so |
| 194 // |adapter_mac_| should remain in a discovering state indefinitely. | 193 // |adapter_mac_| should remain in a discovering state indefinitely. |
| 195 EXPECT_TRUE(adapter_mac_->IsDiscovering()); | 194 EXPECT_TRUE(adapter_mac_->IsDiscovering()); |
| 196 | 195 |
| 197 AddDiscoverySession(discovery_filter.get()); | 196 AddDiscoverySession(discovery_filter.get()); |
| 198 EXPECT_EQ(2, [mock_central_manager_ scanForPeripheralsCallCount]); | 197 EXPECT_EQ(2, [mock_central_manager_ scanForPeripheralsCallCount]); |
| 199 EXPECT_EQ(2, callback_count_); | 198 EXPECT_EQ(2, callback_count_); |
| 200 EXPECT_EQ(0, error_callback_count_); | 199 EXPECT_EQ(0, error_callback_count_); |
| 201 EXPECT_EQ(2, NumDiscoverySessions()); | 200 EXPECT_EQ(2, NumDiscoverySessions()); |
| 202 } | 201 } |
| 203 | 202 |
| 204 TEST_F(BluetoothAdapterMacTest, RemoveDiscoverySessionWithLowEnergyFilter) { | 203 TEST_F(BluetoothAdapterMacTest, RemoveDiscoverySessionWithLowEnergyFilter) { |
| 205 if (!SetMockCentralManager(CBCentralManagerStatePoweredOn)) | 204 if (!SetMockCentralManager(CBCentralManagerStatePoweredOn)) |
| 206 return; | 205 return; |
| 207 EXPECT_EQ(0, [mock_central_manager_ scanForPeripheralsCallCount]); | 206 EXPECT_EQ(0, [mock_central_manager_ scanForPeripheralsCallCount]); |
| 208 | 207 |
| 209 std::unique_ptr<BluetoothDiscoveryFilter> discovery_filter( | 208 std::unique_ptr<BluetoothDiscoveryFilter> discovery_filter( |
| 210 new BluetoothDiscoveryFilter( | 209 new BluetoothDiscoveryFilter(BLUETOOTH_TRANSPORT_LE)); |
| 211 BluetoothDiscoveryFilter::Transport::TRANSPORT_LE)); | |
| 212 AddDiscoverySession(discovery_filter.get()); | 210 AddDiscoverySession(discovery_filter.get()); |
| 213 EXPECT_EQ(1, callback_count_); | 211 EXPECT_EQ(1, callback_count_); |
| 214 EXPECT_EQ(0, error_callback_count_); | 212 EXPECT_EQ(0, error_callback_count_); |
| 215 EXPECT_EQ(1, NumDiscoverySessions()); | 213 EXPECT_EQ(1, NumDiscoverySessions()); |
| 216 | 214 |
| 217 EXPECT_EQ(0, [mock_central_manager_ stopScanCallCount]); | 215 EXPECT_EQ(0, [mock_central_manager_ stopScanCallCount]); |
| 218 RemoveDiscoverySession(discovery_filter.get()); | 216 RemoveDiscoverySession(discovery_filter.get()); |
| 219 EXPECT_EQ(2, callback_count_); | 217 EXPECT_EQ(2, callback_count_); |
| 220 EXPECT_EQ(0, error_callback_count_); | 218 EXPECT_EQ(0, error_callback_count_); |
| 221 EXPECT_EQ(0, NumDiscoverySessions()); | 219 EXPECT_EQ(0, NumDiscoverySessions()); |
| 222 | 220 |
| 223 // Check that removing the discovery session resulted in stopScan being called | 221 // Check that removing the discovery session resulted in stopScan being called |
| 224 // on the Central Manager. | 222 // on the Central Manager. |
| 225 EXPECT_EQ(1, [mock_central_manager_ stopScanCallCount]); | 223 EXPECT_EQ(1, [mock_central_manager_ stopScanCallCount]); |
| 226 } | 224 } |
| 227 | 225 |
| 228 TEST_F(BluetoothAdapterMacTest, RemoveDiscoverySessionWithLowEnergyFilterFail) { | 226 TEST_F(BluetoothAdapterMacTest, RemoveDiscoverySessionWithLowEnergyFilterFail) { |
| 229 if (!SetMockCentralManager(CBCentralManagerStatePoweredOn)) | 227 if (!SetMockCentralManager(CBCentralManagerStatePoweredOn)) |
| 230 return; | 228 return; |
| 231 EXPECT_EQ(0, [mock_central_manager_ scanForPeripheralsCallCount]); | 229 EXPECT_EQ(0, [mock_central_manager_ scanForPeripheralsCallCount]); |
| 232 EXPECT_EQ(0, [mock_central_manager_ stopScanCallCount]); | 230 EXPECT_EQ(0, [mock_central_manager_ stopScanCallCount]); |
| 233 EXPECT_EQ(0, NumDiscoverySessions()); | 231 EXPECT_EQ(0, NumDiscoverySessions()); |
| 234 | 232 |
| 235 std::unique_ptr<BluetoothDiscoveryFilter> discovery_filter( | 233 std::unique_ptr<BluetoothDiscoveryFilter> discovery_filter( |
| 236 new BluetoothDiscoveryFilter( | 234 new BluetoothDiscoveryFilter(BLUETOOTH_TRANSPORT_LE)); |
| 237 BluetoothDiscoveryFilter::Transport::TRANSPORT_LE)); | |
| 238 RemoveDiscoverySession(discovery_filter.get()); | 235 RemoveDiscoverySession(discovery_filter.get()); |
| 239 EXPECT_EQ(0, callback_count_); | 236 EXPECT_EQ(0, callback_count_); |
| 240 EXPECT_EQ(1, error_callback_count_); | 237 EXPECT_EQ(1, error_callback_count_); |
| 241 EXPECT_EQ(0, NumDiscoverySessions()); | 238 EXPECT_EQ(0, NumDiscoverySessions()); |
| 242 | 239 |
| 243 // Check that stopScan was not called. | 240 // Check that stopScan was not called. |
| 244 EXPECT_EQ(0, [mock_central_manager_ stopScanCallCount]); | 241 EXPECT_EQ(0, [mock_central_manager_ stopScanCallCount]); |
| 245 } | 242 } |
| 246 | 243 |
| 247 TEST_F(BluetoothAdapterMacTest, CheckGetPeripheralHashAddress) { | 244 TEST_F(BluetoothAdapterMacTest, CheckGetPeripheralHashAddress) { |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 320 EXPECT_EQ(1, NumDevices()); | 317 EXPECT_EQ(1, NumDevices()); |
| 321 EXPECT_TRUE(DevicePresent(mock_peripheral)); | 318 EXPECT_TRUE(DevicePresent(mock_peripheral)); |
| 322 | 319 |
| 323 // Check that object pointed to by |device| is deleted by the adapter. | 320 // Check that object pointed to by |device| is deleted by the adapter. |
| 324 RemoveTimedOutDevices(); | 321 RemoveTimedOutDevices(); |
| 325 EXPECT_EQ(0, NumDevices()); | 322 EXPECT_EQ(0, NumDevices()); |
| 326 EXPECT_FALSE(DevicePresent(mock_peripheral)); | 323 EXPECT_FALSE(DevicePresent(mock_peripheral)); |
| 327 } | 324 } |
| 328 | 325 |
| 329 } // namespace device | 326 } // namespace device |
| OLD | NEW |