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 14namespace base { 15class ListValue; 16} // namespace base 17 18namespace extensions { 19 20class Extension; 21class ManifestPermission; 22class ManifestPermissionSet; 23 24template<> 25struct BaseSetOperatorsTraits<ManifestPermissionSet> { 26 typedef ManifestPermission ElementType; 27 typedef std::string ElementIDType; 28}; 29 30class 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