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..6c2f388ef37ee946695e78c3b46dd70b619b386c 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(manager == download_manager_); |
benjhayden
2013/05/21 18:14:28
DCHECK_EQ?
|
+ download_manager_ = NULL; |
} |
void TestDownloadShelf::DoAddDownload(content::DownloadItem* download) { |
@@ -48,5 +60,7 @@ base::TimeDelta TestDownloadShelf::GetTransientDownloadShowDelay() { |
} |
content::DownloadManager* TestDownloadShelf::GetDownloadManager() { |
- return download_manager_.get(); |
+ if (download_manager_) |
+ return download_manager_; |
+ return NULL; |
benjhayden
2013/05/21 18:14:28
Why not just return download_manager_?
|
} |