Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(440)

Unified Diff: components/ntp_snippets/content_suggestions_service.cc

Issue 2205233002: Combine all suggestions factories into ContentSuggestionsServiceFactory (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Bernhard's comments Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 362b1d8bda00fa776c55e646cec983651011c4d5..1b9ecb839cb7d4cedb90f40dc88d6be2ce605fd9 100644
--- a/components/ntp_snippets/content_suggestions_service.cc
+++ b/components/ntp_snippets/content_suggestions_service.cc
@@ -25,10 +25,12 @@ ContentSuggestionsService::ContentSuggestionsService(State state)
ContentSuggestionsService::~ContentSuggestionsService() {}
void ContentSuggestionsService::Shutdown() {
- DCHECK(providers_by_category_.empty());
- DCHECK(categories_.empty());
- DCHECK(suggestions_by_category_.empty());
- DCHECK(id_category_map_.empty());
+ ntp_snippets_service_ = nullptr;
+ id_category_map_.clear();
+ suggestions_by_category_.clear();
+ providers_by_category_.clear();
+ categories_.clear();
+ providers_.clear();
state_ = State::DISABLED;
FOR_EACH_OBSERVER(Observer, observers_, ContentSuggestionsServiceShutdown());
}
@@ -127,19 +129,15 @@ void ContentSuggestionsService::RemoveObserver(Observer* observer) {
}
void ContentSuggestionsService::RegisterProvider(
- ContentSuggestionsProvider* provider) {
- // TODO(pke): When NTPSnippetsService is purely a provider, think about
- // removing this state check.
- if (state_ == State::DISABLED)
- return;
-
- provider->SetObserver(this);
+ std::unique_ptr<ContentSuggestionsProvider> provider) {
+ DCHECK(state_ == State::ENABLED);
for (Category category : provider->GetProvidedCategories()) {
DCHECK_NE(CategoryStatus::NOT_PROVIDED,
provider->GetCategoryStatus(category));
- RegisterCategoryIfRequired(provider, category);
+ RegisterCategoryIfRequired(provider.get(), category);
NotifyCategoryStatusChanged(category);
}
+ providers_.push_back(std::move(provider));
}
////////////////////////////////////////////////////////////////////////////////
@@ -192,22 +190,6 @@ void ContentSuggestionsService::OnCategoryStatusChanged(
NotifyCategoryStatusChanged(category);
}
-void ContentSuggestionsService::OnProviderShutdown(
- ContentSuggestionsProvider* provider) {
- for (Category category : provider->GetProvidedCategories()) {
- auto iterator = std::find(categories_.begin(), categories_.end(), category);
- DCHECK(iterator != categories_.end());
- categories_.erase(iterator);
- for (const ContentSuggestion& suggestion :
- suggestions_by_category_[category]) {
- id_category_map_.erase(suggestion.id());
- }
- suggestions_by_category_.erase(category);
- providers_by_category_.erase(category);
- NotifyCategoryStatusChanged(category);
- }
-}
-
bool ContentSuggestionsService::RegisterCategoryIfRequired(
ContentSuggestionsProvider* provider,
Category category) {
« no previous file with comments | « components/ntp_snippets/content_suggestions_service.h ('k') | components/ntp_snippets/content_suggestions_service_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698