Index: chrome/browser/chromeos/gdata/gdata_uploader.h |
diff --git a/chrome/browser/chromeos/gdata/gdata_uploader.h b/chrome/browser/chromeos/gdata/gdata_uploader.h |
index b3bb8da3c5b1fa3770e030a813f1ed40febb7444..47b3b68e4d60c71a425edd43a1f97b4982465ecc 100644 |
--- a/chrome/browser/chromeos/gdata/gdata_uploader.h |
+++ b/chrome/browser/chromeos/gdata/gdata_uploader.h |
@@ -13,6 +13,7 @@ |
#include "base/basictypes.h" |
#include "base/memory/weak_ptr.h" |
#include "base/platform_file.h" |
+#include "base/synchronization/lock.h" |
#include "chrome/browser/chromeos/gdata/gdata_errorcode.h" |
#include "chrome/browser/chromeos/gdata/gdata_params.h" |
#include "googleurl/src/gurl.h" |
@@ -43,10 +44,6 @@ class GDataUploader { |
// Returns the count of bytes confirmed as uploaded so far. |
int64 GetUploadedBytes(int upload_id) const; |
- // TODO(achuith): Make this private. |
- // Destroys |upload_file_info|. |
- void DeleteUpload(UploadFileInfo* upload_file_info); |
- |
private: |
// Lookup UploadFileInfo* in pending_uploads_. |
UploadFileInfo* GetUploadFileInfo(int upload_id) const; |
@@ -83,6 +80,15 @@ class GDataUploader { |
void UploadFailed(UploadFileInfo* upload_file_info, |
base::PlatformFileError error); |
+ // Removes |upload_file_info| from UploadFileInfoMap |pending_uploads_|. |
+ // Note that this does not delete the |upload_file_info| object itself, |
+ // because it may still be in use by an asynchronous function. |
+ void RemoveUpload(UploadFileInfo* upload_file_info); |
+ |
+ // Helper function to delete the UploadFileInfo object after completion |
+ // of AddUploadedFile. |
+ void OnAddUploadFileComplete(UploadFileInfo* upload_file_info); |
+ |
// Pointers to GDataFileSystem and DocumentsServiceInterface objects owned by |
// GDataSystemService. The lifetime of these two objects is guaranteed to |
// exceed that of the GDataUploader instance. |
@@ -97,6 +103,9 @@ class GDataUploader { |
// Factory for various callbacks. |
base::WeakPtrFactory<GDataUploader> uploader_factory_; |
+ // This ensures serialized access to UploadFileInfoMap |pending_uploads_|. |
+ base::Lock lock_; |
+ |
DISALLOW_COPY_AND_ASSIGN(GDataUploader); |
}; |