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 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