Home | History | Annotate | Download | only in permissions
      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.
      4 
      5 #ifndef EXTENSIONS_COMMON_PERMISSIONS_MANIFEST_PERMISSION_SET_H_
      6 #define EXTENSIONS_COMMON_PERMISSIONS_MANIFEST_PERMISSION_SET_H_
      7 
      8 #include <string>
      9 #include <vector>
     10 
     11 #include "base/strings/string16.h"
     12 #include "extensions/common/permissions/base_set_operators.h"
     13 
     14 namespace base {
     15 class ListValue;
     16 }  // namespace base
     17 
     18 namespace extensions {
     19 
     20 class Extension;
     21 class ManifestPermission;
     22 class ManifestPermissionSet;
     23 
     24 template<>
     25 struct BaseSetOperatorsTraits<ManifestPermissionSet> {
     26   typedef ManifestPermission ElementType;
     27   typedef std::string ElementIDType;
     28 };
     29 
     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);
     43 };
     44 
     45 }  // namespace extensions
     46 
     47 #endif  // EXTENSIONS_COMMON_PERMISSIONS_MANIFEST_PERMISSION_SET_H_
     48