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

Unified 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: rebase and added NoUnderlineClickableSpan.java to ui/android/BUILD.gn 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/ui/android/usb_chooser_dialog_android.cc ('k') | chrome/browser/usb/usb_tab_helper.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/usb/usb_chooser_bubble_controller.cc
diff --git a/chrome/browser/usb/usb_chooser_bubble_controller.cc b/chrome/browser/usb/usb_chooser_bubble_controller.cc
index 8d2b3f6cd2bb0c6d4c2561a946eeb6aa74115266..23d6f52c33985c3b488ab1906136060dde55e68a 100644
--- a/chrome/browser/usb/usb_chooser_bubble_controller.cc
+++ b/chrome/browser/usb/usb_chooser_bubble_controller.cc
@@ -8,11 +8,10 @@
#include <utility>
#include "base/bind.h"
-#include "base/metrics/histogram_macros.h"
-#include "base/stl_util.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/usb/usb_chooser_context.h"
#include "chrome/browser/usb/usb_chooser_context_factory.h"
+#include "chrome/browser/usb/web_usb_histograms.h"
#include "chrome/common/url_constants.h"
#include "components/bubble/bubble_controller.h"
#include "content/public/browser/render_frame_host.h"
@@ -21,58 +20,9 @@
#include "device/usb/mojo/type_converters.h"
#include "device/usb/usb_device.h"
#include "device/usb/usb_device_filter.h"
+#include "device/usb/webusb_descriptors.h"
#include "url/gurl.h"
-namespace {
-
-// Reasons the chooser may be closed. These are used in histograms so do not
-// remove/reorder entries. Only add at the end just before
-// WEBUSB_CHOOSER_CLOSED_MAX. Also remember to update the enum listing in
-// tools/metrics/histograms/histograms.xml.
-enum WebUsbChooserClosed {
- // The user cancelled the permission prompt without selecting a device.
- WEBUSB_CHOOSER_CLOSED_CANCELLED = 0,
- // The user probably cancelled the permission prompt without selecting a
- // device because there were no devices to select.
- WEBUSB_CHOOSER_CLOSED_CANCELLED_NO_DEVICES,
- // The user granted permission to access a device.
- WEBUSB_CHOOSER_CLOSED_PERMISSION_GRANTED,
- // The user granted permission to access a device but that permission will be
- // revoked when the device is disconnected.
- WEBUSB_CHOOSER_CLOSED_EPHEMERAL_PERMISSION_GRANTED,
- // Maximum value for the enum.
- WEBUSB_CHOOSER_CLOSED_MAX
-};
-
-void RecordChooserClosure(WebUsbChooserClosed disposition) {
- UMA_HISTOGRAM_ENUMERATION("WebUsb.ChooserClosed", disposition,
- WEBUSB_CHOOSER_CLOSED_MAX);
-}
-
-// Check if the origin is allowed.
-bool FindInAllowedOrigins(const device::WebUsbAllowedOrigins* allowed_origins,
- const GURL& origin) {
- if (!allowed_origins)
- return false;
-
- if (ContainsValue(allowed_origins->origins, origin))
- return true;
-
- for (const auto& config : allowed_origins->configurations) {
- if (ContainsValue(config.origins, origin))
- return true;
-
- for (const auto& function : config.functions) {
- if (ContainsValue(function.origins, origin))
- return true;
- }
- }
-
- return false;
-}
-
-} // namespace
-
UsbChooserBubbleController::UsbChooserBubbleController(
content::RenderFrameHost* owner,
mojo::Array<device::usb::DeviceFilterPtr> device_filters,
@@ -133,18 +83,19 @@ void UsbChooserBubbleController::Select(size_t index) {
callback_.Run(std::move(device_info_ptr));
callback_.reset(); // Reset |callback_| so that it is only run once.
- RecordChooserClosure(devices_[index].first->serial_number().empty()
- ? WEBUSB_CHOOSER_CLOSED_EPHEMERAL_PERMISSION_GRANTED
- : WEBUSB_CHOOSER_CLOSED_PERMISSION_GRANTED);
+ RecordWebUsbChooserClosure(
+ devices_[index].first->serial_number().empty()
+ ? WEBUSB_CHOOSER_CLOSED_EPHEMERAL_PERMISSION_GRANTED
+ : WEBUSB_CHOOSER_CLOSED_PERMISSION_GRANTED);
if (bubble_reference_)
bubble_reference_->CloseBubble(BUBBLE_CLOSE_ACCEPTED);
}
void UsbChooserBubbleController::Cancel() {
- RecordChooserClosure(devices_.size() == 0
- ? WEBUSB_CHOOSER_CLOSED_CANCELLED_NO_DEVICES
- : WEBUSB_CHOOSER_CLOSED_CANCELLED);
+ RecordWebUsbChooserClosure(devices_.size() == 0
+ ? WEBUSB_CHOOSER_CLOSED_CANCELLED_NO_DEVICES
+ : WEBUSB_CHOOSER_CLOSED_CANCELLED);
if (bubble_reference_)
bubble_reference_->CloseBubble(BUBBLE_CLOSE_CANCELED);
@@ -155,7 +106,7 @@ void UsbChooserBubbleController::Close() {}
void UsbChooserBubbleController::OnDeviceAdded(
scoped_refptr<device::UsbDevice> device) {
if (device::UsbDeviceFilter::MatchesAny(device, filters_) &&
- FindInAllowedOrigins(
+ FindInWebUsbAllowedOrigins(
device->webusb_allowed_origins(),
render_frame_host_->GetLastCommittedURL().GetOrigin())) {
devices_.push_back(std::make_pair(device, device->product_string()));
@@ -187,7 +138,7 @@ void UsbChooserBubbleController::GotUsbDeviceList(
const std::vector<scoped_refptr<device::UsbDevice>>& devices) {
for (const auto& device : devices) {
if (device::UsbDeviceFilter::MatchesAny(device, filters_) &&
- FindInAllowedOrigins(
+ FindInWebUsbAllowedOrigins(
device->webusb_allowed_origins(),
render_frame_host_->GetLastCommittedURL().GetOrigin())) {
devices_.push_back(std::make_pair(device, device->product_string()));
« no previous file with comments | « chrome/browser/ui/android/usb_chooser_dialog_android.cc ('k') | chrome/browser/usb/usb_tab_helper.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698