Index: webkit/plugins/ppapi/ppb_file_io_impl.cc |
diff --git a/webkit/plugins/ppapi/ppb_file_io_impl.cc b/webkit/plugins/ppapi/ppb_file_io_impl.cc |
index 213071e441db0d776170fedcb1cb9ccd401ba5b2..a826ee4876b83437aba621fc27309229880d1639 100644 |
--- a/webkit/plugins/ppapi/ppb_file_io_impl.cc |
+++ b/webkit/plugins/ppapi/ppb_file_io_impl.cc |
@@ -5,6 +5,7 @@ |
#include "webkit/plugins/ppapi/ppb_file_io_impl.h" |
#include "base/bind.h" |
+#include "base/bind_helpers.h" |
#include "base/callback.h" |
#include "base/file_util.h" |
#include "base/file_util_proxy.h" |
@@ -28,6 +29,9 @@ |
#include "webkit/plugins/ppapi/resource_helper.h" |
#include "webkit/plugins/ppapi/resource_tracker.h" |
+using base::FileUtilProxy; |
+using base::PlatformFileError; |
+ |
using ppapi::PPTimeToTime; |
using ppapi::TimeToPPTime; |
using ppapi::thunk::EnterResourceNoLock; |
@@ -51,7 +55,6 @@ PPB_FileIO_Impl::CallbackEntry::~CallbackEntry() { |
PPB_FileIO_Impl::PPB_FileIO_Impl(PP_Instance instance) |
: Resource(instance), |
- ALLOW_THIS_IN_INITIALIZER_LIST(callback_factory_(this)), |
file_(base::kInvalidPlatformFileValue), |
file_system_type_(PP_FILESYSTEMTYPE_INVALID), |
pending_op_(OPERATION_NONE), |
@@ -130,9 +133,10 @@ int32_t PPB_FileIO_Impl::Query(PP_FileInfo* info, |
if (!plugin_delegate) |
return PP_ERROR_FAILED; |
- if (!base::FileUtilProxy::GetFileInfoFromPlatformFile( |
+ if (!FileUtilProxy::GetFileInfoFromPlatformFile( |
plugin_delegate->GetFileThreadMessageLoopProxy(), file_, |
- callback_factory_.NewCallback(&PPB_FileIO_Impl::QueryInfoCallback))) |
+ base::Bind(&PPB_FileIO_Impl::QueryInfoCallback, |
+ weak_ptr_factory_.GetWeakPtr()))) |
return PP_ERROR_FAILED; |
RegisterCallback(OPERATION_EXCLUSIVE, callback, NULL); |
@@ -150,11 +154,14 @@ int32_t PPB_FileIO_Impl::Touch(PP_Time last_access_time, |
if (!plugin_delegate) |
return PP_ERROR_FAILED; |
- if (!base::FileUtilProxy::Touch( |
+ if (!FileUtilProxy::PostFileTaskAndReplyStatus<bool, PlatformFileError>( |
plugin_delegate->GetFileThreadMessageLoopProxy(), |
- file_, PPTimeToTime(last_access_time), |
- PPTimeToTime(last_modified_time), |
- callback_factory_.NewCallback(&PPB_FileIO_Impl::StatusCallback))) |
+ FROM_HERE, |
+ Bind(&base::TouchPlatformFile, file_, |
+ PPTimeToTime(last_access_time), |
+ PPTimeToTime(last_modified_time)), |
+ Bind(&PPB_FileIO_Impl::StatusCallback, |
+ weak_ptr_factory_.GetWeakPtr()))) |
return PP_ERROR_FAILED; |
RegisterCallback(OPERATION_EXCLUSIVE, callback, NULL); |
@@ -173,10 +180,11 @@ int32_t PPB_FileIO_Impl::Read(int64_t offset, |
if (!plugin_delegate) |
return PP_ERROR_FAILED; |
- if (!base::FileUtilProxy::Read( |
+ if (!FileUtilProxy::Read( |
plugin_delegate->GetFileThreadMessageLoopProxy(), |
file_, offset, bytes_to_read, |
- callback_factory_.NewCallback(&PPB_FileIO_Impl::ReadCallback))) |
+ base::Bind(&PPB_FileIO_Impl::ReadCallback, |
+ weak_ptr_factory_.GetWeakPtr()))) |
return PP_ERROR_FAILED; |
RegisterCallback(OPERATION_READ, callback, buffer); |
@@ -198,13 +206,15 @@ int32_t PPB_FileIO_Impl::Write(int64_t offset, |
if (quota_file_io_.get()) { |
if (!quota_file_io_->Write( |
offset, buffer, bytes_to_write, |
- callback_factory_.NewCallback(&PPB_FileIO_Impl::WriteCallback))) |
+ base::Bind(&PPB_FileIO_Impl::WriteCallback, |
+ weak_ptr_factory_.GetWeakPtr()))) |
return PP_ERROR_FAILED; |
} else { |
- if (!base::FileUtilProxy::Write( |
+ if (!FileUtilProxy::Write( |
plugin_delegate->GetFileThreadMessageLoopProxy(), |
file_, offset, buffer, bytes_to_write, |
- callback_factory_.NewCallback(&PPB_FileIO_Impl::WriteCallback))) |
+ base::Bind(&PPB_FileIO_Impl::WriteCallback, |
+ weak_ptr_factory_.GetWeakPtr()))) |
return PP_ERROR_FAILED; |
} |
@@ -225,13 +235,16 @@ int32_t PPB_FileIO_Impl::SetLength(int64_t length, |
if (quota_file_io_.get()) { |
if (!quota_file_io_->SetLength( |
length, |
- callback_factory_.NewCallback(&PPB_FileIO_Impl::StatusCallback))) |
+ base::Bind(&PPB_FileIO_Impl::StatusCallback, |
+ weak_ptr_factory_.GetWeakPtr()))) |
return PP_ERROR_FAILED; |
} else { |
- if (!base::FileUtilProxy::Truncate( |
+ if (!FileUtilProxy::PostFileTaskAndReplyStatus<bool, PlatformFileError>( |
plugin_delegate->GetFileThreadMessageLoopProxy(), |
- file_, length, |
- callback_factory_.NewCallback(&PPB_FileIO_Impl::StatusCallback))) |
+ FROM_HERE, |
+ base::Bind(&base::TruncatePlatformFile, file_, length), |
+ base::Bind(&PPB_FileIO_Impl::StatusCallback, |
+ weak_ptr_factory_.GetWeakPtr()))) |
return PP_ERROR_FAILED; |
} |
@@ -248,9 +261,12 @@ int32_t PPB_FileIO_Impl::Flush(PP_CompletionCallback callback) { |
if (!plugin_delegate) |
return PP_ERROR_FAILED; |
- if (!base::FileUtilProxy::Flush( |
- plugin_delegate->GetFileThreadMessageLoopProxy(), file_, |
- callback_factory_.NewCallback(&PPB_FileIO_Impl::StatusCallback))) |
+ if (!FileUtilProxy::PostFileTaskAndReplyStatus<bool, PlatformFileError>( |
+ plugin_delegate->GetFileThreadMessageLoopProxy(), |
+ FROM_HERE, |
+ base::Bind(&base::FlushPlatformFile, file_), |
+ base::Bind(&PPB_FileIO_Impl::StatusCallback, |
+ weak_ptr_factory_.GetWeakPtr()))) |
return PP_ERROR_FAILED; |
RegisterCallback(OPERATION_EXCLUSIVE, callback, NULL); |
@@ -260,8 +276,11 @@ int32_t PPB_FileIO_Impl::Flush(PP_CompletionCallback callback) { |
void PPB_FileIO_Impl::Close() { |
PluginDelegate* plugin_delegate = ResourceHelper::GetPluginDelegate(this); |
if (file_ != base::kInvalidPlatformFileValue && plugin_delegate) { |
- base::FileUtilProxy::Close( |
- plugin_delegate->GetFileThreadMessageLoopProxy(), file_, NULL); |
+ |
+ plugin_delegate->GetFileThreadMessageLoopProxy()->PostTask( |
+ FROM_HERE, |
+ base::IgnoreReturn(base::Callback<bool(void)>( |
+ base::Bind(&base::ClosePlatformFile, file_)))); |
file_ = base::kInvalidPlatformFileValue; |
quota_file_io_.reset(); |
} |
@@ -289,7 +308,8 @@ int32_t PPB_FileIO_Impl::WillWrite(int64_t offset, |
if (!quota_file_io_->WillWrite( |
offset, bytes_to_write, |
- callback_factory_.NewCallback(&PPB_FileIO_Impl::WillWriteCallback))) |
+ base::Bind(&PPB_FileIO_Impl::WillWriteCallback, |
+ weak_ptr_factory_.GetWeakPtr()))) |
return PP_ERROR_FAILED; |
RegisterCallback(OPERATION_EXCLUSIVE, callback, NULL); |
@@ -307,7 +327,8 @@ int32_t PPB_FileIO_Impl::WillSetLength(int64_t length, |
if (!quota_file_io_->WillSetLength( |
length, |
- callback_factory_.NewCallback(&PPB_FileIO_Impl::StatusCallback))) |
+ base::Bind(&PPB_FileIO_Impl::StatusCallback, |
+ weak_ptr_factory_.GetWeakPtr()))) |
return PP_ERROR_FAILED; |
RegisterCallback(OPERATION_EXCLUSIVE, callback, NULL); |