1effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file.
42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
5effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#ifndef EXTENSIONS_COMMON_PERMISSIONS_USB_DEVICE_PERMISSION_H_
6effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#define EXTENSIONS_COMMON_PERMISSIONS_USB_DEVICE_PERMISSION_H_
72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/basictypes.h"
94e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "extensions/common/permissions/api_permission.h"
10effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "extensions/common/permissions/set_disjunction_permission.h"
11effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "extensions/common/permissions/usb_device_permission_data.h"
122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace extensions {
142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class UsbDevicePermission
162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  : public SetDisjunctionPermission<UsbDevicePermissionData,
172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                    UsbDevicePermission> {
182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public:
192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  struct CheckParam : public APIPermission::CheckParam {
20868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)    CheckParam(uint16 vendor_id, uint16 product_id, int interface_id)
21868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)      : vendor_id(vendor_id),
22868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)        product_id(product_id),
23868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)        interface_id(interface_id) {}
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const uint16 vendor_id;
252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const uint16 product_id;
26868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)    const int interface_id;
272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  };
282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  explicit UsbDevicePermission(const APIPermissionInfo* info);
302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual ~UsbDevicePermission();
312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // APIPermission overrides
332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual PermissionMessages GetMessages() const OVERRIDE;
342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)};
352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}  // namespace extensions
372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
38effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#endif  // EXTENSIONS_COMMON_PERMISSIONS_USB_DEVICE_PERMISSION_H_
39