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

Unified Diff: device/usb/webusb_descriptors.cc

Issue 2876463008: Read WebUSB landing page even if allowed origin read fails (Closed)
Patch Set: s/indicies/indices/ Created 3 years, 7 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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(
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698