summaryrefslogtreecommitdiffstats
path: root/webkit/fileapi/file_system_path_manager.h
diff options
context:
space:
mode:
authorkinuko@chromium.org <kinuko@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-10-12 06:15:43 +0000
committerkinuko@chromium.org <kinuko@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-10-12 06:15:43 +0000
commiteafe2e7b3164af96be59ff2e76bc90e9c113790b (patch)
treed98279db131c2455dcd7d7ac6323a2fcca471402 /webkit/fileapi/file_system_path_manager.h
parent9e0315287c149e48fb31d15a121699898c917b0b (diff)
downloadchromium_src-eafe2e7b3164af96be59ff2e76bc90e9c113790b.zip
chromium_src-eafe2e7b3164af96be59ff2e76bc90e9c113790b.tar.gz
chromium_src-eafe2e7b3164af96be59ff2e76bc90e9c113790b.tar.bz2
Refactor out path-related methods from file_system_host_context into a separated module.
No functionality changes; code relocation/cleanup only. This change is necessary to improve test coverage for another coming change (hide the FileSystem's root directory under 'unpredictrable' location). BUG=none TEST=FileSystemPathManager.* Review URL: http://codereview.chromium.org/3703003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@62259 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/fileapi/file_system_path_manager.h')
-rw-r--r--webkit/fileapi/file_system_path_manager.h69
1 files changed, 69 insertions, 0 deletions
diff --git a/webkit/fileapi/file_system_path_manager.h b/webkit/fileapi/file_system_path_manager.h
new file mode 100644
index 0000000..505a3c1
--- /dev/null
+++ b/webkit/fileapi/file_system_path_manager.h
@@ -0,0 +1,69 @@
+// Copyright (c) 2010 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 WEBKIT_FILEAPI_FILE_SYSTEM_PATH_MANAGER_H_
+#define WEBKIT_FILEAPI_FILE_SYSTEM_PATH_MANAGER_H_
+
+#include <map>
+
+#include "base/callback.h"
+#include "base/file_path.h"
+#include "base/scoped_ptr.h"
+#include "googleurl/src/gurl.h"
+#include "webkit/fileapi/file_system_types.h"
+
+namespace fileapi {
+
+class FileSystemPathManager {
+ public:
+ FileSystemPathManager(const FilePath& data_path,
+ bool is_incognito,
+ bool allow_file_access_from_files);
+
+ // Returns the root path and name for the file system specified by given
+ // |origin_url| and |type|. Returns true if the file system is available
+ // for the profile and |root_path| and |name| are filled successfully.
+ bool GetFileSystemRootPath(const GURL& origin_url,
+ fileapi::FileSystemType type,
+ FilePath* root_path,
+ std::string* name) const;
+
+ // Checks if a given |path| is in the FileSystem base directory.
+ bool CheckValidFileSystemPath(const FilePath& path) const;
+
+ // Retrieves the origin URL for the given |path| and populates
+ // |origin_url|. It returns false when the given |path| is not a
+ // valid filesystem path.
+ bool GetOriginFromPath(const FilePath& path, GURL* origin_url);
+
+ // Returns true if the given |url|'s scheme is allowed to access
+ // filesystem.
+ bool IsAllowedScheme(const GURL& url) const;
+
+ // Checks if a given |filename| contains any restricted names/chars in it.
+ bool IsRestrictedFileName(const FilePath& filename) const;
+
+ // The FileSystem directory name.
+ static const FilePath::CharType kFileSystemDirectory[];
+
+ static const char kPersistentName[];
+ static const char kTemporaryName[];
+
+ private:
+ class GetFileSystemRootPathTask;
+ friend class GetFileSystemRootPathTask;
+
+ // Returns the storage identifier string for the given |url|.
+ static std::string GetStorageIdentifierFromURL(const GURL& url);
+
+ const FilePath base_path_;
+ const bool is_incognito_;
+ bool allow_file_access_from_files_;
+
+ DISALLOW_COPY_AND_ASSIGN(FileSystemPathManager);
+};
+
+} // namespace fileapi
+
+#endif // WEBKIT_FILEAPI_FILE_SYSTEM_PATH_MANAGER_H_