| 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);
|
|
|