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

Side by Side Diff: chrome/browser/usb/usb_chooser_bubble_delegate.cc

Issue 1646783002: Update webusb_descriptors.cc to parse the new WebUSB descriptors. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@io_buffer
Patch Set: Sometimes MSVC complains about passing size_type to BarrierClosure. Created 4 years, 10 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 unified diff | Download patch
« no previous file with comments | « no previous file | device/devices_app/usb/device_impl_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/usb_chooser_bubble_delegate.h" 5 #include "chrome/browser/usb/usb_chooser_bubble_delegate.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 30 matching lines...) Expand all
41 WEBUSB_CHOOSER_CLOSED_EPHEMERAL_PERMISSION_GRANTED, 41 WEBUSB_CHOOSER_CLOSED_EPHEMERAL_PERMISSION_GRANTED,
42 // Maximum value for the enum. 42 // Maximum value for the enum.
43 WEBUSB_CHOOSER_CLOSED_MAX 43 WEBUSB_CHOOSER_CLOSED_MAX
44 }; 44 };
45 45
46 void RecordChooserClosure(WebUsbChooserClosed disposition) { 46 void RecordChooserClosure(WebUsbChooserClosed disposition) {
47 UMA_HISTOGRAM_ENUMERATION("WebUsb.ChooserClosed", disposition, 47 UMA_HISTOGRAM_ENUMERATION("WebUsb.ChooserClosed", disposition,
48 WEBUSB_CHOOSER_CLOSED_MAX); 48 WEBUSB_CHOOSER_CLOSED_MAX);
49 } 49 }
50 50
51 // Check if the origin is in the description set. 51 // Check if the origin is allowed.
52 bool FindOriginInDescriptorSet(const device::WebUsbDescriptorSet* set, 52 bool FindInAllowedOrigins(const device::WebUsbAllowedOrigins* allowed_origins,
53 const GURL& origin) { 53 const GURL& origin) {
54 if (!set) 54 if (!allowed_origins)
55 return false; 55 return false;
56 56
57 if (ContainsValue(set->origins, origin)) 57 if (ContainsValue(allowed_origins->origins, origin))
58 return true; 58 return true;
59 59
60 for (const auto& config : set->configurations) { 60 for (const auto& config : allowed_origins->configurations) {
61 if (ContainsValue(config.origins, origin)) 61 if (ContainsValue(config.origins, origin))
62 return true; 62 return true;
63 63
64 for (const auto& function : config.functions) { 64 for (const auto& function : config.functions) {
65 if (ContainsValue(function.origins, origin)) 65 if (ContainsValue(function.origins, origin))
66 return true; 66 return true;
67 } 67 }
68 } 68 }
69 69
70 return false; 70 return false;
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
145 145
146 if (bubble_controller_) 146 if (bubble_controller_)
147 bubble_controller_->CloseBubble(BUBBLE_CLOSE_CANCELED); 147 bubble_controller_->CloseBubble(BUBBLE_CLOSE_CANCELED);
148 } 148 }
149 149
150 void UsbChooserBubbleDelegate::Close() {} 150 void UsbChooserBubbleDelegate::Close() {}
151 151
152 void UsbChooserBubbleDelegate::OnDeviceAdded( 152 void UsbChooserBubbleDelegate::OnDeviceAdded(
153 scoped_refptr<device::UsbDevice> device) { 153 scoped_refptr<device::UsbDevice> device) {
154 if (device::UsbDeviceFilter::MatchesAny(device, filters_) && 154 if (device::UsbDeviceFilter::MatchesAny(device, filters_) &&
155 FindOriginInDescriptorSet( 155 FindInAllowedOrigins(
156 device->webusb_allowed_origins(), 156 device->webusb_allowed_origins(),
157 render_frame_host_->GetLastCommittedURL().GetOrigin())) { 157 render_frame_host_->GetLastCommittedURL().GetOrigin())) {
158 devices_.push_back(std::make_pair(device, device->product_string())); 158 devices_.push_back(std::make_pair(device, device->product_string()));
159 if (observer()) 159 if (observer())
160 observer()->OnOptionAdded(devices_.size() - 1); 160 observer()->OnOptionAdded(devices_.size() - 1);
161 } 161 }
162 } 162 }
163 163
164 void UsbChooserBubbleDelegate::OnDeviceRemoved( 164 void UsbChooserBubbleDelegate::OnDeviceRemoved(
165 scoped_refptr<device::UsbDevice> device) { 165 scoped_refptr<device::UsbDevice> device) {
166 for (auto it = devices_.begin(); it != devices_.end(); ++it) { 166 for (auto it = devices_.begin(); it != devices_.end(); ++it) {
167 if (it->first == device) { 167 if (it->first == device) {
168 size_t index = it - devices_.begin(); 168 size_t index = it - devices_.begin();
169 devices_.erase(it); 169 devices_.erase(it);
170 if (observer()) 170 if (observer())
171 observer()->OnOptionRemoved(index); 171 observer()->OnOptionRemoved(index);
172 return; 172 return;
173 } 173 }
174 } 174 }
175 } 175 }
176 176
177 // Get a list of devices that can be shown in the chooser bubble UI for 177 // Get a list of devices that can be shown in the chooser bubble UI for
178 // user to grant permsssion. 178 // user to grant permsssion.
179 void UsbChooserBubbleDelegate::GotUsbDeviceList( 179 void UsbChooserBubbleDelegate::GotUsbDeviceList(
180 const std::vector<scoped_refptr<device::UsbDevice>>& devices) { 180 const std::vector<scoped_refptr<device::UsbDevice>>& devices) {
181 for (const auto& device : devices) { 181 for (const auto& device : devices) {
182 if (device::UsbDeviceFilter::MatchesAny(device, filters_) && 182 if (device::UsbDeviceFilter::MatchesAny(device, filters_) &&
183 FindOriginInDescriptorSet( 183 FindInAllowedOrigins(
184 device->webusb_allowed_origins(), 184 device->webusb_allowed_origins(),
185 render_frame_host_->GetLastCommittedURL().GetOrigin())) { 185 render_frame_host_->GetLastCommittedURL().GetOrigin())) {
186 devices_.push_back(std::make_pair(device, device->product_string())); 186 devices_.push_back(std::make_pair(device, device->product_string()));
187 } 187 }
188 } 188 }
189 if (observer()) 189 if (observer())
190 observer()->OnOptionsInitialized(); 190 observer()->OnOptionsInitialized();
191 } 191 }
192 192
193 void UsbChooserBubbleDelegate::set_bubble_controller( 193 void UsbChooserBubbleDelegate::set_bubble_controller(
194 BubbleReference bubble_controller) { 194 BubbleReference bubble_controller) {
195 bubble_controller_ = bubble_controller; 195 bubble_controller_ = bubble_controller;
196 } 196 }
OLDNEW
« no previous file with comments | « no previous file | device/devices_app/usb/device_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698