diff options
Diffstat (limited to 'chrome/browser/usb')
-rw-r--r-- | chrome/browser/usb/usb_chooser_bubble_controller.cc | 71 | ||||
-rw-r--r-- | chrome/browser/usb/usb_tab_helper.cc | 19 | ||||
-rw-r--r-- | chrome/browser/usb/usb_tab_helper.h | 4 | ||||
-rw-r--r-- | chrome/browser/usb/web_usb_histograms.cc | 12 | ||||
-rw-r--r-- | chrome/browser/usb/web_usb_histograms.h | 29 |
5 files changed, 66 insertions, 69 deletions
diff --git a/chrome/browser/usb/usb_chooser_bubble_controller.cc b/chrome/browser/usb/usb_chooser_bubble_controller.cc index 8d2b3f6..23d6f52 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())); diff --git a/chrome/browser/usb/usb_tab_helper.cc b/chrome/browser/usb/usb_tab_helper.cc index a0f0998..0f7f989 100644 --- a/chrome/browser/usb/usb_tab_helper.cc +++ b/chrome/browser/usb/usb_tab_helper.cc @@ -7,10 +7,15 @@ #include <utility> #include "base/memory/scoped_ptr.h" -#include "chrome/browser/usb/web_usb_chooser_service.h" #include "chrome/browser/usb/web_usb_permission_provider.h" #include "device/usb/mojo/device_manager_impl.h" +#if defined(OS_ANDROID) +#include "chrome/browser/android/usb/web_usb_chooser_service_android.h" +#else +#include "chrome/browser/usb/web_usb_chooser_service.h" +#endif // defined(OS_ANDROID) + using content::RenderFrameHost; using content::WebContents; @@ -18,7 +23,11 @@ DEFINE_WEB_CONTENTS_USER_DATA_KEY(UsbTabHelper); struct FrameUsbServices { scoped_ptr<WebUSBPermissionProvider> permission_provider; +#if defined(OS_ANDROID) + scoped_ptr<WebUsbChooserServiceAndroid> chooser_service; +#else scoped_ptr<WebUsbChooserService> chooser_service; +#endif // defined(OS_ANDROID) }; // static @@ -42,13 +51,11 @@ void UsbTabHelper::CreateDeviceManager( GetPermissionProvider(render_frame_host), std::move(request)); } -#if !defined(OS_ANDROID) void UsbTabHelper::CreateChooserService( content::RenderFrameHost* render_frame_host, mojo::InterfaceRequest<device::usb::ChooserService> request) { GetChooserService(render_frame_host, std::move(request)); } -#endif // !defined(OS_ANDROID) UsbTabHelper::UsbTabHelper(WebContents* web_contents) : content::WebContentsObserver(web_contents) {} @@ -80,15 +87,17 @@ UsbTabHelper::GetPermissionProvider(RenderFrameHost* render_frame_host) { return frame_usb_services->permission_provider->GetWeakPtr(); } -#if !defined(OS_ANDROID) void UsbTabHelper::GetChooserService( content::RenderFrameHost* render_frame_host, mojo::InterfaceRequest<device::usb::ChooserService> request) { FrameUsbServices* frame_usb_services = GetFrameUsbService(render_frame_host); if (!frame_usb_services->chooser_service) { frame_usb_services->chooser_service.reset( +#if defined(OS_ANDROID) + new WebUsbChooserServiceAndroid(render_frame_host)); +#else new WebUsbChooserService(render_frame_host)); +#endif // defined(OS_ANDROID) } frame_usb_services->chooser_service->Bind(std::move(request)); } -#endif // !defined(OS_ANDROID) diff --git a/chrome/browser/usb/usb_tab_helper.h b/chrome/browser/usb/usb_tab_helper.h index 1771981..71eed59 100644 --- a/chrome/browser/usb/usb_tab_helper.h +++ b/chrome/browser/usb/usb_tab_helper.h @@ -38,11 +38,9 @@ class UsbTabHelper : public content::WebContentsObserver, content::RenderFrameHost* render_frame_host, mojo::InterfaceRequest<device::usb::DeviceManager> request); -#if !defined(OS_ANDROID) void CreateChooserService( content::RenderFrameHost* render_frame_host, mojo::InterfaceRequest<device::usb::ChooserService> request); -#endif // !defined(OS_ANDROID) private: explicit UsbTabHelper(content::WebContents* web_contents); @@ -57,11 +55,9 @@ class UsbTabHelper : public content::WebContentsObserver, base::WeakPtr<device::usb::PermissionProvider> GetPermissionProvider( content::RenderFrameHost* render_frame_host); -#if !defined(OS_ANDROID) void GetChooserService( content::RenderFrameHost* render_frame_host, mojo::InterfaceRequest<device::usb::ChooserService> request); -#endif // !defined(OS_ANDROID) FrameUsbServicesMap frame_usb_services_; diff --git a/chrome/browser/usb/web_usb_histograms.cc b/chrome/browser/usb/web_usb_histograms.cc new file mode 100644 index 0000000..a330c7a --- /dev/null +++ b/chrome/browser/usb/web_usb_histograms.cc @@ -0,0 +1,12 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/usb/web_usb_histograms.h" + +#include "base/metrics/histogram_macros.h" + +void RecordWebUsbChooserClosure(WebUsbChooserClosed disposition) { + UMA_HISTOGRAM_ENUMERATION("WebUsb.ChooserClosed", disposition, + WEBUSB_CHOOSER_CLOSED_MAX); +} diff --git a/chrome/browser/usb/web_usb_histograms.h b/chrome/browser/usb/web_usb_histograms.h new file mode 100644 index 0000000..84805b3 --- /dev/null +++ b/chrome/browser/usb/web_usb_histograms.h @@ -0,0 +1,29 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_USB_WEB_USB_HISTOGRAMS_H_ +#define CHROME_BROWSER_USB_WEB_USB_HISTOGRAMS_H_ + +// 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 RecordWebUsbChooserClosure(WebUsbChooserClosed disposition); + +#endif // CHROME_BROWSER_USB_WEB_USB_HISTOGRAMS_H_ |