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_BROWSER_FILEAPI_FILE_SYSTEM_CONTEXT_H_ | 5 #ifndef WEBKIT_BROWSER_FILEAPI_FILE_SYSTEM_CONTEXT_H_ |
6 #define WEBKIT_BROWSER_FILEAPI_FILE_SYSTEM_CONTEXT_H_ | 6 #define WEBKIT_BROWSER_FILEAPI_FILE_SYSTEM_CONTEXT_H_ |
7 | 7 |
8 #include <map> | 8 #include <map> |
9 #include <string> | 9 #include <string> |
10 #include <vector> | 10 #include <vector> |
11 | 11 |
12 #include "base/callback.h" | 12 #include "base/callback.h" |
| 13 #include "base/files/file.h" |
13 #include "base/memory/ref_counted.h" | 14 #include "base/memory/ref_counted.h" |
14 #include "base/memory/scoped_ptr.h" | 15 #include "base/memory/scoped_ptr.h" |
15 #include "base/memory/scoped_vector.h" | 16 #include "base/memory/scoped_vector.h" |
16 #include "base/platform_file.h" | |
17 #include "base/sequenced_task_runner_helpers.h" | 17 #include "base/sequenced_task_runner_helpers.h" |
18 #include "webkit/browser/fileapi/file_system_url.h" | 18 #include "webkit/browser/fileapi/file_system_url.h" |
19 #include "webkit/browser/fileapi/open_file_system_mode.h" | 19 #include "webkit/browser/fileapi/open_file_system_mode.h" |
20 #include "webkit/browser/fileapi/plugin_private_file_system_backend.h" | 20 #include "webkit/browser/fileapi/plugin_private_file_system_backend.h" |
21 #include "webkit/browser/fileapi/sandbox_file_system_backend_delegate.h" | 21 #include "webkit/browser/fileapi/sandbox_file_system_backend_delegate.h" |
22 #include "webkit/browser/fileapi/task_runner_bound_observer_list.h" | 22 #include "webkit/browser/fileapi/task_runner_bound_observer_list.h" |
23 #include "webkit/browser/webkit_storage_browser_export.h" | 23 #include "webkit/browser/webkit_storage_browser_export.h" |
24 #include "webkit/common/fileapi/file_system_types.h" | 24 #include "webkit/common/fileapi/file_system_types.h" |
25 | 25 |
26 namespace base { | 26 namespace base { |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
127 // it is not a quota-managed storage. | 127 // it is not a quota-managed storage. |
128 FileSystemQuotaUtil* GetQuotaUtil(FileSystemType type) const; | 128 FileSystemQuotaUtil* GetQuotaUtil(FileSystemType type) const; |
129 | 129 |
130 // Returns the appropriate AsyncFileUtil instance for the given |type|. | 130 // Returns the appropriate AsyncFileUtil instance for the given |type|. |
131 AsyncFileUtil* GetAsyncFileUtil(FileSystemType type) const; | 131 AsyncFileUtil* GetAsyncFileUtil(FileSystemType type) const; |
132 | 132 |
133 // Returns the appropriate CopyOrMoveFileValidatorFactory for the given | 133 // Returns the appropriate CopyOrMoveFileValidatorFactory for the given |
134 // |type|. If |error_code| is PLATFORM_FILE_OK and the result is NULL, | 134 // |type|. If |error_code| is PLATFORM_FILE_OK and the result is NULL, |
135 // then no validator is required. | 135 // then no validator is required. |
136 CopyOrMoveFileValidatorFactory* GetCopyOrMoveFileValidatorFactory( | 136 CopyOrMoveFileValidatorFactory* GetCopyOrMoveFileValidatorFactory( |
137 FileSystemType type, base::PlatformFileError* error_code) const; | 137 FileSystemType type, base::File::Error* error_code) const; |
138 | 138 |
139 // Returns the file system backend instance for the given |type|. | 139 // Returns the file system backend instance for the given |type|. |
140 // This may return NULL if it is given an invalid or unsupported filesystem | 140 // This may return NULL if it is given an invalid or unsupported filesystem |
141 // type. | 141 // type. |
142 FileSystemBackend* GetFileSystemBackend( | 142 FileSystemBackend* GetFileSystemBackend( |
143 FileSystemType type) const; | 143 FileSystemType type) const; |
144 | 144 |
145 // Returns true for sandboxed filesystems. Currently this does | 145 // Returns true for sandboxed filesystems. Currently this does |
146 // the same as GetQuotaUtil(type) != NULL. (In an assumption that | 146 // the same as GetQuotaUtil(type) != NULL. (In an assumption that |
147 // all sandboxed filesystems must cooperate with QuotaManager so that | 147 // all sandboxed filesystems must cooperate with QuotaManager so that |
148 // they can get deleted) | 148 // they can get deleted) |
149 bool IsSandboxFileSystem(FileSystemType type) const; | 149 bool IsSandboxFileSystem(FileSystemType type) const; |
150 | 150 |
151 // Returns observers for the given filesystem type. | 151 // Returns observers for the given filesystem type. |
152 const UpdateObserverList* GetUpdateObservers(FileSystemType type) const; | 152 const UpdateObserverList* GetUpdateObservers(FileSystemType type) const; |
153 const AccessObserverList* GetAccessObservers(FileSystemType type) const; | 153 const AccessObserverList* GetAccessObservers(FileSystemType type) const; |
154 | 154 |
155 // Returns all registered filesystem types. | 155 // Returns all registered filesystem types. |
156 void GetFileSystemTypes(std::vector<FileSystemType>* types) const; | 156 void GetFileSystemTypes(std::vector<FileSystemType>* types) const; |
157 | 157 |
158 // Returns a FileSystemBackend instance for external filesystem | 158 // Returns a FileSystemBackend instance for external filesystem |
159 // type, which is used only by chromeos for now. This is equivalent to | 159 // type, which is used only by chromeos for now. This is equivalent to |
160 // calling GetFileSystemBackend(kFileSystemTypeExternal). | 160 // calling GetFileSystemBackend(kFileSystemTypeExternal). |
161 ExternalFileSystemBackend* external_backend() const; | 161 ExternalFileSystemBackend* external_backend() const; |
162 | 162 |
163 // Used for OpenFileSystem. | 163 // Used for OpenFileSystem. |
164 typedef base::Callback<void(const GURL& root, | 164 typedef base::Callback<void(const GURL& root, |
165 const std::string& name, | 165 const std::string& name, |
166 base::PlatformFileError result)> | 166 base::File::Error result)> |
167 OpenFileSystemCallback; | 167 OpenFileSystemCallback; |
168 | 168 |
169 // Used for ResolveURL. | 169 // Used for ResolveURL. |
170 typedef base::Callback<void(base::PlatformFileError result, | 170 typedef base::Callback<void(base::File::Error result, |
171 const FileSystemInfo& info, | 171 const FileSystemInfo& info, |
172 const base::FilePath& file_path, | 172 const base::FilePath& file_path, |
173 bool is_directory)> ResolveURLCallback; | 173 bool is_directory)> ResolveURLCallback; |
174 | 174 |
175 // Used for DeleteFileSystem and OpenPluginPrivateFileSystem. | 175 // Used for DeleteFileSystem and OpenPluginPrivateFileSystem. |
176 typedef base::Callback<void(base::PlatformFileError result)> StatusCallback; | 176 typedef base::Callback<void(base::File::Error result)> StatusCallback; |
177 | 177 |
178 // Opens the filesystem for the given |origin_url| and |type|, and dispatches | 178 // Opens the filesystem for the given |origin_url| and |type|, and dispatches |
179 // |callback| on completion. | 179 // |callback| on completion. |
180 // If |create| is true this may actually set up a filesystem instance | 180 // If |create| is true this may actually set up a filesystem instance |
181 // (e.g. by creating the root directory or initializing the database | 181 // (e.g. by creating the root directory or initializing the database |
182 // entry etc). | 182 // entry etc). |
183 void OpenFileSystem( | 183 void OpenFileSystem( |
184 const GURL& origin_url, | 184 const GURL& origin_url, |
185 FileSystemType type, | 185 FileSystemType type, |
186 OpenFileSystemMode mode, | 186 OpenFileSystemMode mode, |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
289 | 289 |
290 // Creates a new FileSystemOperation instance by getting an appropriate | 290 // Creates a new FileSystemOperation instance by getting an appropriate |
291 // FileSystemBackend for |url| and calling the backend's corresponding | 291 // FileSystemBackend for |url| and calling the backend's corresponding |
292 // CreateFileSystemOperation method. | 292 // CreateFileSystemOperation method. |
293 // The resolved FileSystemBackend could perform further specialization | 293 // The resolved FileSystemBackend could perform further specialization |
294 // depending on the filesystem type pointed by the |url|. | 294 // depending on the filesystem type pointed by the |url|. |
295 // | 295 // |
296 // Called by FileSystemOperationRunner. | 296 // Called by FileSystemOperationRunner. |
297 FileSystemOperation* CreateFileSystemOperation( | 297 FileSystemOperation* CreateFileSystemOperation( |
298 const FileSystemURL& url, | 298 const FileSystemURL& url, |
299 base::PlatformFileError* error_code); | 299 base::File::Error* error_code); |
300 | 300 |
301 // For non-cracked isolated and external mount points, returns a FileSystemURL | 301 // For non-cracked isolated and external mount points, returns a FileSystemURL |
302 // created by cracking |url|. The url is cracked using MountPoints registered | 302 // created by cracking |url|. The url is cracked using MountPoints registered |
303 // as |url_crackers_|. If the url cannot be cracked, returns invalid | 303 // as |url_crackers_|. If the url cannot be cracked, returns invalid |
304 // FileSystemURL. | 304 // FileSystemURL. |
305 // | 305 // |
306 // If the original url does not point to an isolated or external filesystem, | 306 // If the original url does not point to an isolated or external filesystem, |
307 // returns the original url, without attempting to crack it. | 307 // returns the original url, without attempting to crack it. |
308 FileSystemURL CrackFileSystemURL(const FileSystemURL& url) const; | 308 FileSystemURL CrackFileSystemURL(const FileSystemURL& url) const; |
309 | 309 |
310 // For initial backend_map construction. This must be called only from | 310 // For initial backend_map construction. This must be called only from |
311 // the constructor. | 311 // the constructor. |
312 void RegisterBackend(FileSystemBackend* backend); | 312 void RegisterBackend(FileSystemBackend* backend); |
313 | 313 |
314 void DidOpenFileSystemForResolveURL( | 314 void DidOpenFileSystemForResolveURL( |
315 const FileSystemURL& url, | 315 const FileSystemURL& url, |
316 const ResolveURLCallback& callback, | 316 const ResolveURLCallback& callback, |
317 const GURL& filesystem_root, | 317 const GURL& filesystem_root, |
318 const std::string& filesystem_name, | 318 const std::string& filesystem_name, |
319 base::PlatformFileError error); | 319 base::File::Error error); |
320 | 320 |
321 // Returns a FileSystemBackend, used only by test code. | 321 // Returns a FileSystemBackend, used only by test code. |
322 SandboxFileSystemBackend* sandbox_backend() const { | 322 SandboxFileSystemBackend* sandbox_backend() const { |
323 return sandbox_backend_.get(); | 323 return sandbox_backend_.get(); |
324 } | 324 } |
325 | 325 |
326 // Used only by test code. | 326 // Used only by test code. |
327 PluginPrivateFileSystemBackend* plugin_private_backend() const { | 327 PluginPrivateFileSystemBackend* plugin_private_backend() const { |
328 return plugin_private_backend_.get(); | 328 return plugin_private_backend_.get(); |
329 } | 329 } |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
371 | 371 |
372 struct DefaultContextDeleter { | 372 struct DefaultContextDeleter { |
373 static void Destruct(const FileSystemContext* context) { | 373 static void Destruct(const FileSystemContext* context) { |
374 context->DeleteOnCorrectThread(); | 374 context->DeleteOnCorrectThread(); |
375 } | 375 } |
376 }; | 376 }; |
377 | 377 |
378 } // namespace fileapi | 378 } // namespace fileapi |
379 | 379 |
380 #endif // WEBKIT_BROWSER_FILEAPI_FILE_SYSTEM_CONTEXT_H_ | 380 #endif // WEBKIT_BROWSER_FILEAPI_FILE_SYSTEM_CONTEXT_H_ |
OLD | NEW |