diff options
author | kinuko@chromium.org <kinuko@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-09 06:46:39 +0000 |
---|---|---|
committer | kinuko@chromium.org <kinuko@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-09 06:46:39 +0000 |
commit | 4412cd0412701e21ff00eb7e3394a57c95171b36 (patch) | |
tree | af0ac1e410b47b1d9b9c2282620ce85d4abc1891 /webkit/fileapi/file_system_operation.cc | |
parent | 6f37144dd7bbeded7d56dc37952342fa09e5a7bc (diff) | |
download | chromium_src-4412cd0412701e21ff00eb7e3394a57c95171b36.zip chromium_src-4412cd0412701e21ff00eb7e3394a57c95171b36.tar.gz chromium_src-4412cd0412701e21ff00eb7e3394a57c95171b36.tar.bz2 |
Retry: Bind: Merge FileUtilProxy and FileSystemFileUtilProxy: Delete/Touch/Truncate/Copy/Move
Original reviewed issue is: http://codereview.chromium.org/8424007/
BUG=none
TEST=test_shell:*File*
Review URL: http://codereview.chromium.org/8508001
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@109195 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/fileapi/file_system_operation.cc')
-rw-r--r-- | webkit/fileapi/file_system_operation.cc | 183 |
1 files changed, 84 insertions, 99 deletions
diff --git a/webkit/fileapi/file_system_operation.cc b/webkit/fileapi/file_system_operation.cc index c65aee7..f329cc1 100644 --- a/webkit/fileapi/file_system_operation.cc +++ b/webkit/fileapi/file_system_operation.cc @@ -63,8 +63,7 @@ FileSystemOperation::FileSystemOperation( FileSystemContext* file_system_context) : proxy_(proxy), dispatcher_(dispatcher), - operation_context_(file_system_context, NULL), - ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) { + operation_context_(file_system_context, NULL) { #ifndef NDEBUG pending_operation_ = kOperationNone; #endif @@ -80,7 +79,7 @@ FileSystemOperation::~FileSystemOperation() { base::Unretained(c->src_file_util()), base::Owned(c)), file_writer_delegate_->file(), - FileSystemFileUtilProxy::StatusCallback()); + base::FileUtilProxy::StatusCallback()); } } @@ -104,7 +103,7 @@ void FileSystemOperation::OpenFileSystem( file_system_context()->path_manager()->ValidateFileSystemRootAndGetURL( origin_url, type, create, base::Bind(&FileSystemOperation::DidGetRootPath, - weak_factory_.GetWeakPtr())); + base::Owned(this))); } void FileSystemOperation::CreateFile(const GURL& path, @@ -117,15 +116,14 @@ void FileSystemOperation::CreateFile(const GURL& path, delete this; return; } - exclusive_ = exclusive; - GetUsageAndQuotaThenCallback( operation_context_.src_origin_url(), base::Bind(&FileSystemOperation::DelayedCreateFileForQuota, - weak_factory_.GetWeakPtr())); + base::Unretained(this), exclusive)); } void FileSystemOperation::DelayedCreateFileForQuota( + bool exclusive, quota::QuotaStatusCode status, int64 usage, int64 quota) { operation_context_.set_allowed_bytes_growth(quota - usage); @@ -139,9 +137,9 @@ void FileSystemOperation::DelayedCreateFileForQuota( proxy_, src_virtual_path_, base::Bind( - exclusive_ ? &FileSystemOperation::DidEnsureFileExistsExclusive - : &FileSystemOperation::DidEnsureFileExistsNonExclusive, - weak_factory_.GetWeakPtr())); + exclusive ? &FileSystemOperation::DidEnsureFileExistsExclusive + : &FileSystemOperation::DidEnsureFileExistsNonExclusive, + base::Owned(this))); } void FileSystemOperation::CreateDirectory(const GURL& path, @@ -155,16 +153,14 @@ void FileSystemOperation::CreateDirectory(const GURL& path, delete this; return; } - exclusive_ = exclusive; - recursive_ = recursive; - GetUsageAndQuotaThenCallback( operation_context_.src_origin_url(), base::Bind(&FileSystemOperation::DelayedCreateDirectoryForQuota, - weak_factory_.GetWeakPtr())); + base::Unretained(this), exclusive, recursive)); } void FileSystemOperation::DelayedCreateDirectoryForQuota( + bool exclusive, bool recursive, quota::QuotaStatusCode status, int64 usage, int64 quota) { operation_context_.set_allowed_bytes_growth(quota - usage); @@ -173,11 +169,14 @@ void FileSystemOperation::DelayedCreateDirectoryForQuota( operation_context_.src_origin_url(), operation_context_.src_type())); - FileSystemFileUtilProxy::CreateDirectory( - operation_context_, proxy_, src_virtual_path_, exclusive_, - recursive_, + base::FileUtilProxy::RelayFileTask( + proxy_, FROM_HERE, + base::Bind(&FileSystemFileUtil::CreateDirectory, + base::Unretained(operation_context_.src_file_util()), + &operation_context_, + src_virtual_path_, exclusive, recursive), base::Bind(&FileSystemOperation::DidFinishFileOperation, - weak_factory_.GetWeakPtr())); + base::Owned(this))); } void FileSystemOperation::Copy(const GURL& src_path, @@ -195,7 +194,7 @@ void FileSystemOperation::Copy(const GURL& src_path, GetUsageAndQuotaThenCallback( operation_context_.dest_origin_url(), base::Bind(&FileSystemOperation::DelayedCopyForQuota, - weak_factory_.GetWeakPtr())); + base::Unretained(this))); } void FileSystemOperation::DelayedCopyForQuota(quota::QuotaStatusCode status, @@ -207,11 +206,14 @@ void FileSystemOperation::DelayedCopyForQuota(quota::QuotaStatusCode status, operation_context_.dest_origin_url(), operation_context_.dest_type())); - FileSystemFileUtilProxy::Copy( - operation_context_, proxy_, src_virtual_path_, - dest_virtual_path_, + base::FileUtilProxy::RelayFileTask( + proxy_, FROM_HERE, + base::Bind(&FileSystemFileUtil::Copy, + base::Unretained(operation_context_.src_file_util()), + &operation_context_, + src_virtual_path_, dest_virtual_path_), base::Bind(&FileSystemOperation::DidFinishFileOperation, - weak_factory_.GetWeakPtr())); + base::Owned(this))); } void FileSystemOperation::Move(const GURL& src_path, @@ -229,7 +231,7 @@ void FileSystemOperation::Move(const GURL& src_path, GetUsageAndQuotaThenCallback( operation_context_.dest_origin_url(), base::Bind(&FileSystemOperation::DelayedMoveForQuota, - weak_factory_.GetWeakPtr())); + base::Unretained(this))); } void FileSystemOperation::DelayedMoveForQuota(quota::QuotaStatusCode status, @@ -241,11 +243,14 @@ void FileSystemOperation::DelayedMoveForQuota(quota::QuotaStatusCode status, operation_context_.dest_origin_url(), operation_context_.dest_type())); - FileSystemFileUtilProxy::Move( - operation_context_, proxy_, src_virtual_path_, - dest_virtual_path_, + base::FileUtilProxy::RelayFileTask( + proxy_, FROM_HERE, + base::Bind(&FileSystemFileUtil::Move, + base::Unretained(operation_context_.src_file_util()), + &operation_context_, + src_virtual_path_, dest_virtual_path_), base::Bind(&FileSystemOperation::DidFinishFileOperation, - weak_factory_.GetWeakPtr())); + base::Owned(this))); } void FileSystemOperation::DirectoryExists(const GURL& path) { @@ -260,8 +265,7 @@ void FileSystemOperation::DirectoryExists(const GURL& path) { FileSystemFileUtilProxy::GetFileInfo( operation_context_, proxy_, src_virtual_path_, - base::Bind(&FileSystemOperation::DidDirectoryExists, - weak_factory_.GetWeakPtr())); + base::Bind(&FileSystemOperation::DidDirectoryExists, base::Owned(this))); } void FileSystemOperation::FileExists(const GURL& path) { @@ -276,8 +280,7 @@ void FileSystemOperation::FileExists(const GURL& path) { FileSystemFileUtilProxy::GetFileInfo( operation_context_, proxy_, src_virtual_path_, - base::Bind(&FileSystemOperation::DidFileExists, - weak_factory_.GetWeakPtr())); + base::Bind(&FileSystemOperation::DidFileExists, base::Owned(this))); } void FileSystemOperation::GetMetadata(const GURL& path) { @@ -292,8 +295,7 @@ void FileSystemOperation::GetMetadata(const GURL& path) { FileSystemFileUtilProxy::GetFileInfo( operation_context_, proxy_, src_virtual_path_, - base::Bind(&FileSystemOperation::DidGetMetadata, - weak_factory_.GetWeakPtr())); + base::Bind(&FileSystemOperation::DidGetMetadata, base::Owned(this))); } void FileSystemOperation::ReadDirectory(const GURL& path) { @@ -308,8 +310,7 @@ void FileSystemOperation::ReadDirectory(const GURL& path) { FileSystemFileUtilProxy::ReadDirectory( operation_context_, proxy_, src_virtual_path_, - base::Bind(&FileSystemOperation::DidReadDirectory, - weak_factory_.GetWeakPtr())); + base::Bind(&FileSystemOperation::DidReadDirectory, base::Owned(this))); } void FileSystemOperation::Remove(const GURL& path, bool recursive) { @@ -322,10 +323,14 @@ void FileSystemOperation::Remove(const GURL& path, bool recursive) { return; } - FileSystemFileUtilProxy::Delete( - operation_context_, proxy_, src_virtual_path_, recursive, + base::FileUtilProxy::RelayFileTask( + proxy_, FROM_HERE, + base::Bind(&FileSystemFileUtil::Delete, + base::Unretained(operation_context_.src_file_util()), + &operation_context_, + src_virtual_path_, recursive), base::Bind(&FileSystemOperation::DidFinishFileOperation, - weak_factory_.GetWeakPtr())); + base::Owned(this))); } void FileSystemOperation::Write( @@ -350,7 +355,7 @@ void FileSystemOperation::Write( GetUsageAndQuotaThenCallback( operation_context_.src_origin_url(), base::Bind(&FileSystemOperation::DelayedWriteForQuota, - weak_factory_.GetWeakPtr())); + base::Unretained(this))); } void FileSystemOperation::DelayedWriteForQuota(quota::QuotaStatusCode status, @@ -370,13 +375,13 @@ void FileSystemOperation::DelayedWriteForQuota(quota::QuotaStatusCode status, proxy_, base::Bind(&FileSystemFileUtil::CreateOrOpen, base::Unretained(operation_context_.src_file_util()), - base::Unretained(&operation_context_), + &operation_context_, src_virtual_path_, file_flags), base::Bind(&FileSystemFileUtil::Close, base::Unretained(operation_context_.src_file_util()), - base::Unretained(&operation_context_)), + &operation_context_), base::Bind(&FileSystemOperation::OnFileOpenedForWrite, - weak_factory_.GetWeakPtr())); + base::Unretained(this))); } void FileSystemOperation::Truncate(const GURL& path, int64 length) { @@ -388,15 +393,14 @@ void FileSystemOperation::Truncate(const GURL& path, int64 length) { delete this; return; } - length_ = length; - GetUsageAndQuotaThenCallback( operation_context_.src_origin_url(), base::Bind(&FileSystemOperation::DelayedTruncateForQuota, - weak_factory_.GetWeakPtr())); + base::Unretained(this), length)); } -void FileSystemOperation::DelayedTruncateForQuota(quota::QuotaStatusCode status, +void FileSystemOperation::DelayedTruncateForQuota(int64 length, + quota::QuotaStatusCode status, int64 usage, int64 quota) { operation_context_.set_allowed_bytes_growth(quota - usage); @@ -405,10 +409,14 @@ void FileSystemOperation::DelayedTruncateForQuota(quota::QuotaStatusCode status, operation_context_.src_origin_url(), operation_context_.src_type())); - FileSystemFileUtilProxy::Truncate( - operation_context_, proxy_, src_virtual_path_, length_, + base::FileUtilProxy::RelayFileTask( + proxy_, FROM_HERE, + base::Bind(&FileSystemFileUtil::Truncate, + base::Unretained(operation_context_.src_file_util()), + &operation_context_, + src_virtual_path_, length), base::Bind(&FileSystemOperation::DidFinishFileOperation, - weak_factory_.GetWeakPtr())); + base::Owned(this))); } void FileSystemOperation::TouchFile(const GURL& path, @@ -423,11 +431,13 @@ void FileSystemOperation::TouchFile(const GURL& path, return; } - FileSystemFileUtilProxy::Touch( - operation_context_, proxy_, src_virtual_path_, - last_access_time, last_modified_time, - base::Bind(&FileSystemOperation::DidTouchFile, - weak_factory_.GetWeakPtr())); + base::FileUtilProxy::RelayFileTask( + proxy_, FROM_HERE, + base::Bind(&FileSystemFileUtil::Touch, + base::Unretained(operation_context_.src_file_util()), + &operation_context_, + src_virtual_path_, last_access_time, last_modified_time), + base::Bind(&FileSystemOperation::DidTouchFile, base::Owned(this))); } void FileSystemOperation::OpenFile(const GURL& path, @@ -461,15 +471,14 @@ void FileSystemOperation::OpenFile(const GURL& path, return; } } - file_flags_ = file_flags; - GetUsageAndQuotaThenCallback( operation_context_.src_origin_url(), base::Bind(&FileSystemOperation::DelayedOpenFileForQuota, - weak_factory_.GetWeakPtr())); + base::Unretained(this), file_flags)); } -void FileSystemOperation::DelayedOpenFileForQuota(quota::QuotaStatusCode status, +void FileSystemOperation::DelayedOpenFileForQuota(int file_flags, + quota::QuotaStatusCode status, int64 usage, int64 quota) { operation_context_.set_allowed_bytes_growth(quota - usage); @@ -482,13 +491,12 @@ void FileSystemOperation::DelayedOpenFileForQuota(quota::QuotaStatusCode status, proxy_, base::Bind(&FileSystemFileUtil::CreateOrOpen, base::Unretained(operation_context_.src_file_util()), - base::Unretained(&operation_context_), - src_virtual_path_, file_flags_), + &operation_context_, + src_virtual_path_, file_flags), base::Bind(&FileSystemFileUtil::Close, base::Unretained(operation_context_.src_file_util()), - base::Unretained(&operation_context_)), - base::Bind(&FileSystemOperation::DidOpenFile, - weak_factory_.GetWeakPtr())); + &operation_context_), + base::Bind(&FileSystemOperation::DidOpenFile, base::Owned(this))); } void FileSystemOperation::SyncGetPlatformPath(const GURL& path, @@ -569,6 +577,8 @@ void FileSystemOperation::DidGetRootPath( const FilePath& path, const std::string& name) { DCHECK(success || path.empty()); GURL result; + if (!dispatcher_.get()) + return; // We ignore the path, and return a URL instead. The point was just to verify // that we could create/find the path. if (success) { @@ -576,9 +586,7 @@ void FileSystemOperation::DidGetRootPath( operation_context_.src_origin_url(), operation_context_.src_type()); } - if (dispatcher_.get()) - dispatcher_->DidOpenFileSystem(name, result); - delete this; + dispatcher_->DidOpenFileSystem(name, result); } void FileSystemOperation::DidEnsureFileExistsExclusive( @@ -586,7 +594,6 @@ void FileSystemOperation::DidEnsureFileExistsExclusive( if (rv == base::PLATFORM_FILE_OK && !created) { if (dispatcher_.get()) dispatcher_->DidFail(base::PLATFORM_FILE_ERROR_EXISTS); - delete this; } else { DidFinishFileOperation(rv); } @@ -613,17 +620,14 @@ void FileSystemOperation::DidFinishFileOperation( else dispatcher_->DidFail(rv); } - delete this; } void FileSystemOperation::DidDirectoryExists( base::PlatformFileError rv, const base::PlatformFileInfo& file_info, const FilePath& unused) { - if (!dispatcher_.get()) { - delete this; + if (!dispatcher_.get()) return; - } if (rv == base::PLATFORM_FILE_OK) { if (file_info.is_directory) dispatcher_->DidSucceed(); @@ -632,17 +636,14 @@ void FileSystemOperation::DidDirectoryExists( } else { dispatcher_->DidFail(rv); } - delete this; } void FileSystemOperation::DidFileExists( base::PlatformFileError rv, const base::PlatformFileInfo& file_info, const FilePath& unused) { - if (!dispatcher_.get()) { - delete this; + if (!dispatcher_.get()) return; - } if (rv == base::PLATFORM_FILE_OK) { if (file_info.is_directory) dispatcher_->DidFail(base::PLATFORM_FILE_ERROR_NOT_A_FILE); @@ -651,37 +652,30 @@ void FileSystemOperation::DidFileExists( } else { dispatcher_->DidFail(rv); } - delete this; } void FileSystemOperation::DidGetMetadata( base::PlatformFileError rv, const base::PlatformFileInfo& file_info, const FilePath& platform_path) { - if (!dispatcher_.get()) { - delete this; + if (!dispatcher_.get()) return; - } if (rv == base::PLATFORM_FILE_OK) dispatcher_->DidReadMetadata(file_info, platform_path); else dispatcher_->DidFail(rv); - delete this; } void FileSystemOperation::DidReadDirectory( base::PlatformFileError rv, const std::vector<base::FileUtilProxy::Entry>& entries) { - if (!dispatcher_.get()) { - delete this; + if (!dispatcher_.get()) return; - } if (rv == base::PLATFORM_FILE_OK) dispatcher_->DidReadDirectory(entries, false /* has_more */); else dispatcher_->DidFail(rv); - delete this; } void FileSystemOperation::DidWrite( @@ -701,42 +695,33 @@ void FileSystemOperation::DidWrite( } void FileSystemOperation::DidTouchFile(base::PlatformFileError rv) { - if (!dispatcher_.get()) { - delete this; + if (!dispatcher_.get()) return; - } if (rv == base::PLATFORM_FILE_OK) dispatcher_->DidSucceed(); else dispatcher_->DidFail(rv); - delete this; } void FileSystemOperation::DidOpenFile( base::PlatformFileError rv, base::PassPlatformFile file, bool unused) { - if (!dispatcher_.get()) { - delete this; + if (!dispatcher_.get()) return; - } if (rv == base::PLATFORM_FILE_OK) dispatcher_->DidOpenFile(file.ReleaseValue(), peer_handle_); else dispatcher_->DidFail(rv); - delete this; } void FileSystemOperation::OnFileOpenedForWrite( base::PlatformFileError rv, base::PassPlatformFile file, bool created) { - if (!dispatcher_.get()) { - delete this; - return; - } - if (base::PLATFORM_FILE_OK != rv) { - dispatcher_->DidFail(rv); + if (base::PLATFORM_FILE_OK != rv || !dispatcher_.get()) { + if (dispatcher_.get()) + dispatcher_->DidFail(rv); delete this; return; } |