1010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#ifndef EXTENSIONS_BROWSER_API_USB_USB_DEVICE_RESOURCE_H_ 6010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#define EXTENSIONS_BROWSER_API_USB_USB_DEVICE_RESOURCE_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch#include <string> 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/ref_counted.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/synchronization/lock.h" 13424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)#include "content/public/browser/browser_thread.h" 141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "device/usb/usb_device_handle.h" 15a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "extensions/browser/api/api_resource.h" 16a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "extensions/browser/api/api_resource_manager.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace usb_service { 191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass UsbDeviceHandle; 201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace extensions { 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// A UsbDeviceResource is an ApiResource wrapper for a UsbDevice. 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class UsbDeviceResource : public ApiResource { 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci static const content::BrowserThread::ID kThreadId = 281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci content::BrowserThread::FILE; 291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) UsbDeviceResource(const std::string& owner_extension_id, 311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_refptr<device::UsbDeviceHandle> device); 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~UsbDeviceResource(); 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_refptr<device::UsbDeviceHandle> device() { return device_; } 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual bool IsPersistent() const OVERRIDE; 37424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 397d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) friend class ApiResourceManager<UsbDeviceResource>; 40a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) static const char* service_name() { return "UsbDeviceResourceManager"; } 417d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_refptr<device::UsbDeviceHandle> device_; 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(UsbDeviceResource); 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace extensions 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 49010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#endif // EXTENSIONS_BROWSER_API_USB_USB_DEVICE_RESOURCE_H_ 50