OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef WEBKIT_FILEAPI_OBFUSCATED_FILE_UTIL_H_ | 5 #ifndef WEBKIT_FILEAPI_OBFUSCATED_FILE_UTIL_H_ |
6 #define WEBKIT_FILEAPI_OBFUSCATED_FILE_UTIL_H_ | 6 #define WEBKIT_FILEAPI_OBFUSCATED_FILE_UTIL_H_ |
7 | 7 |
8 #include <map> | 8 #include <map> |
9 #include <string> | 9 #include <string> |
10 #include <vector> | 10 #include <vector> |
(...skipping 25 matching lines...) Expand all Loading... |
36 // backing file than have a database entry whose backing file is missing. When | 36 // backing file than have a database entry whose backing file is missing. When |
37 // doing FSCK operations, if you find a loose backing file with no reference, | 37 // doing FSCK operations, if you find a loose backing file with no reference, |
38 // you may safely delete it. | 38 // you may safely delete it. |
39 // | 39 // |
40 // This class is RefCountedThreadSafe because it may gain a reference on the IO | 40 // This class is RefCountedThreadSafe because it may gain a reference on the IO |
41 // thread, but must be deleted on the FILE thread because that's where | 41 // thread, but must be deleted on the FILE thread because that's where |
42 // DropDatabases needs to be called. References will be held by the | 42 // DropDatabases needs to be called. References will be held by the |
43 // SandboxMountPointProvider [and the task it uses to drop the reference] and | 43 // SandboxMountPointProvider [and the task it uses to drop the reference] and |
44 // SandboxMountPointProvider::GetFileSystemRootPathTask. Without that last one, | 44 // SandboxMountPointProvider::GetFileSystemRootPathTask. Without that last one, |
45 // we wouldn't need ref counting. | 45 // we wouldn't need ref counting. |
46 class ObfuscatedFileUtil : | 46 class ObfuscatedFileUtil |
47 public FileSystemFileUtil, | 47 : public FileSystemFileUtil, |
48 public base::RefCountedThreadSafe<ObfuscatedFileUtil> { | 48 public base::RefCountedThreadSafe<ObfuscatedFileUtil> { |
49 public: | 49 public: |
50 // Origin enumerator interface. | 50 // Origin enumerator interface. |
51 // An instance of this interface is assumed to be called on the file thread. | 51 // An instance of this interface is assumed to be called on the file thread. |
52 class AbstractOriginEnumerator { | 52 class AbstractOriginEnumerator { |
53 public: | 53 public: |
54 virtual ~AbstractOriginEnumerator() {} | 54 virtual ~AbstractOriginEnumerator() {} |
55 | 55 |
56 // Returns the next origin. Returns empty if there are no more origins. | 56 // Returns the next origin. Returns empty if there are no more origins. |
57 virtual GURL Next() = 0; | 57 virtual GURL Next() = 0; |
58 | 58 |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
139 const FileSystemPath& path) OVERRIDE; | 139 const FileSystemPath& path) OVERRIDE; |
140 | 140 |
141 virtual base::PlatformFileError DeleteSingleDirectory( | 141 virtual base::PlatformFileError DeleteSingleDirectory( |
142 FileSystemOperationContext* context, | 142 FileSystemOperationContext* context, |
143 const FileSystemPath& path) OVERRIDE; | 143 const FileSystemPath& path) OVERRIDE; |
144 | 144 |
145 // Gets the topmost directory specific to this origin and type. This will | 145 // Gets the topmost directory specific to this origin and type. This will |
146 // contain both the directory database's files and all the backing file | 146 // contain both the directory database's files and all the backing file |
147 // subdirectories. | 147 // subdirectories. |
148 FilePath GetDirectoryForOriginAndType( | 148 FilePath GetDirectoryForOriginAndType( |
149 const GURL& origin, FileSystemType type, bool create); | 149 const GURL& origin, |
| 150 FileSystemType type, |
| 151 bool create, |
| 152 base::PlatformFileError* error_code); |
| 153 |
| 154 FilePath GetDirectoryForOriginAndType( |
| 155 const GURL& origin, |
| 156 FileSystemType type, |
| 157 bool create) { |
| 158 return GetDirectoryForOriginAndType(origin, type, create, NULL); |
| 159 } |
150 | 160 |
151 // Deletes the topmost directory specific to this origin and type. This will | 161 // Deletes the topmost directory specific to this origin and type. This will |
152 // delete its directory database. | 162 // delete its directory database. |
153 bool DeleteDirectoryForOriginAndType(const GURL& origin, FileSystemType type); | 163 bool DeleteDirectoryForOriginAndType(const GURL& origin, FileSystemType type); |
154 | 164 |
155 // This will migrate a filesystem from the old passthrough sandbox into the | 165 // This will migrate a filesystem from the old passthrough sandbox into the |
156 // new obfuscated one. It won't obfuscate the old filenames [it will maintain | 166 // new obfuscated one. It won't obfuscate the old filenames [it will maintain |
157 // the old structure, but move it to a new root], but any new files created | 167 // the old structure, but move it to a new root], but any new files created |
158 // will go into the new standard locations. This will be completely | 168 // will go into the new standard locations. This will be completely |
159 // transparent to the user. This migration is atomic in that it won't alter | 169 // transparent to the user. This migration is atomic in that it won't alter |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
241 FilePath LocalPathToDataPath(const FileSystemPath& local_path); | 251 FilePath LocalPathToDataPath(const FileSystemPath& local_path); |
242 | 252 |
243 // This returns NULL if |create| flag is false and a filesystem does not | 253 // This returns NULL if |create| flag is false and a filesystem does not |
244 // exist for the given |origin_url| and |type|. | 254 // exist for the given |origin_url| and |type|. |
245 // For read operations |create| should be false. | 255 // For read operations |create| should be false. |
246 FileSystemDirectoryDatabase* GetDirectoryDatabase( | 256 FileSystemDirectoryDatabase* GetDirectoryDatabase( |
247 const GURL& origin_url, FileSystemType type, bool create); | 257 const GURL& origin_url, FileSystemType type, bool create); |
248 | 258 |
249 // Gets the topmost directory specific to this origin. This will | 259 // Gets the topmost directory specific to this origin. This will |
250 // contain both the filesystem type subdirectories. | 260 // contain both the filesystem type subdirectories. |
251 FilePath GetDirectoryForOrigin(const GURL& origin, bool create); | 261 FilePath GetDirectoryForOrigin(const GURL& origin, |
| 262 bool create, |
| 263 base::PlatformFileError* error_code); |
252 | 264 |
253 void MarkUsed(); | 265 void MarkUsed(); |
254 void DropDatabases(); | 266 void DropDatabases(); |
255 bool InitOriginDatabase(bool create); | 267 bool InitOriginDatabase(bool create); |
256 | 268 |
257 typedef std::map<std::string, FileSystemDirectoryDatabase*> DirectoryMap; | 269 typedef std::map<std::string, FileSystemDirectoryDatabase*> DirectoryMap; |
258 DirectoryMap directories_; | 270 DirectoryMap directories_; |
259 scoped_ptr<FileSystemOriginDatabase> origin_database_; | 271 scoped_ptr<FileSystemOriginDatabase> origin_database_; |
260 FilePath file_system_directory_; | 272 FilePath file_system_directory_; |
261 base::OneShotTimer<ObfuscatedFileUtil> timer_; | 273 base::OneShotTimer<ObfuscatedFileUtil> timer_; |
262 | 274 |
263 DISALLOW_COPY_AND_ASSIGN(ObfuscatedFileUtil); | 275 DISALLOW_COPY_AND_ASSIGN(ObfuscatedFileUtil); |
264 }; | 276 }; |
265 | 277 |
266 } // namespace fileapi | 278 } // namespace fileapi |
267 | 279 |
268 #endif // WEBKIT_FILEAPI_OBFUSCATED_FILE_UTIL_H_ | 280 #endif // WEBKIT_FILEAPI_OBFUSCATED_FILE_UTIL_H_ |
OLD | NEW |