Roll src/third_party/WebKit d9c6159:8139f33 (svn 201974:201975)
[chromium-blink-merge.git] / extensions / common / permissions / manifest_permission_set.h
blob4b1ffe02389ecf4010138f478b2974d26cf6de19
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_
8 #include <string>
9 #include <vector>
11 #include "base/strings/string16.h"
12 #include "extensions/common/permissions/base_set_operators.h"
14 namespace base {
15 class ListValue;
16 } // namespace base
18 namespace extensions {
20 class Extension;
21 class ManifestPermission;
22 class ManifestPermissionSet;
24 template<>
25 struct BaseSetOperatorsTraits<ManifestPermissionSet> {
26 typedef ManifestPermission ElementType;
27 typedef std::string ElementIDType;
30 class ManifestPermissionSet : public BaseSetOperators<ManifestPermissionSet> {
31 public:
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_