| Index: components/ntp_snippets/remote/ntp_snippets_service.cc
|
| diff --git a/components/ntp_snippets/remote/ntp_snippets_service.cc b/components/ntp_snippets/remote/ntp_snippets_service.cc
|
| index 64eb84f7ad6f0f60080ad4e35302c5c8ae904df7..4acda602c6cb089bbd7c340b2b7910bd0ea41340 100644
|
| --- a/components/ntp_snippets/remote/ntp_snippets_service.cc
|
| +++ b/components/ntp_snippets/remote/ntp_snippets_service.cc
|
| @@ -12,6 +12,7 @@
|
| #include "base/files/file_path.h"
|
| #include "base/files/file_util.h"
|
| #include "base/location.h"
|
| +#include "base/memory/ptr_util.h"
|
| #include "base/metrics/histogram_macros.h"
|
| #include "base/metrics/sparse_histogram.h"
|
| #include "base/path_service.h"
|
| @@ -490,6 +491,9 @@ void NTPSnippetsService::OnDatabaseLoaded(NTPSnippet::PtrVector snippets) {
|
| DCHECK_EQ(1u, categories_.size()); // Only articles category, so far.
|
| DCHECK(categories_.find(articles_category_) != categories_.end());
|
|
|
| + ClearExpiredDismissedSnippets();
|
| + ClearOrphanedImages(snippets);
|
| +
|
| // TODO(sfiera): support non-article categories in database.
|
| CategoryContent* content = &categories_[articles_category_];
|
| for (std::unique_ptr<NTPSnippet>& snippet : snippets) {
|
| @@ -505,8 +509,6 @@ void NTPSnippetsService::OnDatabaseLoaded(NTPSnippet::PtrVector snippets) {
|
| return lhs->score() > rhs->score();
|
| });
|
|
|
| - ClearExpiredDismissedSnippets();
|
| - ClearOrphanedImages();
|
| FinishInitialization();
|
| }
|
|
|
| @@ -591,7 +593,6 @@ void NTPSnippetsService::OnFetchFinished(
|
| UMA_HISTOGRAM_SPARSE_SLOWLY("NewTabPage.Snippets.NumArticlesFetched",
|
| fetched_category.snippets.size());
|
| }
|
| -
|
| ReplaceSnippets(category, std::move(fetched_category.snippets));
|
| }
|
| }
|
| @@ -767,8 +768,13 @@ void NTPSnippetsService::ClearExpiredDismissedSnippets() {
|
| }
|
| }
|
|
|
| -void NTPSnippetsService::ClearOrphanedImages() {
|
| - // TODO(jkrcal): Implement. crbug.com/649009
|
| +void NTPSnippetsService::ClearOrphanedImages(
|
| + const NTPSnippet::PtrVector& snippets) {
|
| + auto alive_snippets = base::MakeUnique<std::set<std::string>>();
|
| + for (const auto& snippet_ptr : snippets) {
|
| + alive_snippets->insert(snippet_ptr->id());
|
| + }
|
| + database_->GarbageCollectImages(std::move(alive_snippets));
|
| }
|
|
|
| void NTPSnippetsService::NukeAllSnippets() {
|
|
|