// Copyright 2015 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_USB_WEB_USB_PERMISSION_PROVIDER_H_
#define CHROME_BROWSER_USB_WEB_USB_PERMISSION_PROVIDER_H_

#include "device/devices_app/usb/public/interfaces/permission_provider.mojom.h"
#include "third_party/mojo/src/mojo/public/cpp/bindings/array.h"
#include "third_party/mojo/src/mojo/public/cpp/bindings/interface_request.h"
#include "third_party/mojo/src/mojo/public/cpp/bindings/strong_binding.h"

namespace content {
class RenderFrameHost;
}

class WebUSBPermissionProvider : public device::usb::PermissionProvider {
 public:
  static void Create(
      content::RenderFrameHost* render_frame_host,
      mojo::InterfaceRequest<device::usb::PermissionProvider> request);

  ~WebUSBPermissionProvider() override;

 private:
  WebUSBPermissionProvider(content::RenderFrameHost* render_frame_host,
                           mojo::InterfaceRequest<PermissionProvider> request);

  // device::usb::PermissionProvider implementation.
  void HasDevicePermission(
      mojo::Array<mojo::String> requested_guids,
      const HasDevicePermissionCallback& callback) override;

  mojo::StrongBinding<PermissionProvider> binding_;
  content::RenderFrameHost* const render_frame_host_;
};

#endif  // CHROME_BROWSER_USB_WEB_USB_PERMISSION_PROVIDER_H_
