// 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 CHROME_BROWSER_CHROMEOS_FILEAPI_FILE_ACCESS_PERMISSIONS_H_ #define CHROME_BROWSER_CHROMEOS_FILEAPI_FILE_ACCESS_PERMISSIONS_H_ #include #include #include #include "base/basictypes.h" #include "base/files/file_path.h" #include "base/synchronization/lock.h" namespace chromeos { // In a thread safe manner maintains the set of paths allowed to access for // each extension. class FileAccessPermissions { public: FileAccessPermissions(); virtual ~FileAccessPermissions(); // Grants |extension_id| full access to all paths. void GrantFullAccessPermission(const std::string& extension_id); // Grants |extension_id| access to |path|. void GrantAccessPermission(const std::string& extension_id, const base::FilePath& path); // Checks id |extension_id| has permission to access to |path|. bool HasAccessPermission(const std::string& extension_id, const base::FilePath& path) const; // Revokes all file permissions for |extension_id|. void RevokePermissions(const std::string& extension_id); private: typedef std::set PathSet; typedef std::map PathAccessMap; mutable base::Lock lock_; // Synchronize all access to path_map_. PathAccessMap path_map_; DISALLOW_COPY_AND_ASSIGN(FileAccessPermissions); }; } // namespace chromeos #endif // CHROME_BROWSER_CHROMEOS_FILEAPI_FILE_ACCESS_PERMISSIONS_H_