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

Side by Side Diff: content/shell/browser/layout_test/layout_test_bluetooth_adapter_provider.cc

Issue 2014473002: bluetooth: Web Bluetooth can filter by empty device names, doesn't leak MACs. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@bt-GetNameOrEmpty-
Patch Set: Correct null handling in renderer; Null and Empty Named fakes & tests. Created 4 years, 4 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 "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> 7 #include <utility>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/bind_helpers.h" 10 #include "base/bind_helpers.h"
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
153 if (fake_adapter_name == "GlucoseHeartRateAdapter") 153 if (fake_adapter_name == "GlucoseHeartRateAdapter")
154 return GetGlucoseHeartRateAdapter(); 154 return GetGlucoseHeartRateAdapter();
155 if (fake_adapter_name == "UnicodeDeviceAdapter") 155 if (fake_adapter_name == "UnicodeDeviceAdapter")
156 return GetUnicodeDeviceAdapter(); 156 return GetUnicodeDeviceAdapter();
157 if (fake_adapter_name == "MissingServiceHeartRateAdapter") 157 if (fake_adapter_name == "MissingServiceHeartRateAdapter")
158 return GetMissingServiceHeartRateAdapter(); 158 return GetMissingServiceHeartRateAdapter();
159 if (fake_adapter_name == "MissingCharacteristicHeartRateAdapter") 159 if (fake_adapter_name == "MissingCharacteristicHeartRateAdapter")
160 return GetMissingCharacteristicHeartRateAdapter(); 160 return GetMissingCharacteristicHeartRateAdapter();
161 if (fake_adapter_name == "HeartRateAdapter") 161 if (fake_adapter_name == "HeartRateAdapter")
162 return GetHeartRateAdapter(); 162 return GetHeartRateAdapter();
163 if (fake_adapter_name == "EmptyNameHeartRateAdapter")
164 return GetEmptyNameHeartRateAdapter();
165 if (fake_adapter_name == "NoNameHeartRateAdapter")
166 return GetNoNameHeartRateAdapter();
163 if (fake_adapter_name == "TwoHeartRateServicesAdapter") 167 if (fake_adapter_name == "TwoHeartRateServicesAdapter")
164 return GetTwoHeartRateServicesAdapter(); 168 return GetTwoHeartRateServicesAdapter();
165 if (fake_adapter_name == "DisconnectingHeartRateAdapter") 169 if (fake_adapter_name == "DisconnectingHeartRateAdapter")
166 return GetDisconnectingHeartRateAdapter(); 170 return GetDisconnectingHeartRateAdapter();
167 if (fake_adapter_name == "BlacklistTestAdapter") 171 if (fake_adapter_name == "BlacklistTestAdapter")
168 return GetBlacklistTestAdapter(); 172 return GetBlacklistTestAdapter();
169 if (fake_adapter_name == "FailingConnectionsAdapter") 173 if (fake_adapter_name == "FailingConnectionsAdapter")
170 return GetFailingConnectionsAdapter(); 174 return GetFailingConnectionsAdapter();
171 if (fake_adapter_name == "FailingGATTOperationsAdapter") 175 if (fake_adapter_name == "FailingGATTOperationsAdapter")
172 return GetFailingGATTOperationsAdapter(); 176 return GetFailingGATTOperationsAdapter();
(...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after
437 device->AddMockService(GetGenericAccessService(device.get())); 441 device->AddMockService(GetGenericAccessService(device.get()));
438 device->AddMockService(GetHeartRateService(adapter.get(), device.get())); 442 device->AddMockService(GetHeartRateService(adapter.get(), device.get()));
439 443
440 adapter->AddMockDevice(std::move(device)); 444 adapter->AddMockDevice(std::move(device));
441 445
442 return adapter; 446 return adapter;
443 } 447 }
444 448
445 // static 449 // static
446 scoped_refptr<NiceMockBluetoothAdapter> 450 scoped_refptr<NiceMockBluetoothAdapter>
451 LayoutTestBluetoothAdapterProvider::GetEmptyNameHeartRateAdapter() {
452 scoped_refptr<NiceMockBluetoothAdapter> adapter(GetEmptyAdapter());
453 std::unique_ptr<NiceMockBluetoothDevice> device(
454 GetHeartRateDevice(adapter.get(), /* device_name */ std::string("")));
ortuno 2016/07/31 18:00:05 optional nit: you can use base::EmptyString() htt
scheib 2016/08/02 03:24:33 No longer needed, but also FYI reading the comment
455
456 // TODO(ortuno): Implement the rest of the service's characteristics
457 // See: http://crbug.com/529975
458
459 device->AddMockService(GetGenericAccessService(device.get()));
460 device->AddMockService(GetHeartRateService(adapter.get(), device.get()));
461
462 adapter->AddMockDevice(std::move(device));
463
464 return adapter;
465 }
466
467 // static
468 scoped_refptr<NiceMockBluetoothAdapter>
469 LayoutTestBluetoothAdapterProvider::GetNoNameHeartRateAdapter() {
470 scoped_refptr<NiceMockBluetoothAdapter> adapter(GetEmptyAdapter());
471 std::unique_ptr<NiceMockBluetoothDevice> device(GetHeartRateDevice(
472 adapter.get(),
473 /* device_name set to Null. base::nullopt doesn't work due to multiple
474 possible type conversions. */
475 base::Optional<std::string>()));
476
477 // TODO(ortuno): Implement the rest of the service's characteristics
478 // See: http://crbug.com/529975
479
480 device->AddMockService(GetGenericAccessService(device.get()));
481 device->AddMockService(GetHeartRateService(adapter.get(), device.get()));
482
483 adapter->AddMockDevice(std::move(device));
484
485 return adapter;
486 }
487
488 // static
489 scoped_refptr<NiceMockBluetoothAdapter>
447 LayoutTestBluetoothAdapterProvider::GetTwoHeartRateServicesAdapter() { 490 LayoutTestBluetoothAdapterProvider::GetTwoHeartRateServicesAdapter() {
448 scoped_refptr<NiceMockBluetoothAdapter> adapter(GetEmptyAdapter()); 491 scoped_refptr<NiceMockBluetoothAdapter> adapter(GetEmptyAdapter());
449 std::unique_ptr<NiceMockBluetoothDevice> device( 492 std::unique_ptr<NiceMockBluetoothDevice> device(
450 GetHeartRateDevice(adapter.get())); 493 GetHeartRateDevice(adapter.get()));
451 494
452 device->AddMockService(GetGenericAccessService(device.get())); 495 device->AddMockService(GetGenericAccessService(device.get()));
453 496
454 // First Heart Rate Service has one Heart Rate Measurement characteristic 497 // First Heart Rate Service has one Heart Rate Measurement characteristic
455 // and one Body Sensor Location characteristic. 498 // and one Body Sensor Location characteristic.
456 std::unique_ptr<NiceMockBluetoothGattService> first_heart_rate( 499 std::unique_ptr<NiceMockBluetoothGattService> first_heart_rate(
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
623 666
624 return discovery_session; 667 return discovery_session;
625 } 668 }
626 669
627 // Devices 670 // Devices
628 671
629 // static 672 // static
630 std::unique_ptr<NiceMockBluetoothDevice> 673 std::unique_ptr<NiceMockBluetoothDevice>
631 LayoutTestBluetoothAdapterProvider::GetBaseDevice( 674 LayoutTestBluetoothAdapterProvider::GetBaseDevice(
632 MockBluetoothAdapter* adapter, 675 MockBluetoothAdapter* adapter,
633 const std::string& device_name, 676 const base::Optional<std::string>& device_name,
634 device::BluetoothDevice::UUIDList uuids, 677 device::BluetoothDevice::UUIDList uuids,
635 const std::string& address) { 678 const std::string& address) {
636 std::unique_ptr<NiceMockBluetoothDevice> device(new NiceMockBluetoothDevice( 679 std::unique_ptr<NiceMockBluetoothDevice> device(new NiceMockBluetoothDevice(
637 adapter, 0x1F00 /* Bluetooth class */, device_name, address, 680 adapter, 0x1F00 /* Bluetooth class */, device_name, address,
638 true /* paired */, true /* connected */)); 681 true /* paired */, true /* connected */));
639 682
640 ON_CALL(*device, GetUUIDs()).WillByDefault(Return(uuids)); 683 ON_CALL(*device, GetUUIDs()).WillByDefault(Return(uuids));
641 684
642 // Using Invoke allows the device returned from this method to be futher 685 // Using Invoke allows the device returned from this method to be futher
643 // modified and have more services added to it. The call to ::GetGattServices 686 // modified and have more services added to it. The call to ::GetGattServices
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
679 uuids.push_back(BluetoothUUID(kGlucoseServiceUUID)); 722 uuids.push_back(BluetoothUUID(kGlucoseServiceUUID));
680 uuids.push_back(BluetoothUUID(kTxPowerServiceUUID)); 723 uuids.push_back(BluetoothUUID(kTxPowerServiceUUID));
681 724
682 return GetBaseDevice(adapter, "Glucose Device", uuids, makeMACAddress(0x2)); 725 return GetBaseDevice(adapter, "Glucose Device", uuids, makeMACAddress(0x2));
683 } 726 }
684 727
685 // static 728 // static
686 std::unique_ptr<NiceMockBluetoothDevice> 729 std::unique_ptr<NiceMockBluetoothDevice>
687 LayoutTestBluetoothAdapterProvider::GetConnectableDevice( 730 LayoutTestBluetoothAdapterProvider::GetConnectableDevice(
688 device::MockBluetoothAdapter* adapter, 731 device::MockBluetoothAdapter* adapter,
689 const std::string& device_name, 732 const base::Optional<std::string>& device_name,
690 BluetoothDevice::UUIDList uuids, 733 BluetoothDevice::UUIDList uuids,
691 const std::string& address) { 734 const std::string& address) {
692 std::unique_ptr<NiceMockBluetoothDevice> device( 735 std::unique_ptr<NiceMockBluetoothDevice> device(
693 GetBaseDevice(adapter, device_name, uuids, address)); 736 GetBaseDevice(adapter, device_name, uuids, address));
694 737
695 MockBluetoothDevice* device_ptr = device.get(); 738 MockBluetoothDevice* device_ptr = device.get();
696 739
697 ON_CALL(*device, CreateGattConnection(_, _)) 740 ON_CALL(*device, CreateGattConnection(_, _))
698 .WillByDefault(RunCallbackWithResult<0 /* success_callback */>( 741 .WillByDefault(RunCallbackWithResult<0 /* success_callback */>(
699 [adapter, device_ptr]() { 742 [adapter, device_ptr]() {
(...skipping 21 matching lines...) Expand all
721 764
722 ON_CALL(*device, CreateGattConnection(_, _)) 765 ON_CALL(*device, CreateGattConnection(_, _))
723 .WillByDefault(RunCallback<1 /* error_callback */>(error_code)); 766 .WillByDefault(RunCallback<1 /* error_callback */>(error_code));
724 767
725 return device; 768 return device;
726 } 769 }
727 770
728 // static 771 // static
729 std::unique_ptr<NiceMockBluetoothDevice> 772 std::unique_ptr<NiceMockBluetoothDevice>
730 LayoutTestBluetoothAdapterProvider::GetHeartRateDevice( 773 LayoutTestBluetoothAdapterProvider::GetHeartRateDevice(
731 MockBluetoothAdapter* adapter) { 774 MockBluetoothAdapter* adapter,
775 const base::Optional<std::string>& device_name) {
732 BluetoothDevice::UUIDList uuids; 776 BluetoothDevice::UUIDList uuids;
733 uuids.push_back(BluetoothUUID(kGenericAccessServiceUUID)); 777 uuids.push_back(BluetoothUUID(kGenericAccessServiceUUID));
734 uuids.push_back(BluetoothUUID(kHeartRateServiceUUID)); 778 uuids.push_back(BluetoothUUID(kHeartRateServiceUUID));
735 779
736 return GetConnectableDevice(adapter, "Heart Rate Device", uuids); 780 return GetConnectableDevice(adapter, device_name, uuids);
737 } 781 }
738 782
739 // Services 783 // Services
740 784
741 // static 785 // static
742 std::unique_ptr<NiceMockBluetoothGattService> 786 std::unique_ptr<NiceMockBluetoothGattService>
743 LayoutTestBluetoothAdapterProvider::GetBaseGATTService( 787 LayoutTestBluetoothAdapterProvider::GetBaseGATTService(
744 const std::string& identifier, 788 const std::string& identifier,
745 MockBluetoothDevice* device, 789 MockBluetoothDevice* device,
746 const std::string& uuid) { 790 const std::string& uuid) {
(...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after
1081 return BluetoothUUID(); 1125 return BluetoothUUID();
1082 } 1126 }
1083 1127
1084 // static 1128 // static
1085 std::string LayoutTestBluetoothAdapterProvider::makeMACAddress(uint64_t addr) { 1129 std::string LayoutTestBluetoothAdapterProvider::makeMACAddress(uint64_t addr) {
1086 return BluetoothDevice::CanonicalizeAddress( 1130 return BluetoothDevice::CanonicalizeAddress(
1087 base::StringPrintf("%012" PRIx64, addr)); 1131 base::StringPrintf("%012" PRIx64, addr));
1088 } 1132 }
1089 1133
1090 } // namespace content 1134 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698