Index: chrome/browser/download/test_download_shelf.cc |
diff --git a/chrome/browser/download/test_download_shelf.cc b/chrome/browser/download/test_download_shelf.cc |
index c28cb0382f4fda4f408aedda7f82c7ea62b63bda..9538b7cdc0a8694ec344ba874c4621da833b02cd 100644 |
--- a/chrome/browser/download/test_download_shelf.cc |
+++ b/chrome/browser/download/test_download_shelf.cc |
@@ -8,10 +8,13 @@ |
TestDownloadShelf::TestDownloadShelf() |
: is_showing_(false), |
- did_add_download_(false) { |
+ did_add_download_(false), |
+ download_manager_(NULL) { |
} |
TestDownloadShelf::~TestDownloadShelf() { |
+ if (download_manager_) |
+ download_manager_->RemoveObserver(this); |
} |
bool TestDownloadShelf::IsShowing() const { |
@@ -28,7 +31,16 @@ Browser* TestDownloadShelf::browser() const { |
void TestDownloadShelf::set_download_manager( |
content::DownloadManager* download_manager) { |
+ if (download_manager_) |
+ download_manager_->RemoveObserver(this); |
download_manager_ = download_manager; |
+ if (download_manager_) |
+ download_manager_->AddObserver(this); |
+} |
+ |
+void TestDownloadShelf::ManagerGoingDown(content::DownloadManager* manager) { |
+ DCHECK_EQ(manager, download_manager_); |
+ download_manager_ = NULL; |
} |
void TestDownloadShelf::DoAddDownload(content::DownloadItem* download) { |
@@ -48,5 +60,5 @@ base::TimeDelta TestDownloadShelf::GetTransientDownloadShowDelay() { |
} |
content::DownloadManager* TestDownloadShelf::GetDownloadManager() { |
- return download_manager_.get(); |
+ return download_manager_; |
} |