Chromium Code Reviews| Index: components/ntp_snippets/content_suggestions_service.cc |
| diff --git a/components/ntp_snippets/content_suggestions_service.cc b/components/ntp_snippets/content_suggestions_service.cc |
| index f52a9809d09dcae42dbad4cd9a62ff9598870423..e37e512de5938d8878d1803d6387aac508b930c0 100644 |
| --- a/components/ntp_snippets/content_suggestions_service.cc |
| +++ b/components/ntp_snippets/content_suggestions_service.cc |
| @@ -150,11 +150,22 @@ void ContentSuggestionsService::DismissCategory(Category category) { |
| if (providers_it == providers_by_category_.end()) |
| return; |
| + dismissed_providers_by_category_[providers_it->first] = providers_it->second; |
| providers_by_category_.erase(providers_it); |
| categories_.erase( |
| std::find(categories_.begin(), categories_.end(), category)); |
|
Marc Treib
2016/10/11 12:18:14
I think we agreed to also clear suggestions_by_cat
Michael van Ouwerkerk
2016/10/11 15:21:31
Done.
|
| } |
| +void ContentSuggestionsService::RestoreDismissedCategories() { |
| + auto dismissed_providers_by_category_copy = dismissed_providers_by_category_; |
|
Marc Treib
2016/10/11 12:18:14
nit: Add a comment on why the copy is needed?
Michael van Ouwerkerk
2016/10/11 15:21:31
Done.
|
| + for (const auto& category_provider_pair : |
| + dismissed_providers_by_category_copy) { |
| + RegisterCategoryIfRequired(category_provider_pair.second, |
| + category_provider_pair.first); |
| + } |
| + dismissed_providers_by_category_.clear(); |
|
Marc Treib
2016/10/11 12:18:15
Now it should already be empty at this point, righ
Michael van Ouwerkerk
2016/10/11 15:21:31
Done.
|
| +} |
| + |
| void ContentSuggestionsService::AddObserver(Observer* observer) { |
| observers_.AddObserver(observer); |
| } |
| @@ -274,6 +285,12 @@ bool ContentSuggestionsService::RegisterCategoryIfRequired( |
| return false; |
| } |
| + auto dismissed_it = dismissed_providers_by_category_.find(category); |
| + if (dismissed_it != dismissed_providers_by_category_.end()) { |
| + DCHECK_EQ(dismissed_it->second, provider); |
| + dismissed_providers_by_category_.erase(dismissed_it); |
| + } |
| + |
| providers_by_category_[category] = provider; |
| categories_.push_back(category); |
| SortCategories(); |