summaryrefslogtreecommitdiffstats
path: root/webkit/fileapi/file_system_path_manager.h
diff options
context:
space:
mode:
authorericu@google.com <ericu@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-24 00:49:40 +0000
committerericu@google.com <ericu@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-24 00:49:40 +0000
commit073a04f0599beb27670d8a6738fcbbc22fa97bcf (patch)
treed7393b3cd3463dbfaf4bbdc02fdd0a4de0c83995 /webkit/fileapi/file_system_path_manager.h
parent6bcd5f36cd94649887eff0c87df4f4496001984a (diff)
downloadchromium_src-073a04f0599beb27670d8a6738fcbbc22fa97bcf.zip
chromium_src-073a04f0599beb27670d8a6738fcbbc22fa97bcf.tar.gz
chromium_src-073a04f0599beb27670d8a6738fcbbc22fa97bcf.tar.bz2
Stop returning the true root path of each filesystem from openFileSystem.
Instead, return the FileSystem URI of the root. This will make it easier to swap in different filesystem implementations. BUG=71635 TEST=Just a couple in FileSystemUtilTests, but a bunch of existing ones [this doesn't add much new functionality]. Review URL: http://codereview.chromium.org/6603034 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@79228 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/fileapi/file_system_path_manager.h')
-rw-r--r--webkit/fileapi/file_system_path_manager.h78
1 files changed, 23 insertions, 55 deletions
diff --git a/webkit/fileapi/file_system_path_manager.h b/webkit/fileapi/file_system_path_manager.h
index 28082aa..c1d2df9 100644
--- a/webkit/fileapi/file_system_path_manager.h
+++ b/webkit/fileapi/file_system_path_manager.h
@@ -19,6 +19,8 @@ class MessageLoopProxy;
namespace fileapi {
+class SandboxMountPointProvider;
+
// TODO(kinuko): Probably this module must be called FileSystemPathUtil
// or something similar.
@@ -49,11 +51,17 @@ class FileSystemPathManager {
// Retrieves the root path for the given |origin_url| and |type|, and
// calls the given |callback| with the root path and name.
// If |create| is true this also creates the directory if it doesn't exist.
- void GetFileSystemRootPath(const GURL& origin_url,
- fileapi::FileSystemType type,
+ virtual void GetFileSystemRootPath(const GURL& origin_url,
+ FileSystemType type,
bool create,
- GetRootPathCallback* callback);
-
+ FileSystemPathManager::GetRootPathCallback*
+ callback);
+
+ // Like GetFileSystemRootPath, but synchronous, and can be called only while
+ // running on the file thread.
+ virtual FilePath GetFileSystemRootPathOnFileThread(const GURL& origin_url,
+ FileSystemType type,
+ bool create);
// Cracks the given |path|, retrieves the information embedded in the path
// and populates |origin_url|, |type| and |virtual_path|. The |virtual_path|
// is a sandboxed path in the file system, i.e. the relative path to the
@@ -67,66 +75,26 @@ class FileSystemPathManager {
// filesystem.
bool IsAllowedScheme(const GURL& url) const;
- // The FileSystem directory name.
- static const FilePath::CharType kFileSystemDirectory[];
-
- static const char kPersistentName[];
- static const char kTemporaryName[];
-
- const FilePath& base_path() const {
- return base_path_;
- }
-
- // Checks if a given |name| contains any restricted names/chars in it.
- static bool IsRestrictedFileName(const FilePath& filename);
-
// Returns the string for the given |type|.
// Returns an empty string if the |type| is invalid.
static std::string GetFileSystemTypeString(fileapi::FileSystemType type);
- // Returns the origin identifier string, which is used as a part of the
- // sandboxed path component, for the given |url|.
- static std::string GetOriginIdentifierFromURL(const GURL& url);
-
- // Gets a base directory path of the sandboxed filesystem that is
- // specified by |origin_identifier| and |type|.
- // |base_path| must be pointing the FileSystem's data directory
- // under the profile directory, i.e. <profile_dir>/kFileSystemDirectory.
- // Returns an empty path if any of the given parameters are invalid.
- // Returned directory path does not contain 'unique' part, therefore
- // it is not an actural root path for the filesystem.
- static FilePath GetFileSystemBaseDirectoryForOriginAndType(
- const FilePath& base_path,
- const std::string& origin_identifier,
- fileapi::FileSystemType type);
-
- // Enumerates origins under the given |base_path|.
- // This must be used on the FILE thread.
- class OriginEnumerator {
- public:
- OriginEnumerator(const FilePath& base_path);
-
- // Returns the next origin identifier. Returns empty if there are no
- // more origins.
- std::string Next();
-
- bool HasTemporary();
- bool HasPersistent();
- const FilePath& path() { return current_; }
-
- private:
- file_util::FileEnumerator enumerator_;
- FilePath current_;
- };
+ // Checks if a given |name| contains any restricted names/chars in it.
+ bool IsRestrictedFileName(FileSystemType type,
+ const FilePath& filename);
- private:
- class GetFileSystemRootPathTask;
+ SandboxMountPointProvider* sandbox_provider() const {
+ return sandbox_provider_.get();
+ }
- scoped_refptr<base::MessageLoopProxy> file_message_loop_;
+ bool is_incognito() const {
+ return is_incognito_;
+ }
- const FilePath base_path_;
+ private:
const bool is_incognito_;
const bool allow_file_access_from_files_;
+ scoped_ptr<SandboxMountPointProvider> sandbox_provider_;
DISALLOW_COPY_AND_ASSIGN(FileSystemPathManager);
};