1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CHROME_BROWSER_EXTENSIONS_API_USB_USB_DEVICE_RESOURCE_H_ 6#define CHROME_BROWSER_EXTENSIONS_API_USB_USB_DEVICE_RESOURCE_H_ 7 8#include <set> 9#include <string> 10 11#include "base/basictypes.h" 12#include "base/memory/linked_ptr.h" 13#include "base/memory/ref_counted.h" 14#include "base/synchronization/lock.h" 15#include "chrome/browser/extensions/api/api_resource.h" 16#include "chrome/browser/extensions/api/api_resource_manager.h" 17#include "chrome/browser/usb/usb_device_handle.h" 18#include "chrome/common/extensions/api/usb.h" 19 20class UsbDeviceHandle; 21 22namespace net { 23class IOBuffer; 24} // namespace net 25 26namespace extensions { 27 28// A UsbDeviceResource is an ApiResource wrapper for a UsbDevice. 29class UsbDeviceResource : public ApiResource { 30 public: 31 UsbDeviceResource(const std::string& owner_extension_id, 32 scoped_refptr<UsbDeviceHandle> device); 33 virtual ~UsbDeviceResource(); 34 35 scoped_refptr<UsbDeviceHandle> device() { 36 return device_; 37 } 38 39 private: 40 friend class ApiResourceManager<UsbDeviceResource>; 41 static const char* service_name() { 42 return "UsbDeviceResourceManager"; 43 } 44 45 scoped_refptr<UsbDeviceHandle> device_; 46 47 DISALLOW_COPY_AND_ASSIGN(UsbDeviceResource); 48}; 49 50} // namespace extensions 51 52#endif // CHROME_BROWSER_EXTENSIONS_API_USB_USB_DEVICE_RESOURCE_H_ 53