1 // Copyright 2013 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.
5 #ifndef EXTENSIONS_COMMON_PERMISSIONS_MANIFEST_PERMISSION_SET_H_
6 #define EXTENSIONS_COMMON_PERMISSIONS_MANIFEST_PERMISSION_SET_H_
11 #include "base/strings/string16.h"
12 #include "extensions/common/permissions/base_set_operators.h"
18 namespace extensions
{
21 class ManifestPermission
;
22 class ManifestPermissionSet
;
25 struct BaseSetOperatorsTraits
<ManifestPermissionSet
> {
26 typedef ManifestPermission ElementType
;
27 typedef std::string ElementIDType
;
30 class ManifestPermissionSet
: public BaseSetOperators
<ManifestPermissionSet
> {
32 // Parses permissions from |permissions| and adds the parsed permissions to
33 // |manifest_permissions|. If |unhandled_permissions| is not NULL, the names
34 // of all permissions that couldn't be parsed will be added to this vector.
35 // If |error| is NULL, parsing will continue with the next permission if
36 // invalid data is detected. If |error| is not NULL, it will be set to an
37 // error message and false is returned when an invalid permission is found.
38 static bool ParseFromJSON(
39 const base::ListValue
* permissions
,
40 ManifestPermissionSet
* manifest_permissions
,
41 base::string16
* error
,
42 std::vector
<std::string
>* unhandled_permissions
);
45 } // namespace extensions
47 #endif // EXTENSIONS_COMMON_PERMISSIONS_MANIFEST_PERMISSION_SET_H_