diff options
author | kinuko@chromium.org <kinuko@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-10-12 06:15:43 +0000 |
---|---|---|
committer | kinuko@chromium.org <kinuko@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-10-12 06:15:43 +0000 |
commit | eafe2e7b3164af96be59ff2e76bc90e9c113790b (patch) | |
tree | d98279db131c2455dcd7d7ac6323a2fcca471402 /webkit/fileapi/file_system_path_manager.h | |
parent | 9e0315287c149e48fb31d15a121699898c917b0b (diff) | |
download | chromium_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.h | 69 |
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_ |