Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(738)

Unified Diff: webkit/plugins/ppapi/quota_file_io.cc

Issue 8231004: Remaining cleanup (base::Bind): Replacing FileUtilProxy calls with new callback (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: got it building Created 9 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: webkit/plugins/ppapi/quota_file_io.cc
diff --git a/webkit/plugins/ppapi/quota_file_io.cc b/webkit/plugins/ppapi/quota_file_io.cc
index 4a26f676bd7a943e6655d0f53b264e486d19b1b4..65b105b32f8f3bb31c964d2844388c2cbbfcff8b 100644
--- a/webkit/plugins/ppapi/quota_file_io.cc
+++ b/webkit/plugins/ppapi/quota_file_io.cc
@@ -14,6 +14,7 @@
#include "webkit/plugins/ppapi/resource_helper.h"
#include "webkit/plugins/ppapi/resource_tracker.h"
+using base::FileUtilProxy;
using base::PlatformFile;
using base::PlatformFileError;
using quota::StorageType;
@@ -63,7 +64,7 @@ class QuotaFileIO::WriteOperation : public PendingOperationBase {
int64_t offset,
const char* buffer,
int32_t bytes_to_write,
- WriteCallback* callback)
+ const WriteCallback& callback)
: PendingOperationBase(quota_io, is_will_operation),
offset_(offset),
bytes_to_write_(bytes_to_write),
@@ -71,8 +72,7 @@ class QuotaFileIO::WriteOperation : public PendingOperationBase {
finished_(false),
status_(base::PLATFORM_FILE_OK),
bytes_written_(0),
- callback_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)),
- runnable_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) {
+ weak_ptr_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) {
if (!is_will_operation) {
// TODO(kinuko): check the API convention if we really need to keep a
// copy of the buffer during the async write operations.
@@ -100,10 +100,11 @@ class QuotaFileIO::WriteOperation : public PendingOperationBase {
return;
}
- if (!base::FileUtilProxy::Write(
+ if (!FileUtilProxy::Write(
plugin_delegate->GetFileThreadMessageLoopProxy(),
quota_io_->file_, offset_, buffer_.get(), bytes_to_write_,
- callback_factory_.NewCallback(&WriteOperation::DidFinish))) {
+ base::Bind(&WriteOperation::DidFinish,
+ weak_ptr_factory_.GetWeakPtr()))) {
DidFail(base::PLATFORM_FILE_ERROR_FAILED);
return;
}
@@ -117,8 +118,9 @@ class QuotaFileIO::WriteOperation : public PendingOperationBase {
virtual void WillRunCallback() {
base::MessageLoopProxy::current()->PostTask(
- FROM_HERE, runnable_factory_.NewRunnableMethod(
- &WriteOperation::RunCallback));
+ FROM_HERE,
+ base::Bind(&WriteOperation::RunCallback,
+ weak_ptr_factory_.GetWeakPtr()));
}
private:
@@ -133,21 +135,18 @@ class QuotaFileIO::WriteOperation : public PendingOperationBase {
}
virtual void RunCallback() {
- DCHECK(callback_.get());
- callback_->Run(status_, bytes_written_);
- callback_.reset();
- delete this;
+ DCHECK(!callback_.is_null());
+ callback_.Run(status_, bytes_written_);
}
const int64_t offset_;
scoped_array<char> buffer_;
const int32_t bytes_to_write_;
- scoped_ptr<WriteCallback> callback_;
+ WriteCallback callback_;
bool finished_;
PlatformFileError status_;
int64_t bytes_written_;
- base::ScopedCallbackFactory<WriteOperation> callback_factory_;
- ScopedRunnableMethodFactory<WriteOperation> runnable_factory_;
+ base::WeakPtrFactory<WriteOperation> weak_ptr_factory_;
};
class QuotaFileIO::SetLengthOperation : public PendingOperationBase {
@@ -155,11 +154,11 @@ class QuotaFileIO::SetLengthOperation : public PendingOperationBase {
SetLengthOperation(QuotaFileIO* quota_io,
bool is_will_operation,
int64_t length,
- StatusCallback* callback)
+ const StatusCallback& callback)
: PendingOperationBase(quota_io, is_will_operation),
length_(length),
callback_(callback),
- callback_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) {}
+ weak_ptr_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) {}
virtual ~SetLengthOperation() {}
@@ -180,10 +179,13 @@ class QuotaFileIO::SetLengthOperation : public PendingOperationBase {
return;
}
- if (!base::FileUtilProxy::Truncate(
+ if (!FileUtilProxy::PostFileTaskAndReplyStatus<bool, PlatformFileError>(
plugin_delegate->GetFileThreadMessageLoopProxy(),
- quota_io_->file_, length_,
- callback_factory_.NewCallback(&SetLengthOperation::DidFinish))) {
+ FROM_HERE,
+ base::Bind(&base::TruncatePlatformFile,
+ quota_io_->file_, length_),
+ base::Bind(&SetLengthOperation::DidFinish,
+ weak_ptr_factory_.GetWeakPtr()))) {
DidFail(base::PLATFORM_FILE_ERROR_FAILED);
return;
}
@@ -196,15 +198,13 @@ class QuotaFileIO::SetLengthOperation : public PendingOperationBase {
private:
void DidFinish(PlatformFileError status) {
quota_io_->DidSetLength(status, length_);
- DCHECK(callback_.get());
- callback_->Run(status);
- callback_.reset();
- delete this;
+ DCHECK(!callback_.is_null());
+ callback_.Run(status);
}
int64_t length_;
- scoped_ptr<StatusCallback> callback_;
- base::ScopedCallbackFactory<SetLengthOperation> callback_factory_;
+ StatusCallback callback_;
+ base::WeakPtrFactory<SetLengthOperation> weak_ptr_factory_;
};
// QuotaFileIO --------------------------------------------------------------
@@ -224,7 +224,6 @@ QuotaFileIO::QuotaFileIO(
outstanding_errors_(0),
max_written_offset_(0),
inflight_operations_(0),
- callback_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)),
weak_ptr_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) {
DCHECK_NE(base::kInvalidPlatformFileValue, file_);
DCHECK_NE(quota::kStorageTypeUnknown, storage_type_);
@@ -240,9 +239,8 @@ QuotaFileIO::~QuotaFileIO() {
bool QuotaFileIO::Write(
int64_t offset, const char* buffer, int32_t bytes_to_write,
- WriteCallback* callback) {
+ const WriteCallback& callback) {
if (bytes_to_write <= 0) {
- delete callback;
return false;
}
WriteOperation* op = new WriteOperation(
@@ -250,7 +248,7 @@ bool QuotaFileIO::Write(
return RegisterOperationForQuotaChecks(op);
}
-bool QuotaFileIO::SetLength(int64_t length, StatusCallback* callback) {
+bool QuotaFileIO::SetLength(int64_t length, const StatusCallback& callback) {
DCHECK(pending_operations_.empty());
SetLengthOperation* op = new SetLengthOperation(
this, false, length, callback);
@@ -258,13 +256,14 @@ bool QuotaFileIO::SetLength(int64_t length, StatusCallback* callback) {
}
bool QuotaFileIO::WillWrite(
- int64_t offset, int32_t bytes_to_write, WriteCallback* callback) {
+ int64_t offset, int32_t bytes_to_write, const WriteCallback& callback) {
WriteOperation* op = new WriteOperation(
this, true, offset, NULL, bytes_to_write, callback);
return RegisterOperationForQuotaChecks(op);
}
-bool QuotaFileIO::WillSetLength(int64_t length, StatusCallback* callback) {
+bool QuotaFileIO::WillSetLength(
+ int64_t length, const StatusCallback& callback) {
DCHECK(pending_operations_.empty());
SetLengthOperation* op = new SetLengthOperation(this, true, length, callback);
return RegisterOperationForQuotaChecks(op);
@@ -292,10 +291,10 @@ bool QuotaFileIO::RegisterOperationForQuotaChecks(
// Query the file size.
++outstanding_quota_queries_;
- if (!base::FileUtilProxy::GetFileInfoFromPlatformFile(
+ if (!FileUtilProxy::GetFileInfoFromPlatformFile(
plugin_delegate->GetFileThreadMessageLoopProxy(), file_,
- callback_factory_.NewCallback(
- &QuotaFileIO::DidQueryInfoForQuota))) {
+ base::Bind(&QuotaFileIO::DidQueryInfoForQuota,
+ weak_ptr_factory_.GetWeakPtr()))) {
// This makes the call fail synchronously; we do not fire the callback
// here but just delete the operation and return false.
return false;

Powered by Google App Engine
This is Rietveld 408576698