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..fb33daa6170d963e215bf9b3f9cdb3af23cdf74f 100644 |
| --- a/components/ntp_snippets/content_suggestions_service.cc |
| +++ b/components/ntp_snippets/content_suggestions_service.cc |
| @@ -150,11 +150,25 @@ void ContentSuggestionsService::DismissCategory(Category category) { |
| if (providers_it == providers_by_category_.end()) |
| return; |
| + suggestions_by_category_[category].clear(); |
| + 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)); |
| } |
| +void ContentSuggestionsService::RestoreDismissedCategories() { |
| + // Make a copy as the original will be modified during iteration. |
| + auto dismissed_providers_by_category_copy = dismissed_providers_by_category_; |
| + for (const auto& category_provider_pair : |
| + dismissed_providers_by_category_copy) { |
| + RegisterCategoryIfRequired(category_provider_pair.second, |
| + category_provider_pair.first); |
| + } |
| + DCHECK(dismissed_providers_by_category_.empty()); |
| + dismissed_providers_by_category_.clear(); |
|
Marc Treib
2016/10/11 15:29:24
nit: No need for this - we don't handle DCHECK fai
Michael van Ouwerkerk
2016/10/11 15:37:43
Done.
|
| +} |
| + |
| void ContentSuggestionsService::AddObserver(Observer* observer) { |
| observers_.AddObserver(observer); |
| } |
| @@ -274,6 +288,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(); |