Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / extensions / browser / api / usb / usb_api.h
index 8bd673f..5826f39 100644 (file)
 #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/common/api/usb.h"
 #include "net/base/io_buffer.h"
 
 namespace extensions {
 
+class DevicePermissions;
 class UsbDeviceResource;
 
 class UsbAsyncApiFunction : public AsyncApiFunction {
@@ -27,20 +29,14 @@ class UsbAsyncApiFunction : public AsyncApiFunction {
   UsbAsyncApiFunction();
 
  protected:
-  virtual ~UsbAsyncApiFunction();
+  ~UsbAsyncApiFunction() override;
 
-  virtual bool PrePrepare() OVERRIDE;
-  virtual bool Respond() OVERRIDE;
-
-  static void CreateDeviceFilter(
-      const extensions::core_api::usb::DeviceFilter& input,
-      device::UsbDeviceFilter* output);
+  bool PrePrepare() override;
+  bool Respond() override;
 
   bool HasDevicePermission(scoped_refptr<device::UsbDevice> device);
-
   scoped_refptr<device::UsbDevice> GetDeviceOrCompleteWithError(
       const extensions::core_api::usb::Device& input_device);
-
   scoped_refptr<device::UsbDeviceHandle> GetDeviceHandleOrCompleteWithError(
       const extensions::core_api::usb::ConnectionHandle& input_device_handle);
 
@@ -49,12 +45,13 @@ class UsbAsyncApiFunction : public AsyncApiFunction {
   void CompleteWithError(const std::string& error);
 
   ApiResourceManager<UsbDeviceResource>* manager_;
+  scoped_ptr<DevicePermissions> device_permissions_;
 };
 
 class UsbAsyncApiTransferFunction : public UsbAsyncApiFunction {
  protected:
   UsbAsyncApiTransferFunction();
-  virtual ~UsbAsyncApiTransferFunction();
+  ~UsbAsyncApiTransferFunction() override;
 
   bool ConvertDirectionSafely(const extensions::core_api::usb::Direction& input,
                               device::UsbEndpointDirection* output);
@@ -77,10 +74,10 @@ class UsbFindDevicesFunction : public UsbAsyncApiFunction {
   UsbFindDevicesFunction();
 
  protected:
-  virtual ~UsbFindDevicesFunction();
+  ~UsbFindDevicesFunction() override;
 
-  virtual bool Prepare() OVERRIDE;
-  virtual void AsyncWorkStart() OVERRIDE;
+  bool Prepare() override;
+  void AsyncWorkStart() override;
 
  private:
   void OpenDevices(
@@ -96,32 +93,50 @@ class UsbGetDevicesFunction : public UsbAsyncApiFunction {
 
   UsbGetDevicesFunction();
 
-  virtual bool Prepare() OVERRIDE;
-  virtual void AsyncWorkStart() OVERRIDE;
+  bool Prepare() override;
+  void AsyncWorkStart() override;
 
  protected:
-  virtual ~UsbGetDevicesFunction();
+  ~UsbGetDevicesFunction() override;
 
  private:
-  void EnumerationCompletedFileThread(
-      scoped_ptr<std::vector<scoped_refptr<device::UsbDevice> > > devices);
-
   scoped_ptr<extensions::core_api::usb::GetDevices::Params> parameters_;
 };
 
+class UsbGetUserSelectedDevicesFunction
+    : public UIThreadExtensionFunction,
+      public DevicePermissionsPrompt::Delegate {
+ public:
+  DECLARE_EXTENSION_FUNCTION("usb.getUserSelectedDevices",
+                             USB_GETUSERSELECTEDDEVICES)
+
+  UsbGetUserSelectedDevicesFunction();
+
+ protected:
+  ~UsbGetUserSelectedDevicesFunction() override;
+  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_;
+};
+
 class UsbRequestAccessFunction : public UsbAsyncApiFunction {
  public:
   DECLARE_EXTENSION_FUNCTION("usb.requestAccess", USB_REQUESTACCESS)
 
   UsbRequestAccessFunction();
 
-  virtual bool Prepare() OVERRIDE;
-  virtual void AsyncWorkStart() OVERRIDE;
+  bool Prepare() override;
+  void AsyncWorkStart() override;
 
  protected:
-  virtual ~UsbRequestAccessFunction();
-
-  void OnCompleted(bool success);
+  ~UsbRequestAccessFunction() override;
 
  private:
   scoped_ptr<extensions::core_api::usb::RequestAccess::Params> parameters_;
@@ -133,14 +148,16 @@ class UsbOpenDeviceFunction : public UsbAsyncApiFunction {
 
   UsbOpenDeviceFunction();
 
-  virtual bool Prepare() OVERRIDE;
-  virtual void AsyncWorkStart() OVERRIDE;
+  bool Prepare() override;
+  void AsyncWorkStart() override;
 
  protected:
-  virtual ~UsbOpenDeviceFunction();
+  ~UsbOpenDeviceFunction() override;
 
  private:
-  scoped_refptr<device::UsbDeviceHandle> handle_;
+  void OnRequestAccessComplete(bool success);
+
+  scoped_refptr<device::UsbDevice> device_;
   scoped_ptr<extensions::core_api::usb::OpenDevice::Params> parameters_;
 };
 
@@ -151,10 +168,10 @@ class UsbGetConfigurationFunction : public UsbAsyncApiFunction {
   UsbGetConfigurationFunction();
 
  protected:
-  virtual ~UsbGetConfigurationFunction();
+  ~UsbGetConfigurationFunction() override;
 
-  virtual bool Prepare() OVERRIDE;
-  virtual void AsyncWorkStart() OVERRIDE;
+  bool Prepare() override;
+  void AsyncWorkStart() override;
 
  private:
   scoped_ptr<extensions::core_api::usb::GetConfiguration::Params> parameters_;
@@ -167,10 +184,10 @@ class UsbListInterfacesFunction : public UsbAsyncApiFunction {
   UsbListInterfacesFunction();
 
  protected:
-  virtual ~UsbListInterfacesFunction();
+  ~UsbListInterfacesFunction() override;
 
-  virtual bool Prepare() OVERRIDE;
-  virtual void AsyncWorkStart() OVERRIDE;
+  bool Prepare() override;
+  void AsyncWorkStart() override;
 
  private:
   scoped_ptr<extensions::core_api::usb::ListInterfaces::Params> parameters_;
@@ -183,10 +200,10 @@ class UsbCloseDeviceFunction : public UsbAsyncApiFunction {
   UsbCloseDeviceFunction();
 
  protected:
-  virtual ~UsbCloseDeviceFunction();
+  ~UsbCloseDeviceFunction() override;
 
-  virtual bool Prepare() OVERRIDE;
-  virtual void AsyncWorkStart() OVERRIDE;
+  bool Prepare() override;
+  void AsyncWorkStart() override;
 
  private:
   scoped_ptr<extensions::core_api::usb::CloseDevice::Params> parameters_;
@@ -199,10 +216,10 @@ class UsbClaimInterfaceFunction : public UsbAsyncApiFunction {
   UsbClaimInterfaceFunction();
 
  protected:
-  virtual ~UsbClaimInterfaceFunction();
+  ~UsbClaimInterfaceFunction() override;
 
-  virtual bool Prepare() OVERRIDE;
-  virtual void AsyncWorkStart() OVERRIDE;
+  bool Prepare() override;
+  void AsyncWorkStart() override;
 
  private:
   scoped_ptr<extensions::core_api::usb::ClaimInterface::Params> parameters_;
@@ -215,10 +232,10 @@ class UsbReleaseInterfaceFunction : public UsbAsyncApiFunction {
   UsbReleaseInterfaceFunction();
 
  protected:
-  virtual ~UsbReleaseInterfaceFunction();
+  ~UsbReleaseInterfaceFunction() override;
 
-  virtual bool Prepare() OVERRIDE;
-  virtual void AsyncWorkStart() OVERRIDE;
+  bool Prepare() override;
+  void AsyncWorkStart() override;
 
  private:
   scoped_ptr<extensions::core_api::usb::ReleaseInterface::Params> parameters_;
@@ -232,10 +249,10 @@ class UsbSetInterfaceAlternateSettingFunction : public UsbAsyncApiFunction {
   UsbSetInterfaceAlternateSettingFunction();
 
  private:
-  virtual ~UsbSetInterfaceAlternateSettingFunction();
+  ~UsbSetInterfaceAlternateSettingFunction() override;
 
-  virtual bool Prepare() OVERRIDE;
-  virtual void AsyncWorkStart() OVERRIDE;
+  bool Prepare() override;
+  void AsyncWorkStart() override;
 
   scoped_ptr<extensions::core_api::usb::SetInterfaceAlternateSetting::Params>
       parameters_;
@@ -248,10 +265,10 @@ class UsbControlTransferFunction : public UsbAsyncApiTransferFunction {
   UsbControlTransferFunction();
 
  protected:
-  virtual ~UsbControlTransferFunction();
+  ~UsbControlTransferFunction() override;
 
-  virtual bool Prepare() OVERRIDE;
-  virtual void AsyncWorkStart() OVERRIDE;
+  bool Prepare() override;
+  void AsyncWorkStart() override;
 
  private:
   scoped_ptr<extensions::core_api::usb::ControlTransfer::Params> parameters_;
@@ -264,10 +281,10 @@ class UsbBulkTransferFunction : public UsbAsyncApiTransferFunction {
   UsbBulkTransferFunction();
 
  protected:
-  virtual ~UsbBulkTransferFunction();
+  ~UsbBulkTransferFunction() override;
 
-  virtual bool Prepare() OVERRIDE;
-  virtual void AsyncWorkStart() OVERRIDE;
+  bool Prepare() override;
+  void AsyncWorkStart() override;
 
  private:
   scoped_ptr<extensions::core_api::usb::BulkTransfer::Params> parameters_;
@@ -280,10 +297,10 @@ class UsbInterruptTransferFunction : public UsbAsyncApiTransferFunction {
   UsbInterruptTransferFunction();
 
  protected:
-  virtual ~UsbInterruptTransferFunction();
+  ~UsbInterruptTransferFunction() override;
 
-  virtual bool Prepare() OVERRIDE;
-  virtual void AsyncWorkStart() OVERRIDE;
+  bool Prepare() override;
+  void AsyncWorkStart() override;
 
  private:
   scoped_ptr<extensions::core_api::usb::InterruptTransfer::Params> parameters_;
@@ -296,10 +313,10 @@ class UsbIsochronousTransferFunction : public UsbAsyncApiTransferFunction {
   UsbIsochronousTransferFunction();
 
  protected:
-  virtual ~UsbIsochronousTransferFunction();
+  ~UsbIsochronousTransferFunction() override;
 
-  virtual bool Prepare() OVERRIDE;
-  virtual void AsyncWorkStart() OVERRIDE;
+  bool Prepare() override;
+  void AsyncWorkStart() override;
 
  private:
   scoped_ptr<extensions::core_api::usb::IsochronousTransfer::Params>
@@ -313,10 +330,10 @@ class UsbResetDeviceFunction : public UsbAsyncApiFunction {
   UsbResetDeviceFunction();
 
  protected:
-  virtual ~UsbResetDeviceFunction();
+  ~UsbResetDeviceFunction() override;
 
-  virtual bool Prepare() OVERRIDE;
-  virtual void AsyncWorkStart() OVERRIDE;
+  bool Prepare() override;
+  void AsyncWorkStart() override;
 
  private:
   scoped_ptr<extensions::core_api::usb::ResetDevice::Params> parameters_;