Index: ppapi/shared_impl/ppb_file_io_shared.cc |
diff --git a/ppapi/shared_impl/ppb_file_io_shared.cc b/ppapi/shared_impl/ppb_file_io_shared.cc |
index e54bd3ce3f36f3ffcba39da44d679d7bae752d65..b60e174f3983b6066245034018b7105b0121a862 100644 |
--- a/ppapi/shared_impl/ppb_file_io_shared.cc |
+++ b/ppapi/shared_impl/ppb_file_io_shared.cc |
@@ -58,12 +58,12 @@ thunk::PPB_FileIO_API* PPB_FileIO_Shared::AsPPB_FileIO_API() { |
int32_t PPB_FileIO_Shared::Open(PP_Resource file_ref, |
int32_t open_flags, |
- PP_CompletionCallback callback) { |
+ scoped_refptr<TrackedCallback> callback) { |
EnterResourceNoLock<PPB_FileRef_API> enter(file_ref, true); |
if (enter.failed()) |
return PP_ERROR_BADRESOURCE; |
- int32_t rv = CommonCallValidation(false, OPERATION_EXCLUSIVE, callback); |
+ int32_t rv = CommonCallValidation(false, OPERATION_EXCLUSIVE); |
if (rv != PP_OK) |
return rv; |
@@ -78,8 +78,8 @@ int32_t PPB_FileIO_Shared::Open(PP_Resource file_ref, |
} |
int32_t PPB_FileIO_Shared::Query(PP_FileInfo* info, |
- PP_CompletionCallback callback) { |
- int32_t rv = CommonCallValidation(true, OPERATION_EXCLUSIVE, callback); |
+ scoped_refptr<TrackedCallback> callback) { |
+ int32_t rv = CommonCallValidation(true, OPERATION_EXCLUSIVE); |
if (rv != PP_OK) |
return rv; |
if (!info) |
@@ -89,8 +89,8 @@ int32_t PPB_FileIO_Shared::Query(PP_FileInfo* info, |
int32_t PPB_FileIO_Shared::Touch(PP_Time last_access_time, |
PP_Time last_modified_time, |
- PP_CompletionCallback callback) { |
- int32_t rv = CommonCallValidation(true, OPERATION_EXCLUSIVE, callback); |
+ scoped_refptr<TrackedCallback> callback) { |
+ int32_t rv = CommonCallValidation(true, OPERATION_EXCLUSIVE); |
if (rv != PP_OK) |
return rv; |
return TouchValidated(last_access_time, last_modified_time, callback); |
@@ -99,8 +99,8 @@ int32_t PPB_FileIO_Shared::Touch(PP_Time last_access_time, |
int32_t PPB_FileIO_Shared::Read(int64_t offset, |
char* buffer, |
int32_t bytes_to_read, |
- PP_CompletionCallback callback) { |
- int32_t rv = CommonCallValidation(true, OPERATION_READ, callback); |
+ scoped_refptr<TrackedCallback> callback) { |
+ int32_t rv = CommonCallValidation(true, OPERATION_READ); |
if (rv != PP_OK) |
return rv; |
return ReadValidated(offset, buffer, bytes_to_read, callback); |
@@ -109,23 +109,23 @@ int32_t PPB_FileIO_Shared::Read(int64_t offset, |
int32_t PPB_FileIO_Shared::Write(int64_t offset, |
const char* buffer, |
int32_t bytes_to_write, |
- PP_CompletionCallback callback) { |
- int32_t rv = CommonCallValidation(true, OPERATION_WRITE, callback); |
+ scoped_refptr<TrackedCallback> callback) { |
+ int32_t rv = CommonCallValidation(true, OPERATION_WRITE); |
if (rv != PP_OK) |
return rv; |
return WriteValidated(offset, buffer, bytes_to_write, callback); |
} |
int32_t PPB_FileIO_Shared::SetLength(int64_t length, |
- PP_CompletionCallback callback) { |
- int32_t rv = CommonCallValidation(true, OPERATION_EXCLUSIVE, callback); |
+ scoped_refptr<TrackedCallback> callback) { |
+ int32_t rv = CommonCallValidation(true, OPERATION_EXCLUSIVE); |
if (rv != PP_OK) |
return rv; |
return SetLengthValidated(length, callback); |
} |
-int32_t PPB_FileIO_Shared::Flush(PP_CompletionCallback callback) { |
- int32_t rv = CommonCallValidation(true, OPERATION_EXCLUSIVE, callback); |
+int32_t PPB_FileIO_Shared::Flush(scoped_refptr<TrackedCallback> callback) { |
+ int32_t rv = CommonCallValidation(true, OPERATION_EXCLUSIVE); |
if (rv != PP_OK) |
return rv; |
return FlushValidated(callback); |
@@ -169,14 +169,9 @@ void PPB_FileIO_Shared::ExecuteReadCallback(int32_t pp_error, |
RunAndRemoveFirstPendingCallback(pp_error); |
} |
-int32_t PPB_FileIO_Shared::CommonCallValidation( |
- bool should_be_open, |
- OperationType new_op, |
- PP_CompletionCallback callback) { |
+int32_t PPB_FileIO_Shared::CommonCallValidation(bool should_be_open, |
+ OperationType new_op) { |
// Only asynchronous operation is supported. |
- if (!callback.func) |
- return PP_ERROR_BLOCKS_MAIN_THREAD; |
- |
if (should_be_open) { |
if (!file_open_) |
return PP_ERROR_FAILED; |
@@ -193,16 +188,16 @@ int32_t PPB_FileIO_Shared::CommonCallValidation( |
return PP_OK; |
} |
-void PPB_FileIO_Shared::RegisterCallback(OperationType op, |
- PP_CompletionCallback callback, |
- char* read_buffer, |
- PP_FileInfo* info) { |
- DCHECK(callback.func); |
+void PPB_FileIO_Shared::RegisterCallback( |
+ OperationType op, |
+ scoped_refptr<TrackedCallback> callback, |
+ char* read_buffer, |
+ PP_FileInfo* info) { |
DCHECK(pending_op_ == OPERATION_NONE || |
(pending_op_ != OPERATION_EXCLUSIVE && pending_op_ == op)); |
CallbackEntry entry; |
- entry.callback = new TrackedCallback(this, callback); |
+ entry.callback = callback; |
entry.read_buffer = read_buffer; |
entry.info = info; |
callbacks_.push_back(entry); |