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

Unified Diff: ppapi/proxy/ppb_file_ref_proxy.cc

Issue 8764003: Implement a proxy for Pepper FileIO. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 1 month 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: ppapi/proxy/ppb_file_ref_proxy.cc
diff --git a/ppapi/proxy/ppb_file_ref_proxy.cc b/ppapi/proxy/ppb_file_ref_proxy.cc
index e6a8b944c9997deeced5acf244c5450b37788e00..11f1d515530e732fe247b2ca9ef659d2fbb55569 100644
--- a/ppapi/proxy/ppb_file_ref_proxy.cc
+++ b/ppapi/proxy/ppb_file_ref_proxy.cc
@@ -32,6 +32,9 @@ class FileRef : public FileRefImpl {
explicit FileRef(const PPB_FileRef_CreateInfo& info);
virtual ~FileRef();
+ // Resource overrides.
+ virtual void LastPluginRefWasDeleted() OVERRIDE;
+
// PPB_FileRef_API implementation (not provided by FileRefImpl).
virtual PP_Resource GetParent() OVERRIDE;
virtual int32_t MakeDirectory(PP_Bool make_ancestors,
@@ -71,10 +74,15 @@ class FileRef : public FileRefImpl {
FileRef::FileRef(const PPB_FileRef_CreateInfo& info)
: FileRefImpl(FileRefImpl::InitAsProxy(), info),
- next_callback_id_(0) {
+ next_callback_id_(1) {
}
FileRef::~FileRef() {
+ // The callbacks map should have been cleared by LastPluginRefWasDeleted.
+ DCHECK(pending_callbacks_.empty());
+}
+
+void FileRef::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 (PendingCallbackMap::iterator i = pending_callbacks_.begin();
@@ -83,6 +91,7 @@ FileRef::~FileRef() {
i->second.func, i->second.user_data,
static_cast<int32_t>(PP_ERROR_ABORTED)));
}
+ pending_callbacks_.clear();
}
PP_Resource FileRef::GetParent() {

Powered by Google App Engine
This is Rietveld 408576698