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

Unified Diff: chrome/browser/usb/web_usb_permission_provider.cc

Issue 1345793002: Use complete USB DeviceInfo Mojo object to make permission decisions. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@manager_full_remove
Patch Set: Rebased. Created 5 years, 3 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 | « chrome/browser/usb/web_usb_permission_provider.h ('k') | device/devices_app/usb/device_manager_impl.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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());
}
« no previous file with comments | « chrome/browser/usb/web_usb_permission_provider.h ('k') | device/devices_app/usb/device_manager_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698