blob: 5fd2e6dc4731da6b6df29a8ac8bb5de5b5d28c75 [file] [log] [blame]
reillyg17b8a58c2015-09-09 20:58:551// Copyright 2015 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.
4
5#ifndef CHROME_BROWSER_USB_WEB_USB_PERMISSION_PROVIDER_H_
6#define CHROME_BROWSER_USB_WEB_USB_PERMISSION_PROVIDER_H_
7
avi664c07b2015-12-26 02:18:318#include <stdint.h>
9
reillygd6d8ce132016-03-04 23:29:4110#include "base/memory/weak_ptr.h"
11#include "device/usb/mojo/permission_provider.h"
reillyg17b8a58c2015-09-09 20:58:5512
13namespace content {
14class RenderFrameHost;
15}
16
reillygf50d8d32017-03-14 22:55:0017class GURL;
18class UsbChooserContext;
19
reillyg3ff45322015-10-23 21:16:2520// This implementation of the permission provider interface enforces the rules
21// of the WebUSB permission model. Devices are checked for WebUSB descriptors
22// granting access to the render frame's current origin as well as permission
23// granted by the user through a device chooser UI.
reillyg17b8a58c2015-09-09 20:58:5524class WebUSBPermissionProvider : public device::usb::PermissionProvider {
25 public:
juncai001f50f62016-09-29 05:15:1626 static bool HasDevicePermission(
reillygf50d8d32017-03-14 22:55:0027 UsbChooserContext* chooser_context,
28 const GURL& requesting_origin,
29 const GURL& embedding_origin,
juncai001f50f62016-09-29 05:15:1630 scoped_refptr<const device::UsbDevice> device);
31
reillyg3ff45322015-10-23 21:16:2532 explicit WebUSBPermissionProvider(
33 content::RenderFrameHost* render_frame_host);
reillyg17b8a58c2015-09-09 20:58:5534 ~WebUSBPermissionProvider() override;
35
reillygd6d8ce132016-03-04 23:29:4136 base::WeakPtr<PermissionProvider> GetWeakPtr();
37
reillyg17b8a58c2015-09-09 20:58:5538 // device::usb::PermissionProvider implementation.
reillygd6d8ce132016-03-04 23:29:4139 bool HasDevicePermission(
reillygf1cce2f82016-04-12 01:33:4740 scoped_refptr<const device::UsbDevice> device) const override;
reillyg3e1eacc32016-04-08 18:52:4641 void IncrementConnectionCount() override;
42 void DecrementConnectionCount() override;
reillyg17b8a58c2015-09-09 20:58:5543
reillyg3ff45322015-10-23 21:16:2544 private:
reillyg17b8a58c2015-09-09 20:58:5545 content::RenderFrameHost* const render_frame_host_;
reillygd6d8ce132016-03-04 23:29:4146 base::WeakPtrFactory<PermissionProvider> weak_factory_;
reillyg17b8a58c2015-09-09 20:58:5547};
48
49#endif // CHROME_BROWSER_USB_WEB_USB_PERMISSION_PROVIDER_H_