Make sure that a given app/extension requests only its own resources.
[chromium-blink-merge.git] / chrome / browser / extensions / api / usb / usb_api.h
blob22242bd3d347e5d2bbb2e14f9e6c2ec30ba5f8e8
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.
5 #ifndef CHROME_BROWSER_EXTENSIONS_API_USB_USB_API_H_
6 #define CHROME_BROWSER_EXTENSIONS_API_USB_USB_API_H_
8 #include <string>
10 #include "chrome/browser/extensions/api/api_function.h"
11 #include "chrome/browser/extensions/api/api_resource_manager.h"
12 #include "chrome/common/extensions/api/experimental_usb.h"
14 class UsbDevice;
16 namespace extensions {
18 class ApiResourceEventNotifier;
19 class UsbDeviceResource;
21 class UsbAsyncApiFunction : public AsyncApiFunction {
22 public:
23 UsbAsyncApiFunction();
25 protected:
26 virtual ~UsbAsyncApiFunction();
28 virtual bool PrePrepare() OVERRIDE;
30 UsbDeviceResource* GetUsbDeviceResource(int api_resource_id);
31 void RemoveUsbDeviceResource(int api_resource_id);
33 ApiResourceManager<UsbDeviceResource>* manager_;
36 class UsbFindDeviceFunction : public UsbAsyncApiFunction {
37 public:
38 DECLARE_EXTENSION_FUNCTION_NAME("experimental.usb.findDevice");
40 UsbFindDeviceFunction();
42 static void SetDeviceForTest(UsbDevice* device);
44 protected:
45 virtual ~UsbFindDeviceFunction();
46 virtual bool Prepare() OVERRIDE;
47 virtual void Work() OVERRIDE;
48 virtual bool Respond() OVERRIDE;
50 private:
51 scoped_ptr<extensions::api::experimental_usb::FindDevice::Params> parameters_;
52 ApiResourceEventNotifier* event_notifier_;
55 class UsbCloseDeviceFunction : public UsbAsyncApiFunction {
56 public:
57 DECLARE_EXTENSION_FUNCTION_NAME("experimental.usb.closeDevice");
59 UsbCloseDeviceFunction();
61 protected:
62 virtual ~UsbCloseDeviceFunction();
63 virtual bool Prepare() OVERRIDE;
64 virtual void Work() OVERRIDE;
65 virtual bool Respond() OVERRIDE;
67 private:
68 scoped_ptr<extensions::api::experimental_usb::CloseDevice::Params>
69 parameters_;
72 class UsbControlTransferFunction : public UsbAsyncApiFunction {
73 public:
74 DECLARE_EXTENSION_FUNCTION_NAME("experimental.usb.controlTransfer");
76 UsbControlTransferFunction();
78 protected:
79 virtual ~UsbControlTransferFunction();
80 virtual bool Prepare() OVERRIDE;
81 virtual void Work() OVERRIDE;
82 virtual bool Respond() OVERRIDE;
84 private:
85 scoped_ptr<extensions::api::experimental_usb::ControlTransfer::Params>
86 parameters_;
89 class UsbBulkTransferFunction : public UsbAsyncApiFunction {
90 public:
91 DECLARE_EXTENSION_FUNCTION_NAME("experimental.usb.bulkTransfer");
93 UsbBulkTransferFunction();
95 protected:
96 virtual ~UsbBulkTransferFunction();
97 virtual bool Prepare() OVERRIDE;
98 virtual void Work() OVERRIDE;
99 virtual bool Respond() OVERRIDE;
101 private:
102 scoped_ptr<extensions::api::experimental_usb::BulkTransfer::Params>
103 parameters_;
106 class UsbInterruptTransferFunction : public UsbAsyncApiFunction {
107 public:
108 DECLARE_EXTENSION_FUNCTION_NAME("experimental.usb.interruptTransfer");
110 UsbInterruptTransferFunction();
112 protected:
113 virtual ~UsbInterruptTransferFunction();
114 virtual bool Prepare() OVERRIDE;
115 virtual void Work() OVERRIDE;
116 virtual bool Respond() OVERRIDE;
118 private:
119 scoped_ptr<extensions::api::experimental_usb::InterruptTransfer::Params>
120 parameters_;
123 class UsbIsochronousTransferFunction : public UsbAsyncApiFunction {
124 public:
125 DECLARE_EXTENSION_FUNCTION_NAME("experimental.usb.isochronousTransfer");
127 UsbIsochronousTransferFunction();
129 protected:
130 virtual ~UsbIsochronousTransferFunction();
131 virtual bool Prepare() OVERRIDE;
132 virtual void Work() OVERRIDE;
133 virtual bool Respond() OVERRIDE;
135 private:
136 scoped_ptr<extensions::api::experimental_usb::IsochronousTransfer::Params>
137 parameters_;
140 } // namespace extensions
142 #endif // CHROME_BROWSER_EXTENSIONS_API_USB_USB_API_H_