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

Unified Diff: content/browser/bluetooth/bluetooth_allowed_devices_map.cc

Issue 1663883003: bluetooth: When adding a device a second time merge the list of services. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@my-origin
Patch Set: Address jyasskin's comments Created 4 years, 11 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 side-by-side diff with in-line comments
Download patch
Index: content/browser/bluetooth/bluetooth_allowed_devices_map.cc
diff --git a/content/browser/bluetooth/bluetooth_allowed_devices_map.cc b/content/browser/bluetooth/bluetooth_allowed_devices_map.cc
index c959c8715ac0de11529a2987b2c9f41189a998b3..e2c8ebc8ce6438dedd87fae2cd777ce95cc1f802 100644
--- a/content/browser/bluetooth/bluetooth_allowed_devices_map.cc
+++ b/content/browser/bluetooth/bluetooth_allowed_devices_map.cc
@@ -55,9 +55,16 @@ const std::string& BluetoothAllowedDevicesMap::AddDevice(
// https://w3c.github.io/webappsec-secure-contexts/
CHECK(!origin.unique());
- if (ContainsKey(origin_to_device_address_to_id_map_[origin],
- device_address)) {
+ auto device_address_to_id_map = origin_to_device_address_to_id_map_[origin];
+ auto id_iter = device_address_to_id_map.find(device_address);
+ if (id_iter != device_address_to_id_map.end()) {
VLOG(1) << "Device already in map of allowed devices.";
+ const auto& device_id = id_iter->second;
+
+ AddUnionOfServicesTo(
+ filters, optional_services,
+ &origin_to_device_id_to_services_map_[origin][device_id]);
+
return origin_to_device_address_to_id_map_[origin][device_address];
}
const std::string device_id = GenerateDeviceId();
@@ -65,8 +72,9 @@ const std::string& BluetoothAllowedDevicesMap::AddDevice(
origin_to_device_address_to_id_map_[origin][device_address] = device_id;
origin_to_device_id_to_address_map_[origin][device_id] = device_address;
- origin_to_device_id_to_services_map_[origin][device_id] =
- UnionOfServices(filters, optional_services);
+ AddUnionOfServicesTo(
+ filters, optional_services,
+ &origin_to_device_id_to_services_map_[origin][device_id]);
CHECK(device_id_set_.insert(device_id).second);
@@ -155,19 +163,18 @@ std::string BluetoothAllowedDevicesMap::GenerateDeviceId() {
return device_id;
}
-std::set<std::string> BluetoothAllowedDevicesMap::UnionOfServices(
+void BluetoothAllowedDevicesMap::AddUnionOfServicesTo(
const std::vector<BluetoothScanFilter>& filters,
- const std::vector<BluetoothUUID>& optional_services) {
- std::set<std::string> unionOfServices;
+ const std::vector<device::BluetoothUUID>& optional_services,
+ std::set<std::string>* unionOfServices) {
for (const auto& filter : filters) {
for (const BluetoothUUID& uuid : filter.services) {
- unionOfServices.insert(uuid.canonical_value());
+ unionOfServices->insert(uuid.canonical_value());
}
}
for (const BluetoothUUID& uuid : optional_services) {
- unionOfServices.insert(uuid.canonical_value());
+ unionOfServices->insert(uuid.canonical_value());
}
- return unionOfServices;
}
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698