Commit f7b7b66c authored by Evan Stade's avatar Evan Stade Committed by Commit Bot

Remove NOTIFICATION_PROFILE_DESTROYED from DownloadReporter

Bug: 268984
Change-Id: I3e31bd137be5df84c1fcad094813965d23b2cc44
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1848502Reviewed-by: default avatarDaniel Rubery <drubery@chromium.org>
Reviewed-by: default avatarDavid Trainor <dtrainor@chromium.org>
Commit-Queue: Evan Stade <estade@chromium.org>
Cr-Commit-Position: refs/heads/master@{#705180}
parent 32ffaae4
...@@ -422,7 +422,8 @@ void DownloadOfflineContentProvider::RemoveObserver( ...@@ -422,7 +422,8 @@ void DownloadOfflineContentProvider::RemoveObserver(
observers_.RemoveObserver(observer); observers_.RemoveObserver(observer);
} }
void DownloadOfflineContentProvider::OnManagerGoingDown() { void DownloadOfflineContentProvider::OnManagerGoingDown(
SimpleDownloadManagerCoordinator* manager) {
std::vector<DownloadItem*> all_items; std::vector<DownloadItem*> all_items;
GetAllDownloads(&all_items); GetAllDownloads(&all_items);
......
...@@ -108,7 +108,7 @@ class DownloadOfflineContentProvider ...@@ -108,7 +108,7 @@ class DownloadOfflineContentProvider
// SimpleDownloadManagerCoordinator::Observer overrides // SimpleDownloadManagerCoordinator::Observer overrides
void OnDownloadsInitialized(bool active_downloads_only) override; void OnDownloadsInitialized(bool active_downloads_only) override;
void OnManagerGoingDown() override; void OnManagerGoingDown(SimpleDownloadManagerCoordinator* manager) override;
void GetAllDownloads(std::vector<DownloadItem*>* all_items); void GetAllDownloads(std::vector<DownloadItem*>* all_items);
DownloadItem* GetDownload(const std::string& download_guid); DownloadItem* GetDownload(const std::string& download_guid);
......
...@@ -90,62 +90,34 @@ void ReportDangerousDownloadWarningBypassed( ...@@ -90,62 +90,34 @@ void ReportDangerousDownloadWarningBypassed(
DownloadReporter::DownloadReporter() { DownloadReporter::DownloadReporter() {
profiles_registrar_.Add(this, chrome::NOTIFICATION_PROFILE_CREATED, profiles_registrar_.Add(this, chrome::NOTIFICATION_PROFILE_CREATED,
content::NotificationService::AllSources()); content::NotificationService::AllSources());
profiles_registrar_.Add(this, chrome::NOTIFICATION_PROFILE_DESTROYED,
content::NotificationService::AllSources());
} }
DownloadReporter::~DownloadReporter() { DownloadReporter::~DownloadReporter() = default;
profiles_registrar_.RemoveAll();
for (download::SimpleDownloadManagerCoordinator* coordinator :
observed_coordinators_) {
coordinator->RemoveObserver(this);
}
for (download::DownloadItem* download_item : observed_downloads_) {
download_item->RemoveObserver(this);
}
}
void DownloadReporter::Observe(int type, void DownloadReporter::Observe(int type,
const content::NotificationSource& source, const content::NotificationSource& source,
const content::NotificationDetails& details) { const content::NotificationDetails& details) {
switch (type) { DCHECK_EQ(type, chrome::NOTIFICATION_PROFILE_CREATED);
case chrome::NOTIFICATION_PROFILE_CREATED: { Profile* profile = content::Source<Profile>(source).ptr();
DCHECK_CURRENTLY_ON(content::BrowserThread::UI); download::SimpleDownloadManagerCoordinator* coordinator =
Profile* profile = content::Source<Profile>(source).ptr(); SimpleDownloadManagerCoordinatorFactory::GetForKey(
download::SimpleDownloadManagerCoordinator* coordinator = profile->GetProfileKey());
SimpleDownloadManagerCoordinatorFactory::GetForKey( observed_coordinators_.Add(coordinator);
profile->GetProfileKey()); }
coordinator->AddObserver(this);
observed_coordinators_.insert(coordinator); void DownloadReporter::OnManagerGoingDown(
break; download::SimpleDownloadManagerCoordinator* coordinator) {
} observed_coordinators_.Remove(coordinator);
case chrome::NOTIFICATION_PROFILE_DESTROYED: {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
Profile* profile = content::Source<Profile>(source).ptr();
download::SimpleDownloadManagerCoordinator* coordinator =
SimpleDownloadManagerCoordinatorFactory::GetForKey(
profile->GetProfileKey());
coordinator->RemoveObserver(this);
observed_coordinators_.erase(coordinator);
break;
}
default:
NOTREACHED();
}
} }
void DownloadReporter::OnDownloadCreated(download::DownloadItem* download) { void DownloadReporter::OnDownloadCreated(download::DownloadItem* download) {
danger_types_[download] = download->GetDangerType(); danger_types_[download] = download->GetDangerType();
download->AddObserver(this); observed_downloads_.Add(download);
observed_downloads_.insert(download);
} }
void DownloadReporter::OnDownloadDestroyed(download::DownloadItem* download) { void DownloadReporter::OnDownloadDestroyed(download::DownloadItem* download) {
download->RemoveObserver(this); observed_downloads_.Remove(download);
danger_types_.erase(download); danger_types_.erase(download);
observed_downloads_.erase(download);
} }
void DownloadReporter::OnDownloadUpdated(download::DownloadItem* download) { void DownloadReporter::OnDownloadUpdated(download::DownloadItem* download) {
......
...@@ -5,6 +5,8 @@ ...@@ -5,6 +5,8 @@
#ifndef CHROME_BROWSER_SAFE_BROWSING_DOWNLOAD_PROTECTION_DOWNLOAD_REPORTER_H_ #ifndef CHROME_BROWSER_SAFE_BROWSING_DOWNLOAD_PROTECTION_DOWNLOAD_REPORTER_H_
#define CHROME_BROWSER_SAFE_BROWSING_DOWNLOAD_PROTECTION_DOWNLOAD_REPORTER_H_ #define CHROME_BROWSER_SAFE_BROWSING_DOWNLOAD_PROTECTION_DOWNLOAD_REPORTER_H_
#include "base/macros.h"
#include "base/scoped_observer.h"
#include "components/download/public/common/download_item.h" #include "components/download/public/common/download_item.h"
#include "components/download/public/common/simple_download_manager_coordinator.h" #include "components/download/public/common/simple_download_manager_coordinator.h"
#include "content/public/browser/notification_observer.h" #include "content/public/browser/notification_observer.h"
...@@ -28,6 +30,8 @@ class DownloadReporter ...@@ -28,6 +30,8 @@ class DownloadReporter
const content::NotificationDetails& details) override; const content::NotificationDetails& details) override;
// SimpleDownloadManagerCoordinator::Observer implementation: // SimpleDownloadManagerCoordinator::Observer implementation:
void OnManagerGoingDown(
download::SimpleDownloadManagerCoordinator* coordinator) override;
void OnDownloadCreated(download::DownloadItem* download) override; void OnDownloadCreated(download::DownloadItem* download) override;
// DownloadItem::Observer implementation: // DownloadItem::Observer implementation:
...@@ -38,8 +42,13 @@ class DownloadReporter ...@@ -38,8 +42,13 @@ class DownloadReporter
content::NotificationRegistrar profiles_registrar_; content::NotificationRegistrar profiles_registrar_;
base::flat_map<download::DownloadItem*, download::DownloadDangerType> base::flat_map<download::DownloadItem*, download::DownloadDangerType>
danger_types_; danger_types_;
std::set<download::SimpleDownloadManagerCoordinator*> observed_coordinators_; ScopedObserver<download::SimpleDownloadManagerCoordinator,
std::set<download::DownloadItem*> observed_downloads_; download::SimpleDownloadManagerCoordinator::Observer>
observed_coordinators_{this};
ScopedObserver<download::DownloadItem, download::DownloadItem::Observer>
observed_downloads_{this};
DISALLOW_COPY_AND_ASSIGN(DownloadReporter);
}; };
} // namespace safe_browsing } // namespace safe_browsing
......
...@@ -49,7 +49,9 @@ void AllDownloadEventNotifier::OnDownloadsInitialized( ...@@ -49,7 +49,9 @@ void AllDownloadEventNotifier::OnDownloadsInitialized(
active_downloads_only); active_downloads_only);
} }
void AllDownloadEventNotifier::OnManagerGoingDown() { void AllDownloadEventNotifier::OnManagerGoingDown(
SimpleDownloadManagerCoordinator* manager) {
DCHECK_EQ(manager, simple_download_manager_coordinator_);
for (auto& observer : observers_) for (auto& observer : observers_)
observer.OnManagerGoingDown(simple_download_manager_coordinator_); observer.OnManagerGoingDown(simple_download_manager_coordinator_);
simple_download_manager_coordinator_->RemoveObserver(this); simple_download_manager_coordinator_->RemoveObserver(this);
......
...@@ -31,7 +31,7 @@ SimpleDownloadManagerCoordinator::~SimpleDownloadManagerCoordinator() { ...@@ -31,7 +31,7 @@ SimpleDownloadManagerCoordinator::~SimpleDownloadManagerCoordinator() {
if (simple_download_manager_) if (simple_download_manager_)
simple_download_manager_->RemoveObserver(this); simple_download_manager_->RemoveObserver(this);
for (auto& observer : observers_) for (auto& observer : observers_)
observer.OnManagerGoingDown(); observer.OnManagerGoingDown(this);
} }
void SimpleDownloadManagerCoordinator::SetSimpleDownloadManager( void SimpleDownloadManagerCoordinator::SetSimpleDownloadManager(
......
...@@ -56,7 +56,7 @@ class COMPONENTS_DOWNLOAD_EXPORT AllDownloadEventNotifier ...@@ -56,7 +56,7 @@ class COMPONENTS_DOWNLOAD_EXPORT AllDownloadEventNotifier
private: private:
// SimpleDownloadManagerCoordinator::Observer // SimpleDownloadManagerCoordinator::Observer
void OnDownloadsInitialized(bool active_downloads_only) override; void OnDownloadsInitialized(bool active_downloads_only) override;
void OnManagerGoingDown() override; void OnManagerGoingDown(SimpleDownloadManagerCoordinator* manager) override;
void OnDownloadCreated(DownloadItem* item) override; void OnDownloadCreated(DownloadItem* item) override;
// DownloadItem::Observer // DownloadItem::Observer
......
...@@ -36,7 +36,8 @@ class COMPONENTS_DOWNLOAD_EXPORT SimpleDownloadManagerCoordinator ...@@ -36,7 +36,8 @@ class COMPONENTS_DOWNLOAD_EXPORT SimpleDownloadManagerCoordinator
Observer() = default; Observer() = default;
virtual ~Observer() = default; virtual ~Observer() = default;
virtual void OnManagerGoingDown() {} virtual void OnManagerGoingDown(
SimpleDownloadManagerCoordinator* coordinator) {}
virtual void OnDownloadsInitialized(bool active_downloads_only) {} virtual void OnDownloadsInitialized(bool active_downloads_only) {}
virtual void OnDownloadCreated(DownloadItem* item) {} virtual void OnDownloadCreated(DownloadItem* item) {}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment