diff options
author | ericu@google.com <ericu@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-07 20:42:57 +0000 |
---|---|---|
committer | ericu@google.com <ericu@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-07 20:42:57 +0000 |
commit | 08a0e0a77ac18f7591e225d28692116e40f3ee38 (patch) | |
tree | 4435746f6f5de245ed46032cc042f64221174399 /webkit/fileapi/file_system_operation.cc | |
parent | d1998d3a1171a4d5a1c6a1756ba75297d0f64a99 (diff) | |
download | chromium_src-08a0e0a77ac18f7591e225d28692116e40f3ee38.zip chromium_src-08a0e0a77ac18f7591e225d28692116e40f3ee38.tar.gz chromium_src-08a0e0a77ac18f7591e225d28692116e40f3ee38.tar.bz2 |
Revert 80833 - More filesystem cleanup: convert URL-encoded-as-FilePath to actual URL, wherepossible without WebKit API changes. The WebKit changes will happen in anotherCL.BUG=noneTEST=noneReview URL: http://codereview.chromium.org/6767010
TBR=ericu@google.com
Review URL: http://codereview.chromium.org/6813025
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@80835 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/fileapi/file_system_operation.cc')
-rw-r--r-- | webkit/fileapi/file_system_operation.cc | 76 |
1 files changed, 26 insertions, 50 deletions
diff --git a/webkit/fileapi/file_system_operation.cc b/webkit/fileapi/file_system_operation.cc index 459b656..4ddfd0c 100644 --- a/webkit/fileapi/file_system_operation.cc +++ b/webkit/fileapi/file_system_operation.cc @@ -5,7 +5,6 @@ #include "webkit/fileapi/file_system_operation.h" #include "base/time.h" -#include "base/utf_string_conversions.h" #include "net/url_request/url_request_context.h" #include "webkit/fileapi/file_system_callback_dispatcher.h" #include "webkit/fileapi/file_system_context.h" @@ -64,7 +63,7 @@ void FileSystemOperation::OpenFileSystem( callback_factory_.NewCallback(&FileSystemOperation::DidGetRootPath)); } -void FileSystemOperation::CreateFile(const GURL& path, +void FileSystemOperation::CreateFile(const FilePath& path, bool exclusive) { #ifndef NDEBUG DCHECK(kOperationNone == pending_operation_); @@ -87,7 +86,7 @@ void FileSystemOperation::CreateFile(const GURL& path, : &FileSystemOperation::DidEnsureFileExistsNonExclusive)); } -void FileSystemOperation::CreateDirectory(const GURL& path, +void FileSystemOperation::CreateDirectory(const FilePath& path, bool exclusive, bool recursive) { #ifndef NDEBUG @@ -111,8 +110,8 @@ void FileSystemOperation::CreateDirectory(const GURL& path, &FileSystemOperation::DidFinishFileOperation)); } -void FileSystemOperation::Copy(const GURL& src_path, - const GURL& dest_path) { +void FileSystemOperation::Copy(const FilePath& src_path, + const FilePath& dest_path) { #ifndef NDEBUG DCHECK(kOperationNone == pending_operation_); pending_operation_ = kOperationCopy; @@ -150,8 +149,8 @@ void FileSystemOperation::Copy(const GURL& src_path, &FileSystemOperation::DidFinishFileOperation)); } -void FileSystemOperation::Move(const GURL& src_path, - const GURL& dest_path) { +void FileSystemOperation::Move(const FilePath& src_path, + const FilePath& dest_path) { #ifndef NDEBUG DCHECK(kOperationNone == pending_operation_); pending_operation_ = kOperationMove; @@ -187,7 +186,7 @@ void FileSystemOperation::Move(const GURL& src_path, &FileSystemOperation::DidFinishFileOperation)); } -void FileSystemOperation::DirectoryExists(const GURL& path) { +void FileSystemOperation::DirectoryExists(const FilePath& path) { #ifndef NDEBUG DCHECK(kOperationNone == pending_operation_); pending_operation_ = kOperationDirectoryExists; @@ -208,7 +207,7 @@ void FileSystemOperation::DirectoryExists(const GURL& path) { &FileSystemOperation::DidDirectoryExists)); } -void FileSystemOperation::FileExists(const GURL& path) { +void FileSystemOperation::FileExists(const FilePath& path) { #ifndef NDEBUG DCHECK(kOperationNone == pending_operation_); pending_operation_ = kOperationFileExists; @@ -229,7 +228,7 @@ void FileSystemOperation::FileExists(const GURL& path) { &FileSystemOperation::DidFileExists)); } -void FileSystemOperation::GetMetadata(const GURL& path) { +void FileSystemOperation::GetMetadata(const FilePath& path) { #ifndef NDEBUG DCHECK(kOperationNone == pending_operation_); pending_operation_ = kOperationGetMetadata; @@ -250,7 +249,7 @@ void FileSystemOperation::GetMetadata(const GURL& path) { &FileSystemOperation::DidGetMetadata)); } -void FileSystemOperation::ReadDirectory(const GURL& path) { +void FileSystemOperation::ReadDirectory(const FilePath& path) { #ifndef NDEBUG DCHECK(kOperationNone == pending_operation_); pending_operation_ = kOperationReadDirectory; @@ -271,7 +270,7 @@ void FileSystemOperation::ReadDirectory(const GURL& path) { &FileSystemOperation::DidReadDirectory)); } -void FileSystemOperation::Remove(const GURL& path, bool recursive) { +void FileSystemOperation::Remove(const FilePath& path, bool recursive) { #ifndef NDEBUG DCHECK(kOperationNone == pending_operation_); pending_operation_ = kOperationRemove; @@ -295,7 +294,7 @@ void FileSystemOperation::Remove(const GURL& path, bool recursive) { void FileSystemOperation::Write( scoped_refptr<net::URLRequestContext> url_request_context, - const GURL& path, + const FilePath& path, const GURL& blob_url, int64 offset) { #ifndef NDEBUG @@ -327,7 +326,7 @@ void FileSystemOperation::Write( &FileSystemOperation::OnFileOpenedForWrite)); } -void FileSystemOperation::Truncate(const GURL& path, int64 length) { +void FileSystemOperation::Truncate(const FilePath& path, int64 length) { #ifndef NDEBUG DCHECK(kOperationNone == pending_operation_); pending_operation_ = kOperationTruncate; @@ -348,7 +347,7 @@ void FileSystemOperation::Truncate(const GURL& path, int64 length) { &FileSystemOperation::DidFinishFileOperation)); } -void FileSystemOperation::TouchFile(const GURL& path, +void FileSystemOperation::TouchFile(const FilePath& path, const base::Time& last_access_time, const base::Time& last_modified_time) { #ifndef NDEBUG @@ -409,13 +408,14 @@ void FileSystemOperation::DidGetRootPath( bool success, const FilePath& path, const std::string& name) { DCHECK(success || path.empty()); - GURL result; + FilePath result; // We ignore the path, and return a URL instead. The point was just to verify // that we could create/find the path. if (success) { - result = GetFileSystemRootURI( + GURL root_url = GetFileSystemRootURI( file_system_operation_context_.src_origin_url(), file_system_operation_context_.src_type()); + result = FilePath().AppendASCII(root_url.spec()); } dispatcher_->DidOpenFileSystem(name, result); delete this; @@ -537,33 +537,21 @@ void FileSystemOperation::OnFileOpenedForWrite( } bool FileSystemOperation::VerifyFileSystemPathForRead( - const GURL& path, GURL* origin_url, FileSystemType* type, + const FilePath& path, GURL* origin_url, FileSystemType* type, FilePath* virtual_path) { // If we have no context, we just allow any operations, for testing. // TODO(ericu): Revisit this hack for security. if (!file_system_context()) { -#ifdef OS_WIN - // On Windows, the path will look like /C:/foo/bar; we need to remove the - // leading slash to make it valid. - std::string temp = path.path().substr(1); - *virtual_path = FilePath(UTF8ToWide(temp)).NormalizeWindowsPathSeparators(); -#else - *virtual_path = FilePath(path.path()); -#endif + *virtual_path = path; *type = file_system_operation_context_.src_type(); - *origin_url = file_system_operation_context_.src_origin_url(); return true; } // We may want do more checks, but for now it just checks if the given - // URL is valid. - if (!CrackFileSystemURL(path, origin_url, type, virtual_path)) { - dispatcher_->DidFail(base::PLATFORM_FILE_ERROR_SECURITY); - return false; - } - if (!file_system_context()->path_manager()->IsAllowedFileSystemType( - *origin_url, *type)) { + // |path| is under the valid FileSystem root path for this host context. + if (!file_system_context()->path_manager()->CrackFileSystemPath( + path, origin_url, type, virtual_path)) { dispatcher_->DidFail(base::PLATFORM_FILE_ERROR_SECURITY); return false; } @@ -572,31 +560,19 @@ bool FileSystemOperation::VerifyFileSystemPathForRead( } bool FileSystemOperation::VerifyFileSystemPathForWrite( - const GURL& path, bool create, GURL* origin_url, FileSystemType* type, + const FilePath& path, bool create, GURL* origin_url, FileSystemType* type, FilePath* virtual_path) { // If we have no context, we just allow any operations, for testing. // TODO(ericu): Revisit this hack for security. if (!file_system_context()) { -#ifdef OS_WIN - // On Windows, the path will look like /C:/foo/bar; we need to remove the - // leading slash to make it valid. - std::string temp = path.path().substr(1); - *virtual_path = FilePath(UTF8ToWide(temp)).NormalizeWindowsPathSeparators(); -#else - *virtual_path = FilePath(path.path()); -#endif + *virtual_path = path; *type = file_system_operation_context_.dest_type(); - *origin_url = file_system_operation_context_.dest_origin_url(); return true; } - if (!CrackFileSystemURL(path, origin_url, type, virtual_path)) { - dispatcher_->DidFail(base::PLATFORM_FILE_ERROR_SECURITY); - return false; - } - if (!file_system_context()->path_manager()->IsAllowedFileSystemType( - *origin_url, *type)) { + if (!file_system_context()->path_manager()->CrackFileSystemPath( + path, origin_url, type, virtual_path)) { dispatcher_->DidFail(base::PLATFORM_FILE_ERROR_SECURITY); return false; } |