Index: content/browser/bluetooth/bluetooth_device_chooser_controller.cc |
diff --git a/content/browser/bluetooth/bluetooth_device_chooser_controller.cc b/content/browser/bluetooth/bluetooth_device_chooser_controller.cc |
index dc255a8e9afd601d84c9cb6cfe9969474fefb0eb..9b77ba56a9b4a8a51eed7bd08a3d674bca857c4d 100644 |
--- a/content/browser/bluetooth/bluetooth_device_chooser_controller.cc |
+++ b/content/browser/bluetooth/bluetooth_device_chooser_controller.cc |
@@ -24,6 +24,8 @@ |
#include "device/bluetooth/bluetooth_adapter.h" |
#include "device/bluetooth/bluetooth_discovery_session.h" |
+using device::BluetoothUUID; |
+ |
namespace content { |
namespace { |
@@ -46,25 +48,12 @@ void LogRequestDeviceOptions( |
VLOG(1) << "Services: "; |
VLOG(1) << "\t["; |
for (const auto& service : filter->services) |
- VLOG(1) << "\t\t" << service; |
+ VLOG(1) << "\t\t" << service->canonical_value(); |
VLOG(1) << "\t]"; |
} |
} |
} |
-bool IsValidUUID(const mojo::String& uuid) { |
- device::BluetoothUUID parsed_uuid(uuid); |
- return parsed_uuid.IsValid() && |
- parsed_uuid.format() == device::BluetoothUUID::kFormat128Bit; |
-} |
- |
-bool HasInvalidOptionalServices( |
- const mojo::Array<mojo::String>& optional_services) { |
- return optional_services.end() != std::find_if_not(optional_services.begin(), |
- optional_services.end(), |
- IsValidUUID); |
-} |
- |
bool IsEmptyOrInvalidFilter( |
const blink::mojom::WebBluetoothScanFilterPtr& filter) { |
// At least one member needs to be present. |
@@ -80,12 +69,6 @@ bool IsEmptyOrInvalidFilter( |
filter->name_prefix.size() > kMaxLengthForDeviceName) |
return true; |
- if (!filter->services.is_null()) { |
- const auto& services = filter->services; |
- return services.end() != |
- std::find_if_not(services.begin(), services.end(), IsValidUUID); |
- } |
- |
return false; |
} |
@@ -115,10 +98,10 @@ bool MatchesFilter(const device::BluetoothDevice& device, |
if (!filter->services.is_null()) { |
const auto& device_uuid_list = device.GetUUIDs(); |
- const std::set<device::BluetoothUUID> device_uuids(device_uuid_list.begin(), |
- device_uuid_list.end()); |
- for (const auto& service : filter->services) { |
- if (!ContainsKey(device_uuids, device::BluetoothUUID(service))) { |
+ const std::unordered_set<BluetoothUUID> device_uuids( |
+ device_uuid_list.begin(), device_uuid_list.end()); |
+ for (const base::Optional<BluetoothUUID>& service : filter->services) { |
+ if (!ContainsKey(device_uuids, service.value())) { |
return false; |
} |
} |
@@ -141,16 +124,16 @@ bool MatchesFilters( |
std::unique_ptr<device::BluetoothDiscoveryFilter> ComputeScanFilter( |
const mojo::Array<blink::mojom::WebBluetoothScanFilterPtr>& filters) { |
- std::unordered_set<std::string> services; |
+ std::unordered_set<BluetoothUUID> services; |
for (const auto& filter : filters) { |
- for (const std::string& service : filter->services) { |
- services.insert(service); |
+ for (const base::Optional<BluetoothUUID>& service : filter->services) { |
+ services.insert(service.value()); |
} |
} |
auto discovery_filter = base::MakeUnique<device::BluetoothDiscoveryFilter>( |
device::BluetoothDiscoveryFilter::TRANSPORT_DUAL); |
- for (const std::string& service : services) { |
- discovery_filter->AddUUID(device::BluetoothUUID(service)); |
+ for (const BluetoothUUID& service : services) { |
+ discovery_filter->AddUUID(service); |
} |
return discovery_filter; |
} |
@@ -233,8 +216,7 @@ void BluetoothDeviceChooserController::GetDevice( |
error_callback_ = error_callback; |
// The renderer should never send empty filters. |
- if (HasEmptyOrInvalidFilter(options->filters) || |
- HasInvalidOptionalServices(options->optional_services)) { |
+ if (HasEmptyOrInvalidFilter(options->filters)) { |
web_bluetooth_service_->CrashRendererAndClosePipe( |
bad_message::BDH_EMPTY_OR_INVALID_FILTERS); |
return; |