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

Unified Diff: chrome/browser/usb/usb_chooser_bubble_delegate.cc

Issue 1724183005: Change ChooserBubbleDelegate class name to ChooserBubbleController (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: merged changes from master, resolved conflicts and updated related files 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/usb/usb_chooser_bubble_delegate.h ('k') | chrome/browser/usb/web_usb_permission_bubble.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/usb/usb_chooser_bubble_delegate.cc
diff --git a/chrome/browser/usb/usb_chooser_bubble_delegate.cc b/chrome/browser/usb/usb_chooser_bubble_delegate.cc
deleted file mode 100644
index 026641d21148bcf86e2eac49a7a2fad0e14b1e2b..0000000000000000000000000000000000000000
--- a/chrome/browser/usb/usb_chooser_bubble_delegate.cc
+++ /dev/null
@@ -1,201 +0,0 @@
-// Copyright 2015 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/usb_chooser_bubble_delegate.h"
-
-#include <stddef.h>
-#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/common/url_constants.h"
-#include "components/bubble/bubble_controller.h"
-#include "content/public/browser/render_frame_host.h"
-#include "content/public/browser/web_contents.h"
-#include "device/core/device_client.h"
-#include "device/usb/mojo/type_converters.h"
-#include "device/usb/usb_device.h"
-#include "device/usb/usb_device_filter.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
-
-UsbChooserBubbleDelegate::UsbChooserBubbleDelegate(
- content::RenderFrameHost* owner,
- mojo::Array<device::usb::DeviceFilterPtr> device_filters,
- content::RenderFrameHost* render_frame_host,
- const webusb::WebUsbPermissionBubble::GetPermissionCallback& callback)
- : ChooserBubbleDelegate(owner),
- render_frame_host_(render_frame_host),
- callback_(callback),
- usb_service_observer_(this),
- weak_factory_(this) {
- device::UsbService* usb_service =
- device::DeviceClient::Get()->GetUsbService();
- if (!usb_service)
- return;
-
- if (!usb_service_observer_.IsObserving(usb_service))
- usb_service_observer_.Add(usb_service);
-
- if (!device_filters.is_null())
- filters_ = device_filters.To<std::vector<device::UsbDeviceFilter>>();
-
- usb_service->GetDevices(base::Bind(
- &UsbChooserBubbleDelegate::GotUsbDeviceList, weak_factory_.GetWeakPtr()));
-}
-
-UsbChooserBubbleDelegate::~UsbChooserBubbleDelegate() {
- if (!callback_.is_null())
- callback_.Run(nullptr);
-}
-
-size_t UsbChooserBubbleDelegate::NumOptions() const {
- return devices_.size();
-}
-
-const base::string16& UsbChooserBubbleDelegate::GetOption(size_t index) const {
- DCHECK_LT(index, devices_.size());
- return devices_[index].second;
-}
-
-void UsbChooserBubbleDelegate::Select(size_t index) {
- DCHECK_LT(index, devices_.size());
- content::WebContents* web_contents =
- content::WebContents::FromRenderFrameHost(render_frame_host_);
- GURL embedding_origin =
- web_contents->GetMainFrame()->GetLastCommittedURL().GetOrigin();
- Profile* profile =
- Profile::FromBrowserContext(web_contents->GetBrowserContext());
- UsbChooserContext* chooser_context =
- UsbChooserContextFactory::GetForProfile(profile);
- chooser_context->GrantDevicePermission(
- render_frame_host_->GetLastCommittedURL().GetOrigin(), embedding_origin,
- devices_[index].first->guid());
-
- device::usb::DeviceInfoPtr device_info_ptr =
- device::usb::DeviceInfo::From(*devices_[index].first);
- 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);
-
- if (bubble_controller_)
- bubble_controller_->CloseBubble(BUBBLE_CLOSE_ACCEPTED);
-}
-
-void UsbChooserBubbleDelegate::Cancel() {
- RecordChooserClosure(devices_.size() == 0
- ? WEBUSB_CHOOSER_CLOSED_CANCELLED_NO_DEVICES
- : WEBUSB_CHOOSER_CLOSED_CANCELLED);
-
- if (bubble_controller_)
- bubble_controller_->CloseBubble(BUBBLE_CLOSE_CANCELED);
-}
-
-void UsbChooserBubbleDelegate::Close() {}
-
-void UsbChooserBubbleDelegate::OnDeviceAdded(
- scoped_refptr<device::UsbDevice> device) {
- if (device::UsbDeviceFilter::MatchesAny(device, filters_) &&
- FindInAllowedOrigins(
- device->webusb_allowed_origins(),
- render_frame_host_->GetLastCommittedURL().GetOrigin())) {
- devices_.push_back(std::make_pair(device, device->product_string()));
- if (observer())
- observer()->OnOptionAdded(devices_.size() - 1);
- }
-}
-
-GURL UsbChooserBubbleDelegate::GetHelpCenterUrl() const {
- return GURL(chrome::kChooserUsbOverviewURL);
-}
-
-void UsbChooserBubbleDelegate::OnDeviceRemoved(
- scoped_refptr<device::UsbDevice> device) {
- for (auto it = devices_.begin(); it != devices_.end(); ++it) {
- if (it->first == device) {
- size_t index = it - devices_.begin();
- devices_.erase(it);
- if (observer())
- observer()->OnOptionRemoved(index);
- return;
- }
- }
-}
-
-// Get a list of devices that can be shown in the chooser bubble UI for
-// user to grant permsssion.
-void UsbChooserBubbleDelegate::GotUsbDeviceList(
- const std::vector<scoped_refptr<device::UsbDevice>>& devices) {
- for (const auto& device : devices) {
- if (device::UsbDeviceFilter::MatchesAny(device, filters_) &&
- FindInAllowedOrigins(
- device->webusb_allowed_origins(),
- render_frame_host_->GetLastCommittedURL().GetOrigin())) {
- devices_.push_back(std::make_pair(device, device->product_string()));
- }
- }
- if (observer())
- observer()->OnOptionsInitialized();
-}
-
-void UsbChooserBubbleDelegate::set_bubble_controller(
- BubbleReference bubble_controller) {
- bubble_controller_ = bubble_controller;
-}
« no previous file with comments | « chrome/browser/usb/usb_chooser_bubble_delegate.h ('k') | chrome/browser/usb/web_usb_permission_bubble.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698