- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / browser / chromeos / fileapi / file_access_permissions.h
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 CHROME_BROWSER_CHROMEOS_FILEAPI_FILE_ACCESS_PERMISSIONS_H_
6 #define CHROME_BROWSER_CHROMEOS_FILEAPI_FILE_ACCESS_PERMISSIONS_H_
7
8 #include <map>
9 #include <set>
10 #include <string>
11
12 #include "base/basictypes.h"
13 #include "base/files/file_path.h"
14 #include "base/synchronization/lock.h"
15 #include "webkit/browser/webkit_storage_browser_export.h"
16
17 namespace chromeos {
18
19 class FileAccessPermissions {
20  public:
21   FileAccessPermissions();
22   virtual ~FileAccessPermissions();
23
24   // Grants |extension_id| access to |path|.
25   void GrantAccessPermission(const std::string& extension_id,
26                              const base::FilePath& path);
27   // Checks id |extension_id| has permission to access to |path|.
28   bool HasAccessPermission(const std::string& extension_id,
29                            const base::FilePath& path) const;
30   // Revokes all file permissions for |extension_id|.
31   void RevokePermissions(const std::string& extension_id);
32
33  private:
34   typedef std::set<base::FilePath> PathSet;
35   typedef std::map<std::string, PathSet> PathAccessMap;
36
37   mutable base::Lock lock_;  // Synchronize all access to path_map_.
38   PathAccessMap path_map_;
39
40   DISALLOW_COPY_AND_ASSIGN(FileAccessPermissions);
41 };
42
43 }  // namespace chromeos
44
45 #endif  // CHROME_BROWSER_CHROMEOS_FILEAPI_FILE_ACCESS_PERMISSIONS_H_