Index: chrome/browser/chromeos/gdata/gdata_uploader.cc |
diff --git a/chrome/browser/chromeos/gdata/gdata_uploader.cc b/chrome/browser/chromeos/gdata/gdata_uploader.cc |
index f9dc6604b6655da8362e6fcd4d25d025e615318c..4009105e2e5507ade5bbf852ab502713442fe768 100644 |
--- a/chrome/browser/chromeos/gdata/gdata_uploader.cc |
+++ b/chrome/browser/chromeos/gdata/gdata_uploader.cc |
@@ -73,6 +73,8 @@ int GDataUploader::UploadFile(scoped_ptr<UploadFileInfo> upload_file_info) { |
void GDataUploader::UpdateUpload(int upload_id, |
content::DownloadItem* download) { |
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
+ |
UploadFileInfo* upload_file_info = GetUploadFileInfo(upload_id); |
if (!upload_file_info) |
return; |
@@ -319,8 +321,10 @@ void GDataUploader::OnResumeUploadResponseReceived( |
upload_file_info->completion_callback.Run(base::PLATFORM_FILE_OK, |
upload_file_info); |
} |
- // TODO(achuith): DeleteUpload() here and let clients call |
- // GDataFileSystem::AddUploadedFile. |
+ |
+ // Remove |upload_id| from the UploadFileInfoMap. The UploadFileInfo object |
+ // will be deleted later upon transfer completion. |
+ RemoveUpload(upload_id); |
return; |
} |
@@ -357,35 +361,45 @@ void GDataUploader::MoveFileToCache(UploadFileInfo* upload_file_info) { |
if (upload_file_info->entry == NULL) |
return; |
+ int upload_id = upload_file_info->upload_id; |
achuithb
2012/06/14 22:27:18
nit: could we make this const?
hshi1
2012/06/15 00:16:28
Done.
|
DVLOG(1) << "MoveFileToCache " << upload_file_info->file_path.value(); |
file_system_->AddUploadedFile( |
upload_file_info->gdata_path.DirName(), |
upload_file_info->entry.get(), |
upload_file_info->file_path, |
- GDataCache::FILE_OPERATION_MOVE); |
- DeleteUpload(upload_file_info); |
+ GDataCache::FILE_OPERATION_MOVE, |
+ base::Bind(&GDataUploader::OnAddUploadFileComplete, |
+ uploader_factory_.GetWeakPtr(), |
+ upload_file_info)); |
+ |
+ // Remove |upload_id| from the UploadFileInfoMap. The UploadFileInfo object |
+ // will be deleted in OnAddUploadFileComplete. |
+ RemoveUpload(upload_id); |
+} |
+ |
+void GDataUploader::OnAddUploadFileComplete(UploadFileInfo* upload_file_info) { |
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
+ delete upload_file_info; |
} |
void GDataUploader::UploadFailed(UploadFileInfo* upload_file_info, |
base::PlatformFileError error) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
+ |
+ int upload_id = upload_file_info->upload_id; |
achuithb
2012/06/14 22:27:18
nit: make this const
hshi1
2012/06/15 00:16:28
Done.
|
LOG(ERROR) << "Upload failed " << upload_file_info->DebugString(); |
if (!upload_file_info->completion_callback.is_null()) { |
upload_file_info->completion_callback.Run(error, |
upload_file_info); |
} |
- DeleteUpload(upload_file_info); |
+ |
+ RemoveUpload(upload_id); |
+ delete upload_file_info; |
} |
-void GDataUploader::DeleteUpload(UploadFileInfo* upload_file_info) { |
+void GDataUploader::RemoveUpload(int upload_id) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- |
- DVLOG(1) << "Deleting upload " << upload_file_info->gdata_path.value(); |
- pending_uploads_.erase(upload_file_info->upload_id); |
- |
- // The file stream is closed by the destructor asynchronously. |
- delete upload_file_info->file_stream; |
- delete upload_file_info; |
+ pending_uploads_.erase(upload_id); |
} |
} // namespace gdata |