Index: content/browser/download/download_item_impl.cc |
diff --git a/content/browser/download/download_item_impl.cc b/content/browser/download/download_item_impl.cc |
index 380a219cf0e64b44eded274cec9a48f8e31f38bd..be78ab35ccfb4c3c404daa119b3fb12e74ccbf6a 100644 |
--- a/content/browser/download/download_item_impl.cc |
+++ b/content/browser/download/download_item_impl.cc |
@@ -616,7 +616,7 @@ bool DownloadItemImpl::GetFileExternallyRemoved() const { |
return file_externally_removed_; |
} |
-void DownloadItemImpl::DeleteFile() { |
+void DownloadItemImpl::DeleteFile(const base::Callback<void(bool)>& callback) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
if ((GetState() != DownloadItem::COMPLETE) || |
file_externally_removed_) { |
@@ -625,11 +625,21 @@ void DownloadItemImpl::DeleteFile() { |
BrowserThread::PostTaskAndReplyWithResult( |
BrowserThread::FILE, FROM_HERE, |
base::Bind(&DeleteDownloadedFile, current_path_), |
- base::Bind(&DownloadItemImpl::OnDownloadedFileRemoved, |
- weak_ptr_factory_.GetWeakPtr())); |
+ base::Bind(&DownloadItemImpl::DeleteFileDone, |
+ weak_ptr_factory_.GetWeakPtr(), |
+ callback)); |
current_path_.clear(); |
} |
+void DownloadItemImpl::DeleteFileDone( |
+ const base::Callback<void(bool)>& callback, |
+ bool success) { |
+ if (success) { |
+ OnDownloadedFileRemoved(); |
+ } |
+ callback.Run(success); |
+} |
+ |
bool DownloadItemImpl::IsDangerous() const { |
#if defined(OS_WIN) |
// TODO(noelutz): At this point only the windows views UI supports |
@@ -946,9 +956,7 @@ void DownloadItemImpl::NotifyRemoved() { |
FOR_EACH_OBSERVER(Observer, observers_, OnDownloadRemoved(this)); |
} |
-void DownloadItemImpl::OnDownloadedFileRemoved(bool success) { |
- if (!success) |
- return; |
+void DownloadItemImpl::OnDownloadedFileRemoved() { |
file_externally_removed_ = true; |
VLOG(20) << __FUNCTION__ << " download=" << DebugString(true); |
UpdateObservers(); |