Index: chrome/browser/views/download_shelf_view.cc |
diff --git a/chrome/browser/views/download_shelf_view.cc b/chrome/browser/views/download_shelf_view.cc |
index 3f9a825cc48285e11167b98b2dc21a14c07c837b..f4e9655c5dba275fff999d2c79dcd2b855ee7511 100644 |
--- a/chrome/browser/views/download_shelf_view.cc |
+++ b/chrome/browser/views/download_shelf_view.cc |
@@ -140,8 +140,15 @@ void DownloadShelfView::AddDownloadView(DownloadItemView* view) { |
} |
void DownloadShelfView::AddDownload(BaseDownloadItemModel* download_model) { |
- DownloadItemView* view = new DownloadItemView( |
- download_model->download(), this, download_model); |
+ DownloadItem* dld = download_model->download(); |
+ // If we already have an ID, we must be restarting an interrupted download. |
+ // Don't add a new one in this case. |
+ for (size_t i = 0; i < download_views_.size(); ++i) { |
+ DownloadItem* download = download_views_[i]->download(); |
+ if (download->id() == dld->id()) |
+ return; |
+ } |
+ DownloadItemView* view = new DownloadItemView(dld, this, download_model); |
AddDownloadView(view); |
} |