// Copyright 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef EXTENSIONS_COMMON_PERMISSIONS_MANIFEST_PERMISSION_SET_H_ #define EXTENSIONS_COMMON_PERMISSIONS_MANIFEST_PERMISSION_SET_H_ #include <string> #include <vector> #include "base/strings/string16.h" #include "extensions/common/permissions/base_set_operators.h" namespace base { class ListValue; } // namespace base namespace extensions { class Extension; class ManifestPermission; class ManifestPermissionSet; template<> struct BaseSetOperatorsTraits<ManifestPermissionSet> { typedef ManifestPermission ElementType; typedef std::string ElementIDType; }; class ManifestPermissionSet : public BaseSetOperators<ManifestPermissionSet> { public: // Parses permissions from |permissions| and adds the parsed permissions to // |manifest_permissions|. If |unhandled_permissions| is not NULL, the names // of all permissions that couldn't be parsed will be added to this vector. // If |error| is NULL, parsing will continue with the next permission if // invalid data is detected. If |error| is not NULL, it will be set to an // error message and false is returned when an invalid permission is found. static bool ParseFromJSON( const base::ListValue* permissions, ManifestPermissionSet* manifest_permissions, string16* error, std::vector<std::string>* unhandled_permissions); }; } // namespace extensions #endif // EXTENSIONS_COMMON_PERMISSIONS_MANIFEST_PERMISSION_SET_H_