| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/usb/web_usb_permission_provider.h" | 5 #include "chrome/browser/usb/web_usb_permission_provider.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <utility> |
| 8 | 9 |
| 9 #include "chrome/browser/profiles/profile.h" | 10 #include "chrome/browser/profiles/profile.h" |
| 10 #include "chrome/browser/usb/usb_chooser_context.h" | 11 #include "chrome/browser/usb/usb_chooser_context.h" |
| 11 #include "chrome/browser/usb/usb_chooser_context_factory.h" | 12 #include "chrome/browser/usb/usb_chooser_context_factory.h" |
| 12 #include "content/public/browser/browser_thread.h" | 13 #include "content/public/browser/browser_thread.h" |
| 13 #include "content/public/browser/render_frame_host.h" | 14 #include "content/public/browser/render_frame_host.h" |
| 14 #include "content/public/browser/web_contents.h" | 15 #include "content/public/browser/web_contents.h" |
| 15 #include "device/core/device_client.h" | 16 #include "device/core/device_client.h" |
| 16 | 17 |
| 17 using content::WebContents; | 18 using content::WebContents; |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 85 | 86 |
| 86 mojo::Array<mojo::String> allowed_guids(0); | 87 mojo::Array<mojo::String> allowed_guids(0); |
| 87 for (size_t i = 0; i < requested_devices.size(); ++i) { | 88 for (size_t i = 0; i < requested_devices.size(); ++i) { |
| 88 const device::usb::DeviceInfoPtr& device = requested_devices[i]; | 89 const device::usb::DeviceInfoPtr& device = requested_devices[i]; |
| 89 if (FindOriginInDescriptorSet(device->webusb_allowed_origins.get(), | 90 if (FindOriginInDescriptorSet(device->webusb_allowed_origins.get(), |
| 90 requesting_origin, nullptr, nullptr) && | 91 requesting_origin, nullptr, nullptr) && |
| 91 chooser_context->HasDevicePermission(requesting_origin, | 92 chooser_context->HasDevicePermission(requesting_origin, |
| 92 embedding_origin, device->guid)) | 93 embedding_origin, device->guid)) |
| 93 allowed_guids.push_back(device->guid); | 94 allowed_guids.push_back(device->guid); |
| 94 } | 95 } |
| 95 callback.Run(allowed_guids.Pass()); | 96 callback.Run(std::move(allowed_guids)); |
| 96 } | 97 } |
| 97 | 98 |
| 98 void WebUSBPermissionProvider::HasConfigurationPermission( | 99 void WebUSBPermissionProvider::HasConfigurationPermission( |
| 99 uint8_t requested_configuration_value, | 100 uint8_t requested_configuration_value, |
| 100 device::usb::DeviceInfoPtr device, | 101 device::usb::DeviceInfoPtr device, |
| 101 const HasInterfacePermissionCallback& callback) { | 102 const HasInterfacePermissionCallback& callback) { |
| 102 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 103 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 103 callback.Run(FindOriginInDescriptorSet( | 104 callback.Run(FindOriginInDescriptorSet( |
| 104 device->webusb_allowed_origins.get(), | 105 device->webusb_allowed_origins.get(), |
| 105 render_frame_host_->GetLastCommittedURL().GetOrigin(), | 106 render_frame_host_->GetLastCommittedURL().GetOrigin(), |
| 106 &requested_configuration_value, nullptr)); | 107 &requested_configuration_value, nullptr)); |
| 107 } | 108 } |
| 108 | 109 |
| 109 void WebUSBPermissionProvider::HasInterfacePermission( | 110 void WebUSBPermissionProvider::HasInterfacePermission( |
| 110 uint8_t requested_interface, | 111 uint8_t requested_interface, |
| 111 uint8_t configuration_value, | 112 uint8_t configuration_value, |
| 112 device::usb::DeviceInfoPtr device, | 113 device::usb::DeviceInfoPtr device, |
| 113 const HasInterfacePermissionCallback& callback) { | 114 const HasInterfacePermissionCallback& callback) { |
| 114 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 115 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 115 callback.Run(FindOriginInDescriptorSet( | 116 callback.Run(FindOriginInDescriptorSet( |
| 116 device->webusb_allowed_origins.get(), | 117 device->webusb_allowed_origins.get(), |
| 117 render_frame_host_->GetLastCommittedURL().GetOrigin(), | 118 render_frame_host_->GetLastCommittedURL().GetOrigin(), |
| 118 &configuration_value, &requested_interface)); | 119 &configuration_value, &requested_interface)); |
| 119 } | 120 } |
| 120 | 121 |
| 121 void WebUSBPermissionProvider::Bind( | 122 void WebUSBPermissionProvider::Bind( |
| 122 mojo::InterfaceRequest<device::usb::PermissionProvider> request) { | 123 mojo::InterfaceRequest<device::usb::PermissionProvider> request) { |
| 123 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 124 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 124 bindings_.AddBinding(this, request.Pass()); | 125 bindings_.AddBinding(this, std::move(request)); |
| 125 } | 126 } |
| OLD | NEW |