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 dcad4d70caa44dbc94005d56dd6728a77af7252b..7eeab923143259a4483541dbaf50eb9b242b4bef 100644 |
--- a/ppapi/shared_impl/ppb_file_io_shared.cc |
+++ b/ppapi/shared_impl/ppb_file_io_shared.cc |
@@ -24,8 +24,6 @@ using thunk::PPB_FileRef_API; |
PPB_FileIO_Shared::CallbackEntry::CallbackEntry() |
: read_buffer(NULL), |
info(NULL) { |
- callback.func = NULL; |
- callback.user_data = NULL; |
} |
PPB_FileIO_Shared::CallbackEntry::CallbackEntry(const CallbackEntry& entry) |
@@ -52,19 +50,6 @@ PPB_FileIO_Shared::PPB_FileIO_Shared(const HostResource& host_resource) |
} |
PPB_FileIO_Shared::~PPB_FileIO_Shared() { |
- // The callbacks list should have been cleared by LastPluginRefWasDeleted. |
- DCHECK(callbacks_.empty()); |
-} |
- |
-void PPB_FileIO_Shared::LastPluginRefWasDeleted() { |
- // Abort all pending callbacks. Do this by posting a task to avoid reentering |
- // the plugin's Release() call that probably deleted this object. |
- for (size_t i = 0; i < callbacks_.size(); i++) { |
- MessageLoop::current()->PostTask(FROM_HERE, base::Bind( |
- callbacks_[i].callback.func, callbacks_[i].callback.user_data, |
- static_cast<int32_t>(PP_ERROR_ABORTED))); |
- } |
- callbacks_.erase(callbacks_.begin(), callbacks_.end()); |
} |
thunk::PPB_FileIO_API* PPB_FileIO_Shared::AsPPB_FileIO_API() { |
@@ -217,7 +202,7 @@ void PPB_FileIO_Shared::RegisterCallback(OperationType op, |
(pending_op_ != OPERATION_EXCLUSIVE && pending_op_ == op)); |
CallbackEntry entry; |
- entry.callback = callback; |
+ entry.callback = new TrackedCallback(this, callback); |
entry.read_buffer = read_buffer; |
entry.info = info; |
callbacks_.push_back(entry); |
@@ -233,7 +218,7 @@ void PPB_FileIO_Shared::RunAndRemoveFirstPendingCallback(int32_t result) { |
if (callbacks_.empty()) |
pending_op_ = OPERATION_NONE; |
- PP_RunCompletionCallback(&front.callback, result); |
+ front.callback->Run(result); |
} |
} // namespace ppapi |