Index: extensions/browser/api/usb/usb_api.h |
diff --git a/extensions/browser/api/usb/usb_api.h b/extensions/browser/api/usb/usb_api.h |
index 8903348a3ba06b38c5c608a0d20b0d9b1b70515f..c7ab6c3c33fb5189573906a69906101f15cfd6b5 100644 |
--- a/extensions/browser/api/usb/usb_api.h |
+++ b/extensions/browser/api/usb/usb_api.h |
@@ -14,8 +14,8 @@ |
#include "device/usb/usb_device_filter.h" |
#include "device/usb/usb_device_handle.h" |
#include "extensions/browser/api/api_resource_manager.h" |
-#include "extensions/browser/api/async_api_function.h" |
#include "extensions/browser/api/device_permissions_prompt.h" |
+#include "extensions/browser/extension_function.h" |
#include "extensions/common/api/usb.h" |
#include "net/base/io_buffer.h" |
@@ -26,83 +26,86 @@ class DevicePermissions; |
class DevicePermissionsManager; |
class UsbDeviceResource; |
-class UsbAsyncApiFunction : public AsyncApiFunction { |
- public: |
- UsbAsyncApiFunction(); |
- |
+class UsbPermissionCheckingFunction : public UIThreadExtensionFunction { |
protected: |
- ~UsbAsyncApiFunction() override; |
- |
- // AsyncApiFunction: |
- bool PrePrepare() override; |
- bool Respond() override; |
+ UsbPermissionCheckingFunction(); |
+ ~UsbPermissionCheckingFunction() override; |
bool HasDevicePermission(scoped_refptr<device::UsbDevice> device); |
- scoped_refptr<device::UsbDeviceHandle> GetDeviceHandleOrCompleteWithError( |
- const extensions::core_api::usb::ConnectionHandle& input_device_handle); |
- void RemoveUsbDeviceResource(int api_resource_id); |
- void CompleteWithError(const std::string& error); |
+ void RecordDeviceLastUsed(); |
- ApiResourceManager<UsbDeviceResource>* manager_; |
- scoped_ptr<DevicePermissions> device_permissions_; |
+ private: |
+ DevicePermissionsManager* device_permissions_manager_; |
scoped_refptr<DevicePermissionEntry> permission_entry_; |
}; |
-class UsbAsyncApiTransferFunction : public UsbAsyncApiFunction { |
+class UsbConnectionFunction : public UIThreadExtensionFunction { |
protected: |
- UsbAsyncApiTransferFunction(); |
- ~UsbAsyncApiTransferFunction() override; |
- |
- bool ConvertDirectionSafely(const extensions::core_api::usb::Direction& input, |
- device::UsbEndpointDirection* output); |
- bool ConvertRequestTypeSafely( |
- const extensions::core_api::usb::RequestType& input, |
- device::UsbDeviceHandle::TransferRequestType* output); |
- bool ConvertRecipientSafely( |
- const extensions::core_api::usb::Recipient& input, |
- device::UsbDeviceHandle::TransferRecipient* output); |
+ UsbConnectionFunction(); |
+ ~UsbConnectionFunction() override; |
+ |
+ scoped_refptr<device::UsbDeviceHandle> GetDeviceHandle( |
+ const extensions::core_api::usb::ConnectionHandle& handle); |
+ void ReleaseDeviceHandle( |
+ const extensions::core_api::usb::ConnectionHandle& handle); |
+}; |
+ |
+class UsbTransferFunction : public UsbConnectionFunction { |
+ protected: |
+ UsbTransferFunction(); |
+ ~UsbTransferFunction() override; |
void OnCompleted(device::UsbTransferStatus status, |
scoped_refptr<net::IOBuffer> data, |
size_t length); |
}; |
-class UsbFindDevicesFunction : public UsbAsyncApiFunction { |
+class UsbFindDevicesFunction : public UIThreadExtensionFunction { |
public: |
DECLARE_EXTENSION_FUNCTION("usb.findDevices", USB_FINDDEVICES) |
UsbFindDevicesFunction(); |
- protected: |
+ private: |
~UsbFindDevicesFunction() override; |
- // AsyncApiFunction: |
- bool Prepare() override; |
- void AsyncWorkStart() override; |
+ // ExtensionFunction: |
+ ResponseAction Run() override; |
+ |
+ void OnGetDevicesComplete( |
+ const std::vector<scoped_refptr<device::UsbDevice>>& devices); |
+ void OnRequestAccessComplete(scoped_refptr<device::UsbDevice> device, |
+ bool success); |
+ void OnDeviceOpened(scoped_refptr<device::UsbDeviceHandle> device_handle); |
+ void OpenComplete(); |
- private: |
- void OpenDevices( |
- scoped_ptr<std::vector<scoped_refptr<device::UsbDevice> > > devices); |
+ uint16_t vendor_id_; |
+ uint16_t product_id_; |
+ int interface_id_; |
+ scoped_ptr<base::ListValue> result_; |
+ base::Closure barrier_; |
- std::vector<scoped_refptr<device::UsbDeviceHandle> > device_handles_; |
- scoped_ptr<extensions::core_api::usb::FindDevices::Params> parameters_; |
+ DISALLOW_COPY_AND_ASSIGN(UsbFindDevicesFunction); |
}; |
-class UsbGetDevicesFunction : public UsbAsyncApiFunction { |
+class UsbGetDevicesFunction : public UsbPermissionCheckingFunction { |
public: |
DECLARE_EXTENSION_FUNCTION("usb.getDevices", USB_GETDEVICES) |
UsbGetDevicesFunction(); |
- // AsyncApiFunction: |
- bool Prepare() override; |
- void AsyncWorkStart() override; |
- |
- protected: |
+ private: |
~UsbGetDevicesFunction() override; |
- private: |
- scoped_ptr<extensions::core_api::usb::GetDevices::Params> parameters_; |
+ // ExtensionFunction: |
+ ResponseAction Run() override; |
+ |
+ void OnGetDevicesComplete( |
+ const std::vector<scoped_refptr<device::UsbDevice>>& devices); |
+ |
+ std::vector<device::UsbDeviceFilter> filters_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(UsbGetDevicesFunction); |
}; |
class UsbGetUserSelectedDevicesFunction |
@@ -114,130 +117,117 @@ class UsbGetUserSelectedDevicesFunction |
UsbGetUserSelectedDevicesFunction(); |
- protected: |
+ private: |
~UsbGetUserSelectedDevicesFunction() override; |
// ExtensionFunction: |
ResponseAction Run() override; |
- private: |
void OnUsbDevicesChosen( |
const std::vector<scoped_refptr<device::UsbDevice>>& devices) override; |
scoped_ptr<DevicePermissionsPrompt> prompt_; |
- std::vector<uint32> device_ids_; |
- std::vector<scoped_refptr<device::UsbDevice>> devices_; |
- std::vector<base::string16> serial_numbers_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(UsbGetUserSelectedDevicesFunction); |
}; |
-class UsbRequestAccessFunction : public UsbAsyncApiFunction { |
+class UsbRequestAccessFunction : public UIThreadExtensionFunction { |
public: |
DECLARE_EXTENSION_FUNCTION("usb.requestAccess", USB_REQUESTACCESS) |
UsbRequestAccessFunction(); |
- // AsyncApiFunction: |
- bool Prepare() override; |
- void AsyncWorkStart() override; |
- |
- protected: |
+ private: |
~UsbRequestAccessFunction() override; |
- private: |
- scoped_ptr<extensions::core_api::usb::RequestAccess::Params> parameters_; |
+ // ExtensionFunction: |
+ ResponseAction Run() override; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(UsbRequestAccessFunction); |
}; |
-class UsbOpenDeviceFunction : public UsbAsyncApiFunction { |
+class UsbOpenDeviceFunction : public UsbPermissionCheckingFunction { |
public: |
DECLARE_EXTENSION_FUNCTION("usb.openDevice", USB_OPENDEVICE) |
UsbOpenDeviceFunction(); |
- // AsyncApiFunction: |
- bool Prepare() override; |
- void AsyncWorkStart() override; |
- bool Respond() override; |
- |
- protected: |
+ private: |
~UsbOpenDeviceFunction() override; |
- private: |
- void OnRequestAccessComplete(bool success); |
+ // ExtensionFunction: |
+ ResponseAction Run() override; |
- DevicePermissionsManager* device_permissions_manager_; |
- scoped_refptr<device::UsbDevice> device_; |
- scoped_ptr<extensions::core_api::usb::OpenDevice::Params> parameters_; |
+ void OnRequestAccessComplete(scoped_refptr<device::UsbDevice> device, |
+ bool success); |
+ void OnDeviceOpened(scoped_refptr<device::UsbDeviceHandle> device_handle); |
+ |
+ DISALLOW_COPY_AND_ASSIGN(UsbOpenDeviceFunction); |
}; |
-class UsbSetConfigurationFunction : public UsbAsyncApiFunction { |
+class UsbSetConfigurationFunction : public UsbConnectionFunction { |
public: |
DECLARE_EXTENSION_FUNCTION("usb.setConfiguration", USB_SETCONFIGURATION) |
UsbSetConfigurationFunction(); |
- protected: |
+ private: |
~UsbSetConfigurationFunction() override; |
- // AsyncApiFunction: |
- bool Prepare() override; |
- void AsyncWorkStart() override; |
+ // ExtensionFunction: |
+ ResponseAction Run() override; |
- private: |
- scoped_ptr<extensions::core_api::usb::SetConfiguration::Params> parameters_; |
+ void OnComplete(bool success); |
+ |
+ DISALLOW_COPY_AND_ASSIGN(UsbSetConfigurationFunction); |
}; |
-class UsbGetConfigurationFunction : public UsbAsyncApiFunction { |
+class UsbGetConfigurationFunction : public UsbConnectionFunction { |
public: |
DECLARE_EXTENSION_FUNCTION("usb.getConfiguration", USB_GETCONFIGURATION) |
UsbGetConfigurationFunction(); |
- protected: |
+ private: |
~UsbGetConfigurationFunction() override; |
- // AsyncApiFunction: |
- bool Prepare() override; |
- void AsyncWorkStart() override; |
+ // ExtensionFunction: |
+ ResponseAction Run() override; |
- private: |
- scoped_ptr<extensions::core_api::usb::GetConfiguration::Params> parameters_; |
+ DISALLOW_COPY_AND_ASSIGN(UsbGetConfigurationFunction); |
}; |
-class UsbListInterfacesFunction : public UsbAsyncApiFunction { |
+class UsbListInterfacesFunction : public UsbConnectionFunction { |
public: |
DECLARE_EXTENSION_FUNCTION("usb.listInterfaces", USB_LISTINTERFACES) |
UsbListInterfacesFunction(); |
- protected: |
+ private: |
~UsbListInterfacesFunction() override; |
- // AsyncApiFunction: |
- bool Prepare() override; |
- void AsyncWorkStart() override; |
+ // ExtensionFunction: |
+ ResponseAction Run() override; |
- private: |
- scoped_ptr<extensions::core_api::usb::ListInterfaces::Params> parameters_; |
+ DISALLOW_COPY_AND_ASSIGN(UsbListInterfacesFunction); |
}; |
-class UsbCloseDeviceFunction : public UsbAsyncApiFunction { |
+class UsbCloseDeviceFunction : public UsbConnectionFunction { |
public: |
DECLARE_EXTENSION_FUNCTION("usb.closeDevice", USB_CLOSEDEVICE) |
UsbCloseDeviceFunction(); |
- protected: |
+ private: |
~UsbCloseDeviceFunction() override; |
- // AsyncApiFunction: |
- bool Prepare() override; |
- void AsyncWorkStart() override; |
+ // ExtensionFunction: |
+ ResponseAction Run() override; |
- private: |
- scoped_ptr<extensions::core_api::usb::CloseDevice::Params> parameters_; |
+ DISALLOW_COPY_AND_ASSIGN(UsbCloseDeviceFunction); |
}; |
-class UsbClaimInterfaceFunction : public UsbAsyncApiFunction { |
+class UsbClaimInterfaceFunction : public UsbConnectionFunction { |
public: |
DECLARE_EXTENSION_FUNCTION("usb.claimInterface", USB_CLAIMINTERFACE) |
@@ -246,32 +236,30 @@ class UsbClaimInterfaceFunction : public UsbAsyncApiFunction { |
protected: |
~UsbClaimInterfaceFunction() override; |
- // AsyncApiFunction: |
- bool Prepare() override; |
- void AsyncWorkStart() override; |
+ // ExtensionFunction: |
+ ResponseAction Run() override; |
+ |
+ void OnComplete(bool success); |
- private: |
- scoped_ptr<extensions::core_api::usb::ClaimInterface::Params> parameters_; |
+ DISALLOW_COPY_AND_ASSIGN(UsbClaimInterfaceFunction); |
}; |
-class UsbReleaseInterfaceFunction : public UsbAsyncApiFunction { |
+class UsbReleaseInterfaceFunction : public UsbConnectionFunction { |
public: |
DECLARE_EXTENSION_FUNCTION("usb.releaseInterface", USB_RELEASEINTERFACE) |
UsbReleaseInterfaceFunction(); |
- protected: |
+ private: |
~UsbReleaseInterfaceFunction() override; |
- // AsyncApiFunction: |
- bool Prepare() override; |
- void AsyncWorkStart() override; |
+ // ExtensionFunction: |
+ ResponseAction Run() override; |
- private: |
- scoped_ptr<extensions::core_api::usb::ReleaseInterface::Params> parameters_; |
+ DISALLOW_COPY_AND_ASSIGN(UsbReleaseInterfaceFunction); |
}; |
-class UsbSetInterfaceAlternateSettingFunction : public UsbAsyncApiFunction { |
+class UsbSetInterfaceAlternateSettingFunction : public UsbConnectionFunction { |
public: |
DECLARE_EXTENSION_FUNCTION("usb.setInterfaceAlternateSetting", |
USB_SETINTERFACEALTERNATESETTING) |
@@ -281,98 +269,91 @@ class UsbSetInterfaceAlternateSettingFunction : public UsbAsyncApiFunction { |
private: |
~UsbSetInterfaceAlternateSettingFunction() override; |
- // AsyncApiFunction: |
- bool Prepare() override; |
- void AsyncWorkStart() override; |
+ // ExtensionFunction: |
+ ResponseAction Run() override; |
+ |
+ void OnComplete(bool success); |
- scoped_ptr<extensions::core_api::usb::SetInterfaceAlternateSetting::Params> |
- parameters_; |
+ DISALLOW_COPY_AND_ASSIGN(UsbSetInterfaceAlternateSettingFunction); |
}; |
-class UsbControlTransferFunction : public UsbAsyncApiTransferFunction { |
+class UsbControlTransferFunction : public UsbTransferFunction { |
public: |
DECLARE_EXTENSION_FUNCTION("usb.controlTransfer", USB_CONTROLTRANSFER) |
UsbControlTransferFunction(); |
- protected: |
+ private: |
~UsbControlTransferFunction() override; |
- // AsyncApiFunction: |
- bool Prepare() override; |
- void AsyncWorkStart() override; |
+ // ExtensionFunction: |
+ ResponseAction Run() override; |
- private: |
- scoped_ptr<extensions::core_api::usb::ControlTransfer::Params> parameters_; |
+ DISALLOW_COPY_AND_ASSIGN(UsbControlTransferFunction); |
}; |
-class UsbBulkTransferFunction : public UsbAsyncApiTransferFunction { |
+class UsbBulkTransferFunction : public UsbTransferFunction { |
public: |
DECLARE_EXTENSION_FUNCTION("usb.bulkTransfer", USB_BULKTRANSFER) |
UsbBulkTransferFunction(); |
- protected: |
+ private: |
~UsbBulkTransferFunction() override; |
- // AsyncApiFunction: |
- bool Prepare() override; |
- void AsyncWorkStart() override; |
+ // ExtensionFunction: |
+ ResponseAction Run() override; |
- private: |
- scoped_ptr<extensions::core_api::usb::BulkTransfer::Params> parameters_; |
+ DISALLOW_COPY_AND_ASSIGN(UsbBulkTransferFunction); |
}; |
-class UsbInterruptTransferFunction : public UsbAsyncApiTransferFunction { |
+class UsbInterruptTransferFunction : public UsbTransferFunction { |
public: |
DECLARE_EXTENSION_FUNCTION("usb.interruptTransfer", USB_INTERRUPTTRANSFER) |
UsbInterruptTransferFunction(); |
- protected: |
+ private: |
~UsbInterruptTransferFunction() override; |
- // AsyncApiFunction: |
- bool Prepare() override; |
- void AsyncWorkStart() override; |
+ // ExtensionFunction: |
+ ResponseAction Run() override; |
- private: |
- scoped_ptr<extensions::core_api::usb::InterruptTransfer::Params> parameters_; |
+ DISALLOW_COPY_AND_ASSIGN(UsbInterruptTransferFunction); |
}; |
-class UsbIsochronousTransferFunction : public UsbAsyncApiTransferFunction { |
+class UsbIsochronousTransferFunction : public UsbTransferFunction { |
public: |
DECLARE_EXTENSION_FUNCTION("usb.isochronousTransfer", USB_ISOCHRONOUSTRANSFER) |
UsbIsochronousTransferFunction(); |
- protected: |
+ private: |
~UsbIsochronousTransferFunction() override; |
- // AsyncApiFunction: |
- bool Prepare() override; |
- void AsyncWorkStart() override; |
+ // ExtensionFunction: |
+ ResponseAction Run() override; |
- private: |
- scoped_ptr<extensions::core_api::usb::IsochronousTransfer::Params> |
- parameters_; |
+ DISALLOW_COPY_AND_ASSIGN(UsbIsochronousTransferFunction); |
}; |
-class UsbResetDeviceFunction : public UsbAsyncApiFunction { |
+class UsbResetDeviceFunction : public UsbConnectionFunction { |
public: |
DECLARE_EXTENSION_FUNCTION("usb.resetDevice", USB_RESETDEVICE) |
UsbResetDeviceFunction(); |
- protected: |
+ private: |
~UsbResetDeviceFunction() override; |
- // AsyncApiFunction: |
- bool Prepare() override; |
- void AsyncWorkStart() override; |
+ // ExtensionFunction: |
+ ResponseAction Run() override; |
+ |
+ void OnComplete(bool success); |
- private: |
scoped_ptr<extensions::core_api::usb::ResetDevice::Params> parameters_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(UsbResetDeviceFunction); |
}; |
} // namespace extensions |