| OLD | NEW |
| 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 "content/browser/bluetooth/bluetooth_allowed_devices.h" | 5 #include "content/browser/bluetooth/bluetooth_allowed_devices.h" |
| 6 | 6 |
| 7 #include "base/strings/string_util.h" | 7 #include "base/strings/string_util.h" |
| 8 #include "content/browser/bluetooth/bluetooth_allowed_devices_map.h" | 8 #include "content/browser/bluetooth/bluetooth_allowed_devices_map.h" |
| 9 #include "content/common/bluetooth/web_bluetooth_device_id.h" | 9 #include "content/common/bluetooth/web_bluetooth_device_id.h" |
| 10 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
| (...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 169 EXPECT_EQ(nullptr, allowed_devices.GetDeviceId(kDeviceAddress1)); | 169 EXPECT_EQ(nullptr, allowed_devices.GetDeviceId(kDeviceAddress1)); |
| 170 EXPECT_EQ(base::EmptyString(), allowed_devices.GetDeviceAddress(device_id)); | 170 EXPECT_EQ(base::EmptyString(), allowed_devices.GetDeviceAddress(device_id)); |
| 171 } | 171 } |
| 172 | 172 |
| 173 TEST_F(BluetoothAllowedDevicesTest, NoPermissionForAnyService) { | 173 TEST_F(BluetoothAllowedDevicesTest, NoPermissionForAnyService) { |
| 174 BluetoothAllowedDevices allowed_devices; | 174 BluetoothAllowedDevices allowed_devices; |
| 175 | 175 |
| 176 // Setup device. | 176 // Setup device. |
| 177 blink::mojom::WebBluetoothRequestDeviceOptionsPtr options = | 177 blink::mojom::WebBluetoothRequestDeviceOptionsPtr options = |
| 178 blink::mojom::WebBluetoothRequestDeviceOptions::New(); | 178 blink::mojom::WebBluetoothRequestDeviceOptions::New(); |
| 179 blink::mojom::WebBluetoothScanFilterPtr scan_filter = | 179 blink::mojom::WebBluetoothLeScanFilterPtr scan_filter = |
| 180 blink::mojom::WebBluetoothScanFilter::New(); | 180 blink::mojom::WebBluetoothLeScanFilter::New(); |
| 181 | 181 |
| 182 scan_filter->name = kDeviceName; | 182 scan_filter->name = kDeviceName; |
| 183 options->filters.emplace(); | 183 options->filters.emplace(); |
| 184 options->filters->push_back({scan_filter.Clone()}); | 184 options->filters->push_back({scan_filter.Clone()}); |
| 185 | 185 |
| 186 // Add to map. | 186 // Add to map. |
| 187 const WebBluetoothDeviceId device_id = | 187 const WebBluetoothDeviceId device_id = |
| 188 allowed_devices.AddDevice(kDeviceAddress1, options); | 188 allowed_devices.AddDevice(kDeviceAddress1, options); |
| 189 | 189 |
| 190 // Try to access at least one service. | 190 // Try to access at least one service. |
| 191 EXPECT_FALSE(allowed_devices.IsAllowedToAccessAtLeastOneService(device_id)); | 191 EXPECT_FALSE(allowed_devices.IsAllowedToAccessAtLeastOneService(device_id)); |
| 192 EXPECT_FALSE( | 192 EXPECT_FALSE( |
| 193 allowed_devices.IsAllowedToAccessService(device_id, kGlucoseUUID)); | 193 allowed_devices.IsAllowedToAccessService(device_id, kGlucoseUUID)); |
| 194 } | 194 } |
| 195 | 195 |
| 196 TEST_F(BluetoothAllowedDevicesTest, AllowedServices_OneDevice) { | 196 TEST_F(BluetoothAllowedDevicesTest, AllowedServices_OneDevice) { |
| 197 BluetoothAllowedDevices allowed_devices; | 197 BluetoothAllowedDevices allowed_devices; |
| 198 | 198 |
| 199 // Setup device. | 199 // Setup device. |
| 200 blink::mojom::WebBluetoothRequestDeviceOptionsPtr options = | 200 blink::mojom::WebBluetoothRequestDeviceOptionsPtr options = |
| 201 blink::mojom::WebBluetoothRequestDeviceOptions::New(); | 201 blink::mojom::WebBluetoothRequestDeviceOptions::New(); |
| 202 blink::mojom::WebBluetoothScanFilterPtr scan_filter1 = | 202 blink::mojom::WebBluetoothLeScanFilterPtr scan_filter1 = |
| 203 blink::mojom::WebBluetoothScanFilter::New(); | 203 blink::mojom::WebBluetoothLeScanFilter::New(); |
| 204 blink::mojom::WebBluetoothScanFilterPtr scan_filter2 = | 204 blink::mojom::WebBluetoothLeScanFilterPtr scan_filter2 = |
| 205 blink::mojom::WebBluetoothScanFilter::New(); | 205 blink::mojom::WebBluetoothLeScanFilter::New(); |
| 206 | 206 |
| 207 scan_filter1->services.emplace(); | 207 scan_filter1->services.emplace(); |
| 208 scan_filter1->services->push_back(kGlucoseUUID); | 208 scan_filter1->services->push_back(kGlucoseUUID); |
| 209 options->filters.emplace(); | 209 options->filters.emplace(); |
| 210 options->filters->push_back(scan_filter1.Clone()); | 210 options->filters->push_back(scan_filter1.Clone()); |
| 211 | 211 |
| 212 scan_filter2->services.emplace(); | 212 scan_filter2->services.emplace(); |
| 213 scan_filter2->services->push_back(kHeartRateUUID); | 213 scan_filter2->services->push_back(kHeartRateUUID); |
| 214 options->filters->push_back(scan_filter2.Clone()); | 214 options->filters->push_back(scan_filter2.Clone()); |
| 215 | 215 |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 274 EXPECT_FALSE(allowed_devices.IsAllowedToAccessService(device_id1, | 274 EXPECT_FALSE(allowed_devices.IsAllowedToAccessService(device_id1, |
| 275 kBatteryServiceUUID)); | 275 kBatteryServiceUUID)); |
| 276 } | 276 } |
| 277 | 277 |
| 278 TEST_F(BluetoothAllowedDevicesTest, AllowedServices_TwoDevices) { | 278 TEST_F(BluetoothAllowedDevicesTest, AllowedServices_TwoDevices) { |
| 279 BluetoothAllowedDevices allowed_devices; | 279 BluetoothAllowedDevices allowed_devices; |
| 280 | 280 |
| 281 // Setup request for device #1. | 281 // Setup request for device #1. |
| 282 blink::mojom::WebBluetoothRequestDeviceOptionsPtr options1 = | 282 blink::mojom::WebBluetoothRequestDeviceOptionsPtr options1 = |
| 283 blink::mojom::WebBluetoothRequestDeviceOptions::New(); | 283 blink::mojom::WebBluetoothRequestDeviceOptions::New(); |
| 284 blink::mojom::WebBluetoothScanFilterPtr scan_filter1 = | 284 blink::mojom::WebBluetoothLeScanFilterPtr scan_filter1 = |
| 285 blink::mojom::WebBluetoothScanFilter::New(); | 285 blink::mojom::WebBluetoothLeScanFilter::New(); |
| 286 | 286 |
| 287 scan_filter1->services.emplace(); | 287 scan_filter1->services.emplace(); |
| 288 scan_filter1->services->push_back(kGlucoseUUID); | 288 scan_filter1->services->push_back(kGlucoseUUID); |
| 289 options1->filters.emplace(); | 289 options1->filters.emplace(); |
| 290 options1->filters->push_back(std::move(scan_filter1)); | 290 options1->filters->push_back(std::move(scan_filter1)); |
| 291 | 291 |
| 292 options1->optional_services.push_back(kHeartRateUUID); | 292 options1->optional_services.push_back(kHeartRateUUID); |
| 293 | 293 |
| 294 // Setup request for device #2. | 294 // Setup request for device #2. |
| 295 blink::mojom::WebBluetoothRequestDeviceOptionsPtr options2 = | 295 blink::mojom::WebBluetoothRequestDeviceOptionsPtr options2 = |
| 296 blink::mojom::WebBluetoothRequestDeviceOptions::New(); | 296 blink::mojom::WebBluetoothRequestDeviceOptions::New(); |
| 297 blink::mojom::WebBluetoothScanFilterPtr scan_filter2 = | 297 blink::mojom::WebBluetoothLeScanFilterPtr scan_filter2 = |
| 298 blink::mojom::WebBluetoothScanFilter::New(); | 298 blink::mojom::WebBluetoothLeScanFilter::New(); |
| 299 | 299 |
| 300 scan_filter2->services.emplace(); | 300 scan_filter2->services.emplace(); |
| 301 scan_filter2->services->push_back(kBatteryServiceUUID); | 301 scan_filter2->services->push_back(kBatteryServiceUUID); |
| 302 options2->filters.emplace(); | 302 options2->filters.emplace(); |
| 303 options2->filters->push_back(std::move(scan_filter2)); | 303 options2->filters->push_back(std::move(scan_filter2)); |
| 304 | 304 |
| 305 options2->optional_services.push_back(kBloodPressureUUID); | 305 options2->optional_services.push_back(kBloodPressureUUID); |
| 306 | 306 |
| 307 // Add devices to map. | 307 // Add devices to map. |
| 308 const WebBluetoothDeviceId& device_id1 = | 308 const WebBluetoothDeviceId& device_id1 = |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 342 TEST_F(BluetoothAllowedDevicesTest, AllowedServices_TwoOriginsOneDevice) { | 342 TEST_F(BluetoothAllowedDevicesTest, AllowedServices_TwoOriginsOneDevice) { |
| 343 scoped_refptr<BluetoothAllowedDevicesMap> allowed_devices_map = | 343 scoped_refptr<BluetoothAllowedDevicesMap> allowed_devices_map = |
| 344 new BluetoothAllowedDevicesMap(); | 344 new BluetoothAllowedDevicesMap(); |
| 345 content::BluetoothAllowedDevices& allowed_devices1 = | 345 content::BluetoothAllowedDevices& allowed_devices1 = |
| 346 allowed_devices_map->GetOrCreateAllowedDevices(kTestOrigin1); | 346 allowed_devices_map->GetOrCreateAllowedDevices(kTestOrigin1); |
| 347 content::BluetoothAllowedDevices& allowed_devices2 = | 347 content::BluetoothAllowedDevices& allowed_devices2 = |
| 348 allowed_devices_map->GetOrCreateAllowedDevices(kTestOrigin2); | 348 allowed_devices_map->GetOrCreateAllowedDevices(kTestOrigin2); |
| 349 // Setup request #1 for device. | 349 // Setup request #1 for device. |
| 350 blink::mojom::WebBluetoothRequestDeviceOptionsPtr options1 = | 350 blink::mojom::WebBluetoothRequestDeviceOptionsPtr options1 = |
| 351 blink::mojom::WebBluetoothRequestDeviceOptions::New(); | 351 blink::mojom::WebBluetoothRequestDeviceOptions::New(); |
| 352 blink::mojom::WebBluetoothScanFilterPtr scan_filter1 = | 352 blink::mojom::WebBluetoothLeScanFilterPtr scan_filter1 = |
| 353 blink::mojom::WebBluetoothScanFilter::New(); | 353 blink::mojom::WebBluetoothLeScanFilter::New(); |
| 354 | 354 |
| 355 scan_filter1->services.emplace(); | 355 scan_filter1->services.emplace(); |
| 356 scan_filter1->services->push_back(kGlucoseUUID); | 356 scan_filter1->services->push_back(kGlucoseUUID); |
| 357 options1->filters.emplace(); | 357 options1->filters.emplace(); |
| 358 options1->filters->push_back(std::move(scan_filter1)); | 358 options1->filters->push_back(std::move(scan_filter1)); |
| 359 | 359 |
| 360 options1->optional_services.push_back(kHeartRateUUID); | 360 options1->optional_services.push_back(kHeartRateUUID); |
| 361 | 361 |
| 362 // Setup request #2 for device. | 362 // Setup request #2 for device. |
| 363 blink::mojom::WebBluetoothRequestDeviceOptionsPtr options2 = | 363 blink::mojom::WebBluetoothRequestDeviceOptionsPtr options2 = |
| 364 blink::mojom::WebBluetoothRequestDeviceOptions::New(); | 364 blink::mojom::WebBluetoothRequestDeviceOptions::New(); |
| 365 blink::mojom::WebBluetoothScanFilterPtr scan_filter2 = | 365 blink::mojom::WebBluetoothLeScanFilterPtr scan_filter2 = |
| 366 blink::mojom::WebBluetoothScanFilter::New(); | 366 blink::mojom::WebBluetoothLeScanFilter::New(); |
| 367 | 367 |
| 368 scan_filter2->services.emplace(); | 368 scan_filter2->services.emplace(); |
| 369 scan_filter2->services->push_back(kBatteryServiceUUID); | 369 scan_filter2->services->push_back(kBatteryServiceUUID); |
| 370 options2->filters.emplace(); | 370 options2->filters.emplace(); |
| 371 options2->filters->push_back(std::move(scan_filter2)); | 371 options2->filters->push_back(std::move(scan_filter2)); |
| 372 | 372 |
| 373 options2->optional_services.push_back(kBloodPressureUUID); | 373 options2->optional_services.push_back(kBloodPressureUUID); |
| 374 | 374 |
| 375 // Add devices to map. | 375 // Add devices to map. |
| 376 const WebBluetoothDeviceId& device_id1 = | 376 const WebBluetoothDeviceId& device_id1 = |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 422 EXPECT_FALSE(allowed_devices2.IsAllowedToAccessService(device_id1, | 422 EXPECT_FALSE(allowed_devices2.IsAllowedToAccessService(device_id1, |
| 423 kBloodPressureUUID)); | 423 kBloodPressureUUID)); |
| 424 } | 424 } |
| 425 | 425 |
| 426 TEST_F(BluetoothAllowedDevicesTest, MergeServices) { | 426 TEST_F(BluetoothAllowedDevicesTest, MergeServices) { |
| 427 BluetoothAllowedDevices allowed_devices; | 427 BluetoothAllowedDevices allowed_devices; |
| 428 | 428 |
| 429 // Setup first request. | 429 // Setup first request. |
| 430 blink::mojom::WebBluetoothRequestDeviceOptionsPtr options1 = | 430 blink::mojom::WebBluetoothRequestDeviceOptionsPtr options1 = |
| 431 blink::mojom::WebBluetoothRequestDeviceOptions::New(); | 431 blink::mojom::WebBluetoothRequestDeviceOptions::New(); |
| 432 blink::mojom::WebBluetoothScanFilterPtr scan_filter1 = | 432 blink::mojom::WebBluetoothLeScanFilterPtr scan_filter1 = |
| 433 blink::mojom::WebBluetoothScanFilter::New(); | 433 blink::mojom::WebBluetoothLeScanFilter::New(); |
| 434 | 434 |
| 435 scan_filter1->services.emplace(); | 435 scan_filter1->services.emplace(); |
| 436 scan_filter1->services->push_back(kGlucoseUUID); | 436 scan_filter1->services->push_back(kGlucoseUUID); |
| 437 options1->filters.emplace(); | 437 options1->filters.emplace(); |
| 438 options1->filters->push_back(std::move(scan_filter1)); | 438 options1->filters->push_back(std::move(scan_filter1)); |
| 439 | 439 |
| 440 options1->optional_services.push_back(kBatteryServiceUUID); | 440 options1->optional_services.push_back(kBatteryServiceUUID); |
| 441 | 441 |
| 442 // Add to map. | 442 // Add to map. |
| 443 const WebBluetoothDeviceId device_id1 = | 443 const WebBluetoothDeviceId device_id1 = |
| 444 allowed_devices.AddDevice(kDeviceAddress1, options1); | 444 allowed_devices.AddDevice(kDeviceAddress1, options1); |
| 445 | 445 |
| 446 // Setup second request. | 446 // Setup second request. |
| 447 blink::mojom::WebBluetoothRequestDeviceOptionsPtr options2 = | 447 blink::mojom::WebBluetoothRequestDeviceOptionsPtr options2 = |
| 448 blink::mojom::WebBluetoothRequestDeviceOptions::New(); | 448 blink::mojom::WebBluetoothRequestDeviceOptions::New(); |
| 449 blink::mojom::WebBluetoothScanFilterPtr scan_filter2 = | 449 blink::mojom::WebBluetoothLeScanFilterPtr scan_filter2 = |
| 450 blink::mojom::WebBluetoothScanFilter::New(); | 450 blink::mojom::WebBluetoothLeScanFilter::New(); |
| 451 | 451 |
| 452 scan_filter2->services.emplace(); | 452 scan_filter2->services.emplace(); |
| 453 scan_filter2->services->push_back(kHeartRateUUID); | 453 scan_filter2->services->push_back(kHeartRateUUID); |
| 454 options2->filters.emplace(); | 454 options2->filters.emplace(); |
| 455 options2->filters->push_back(std::move(scan_filter2)); | 455 options2->filters->push_back(std::move(scan_filter2)); |
| 456 | 456 |
| 457 options2->optional_services.push_back(kBloodPressureUUID); | 457 options2->optional_services.push_back(kBloodPressureUUID); |
| 458 | 458 |
| 459 // Add to map again. | 459 // Add to map again. |
| 460 const WebBluetoothDeviceId device_id2 = | 460 const WebBluetoothDeviceId device_id2 = |
| (...skipping 20 matching lines...) Expand all Loading... |
| 481 | 481 |
| 482 EXPECT_TRUE(WebBluetoothDeviceId::IsValid(device_id.str())); | 482 EXPECT_TRUE(WebBluetoothDeviceId::IsValid(device_id.str())); |
| 483 } | 483 } |
| 484 | 484 |
| 485 TEST_F(BluetoothAllowedDevicesTest, NoFilterServices) { | 485 TEST_F(BluetoothAllowedDevicesTest, NoFilterServices) { |
| 486 BluetoothAllowedDevices allowed_devices; | 486 BluetoothAllowedDevices allowed_devices; |
| 487 | 487 |
| 488 // Setup request. | 488 // Setup request. |
| 489 blink::mojom::WebBluetoothRequestDeviceOptionsPtr options = | 489 blink::mojom::WebBluetoothRequestDeviceOptionsPtr options = |
| 490 blink::mojom::WebBluetoothRequestDeviceOptions::New(); | 490 blink::mojom::WebBluetoothRequestDeviceOptions::New(); |
| 491 blink::mojom::WebBluetoothScanFilterPtr scan_filter = | 491 blink::mojom::WebBluetoothLeScanFilterPtr scan_filter = |
| 492 blink::mojom::WebBluetoothScanFilter::New(); | 492 blink::mojom::WebBluetoothLeScanFilter::New(); |
| 493 | 493 |
| 494 options->filters.emplace(); | 494 options->filters.emplace(); |
| 495 options->filters->push_back(std::move(scan_filter)); | 495 options->filters->push_back(std::move(scan_filter)); |
| 496 | 496 |
| 497 // Add to map. | 497 // Add to map. |
| 498 const WebBluetoothDeviceId device_id = | 498 const WebBluetoothDeviceId device_id = |
| 499 allowed_devices.AddDevice(kDeviceAddress1, options); | 499 allowed_devices.AddDevice(kDeviceAddress1, options); |
| 500 | 500 |
| 501 EXPECT_FALSE(allowed_devices.IsAllowedToAccessAtLeastOneService(device_id)); | 501 EXPECT_FALSE(allowed_devices.IsAllowedToAccessAtLeastOneService(device_id)); |
| 502 } | 502 } |
| 503 | 503 |
| 504 } // namespace content | 504 } // namespace content |
| OLD | NEW |