Index: chrome/browser/download/download_completion_observer_win.cc |
diff --git a/chrome/browser/download/download_completion_observer_win.cc b/chrome/browser/download/download_completion_observer_win.cc |
index 5a009e77ed6c30576dfeb8876c9c75f4fc186b06..809e896a957830ac0f8fd9b368877e5aa7cd5bb0 100644 |
--- a/chrome/browser/download/download_completion_observer_win.cc |
+++ b/chrome/browser/download/download_completion_observer_win.cc |
@@ -83,7 +83,6 @@ void DownloadCompletionObserver::OnDownloadUpdated(DownloadItem* download) { |
break; |
} |
- case DownloadItem::REMOVING: |
case DownloadItem::INTERRUPTED: |
case DownloadItem::CANCELLED: { |
DCHECK(ContainsKey(download_items_, download)); |
@@ -97,6 +96,12 @@ void DownloadCompletionObserver::OnDownloadUpdated(DownloadItem* download) { |
} |
} |
+void DownloadCompletionObserver::OnDownloadDestroyed(DownloadItem* download) { |
+ DCHECK(ContainsKey(download_items_, download)); |
+ download_items_.erase(download); |
+ download->RemoveObserver(this); |
+} |
+ |
void DownloadCompletionObserver::ClearDownloadItems() { |
for (std::set<DownloadItem*>::iterator it = download_items_.begin(); |
it != download_items_.end(); ++it) { |