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

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

Issue 1984923002: Refactor ChooserBubbleController (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: address comments Created 4 years, 7 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_controller.h ('k') | chrome/browser/usb/usb_chooser_controller.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
deleted file mode 100644
index dc8b2a84273c422777a2acbdc79f54b868f72c85..0000000000000000000000000000000000000000
--- a/chrome/browser/usb/usb_chooser_bubble_controller.cc
+++ /dev/null
@@ -1,159 +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_controller.h"
-
-#include <stddef.h>
-#include <utility>
-
-#include "base/bind.h"
-#include "base/command_line.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/chrome_switches.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 "device/usb/webusb_descriptors.h"
-#include "url/gurl.h"
-
-UsbChooserBubbleController::UsbChooserBubbleController(
- content::RenderFrameHost* owner,
- mojo::Array<device::usb::DeviceFilterPtr> device_filters,
- content::RenderFrameHost* render_frame_host,
- const device::usb::ChooserService::GetPermissionCallback& callback)
- : ChooserBubbleController(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(&UsbChooserBubbleController::GotUsbDeviceList,
- weak_factory_.GetWeakPtr()));
-}
-
-UsbChooserBubbleController::~UsbChooserBubbleController() {
- if (!callback_.is_null())
- callback_.Run(nullptr);
-}
-
-size_t UsbChooserBubbleController::NumOptions() const {
- return devices_.size();
-}
-
-const base::string16& UsbChooserBubbleController::GetOption(
- size_t index) const {
- DCHECK_LT(index, devices_.size());
- return devices_[index].second;
-}
-
-void UsbChooserBubbleController::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.
-
- 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() {
- RecordWebUsbChooserClosure(devices_.size() == 0
- ? WEBUSB_CHOOSER_CLOSED_CANCELLED_NO_DEVICES
- : WEBUSB_CHOOSER_CLOSED_CANCELLED);
-
- if (bubble_reference_)
- bubble_reference_->CloseBubble(BUBBLE_CLOSE_CANCELED);
-}
-
-void UsbChooserBubbleController::Close() {}
-
-void UsbChooserBubbleController::OnDeviceAdded(
- scoped_refptr<device::UsbDevice> device) {
- if (DisplayDevice(device)) {
- devices_.push_back(std::make_pair(device, device->product_string()));
- if (observer())
- observer()->OnOptionAdded(devices_.size() - 1);
- }
-}
-
-GURL UsbChooserBubbleController::GetHelpCenterUrl() const {
- return GURL(chrome::kChooserUsbOverviewURL);
-}
-
-void UsbChooserBubbleController::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;
- }
- }
-}
-
-void UsbChooserBubbleController::set_bubble_reference(
- BubbleReference bubble_reference) {
- bubble_reference_ = bubble_reference;
-}
-
-// Get a list of devices that can be shown in the chooser bubble UI for
-// user to grant permsssion.
-void UsbChooserBubbleController::GotUsbDeviceList(
- const std::vector<scoped_refptr<device::UsbDevice>>& devices) {
- for (const auto& device : devices) {
- if (DisplayDevice(device))
- devices_.push_back(std::make_pair(device, device->product_string()));
- }
- if (observer())
- observer()->OnOptionsInitialized();
-}
-
-bool UsbChooserBubbleController::DisplayDevice(
- scoped_refptr<device::UsbDevice> device) const {
- return device::UsbDeviceFilter::MatchesAny(device, filters_) &&
- (base::CommandLine::ForCurrentProcess()->HasSwitch(
- switches::kDisableWebUsbSecurity) ||
- device::FindInWebUsbAllowedOrigins(
- device->webusb_allowed_origins(),
- render_frame_host_->GetLastCommittedURL().GetOrigin()));
-}
« no previous file with comments | « chrome/browser/usb/usb_chooser_bubble_controller.h ('k') | chrome/browser/usb/usb_chooser_controller.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698