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

Unified Diff: chrome/browser/extensions/api/usb/usb_device_resource.h

Issue 10224009: Experimental USB API (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase. Created 8 years, 8 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
Index: chrome/browser/extensions/api/usb/usb_device_resource.h
diff --git a/chrome/browser/extensions/api/usb/usb_device_resource.h b/chrome/browser/extensions/api/usb/usb_device_resource.h
new file mode 100644
index 0000000000000000000000000000000000000000..03c37936e3df089ba36dc88e712d92ea04d1d265
--- /dev/null
+++ b/chrome/browser/extensions/api/usb/usb_device_resource.h
@@ -0,0 +1,58 @@
+// Copyright (c) 2012 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.
+
+#ifndef CHROME_BROWSER_EXTENSIONS_API_USB_USB_DEVICE_RESOURCE_H_
+#define CHROME_BROWSER_EXTENSIONS_API_USB_USB_DEVICE_RESOURCE_H_
+#pragma once
+
+#include <set>
+
+#include "base/basictypes.h"
+#include "base/memory/linked_ptr.h"
+#include "base/synchronization/lock.h"
+#include "chrome/browser/extensions/api/api_resource.h"
+#include "chrome/common/extensions/api/experimental.usb.h"
+
+class UsbDevice;
+
+namespace net {
+class IOBuffer;
+} // namespace net
+
+namespace extensions {
+
+class APIResourceEventNotifier;
+
+// A UsbDeviceResource is an APIResource wrapper for a UsbDevice. When invoking
+// transfers on the underlying device it will use the APIResourceEventNotifier
+// associated with the underlying APIResource to deliver completion messages.
+class UsbDeviceResource : public APIResource {
+ public:
+ UsbDeviceResource(APIResourceEventNotifier* notifier, UsbDevice* device);
+ virtual ~UsbDeviceResource();
+
+ // All of the *Transfer variants that are exposed here adapt their arguments
+ // for the underlying UsbDevice's interface and invoke the corresponding
+ // methods with completion callbacks that call OnTransferComplete on the event
+ // notifier.
+ void ControlTransfer(
+ const api::experimental_usb::ControlTransferInfo& transfer);
+ void InterruptTransfer(
+ const api::experimental_usb::GenericTransferInfo& transfer);
+ void BulkTransfer(const api::experimental_usb::GenericTransferInfo& transfer);
+
+ private:
+ // Invoked by the underlying device's transfer callbacks. Indicates transfer
+ // completion to the APIResource's event notifier.
+ void TransferComplete(net::IOBuffer* buffer, const size_t length,
+ int success);
+
+ scoped_refptr<UsbDevice> device_;
+
+ DISALLOW_COPY_AND_ASSIGN(UsbDeviceResource);
+};
+
+} // namespace extensions
+
+#endif // CHROME_BROWSER_EXTENSIONS_API_USB_USB_DEVICE_RESOURCE_H_

Powered by Google App Engine
This is Rietveld 408576698