Index: device/usb/webusb_descriptors.cc |
diff --git a/device/usb/webusb_descriptors.cc b/device/usb/webusb_descriptors.cc |
index 3df67eb8b707719d273e6b6ee948a0f9bc72cbc2..7a0c970060bd676eac44c29cf27d00c6aa9dfac3 100644 |
--- a/device/usb/webusb_descriptors.cc |
+++ b/device/usb/webusb_descriptors.cc |
@@ -157,24 +157,26 @@ void OnDoneReadingUrls(std::unique_ptr<WebUsbAllowedOrigins> allowed_origins, |
uint8_t landing_page_id, |
std::unique_ptr<std::map<uint8_t, GURL>> url_map, |
const ReadWebUsbDescriptorsCallback& callback) { |
- for (uint8_t origin_id : allowed_origins->origin_ids) { |
- const auto& it = url_map->find(origin_id); |
- if (it != url_map->end()) |
- allowed_origins->origins.push_back(it->second.GetOrigin()); |
- } |
- |
- for (auto& configuration : allowed_origins->configurations) { |
- for (uint8_t origin_id : configuration.origin_ids) { |
+ if (allowed_origins) { |
+ for (uint8_t origin_id : allowed_origins->origin_ids) { |
const auto& it = url_map->find(origin_id); |
if (it != url_map->end()) |
- configuration.origins.push_back(it->second.GetOrigin()); |
+ allowed_origins->origins.push_back(it->second.GetOrigin()); |
} |
- for (auto& function : configuration.functions) { |
- for (uint8_t origin_id : function.origin_ids) { |
+ for (auto& configuration : allowed_origins->configurations) { |
+ for (uint8_t origin_id : configuration.origin_ids) { |
const auto& it = url_map->find(origin_id); |
if (it != url_map->end()) |
- function.origins.push_back(it->second.GetOrigin()); |
+ configuration.origins.push_back(it->second.GetOrigin()); |
+ } |
+ |
+ for (auto& function : configuration.functions) { |
+ for (uint8_t origin_id : function.origin_ids) { |
+ const auto& it = url_map->find(origin_id); |
+ if (it != url_map->end()) |
+ function.origins.push_back(it->second.GetOrigin()); |
+ } |
} |
} |
} |
@@ -223,27 +225,25 @@ void ReadUrlDescriptor(scoped_refptr<UsbDeviceHandle> device_handle, |
} |
// Reads URL descriptors from the device so that it can fill |allowed_origins| |
-// with the GURLs matching the indicies already collected. |
+// with the GURLs matching the indices already collected. |
void ReadUrlDescriptors(scoped_refptr<UsbDeviceHandle> device_handle, |
uint8_t vendor_code, |
uint8_t landing_page_id, |
const ReadWebUsbDescriptorsCallback& callback, |
std::unique_ptr<WebUsbAllowedOrigins> allowed_origins) { |
- if (!allowed_origins) { |
- callback.Run(nullptr, GURL()); |
- return; |
- } |
- |
std::set<uint8_t> to_request; |
if (landing_page_id != 0) |
to_request.insert(landing_page_id); |
- to_request.insert(allowed_origins->origin_ids.begin(), |
- allowed_origins->origin_ids.end()); |
- for (auto& config : allowed_origins->configurations) { |
- to_request.insert(config.origin_ids.begin(), config.origin_ids.end()); |
- for (auto& function : config.functions) { |
- to_request.insert(function.origin_ids.begin(), function.origin_ids.end()); |
+ if (allowed_origins) { |
+ to_request.insert(allowed_origins->origin_ids.begin(), |
+ allowed_origins->origin_ids.end()); |
+ for (auto& config : allowed_origins->configurations) { |
+ to_request.insert(config.origin_ids.begin(), config.origin_ids.end()); |
+ for (auto& function : config.functions) { |
+ to_request.insert(function.origin_ids.begin(), |
+ function.origin_ids.end()); |
+ } |
} |
} |
@@ -255,9 +255,8 @@ void ReadUrlDescriptors(scoped_refptr<UsbDeviceHandle> device_handle, |
base::Bind(&OnDoneReadingUrls, base::Passed(&allowed_origins), |
landing_page_id, base::Passed(&url_map), callback)); |
- for (uint8_t index : to_request) { |
+ for (uint8_t index : to_request) |
ReadUrlDescriptor(device_handle, vendor_code, url_map_ptr, index, barrier); |
- } |
} |
void OnReadWebUsbAllowedOrigins( |