summaryrefslogtreecommitdiffstats
path: root/webkit/fileapi/file_system_operation.cc
diff options
context:
space:
mode:
authorkinuko@chromium.org <kinuko@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-11-09 06:46:39 +0000
committerkinuko@chromium.org <kinuko@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-11-09 06:46:39 +0000
commit4412cd0412701e21ff00eb7e3394a57c95171b36 (patch)
treeaf0ac1e410b47b1d9b9c2282620ce85d4abc1891 /webkit/fileapi/file_system_operation.cc
parent6f37144dd7bbeded7d56dc37952342fa09e5a7bc (diff)
downloadchromium_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.cc183
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;
}