Index: chrome/browser/usb/web_usb_permission_provider.cc |
diff --git a/chrome/browser/usb/web_usb_permission_provider.cc b/chrome/browser/usb/web_usb_permission_provider.cc |
index f8a27842715da93319b08a2faa6ddf8167444fc1..f77232dccc6c07d05776e17289deaa023f4e909c 100644 |
--- a/chrome/browser/usb/web_usb_permission_provider.cc |
+++ b/chrome/browser/usb/web_usb_permission_provider.cc |
@@ -10,27 +10,32 @@ |
#include "content/public/browser/browser_thread.h" |
#include "content/public/browser/render_frame_host.h" |
#include "device/core/device_client.h" |
-#include "device/usb/usb_device.h" |
-#include "device/usb/usb_service.h" |
-#include "device/usb/webusb_descriptors.h" |
namespace { |
-bool FindOriginInDescriptorSet(const device::WebUsbDescriptorSet* set, |
+bool FindOriginInDescriptorSet(const device::usb::WebUsbDescriptorSet* set, |
const GURL& origin) { |
if (!set) |
return false; |
- if (ContainsValue(set->origins, origin)) |
- return true; |
- for (const device::WebUsbConfigurationSubset& config_subset : |
- set->configurations) { |
- if (ContainsValue(config_subset.origins, origin)) |
+ for (size_t i = 0; i < set->origins.size(); ++i) { |
+ if (origin.spec() == set->origins[i]) |
return true; |
- for (const device::WebUsbFunctionSubset& function_subset : |
- config_subset.functions) { |
- if (ContainsValue(function_subset.origins, origin)) |
+ } |
+ for (size_t i = 0; i < set->configurations.size(); ++i) { |
+ const device::usb::WebUsbConfigurationSubsetPtr& config = |
+ set->configurations[i]; |
+ for (size_t j = 0; i < config->origins.size(); ++j) { |
+ if (origin.spec() == config->origins[j]) |
return true; |
} |
+ for (size_t j = 0; j < config->functions.size(); ++j) { |
+ const device::usb::WebUsbFunctionSubsetPtr& function = |
+ config->functions[j]; |
+ for (size_t k = 0; k < function->origins.size(); ++k) { |
+ if (origin.spec() == function->origins[k]) |
+ return true; |
+ } |
+ } |
} |
return false; |
} |
@@ -62,20 +67,18 @@ WebUSBPermissionProvider::WebUSBPermissionProvider( |
render_frame_host_(render_frame_host) {} |
void WebUSBPermissionProvider::HasDevicePermission( |
- mojo::Array<mojo::String> requested_guids, |
+ mojo::Array<device::usb::DeviceInfoPtr> requested_devices, |
const HasDevicePermissionCallback& callback) { |
DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
- device::UsbService* usb_service = |
- device::DeviceClient::Get()->GetUsbService(); |
GURL origin = render_frame_host_->GetLastCommittedURL().GetOrigin(); |
mojo::Array<mojo::String> allowed_guids(0); |
- for (size_t i = 0; i < requested_guids.size(); ++i) { |
- const mojo::String& guid = requested_guids[i]; |
- scoped_refptr<device::UsbDevice> device = usb_service->GetDevice(guid); |
- if (FindOriginInDescriptorSet(device->webusb_allowed_origins(), origin) && |
+ for (size_t i = 0; i < requested_devices.size(); ++i) { |
+ const device::usb::DeviceInfoPtr& device = requested_devices[i]; |
+ if (FindOriginInDescriptorSet(device->webusb_allowed_origins.get(), |
+ origin) && |
EnableWebUsbOnAnyOrigin()) |
- allowed_guids.push_back(guid); |
+ allowed_guids.push_back(device->guid); |
} |
callback.Run(allowed_guids.Pass()); |
} |