| Index: components/usb_service/usb_device_impl.cc
|
| diff --git a/components/usb_service/usb_device_impl.cc b/components/usb_service/usb_device_impl.cc
|
| deleted file mode 100644
|
| index b6d2a12021209214f34e682c1d7bb3ce8a67fe91..0000000000000000000000000000000000000000
|
| --- a/components/usb_service/usb_device_impl.cc
|
| +++ /dev/null
|
| @@ -1,153 +0,0 @@
|
| -// Copyright 2014 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 "components/usb_service/usb_device_impl.h"
|
| -
|
| -#include <algorithm>
|
| -
|
| -#include "base/bind.h"
|
| -#include "base/location.h"
|
| -#include "base/single_thread_task_runner.h"
|
| -#include "base/stl_util.h"
|
| -#include "base/thread_task_runner_handle.h"
|
| -#include "components/usb_service/usb_context.h"
|
| -#include "components/usb_service/usb_device_handle_impl.h"
|
| -#include "components/usb_service/usb_error.h"
|
| -#include "components/usb_service/usb_interface_impl.h"
|
| -#include "third_party/libusb/src/libusb/libusb.h"
|
| -
|
| -#if defined(OS_CHROMEOS)
|
| -#include "base/sys_info.h"
|
| -#include "chromeos/dbus/dbus_thread_manager.h"
|
| -#include "chromeos/dbus/permission_broker_client.h"
|
| -#endif // defined(OS_CHROMEOS)
|
| -
|
| -namespace {
|
| -
|
| -#if defined(OS_CHROMEOS)
|
| -void OnRequestUsbAccessReplied(
|
| - scoped_refptr<base::SingleThreadTaskRunner> task_runner,
|
| - const base::Callback<void(bool success)>& callback,
|
| - bool success) {
|
| - task_runner->PostTask(FROM_HERE, base::Bind(callback, success));
|
| -}
|
| -#endif // defined(OS_CHROMEOS)
|
| -
|
| -} // namespace
|
| -
|
| -namespace usb_service {
|
| -
|
| -UsbDeviceImpl::UsbDeviceImpl(
|
| - scoped_refptr<UsbContext> context,
|
| - scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner,
|
| - PlatformUsbDevice platform_device,
|
| - uint16 vendor_id,
|
| - uint16 product_id,
|
| - uint32 unique_id)
|
| - : UsbDevice(vendor_id, product_id, unique_id),
|
| - platform_device_(platform_device),
|
| - context_(context),
|
| - ui_task_runner_(ui_task_runner) {
|
| - CHECK(platform_device) << "platform_device cannot be NULL";
|
| - libusb_ref_device(platform_device);
|
| -}
|
| -
|
| -UsbDeviceImpl::~UsbDeviceImpl() {
|
| - DCHECK(thread_checker_.CalledOnValidThread());
|
| - for (HandlesVector::iterator it = handles_.begin(); it != handles_.end();
|
| - ++it) {
|
| - (*it)->InternalClose();
|
| - }
|
| - STLClearObject(&handles_);
|
| - libusb_unref_device(platform_device_);
|
| -}
|
| -
|
| -#if defined(OS_CHROMEOS)
|
| -
|
| -void UsbDeviceImpl::RequestUsbAccess(
|
| - int interface_id,
|
| - const base::Callback<void(bool success)>& callback) {
|
| - DCHECK(thread_checker_.CalledOnValidThread());
|
| -
|
| - // ChromeOS builds on non-ChromeOS machines (dev) should not attempt to
|
| - // use permission broker.
|
| - if (base::SysInfo::IsRunningOnChromeOS()) {
|
| - chromeos::PermissionBrokerClient* client =
|
| - chromeos::DBusThreadManager::Get()->GetPermissionBrokerClient();
|
| - DCHECK(client) << "Could not get permission broker client.";
|
| - if (!client) {
|
| - callback.Run(false);
|
| - return;
|
| - }
|
| -
|
| - ui_task_runner_->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(&chromeos::PermissionBrokerClient::RequestUsbAccess,
|
| - base::Unretained(client),
|
| - vendor_id(),
|
| - product_id(),
|
| - interface_id,
|
| - base::Bind(&OnRequestUsbAccessReplied,
|
| - base::ThreadTaskRunnerHandle::Get(),
|
| - callback)));
|
| - }
|
| -}
|
| -
|
| -#endif
|
| -
|
| -scoped_refptr<UsbDeviceHandle> UsbDeviceImpl::Open() {
|
| - DCHECK(thread_checker_.CalledOnValidThread());
|
| - PlatformUsbDeviceHandle handle;
|
| - const int rv = libusb_open(platform_device_, &handle);
|
| - if (LIBUSB_SUCCESS == rv) {
|
| - scoped_refptr<UsbConfigDescriptor> interfaces = ListInterfaces();
|
| - if (!interfaces.get())
|
| - return NULL;
|
| - scoped_refptr<UsbDeviceHandleImpl> device_handle =
|
| - new UsbDeviceHandleImpl(context_, this, handle, interfaces);
|
| - handles_.push_back(device_handle);
|
| - return device_handle;
|
| - } else {
|
| - VLOG(1) << "Failed to open device: " << ConvertErrorToString(rv);
|
| - return NULL;
|
| - }
|
| -}
|
| -
|
| -bool UsbDeviceImpl::Close(scoped_refptr<UsbDeviceHandle> handle) {
|
| - DCHECK(thread_checker_.CalledOnValidThread());
|
| -
|
| - for (HandlesVector::iterator it = handles_.begin(); it != handles_.end();
|
| - ++it) {
|
| - if (it->get() == handle.get()) {
|
| - (*it)->InternalClose();
|
| - handles_.erase(it);
|
| - return true;
|
| - }
|
| - }
|
| - return false;
|
| -}
|
| -
|
| -scoped_refptr<UsbConfigDescriptor> UsbDeviceImpl::ListInterfaces() {
|
| - DCHECK(thread_checker_.CalledOnValidThread());
|
| -
|
| - PlatformUsbConfigDescriptor platform_config;
|
| - const int rv =
|
| - libusb_get_active_config_descriptor(platform_device_, &platform_config);
|
| - if (rv == LIBUSB_SUCCESS) {
|
| - return new UsbConfigDescriptorImpl(platform_config);
|
| - } else {
|
| - VLOG(1) << "Failed to get config descriptor: " << ConvertErrorToString(rv);
|
| - return NULL;
|
| - }
|
| -}
|
| -
|
| -void UsbDeviceImpl::OnDisconnect() {
|
| - DCHECK(thread_checker_.CalledOnValidThread());
|
| - HandlesVector handles;
|
| - swap(handles, handles_);
|
| - for (HandlesVector::iterator it = handles.begin(); it != handles.end(); ++it)
|
| - (*it)->InternalClose();
|
| -}
|
| -
|
| -} // namespace usb_service
|
|
|