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

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

Issue 1739523002: WebUsb Android chooser UI (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: address reillgy@'s comments Created 4 years, 9 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
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_controller.h" 5 #include "chrome/browser/usb/usb_chooser_bubble_controller.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"
11 #include "base/metrics/histogram_macros.h"
12 #include "base/stl_util.h"
13 #include "chrome/browser/profiles/profile.h" 11 #include "chrome/browser/profiles/profile.h"
14 #include "chrome/browser/usb/usb_chooser_context.h" 12 #include "chrome/browser/usb/usb_chooser_context.h"
15 #include "chrome/browser/usb/usb_chooser_context_factory.h" 13 #include "chrome/browser/usb/usb_chooser_context_factory.h"
14 #include "chrome/browser/usb/usb_common.h"
16 #include "chrome/common/url_constants.h" 15 #include "chrome/common/url_constants.h"
17 #include "components/bubble/bubble_controller.h" 16 #include "components/bubble/bubble_controller.h"
18 #include "content/public/browser/render_frame_host.h" 17 #include "content/public/browser/render_frame_host.h"
19 #include "content/public/browser/web_contents.h" 18 #include "content/public/browser/web_contents.h"
20 #include "device/core/device_client.h" 19 #include "device/core/device_client.h"
21 #include "device/usb/mojo/type_converters.h" 20 #include "device/usb/mojo/type_converters.h"
22 #include "device/usb/usb_device.h" 21 #include "device/usb/usb_device.h"
23 #include "device/usb/usb_device_filter.h" 22 #include "device/usb/usb_device_filter.h"
24 #include "url/gurl.h" 23 #include "url/gurl.h"
25 24
26 namespace {
27
28 // Reasons the chooser may be closed. These are used in histograms so do not
29 // remove/reorder entries. Only add at the end just before
30 // WEBUSB_CHOOSER_CLOSED_MAX. Also remember to update the enum listing in
31 // tools/metrics/histograms/histograms.xml.
32 enum WebUsbChooserClosed {
33 // The user cancelled the permission prompt without selecting a device.
34 WEBUSB_CHOOSER_CLOSED_CANCELLED = 0,
35 // The user probably cancelled the permission prompt without selecting a
36 // device because there were no devices to select.
37 WEBUSB_CHOOSER_CLOSED_CANCELLED_NO_DEVICES,
38 // The user granted permission to access a device.
39 WEBUSB_CHOOSER_CLOSED_PERMISSION_GRANTED,
40 // The user granted permission to access a device but that permission will be
41 // revoked when the device is disconnected.
42 WEBUSB_CHOOSER_CLOSED_EPHEMERAL_PERMISSION_GRANTED,
43 // Maximum value for the enum.
44 WEBUSB_CHOOSER_CLOSED_MAX
45 };
46
47 void RecordChooserClosure(WebUsbChooserClosed disposition) {
48 UMA_HISTOGRAM_ENUMERATION("WebUsb.ChooserClosed", disposition,
49 WEBUSB_CHOOSER_CLOSED_MAX);
50 }
51
52 // Check if the origin is allowed.
53 bool FindInAllowedOrigins(const device::WebUsbAllowedOrigins* allowed_origins,
54 const GURL& origin) {
55 if (!allowed_origins)
56 return false;
57
58 if (ContainsValue(allowed_origins->origins, origin))
59 return true;
60
61 for (const auto& config : allowed_origins->configurations) {
62 if (ContainsValue(config.origins, origin))
63 return true;
64
65 for (const auto& function : config.functions) {
66 if (ContainsValue(function.origins, origin))
67 return true;
68 }
69 }
70
71 return false;
72 }
73
74 } // namespace
75
76 UsbChooserBubbleController::UsbChooserBubbleController( 25 UsbChooserBubbleController::UsbChooserBubbleController(
77 content::RenderFrameHost* owner, 26 content::RenderFrameHost* owner,
78 mojo::Array<device::usb::DeviceFilterPtr> device_filters, 27 mojo::Array<device::usb::DeviceFilterPtr> device_filters,
79 content::RenderFrameHost* render_frame_host, 28 content::RenderFrameHost* render_frame_host,
80 const device::usb::ChooserService::GetPermissionCallback& callback) 29 const device::usb::ChooserService::GetPermissionCallback& callback)
81 : ChooserBubbleController(owner), 30 : ChooserBubbleController(owner),
82 render_frame_host_(render_frame_host), 31 render_frame_host_(render_frame_host),
83 callback_(callback), 32 callback_(callback),
84 usb_service_observer_(this), 33 usb_service_observer_(this),
85 weak_factory_(this) { 34 weak_factory_(this) {
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
194 } 143 }
195 } 144 }
196 if (observer()) 145 if (observer())
197 observer()->OnOptionsInitialized(); 146 observer()->OnOptionsInitialized();
198 } 147 }
199 148
200 void UsbChooserBubbleController::set_bubble_reference( 149 void UsbChooserBubbleController::set_bubble_reference(
201 BubbleReference bubble_reference) { 150 BubbleReference bubble_reference) {
202 bubble_reference_ = bubble_reference; 151 bubble_reference_ = bubble_reference;
203 } 152 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698