| 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/shell/browser/layout_test/layout_test_bluetooth_adapter_provid
er.h" | 5 #include "content/shell/browser/layout_test/layout_test_bluetooth_adapter_provid
er.h" |
| 6 | 6 |
| 7 #include <utility> |
| 8 |
| 7 #include "base/bind.h" | 9 #include "base/bind.h" |
| 8 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
| 9 #include "base/format_macros.h" | 11 #include "base/format_macros.h" |
| 10 #include "base/location.h" | 12 #include "base/location.h" |
| 11 #include "base/strings/string_number_conversions.h" | 13 #include "base/strings/string_number_conversions.h" |
| 12 #include "base/strings/string_split.h" | 14 #include "base/strings/string_split.h" |
| 13 #include "base/strings/string_util.h" | 15 #include "base/strings/string_util.h" |
| 14 #include "base/strings/stringprintf.h" | 16 #include "base/strings/stringprintf.h" |
| 15 #include "base/thread_task_runner_handle.h" | 17 #include "base/thread_task_runner_handle.h" |
| 16 #include "device/bluetooth/bluetooth_adapter.h" | 18 #include "device/bluetooth/bluetooth_adapter.h" |
| (...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 308 // static | 310 // static |
| 309 scoped_refptr<NiceMockBluetoothAdapter> | 311 scoped_refptr<NiceMockBluetoothAdapter> |
| 310 LayoutTestBluetoothAdapterProvider::GetPowerValueAdapter(int8_t tx_power, | 312 LayoutTestBluetoothAdapterProvider::GetPowerValueAdapter(int8_t tx_power, |
| 311 int8_t rssi) { | 313 int8_t rssi) { |
| 312 scoped_refptr<NiceMockBluetoothAdapter> adapter(GetEmptyAdapter()); | 314 scoped_refptr<NiceMockBluetoothAdapter> adapter(GetEmptyAdapter()); |
| 313 scoped_ptr<NiceMockBluetoothDevice> device(GetHeartRateDevice(adapter.get())); | 315 scoped_ptr<NiceMockBluetoothDevice> device(GetHeartRateDevice(adapter.get())); |
| 314 | 316 |
| 315 ON_CALL(*device, GetInquiryTxPower()).WillByDefault(Return(tx_power)); | 317 ON_CALL(*device, GetInquiryTxPower()).WillByDefault(Return(tx_power)); |
| 316 ON_CALL(*device, GetInquiryRSSI()).WillByDefault(Return(rssi)); | 318 ON_CALL(*device, GetInquiryRSSI()).WillByDefault(Return(rssi)); |
| 317 | 319 |
| 318 adapter->AddMockDevice(device.Pass()); | 320 adapter->AddMockDevice(std::move(device)); |
| 319 | 321 |
| 320 return adapter; | 322 return adapter; |
| 321 } | 323 } |
| 322 | 324 |
| 323 // static | 325 // static |
| 324 scoped_refptr<NiceMockBluetoothAdapter> | 326 scoped_refptr<NiceMockBluetoothAdapter> |
| 325 LayoutTestBluetoothAdapterProvider::GetPowerPresenceAdapter( | 327 LayoutTestBluetoothAdapterProvider::GetPowerPresenceAdapter( |
| 326 bool tx_power_present, | 328 bool tx_power_present, |
| 327 bool rssi_present) { | 329 bool rssi_present) { |
| 328 // TODO(ortuno): RSSI Unknown and Tx Power Unknown should have different | 330 // TODO(ortuno): RSSI Unknown and Tx Power Unknown should have different |
| (...skipping 24 matching lines...) Expand all Loading... |
| 353 adapter->AddMockDevice(GetBaseDevice(adapter.get(), "❤❤❤❤❤❤❤❤❤")); | 355 adapter->AddMockDevice(GetBaseDevice(adapter.get(), "❤❤❤❤❤❤❤❤❤")); |
| 354 | 356 |
| 355 return adapter; | 357 return adapter; |
| 356 } | 358 } |
| 357 | 359 |
| 358 // Adds a device to |adapter| and notifies all observers about that new device. | 360 // Adds a device to |adapter| and notifies all observers about that new device. |
| 359 // Mocks can call this asynchronously to cause changes in the middle of a test. | 361 // Mocks can call this asynchronously to cause changes in the middle of a test. |
| 360 static void AddDevice(scoped_refptr<NiceMockBluetoothAdapter> adapter, | 362 static void AddDevice(scoped_refptr<NiceMockBluetoothAdapter> adapter, |
| 361 scoped_ptr<NiceMockBluetoothDevice> new_device) { | 363 scoped_ptr<NiceMockBluetoothDevice> new_device) { |
| 362 NiceMockBluetoothDevice* new_device_ptr = new_device.get(); | 364 NiceMockBluetoothDevice* new_device_ptr = new_device.get(); |
| 363 adapter->AddMockDevice(new_device.Pass()); | 365 adapter->AddMockDevice(std::move(new_device)); |
| 364 FOR_EACH_OBSERVER(BluetoothAdapter::Observer, adapter->GetObservers(), | 366 FOR_EACH_OBSERVER(BluetoothAdapter::Observer, adapter->GetObservers(), |
| 365 DeviceAdded(adapter.get(), new_device_ptr)); | 367 DeviceAdded(adapter.get(), new_device_ptr)); |
| 366 } | 368 } |
| 367 | 369 |
| 368 // static | 370 // static |
| 369 scoped_refptr<NiceMockBluetoothAdapter> | 371 scoped_refptr<NiceMockBluetoothAdapter> |
| 370 LayoutTestBluetoothAdapterProvider::GetSecondDiscoveryFindsHeartRateAdapter() { | 372 LayoutTestBluetoothAdapterProvider::GetSecondDiscoveryFindsHeartRateAdapter() { |
| 371 scoped_refptr<NiceMockBluetoothAdapter> adapter(GetPoweredAdapter()); | 373 scoped_refptr<NiceMockBluetoothAdapter> adapter(GetPoweredAdapter()); |
| 372 NiceMockBluetoothAdapter* adapter_ptr = adapter.get(); | 374 NiceMockBluetoothAdapter* adapter_ptr = adapter.get(); |
| 373 | 375 |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 406 | 408 |
| 407 scoped_ptr<NiceMockBluetoothDevice> device(GetHeartRateDevice(adapter.get())); | 409 scoped_ptr<NiceMockBluetoothDevice> device(GetHeartRateDevice(adapter.get())); |
| 408 | 410 |
| 409 scoped_ptr<NiceMockBluetoothGattService> generic_access( | 411 scoped_ptr<NiceMockBluetoothGattService> generic_access( |
| 410 GetBaseGATTService(device.get(), kGenericAccessServiceUUID)); | 412 GetBaseGATTService(device.get(), kGenericAccessServiceUUID)); |
| 411 scoped_ptr<NiceMockBluetoothGattService> heart_rate( | 413 scoped_ptr<NiceMockBluetoothGattService> heart_rate( |
| 412 GetBaseGATTService(device.get(), kHeartRateServiceUUID)); | 414 GetBaseGATTService(device.get(), kHeartRateServiceUUID)); |
| 413 | 415 |
| 414 // Intentionally NOT adding a characteristic to heart_rate service. | 416 // Intentionally NOT adding a characteristic to heart_rate service. |
| 415 | 417 |
| 416 device->AddMockService(generic_access.Pass()); | 418 device->AddMockService(std::move(generic_access)); |
| 417 device->AddMockService(heart_rate.Pass()); | 419 device->AddMockService(std::move(heart_rate)); |
| 418 adapter->AddMockDevice(device.Pass()); | 420 adapter->AddMockDevice(std::move(device)); |
| 419 | 421 |
| 420 return adapter; | 422 return adapter; |
| 421 } | 423 } |
| 422 | 424 |
| 423 // static | 425 // static |
| 424 scoped_refptr<NiceMockBluetoothAdapter> | 426 scoped_refptr<NiceMockBluetoothAdapter> |
| 425 LayoutTestBluetoothAdapterProvider::GetDelayedServicesDiscoveryAdapter() { | 427 LayoutTestBluetoothAdapterProvider::GetDelayedServicesDiscoveryAdapter() { |
| 426 scoped_refptr<NiceMockBluetoothAdapter> adapter(GetEmptyAdapter()); | 428 scoped_refptr<NiceMockBluetoothAdapter> adapter(GetEmptyAdapter()); |
| 427 scoped_ptr<NiceMockBluetoothDevice> device(GetHeartRateDevice(adapter.get())); | 429 scoped_ptr<NiceMockBluetoothDevice> device(GetHeartRateDevice(adapter.get())); |
| 428 | 430 |
| (...skipping 15 matching lines...) Expand all Loading... |
| 444 std::vector<BluetoothGattService*> services = | 446 std::vector<BluetoothGattService*> services = |
| 445 device_ptr->GetMockServices(); | 447 device_ptr->GetMockServices(); |
| 446 | 448 |
| 447 if (services.size() > 0) { | 449 if (services.size() > 0) { |
| 448 return services; | 450 return services; |
| 449 } | 451 } |
| 450 | 452 |
| 451 scoped_ptr<NiceMockBluetoothGattService> heart_rate( | 453 scoped_ptr<NiceMockBluetoothGattService> heart_rate( |
| 452 GetBaseGATTService(device_ptr, kHeartRateServiceUUID)); | 454 GetBaseGATTService(device_ptr, kHeartRateServiceUUID)); |
| 453 | 455 |
| 454 device_ptr->AddMockService(heart_rate.Pass()); | 456 device_ptr->AddMockService(std::move(heart_rate)); |
| 455 base::ThreadTaskRunnerHandle::Get()->PostTask( | 457 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| 456 FROM_HERE, base::Bind(&NotifyServicesDiscovered, | 458 FROM_HERE, base::Bind(&NotifyServicesDiscovered, |
| 457 make_scoped_refptr(adapter_ptr), device_ptr)); | 459 make_scoped_refptr(adapter_ptr), device_ptr)); |
| 458 | 460 |
| 459 DCHECK(services.size() == 0); | 461 DCHECK(services.size() == 0); |
| 460 return services; | 462 return services; |
| 461 })); | 463 })); |
| 462 | 464 |
| 463 adapter->AddMockDevice(device.Pass()); | 465 adapter->AddMockDevice(std::move(device)); |
| 464 | 466 |
| 465 return adapter; | 467 return adapter; |
| 466 } | 468 } |
| 467 | 469 |
| 468 // static | 470 // static |
| 469 scoped_refptr<NiceMockBluetoothAdapter> | 471 scoped_refptr<NiceMockBluetoothAdapter> |
| 470 LayoutTestBluetoothAdapterProvider::GetHeartRateAdapter() { | 472 LayoutTestBluetoothAdapterProvider::GetHeartRateAdapter() { |
| 471 scoped_refptr<NiceMockBluetoothAdapter> adapter(GetEmptyAdapter()); | 473 scoped_refptr<NiceMockBluetoothAdapter> adapter(GetEmptyAdapter()); |
| 472 scoped_ptr<NiceMockBluetoothDevice> device(GetHeartRateDevice(adapter.get())); | 474 scoped_ptr<NiceMockBluetoothDevice> device(GetHeartRateDevice(adapter.get())); |
| 473 | 475 |
| 474 // TODO(ortuno): Implement the rest of the service's characteristics | 476 // TODO(ortuno): Implement the rest of the service's characteristics |
| 475 // See: http://crbug.com/529975 | 477 // See: http://crbug.com/529975 |
| 476 | 478 |
| 477 device->AddMockService(GetGenericAccessService(adapter.get(), device.get())); | 479 device->AddMockService(GetGenericAccessService(adapter.get(), device.get())); |
| 478 device->AddMockService(GetHeartRateService(adapter.get(), device.get())); | 480 device->AddMockService(GetHeartRateService(adapter.get(), device.get())); |
| 479 adapter->AddMockDevice(device.Pass()); | 481 adapter->AddMockDevice(std::move(device)); |
| 480 | 482 |
| 481 return adapter; | 483 return adapter; |
| 482 } | 484 } |
| 483 | 485 |
| 484 // static | 486 // static |
| 485 scoped_refptr<NiceMockBluetoothAdapter> | 487 scoped_refptr<NiceMockBluetoothAdapter> |
| 486 LayoutTestBluetoothAdapterProvider::GetFailingConnectionsAdapter() { | 488 LayoutTestBluetoothAdapterProvider::GetFailingConnectionsAdapter() { |
| 487 scoped_refptr<NiceMockBluetoothAdapter> adapter(GetEmptyAdapter()); | 489 scoped_refptr<NiceMockBluetoothAdapter> adapter(GetEmptyAdapter()); |
| 488 | 490 |
| 489 for (int error = BluetoothDevice::ERROR_UNKNOWN; | 491 for (int error = BluetoothDevice::ERROR_UNKNOWN; |
| (...skipping 21 matching lines...) Expand all Loading... |
| 511 scoped_ptr<NiceMockBluetoothGattService> service( | 513 scoped_ptr<NiceMockBluetoothGattService> service( |
| 512 GetBaseGATTService(device.get(), errorsServiceUUID)); | 514 GetBaseGATTService(device.get(), errorsServiceUUID)); |
| 513 | 515 |
| 514 for (int error = BluetoothGattService::GATT_ERROR_UNKNOWN; | 516 for (int error = BluetoothGattService::GATT_ERROR_UNKNOWN; |
| 515 error <= BluetoothGattService::GATT_ERROR_NOT_SUPPORTED; error++) { | 517 error <= BluetoothGattService::GATT_ERROR_NOT_SUPPORTED; error++) { |
| 516 service->AddMockCharacteristic(GetErrorCharacteristic( | 518 service->AddMockCharacteristic(GetErrorCharacteristic( |
| 517 service.get(), | 519 service.get(), |
| 518 static_cast<BluetoothGattService::GattErrorCode>(error))); | 520 static_cast<BluetoothGattService::GattErrorCode>(error))); |
| 519 } | 521 } |
| 520 | 522 |
| 521 device->AddMockService(service.Pass()); | 523 device->AddMockService(std::move(service)); |
| 522 adapter->AddMockDevice(device.Pass()); | 524 adapter->AddMockDevice(std::move(device)); |
| 523 | 525 |
| 524 return adapter; | 526 return adapter; |
| 525 } | 527 } |
| 526 | 528 |
| 527 // Discovery Sessions | 529 // Discovery Sessions |
| 528 | 530 |
| 529 // static | 531 // static |
| 530 scoped_ptr<NiceMockBluetoothDiscoverySession> | 532 scoped_ptr<NiceMockBluetoothDiscoverySession> |
| 531 LayoutTestBluetoothAdapterProvider::GetDiscoverySession() { | 533 LayoutTestBluetoothAdapterProvider::GetDiscoverySession() { |
| 532 scoped_ptr<NiceMockBluetoothDiscoverySession> discovery_session( | 534 scoped_ptr<NiceMockBluetoothDiscoverySession> discovery_session( |
| (...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 692 std::vector<uint8_t> device_name_value(device_name_str.begin(), | 694 std::vector<uint8_t> device_name_value(device_name_str.begin(), |
| 693 device_name_str.end()); | 695 device_name_str.end()); |
| 694 | 696 |
| 695 ON_CALL(*device_name, ReadRemoteCharacteristic(_, _)) | 697 ON_CALL(*device_name, ReadRemoteCharacteristic(_, _)) |
| 696 .WillByDefault(RunCallback<0>(device_name_value)); | 698 .WillByDefault(RunCallback<0>(device_name_value)); |
| 697 | 699 |
| 698 // Write response. | 700 // Write response. |
| 699 ON_CALL(*device_name, WriteRemoteCharacteristic(_, _, _)) | 701 ON_CALL(*device_name, WriteRemoteCharacteristic(_, _, _)) |
| 700 .WillByDefault(RunCallback<1 /* success callback */>()); | 702 .WillByDefault(RunCallback<1 /* success callback */>()); |
| 701 | 703 |
| 702 generic_access->AddMockCharacteristic(device_name.Pass()); | 704 generic_access->AddMockCharacteristic(std::move(device_name)); |
| 703 | 705 |
| 704 return generic_access; | 706 return generic_access; |
| 705 } | 707 } |
| 706 | 708 |
| 707 // static | 709 // static |
| 708 scoped_ptr<NiceMockBluetoothGattService> | 710 scoped_ptr<NiceMockBluetoothGattService> |
| 709 LayoutTestBluetoothAdapterProvider::GetHeartRateService( | 711 LayoutTestBluetoothAdapterProvider::GetHeartRateService( |
| 710 MockBluetoothAdapter* adapter, | 712 MockBluetoothAdapter* adapter, |
| 711 MockBluetoothDevice* device) { | 713 MockBluetoothDevice* device) { |
| 712 scoped_ptr<NiceMockBluetoothGattService> heart_rate( | 714 scoped_ptr<NiceMockBluetoothGattService> heart_rate( |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 747 location[0] = 1; // Chest | 749 location[0] = 1; // Chest |
| 748 // Read a characteristic has a side effect of | 750 // Read a characteristic has a side effect of |
| 749 // GattCharacteristicValueChanged being called. | 751 // GattCharacteristicValueChanged being called. |
| 750 FOR_EACH_OBSERVER(BluetoothAdapter::Observer, | 752 FOR_EACH_OBSERVER(BluetoothAdapter::Observer, |
| 751 adapter->GetObservers(), | 753 adapter->GetObservers(), |
| 752 GattCharacteristicValueChanged( | 754 GattCharacteristicValueChanged( |
| 753 adapter, location_ptr, location)); | 755 adapter, location_ptr, location)); |
| 754 return location; | 756 return location; |
| 755 })); | 757 })); |
| 756 | 758 |
| 757 heart_rate->AddMockCharacteristic(heart_rate_measurement.Pass()); | 759 heart_rate->AddMockCharacteristic(std::move(heart_rate_measurement)); |
| 758 heart_rate->AddMockCharacteristic(body_sensor_location.Pass()); | 760 heart_rate->AddMockCharacteristic(std::move(body_sensor_location)); |
| 759 | 761 |
| 760 return heart_rate; | 762 return heart_rate; |
| 761 } | 763 } |
| 762 | 764 |
| 763 // Characteristics | 765 // Characteristics |
| 764 | 766 |
| 765 // static | 767 // static |
| 766 scoped_ptr<NiceMockBluetoothGattCharacteristic> | 768 scoped_ptr<NiceMockBluetoothGattCharacteristic> |
| 767 LayoutTestBluetoothAdapterProvider::GetBaseGATTCharacteristic( | 769 LayoutTestBluetoothAdapterProvider::GetBaseGATTCharacteristic( |
| 768 MockBluetoothGattService* service, | 770 MockBluetoothGattService* service, |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 829 return base::StringPrintf("%08x-97e5-4cd7-b9f1-f5a427670c59", alias); | 831 return base::StringPrintf("%08x-97e5-4cd7-b9f1-f5a427670c59", alias); |
| 830 } | 832 } |
| 831 | 833 |
| 832 // static | 834 // static |
| 833 std::string LayoutTestBluetoothAdapterProvider::makeMACAddress(uint64_t addr) { | 835 std::string LayoutTestBluetoothAdapterProvider::makeMACAddress(uint64_t addr) { |
| 834 return BluetoothDevice::CanonicalizeAddress( | 836 return BluetoothDevice::CanonicalizeAddress( |
| 835 base::StringPrintf("%012" PRIx64, addr)); | 837 base::StringPrintf("%012" PRIx64, addr)); |
| 836 } | 838 } |
| 837 | 839 |
| 838 } // namespace content | 840 } // namespace content |
| OLD | NEW |