Index: chrome/browser/ntp_snippets/ntp_snippets_service_factory.cc |
diff --git a/chrome/browser/ntp_snippets/ntp_snippets_service_factory.cc b/chrome/browser/ntp_snippets/ntp_snippets_service_factory.cc |
index ab7bfc024b6313c1bb1f570d8c9923152e68e283..4e3a6865d61a22fc7cd93d1a8d77468ab2bed539 100644 |
--- a/chrome/browser/ntp_snippets/ntp_snippets_service_factory.cc |
+++ b/chrome/browser/ntp_snippets/ntp_snippets_service_factory.cc |
@@ -9,6 +9,7 @@ |
#include "base/memory/ptr_util.h" |
#include "base/memory/singleton.h" |
#include "chrome/browser/browser_process.h" |
+#include "chrome/browser/ntp_snippets/content_suggestions_service_factory.h" |
#include "chrome/browser/profiles/profile.h" |
#include "chrome/browser/search/suggestions/image_decoder_impl.h" |
#include "chrome/browser/search/suggestions/suggestions_service_factory.h" |
@@ -22,6 +23,7 @@ |
#include "components/image_fetcher/image_fetcher.h" |
#include "components/image_fetcher/image_fetcher_impl.h" |
#include "components/keyed_service/content/browser_context_dependency_manager.h" |
+#include "components/ntp_snippets/content_suggestions_service.h" |
#include "components/ntp_snippets/ntp_snippets_constants.h" |
#include "components/ntp_snippets/ntp_snippets_database.h" |
#include "components/ntp_snippets/ntp_snippets_fetcher.h" |
@@ -48,6 +50,7 @@ using image_fetcher::ImageFetcherImpl; |
using suggestions::ImageDecoderImpl; |
using suggestions::SuggestionsService; |
using suggestions::SuggestionsServiceFactory; |
+using ntp_snippets::ContentSuggestionsService; |
// static |
NTPSnippetsServiceFactory* NTPSnippetsServiceFactory::GetInstance() { |
@@ -70,6 +73,7 @@ NTPSnippetsServiceFactory::NTPSnippetsServiceFactory() |
DependsOn(ProfileSyncServiceFactory::GetInstance()); |
DependsOn(SigninManagerFactory::GetInstance()); |
DependsOn(SuggestionsServiceFactory::GetInstance()); |
+ DependsOn(ContentSuggestionsServiceFactory::GetInstance()); |
} |
NTPSnippetsServiceFactory::~NTPSnippetsServiceFactory() {} |
@@ -78,6 +82,13 @@ KeyedService* NTPSnippetsServiceFactory::BuildServiceInstanceFor( |
content::BrowserContext* context) const { |
Profile* profile = Profile::FromBrowserContext(context); |
+ ContentSuggestionsService* content_suggestions_service = |
+ ContentSuggestionsServiceFactory::GetForProfile(profile); |
+ // TODO(pke): When the AndroidBridge does not access the NTPSnippetsService |
+ // directly anymore (for retrieving content), the NTPSnippetsService does not |
+ // need to be created if content_suggestions_service->state() == DISABLED, |
+ // just return nullptr then and remove the other "if" below. |
+ |
// TODO(mvanouwerkerk): Move the enable logic into the service once we start |
// observing pref changes. |
bool enabled = false; |
@@ -111,18 +122,25 @@ KeyedService* NTPSnippetsServiceFactory::BuildServiceInstanceFor( |
base::SequencedWorkerPool::GetSequenceToken(), |
base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN); |
- return new ntp_snippets::NTPSnippetsService( |
- enabled, profile->GetPrefs(), suggestions_service, |
- g_browser_process->GetApplicationLocale(), scheduler, |
- base::MakeUnique<ntp_snippets::NTPSnippetsFetcher>( |
- signin_manager, token_service, request_context, |
- base::Bind(&safe_json::SafeJsonParser::Parse), |
- chrome::GetChannel() == version_info::Channel::STABLE), |
- base::MakeUnique<ImageFetcherImpl>( |
- base::MakeUnique<ImageDecoderImpl>(), request_context.get()), |
- base::MakeUnique<ImageDecoderImpl>(), |
- base::MakeUnique<ntp_snippets::NTPSnippetsDatabase>(database_dir, |
- task_runner), |
- base::MakeUnique<ntp_snippets::NTPSnippetsStatusService>(signin_manager, |
- sync_service)); |
+ ntp_snippets::NTPSnippetsService* ntp_snippets_service = |
+ new ntp_snippets::NTPSnippetsService( |
+ enabled, profile->GetPrefs(), suggestions_service, |
+ g_browser_process->GetApplicationLocale(), scheduler, |
+ base::MakeUnique<ntp_snippets::NTPSnippetsFetcher>( |
+ signin_manager, token_service, request_context, |
+ base::Bind(&safe_json::SafeJsonParser::Parse), |
+ chrome::GetChannel() == version_info::Channel::STABLE), |
+ base::MakeUnique<ImageFetcherImpl>( |
+ base::MakeUnique<ImageDecoderImpl>(), request_context.get()), |
+ base::MakeUnique<ImageDecoderImpl>(), |
+ base::MakeUnique<ntp_snippets::NTPSnippetsDatabase>(database_dir, |
+ task_runner), |
+ base::MakeUnique<ntp_snippets::NTPSnippetsStatusService>( |
+ signin_manager, sync_service)); |
+ |
+ if (content_suggestions_service->state() == |
+ ContentSuggestionsService::State::ENABLED) { |
+ content_suggestions_service->RegisterProvider(ntp_snippets_service); |
+ } |
+ return ntp_snippets_service; |
} |