| Index: chrome/browser/ntp_snippets/content_suggestions_service_factory.cc
|
| diff --git a/chrome/browser/ntp_snippets/content_suggestions_service_factory.cc b/chrome/browser/ntp_snippets/content_suggestions_service_factory.cc
|
| index d43779da51fa53682290020e15d65164a608cb69..401cda05023307225aae7cff9be8bc125ff23c57 100644
|
| --- a/chrome/browser/ntp_snippets/content_suggestions_service_factory.cc
|
| +++ b/chrome/browser/ntp_snippets/content_suggestions_service_factory.cc
|
| @@ -24,6 +24,7 @@
|
| #include "components/keyed_service/content/browser_context_dependency_manager.h"
|
| #include "components/keyed_service/core/service_access_type.h"
|
| #include "components/ntp_snippets/bookmarks/bookmark_suggestions_provider.h"
|
| +#include "components/ntp_snippets/category_factory.h"
|
| #include "components/ntp_snippets/content_suggestions_service.h"
|
| #include "components/ntp_snippets/features.h"
|
| #include "components/ntp_snippets/ntp_snippets_constants.h"
|
| @@ -61,6 +62,7 @@ using content::BrowserThread;
|
| using history::HistoryService;
|
| using image_fetcher::ImageFetcherImpl;
|
| using ntp_snippets::BookmarkSuggestionsProvider;
|
| +using ntp_snippets::CategoryFactory;
|
| using ntp_snippets::ContentSuggestionsService;
|
| using ntp_snippets::NTPSnippetsDatabase;
|
| using ntp_snippets::NTPSnippetsFetcher;
|
| @@ -80,6 +82,92 @@ void ClearScheduledTasks() {
|
| #endif // OS_ANDROID
|
| }
|
|
|
| +#if defined(OS_ANDROID)
|
| +void RegisterOfflinePageProvider(OfflinePageModel* offline_page_model,
|
| + ContentSuggestionsService* service,
|
| + CategoryFactory* category_factory,
|
| + PrefService* pref_service) {
|
| + bool recent_tabs_enabled = base::FeatureList::IsEnabled(
|
| + ntp_snippets::kRecentOfflineTabSuggestionsFeature);
|
| + bool downloads_enabled =
|
| + base::FeatureList::IsEnabled(ntp_snippets::kDownloadSuggestionsFeature);
|
| + bool download_manager_ui_enabled =
|
| + base::FeatureList::IsEnabled(chrome::android::kDownloadsUiFeature);
|
| + std::unique_ptr<OfflinePageSuggestionsProvider>
|
| + offline_page_suggestions_provider =
|
| + base::MakeUnique<OfflinePageSuggestionsProvider>(
|
| + recent_tabs_enabled, downloads_enabled,
|
| + download_manager_ui_enabled, service, category_factory,
|
| + offline_page_model, pref_service);
|
| + service->RegisterProvider(std::move(offline_page_suggestions_provider));
|
| +}
|
| +#endif // OS_ANDROID
|
| +
|
| +void RegisterBookmarkProvider(BookmarkModel* bookmark_model,
|
| + ContentSuggestionsService* service,
|
| + CategoryFactory* category_factory,
|
| + PrefService* pref_service) {
|
| + std::unique_ptr<BookmarkSuggestionsProvider> bookmark_suggestions_provider =
|
| + base::MakeUnique<BookmarkSuggestionsProvider>(
|
| + service, category_factory, bookmark_model, pref_service);
|
| + service->RegisterProvider(std::move(bookmark_suggestions_provider));
|
| +}
|
| +
|
| +#if defined(OS_ANDROID)
|
| +void RegisterPhysicalWebPageProvider(ContentSuggestionsService* service,
|
| + CategoryFactory* category_factory) {
|
| + std::unique_ptr<PhysicalWebPageSuggestionsProvider>
|
| + physical_web_page_suggestions_provider =
|
| + base::MakeUnique<PhysicalWebPageSuggestionsProvider>(
|
| + service, category_factory);
|
| + service->RegisterProvider(std::move(physical_web_page_suggestions_provider));
|
| +}
|
| +#endif // OS_ANDROID
|
| +
|
| +void RegisterArticleProvider(SigninManagerBase* signin_manager,
|
| + OAuth2TokenService* token_service,
|
| + HistoryService* history_service,
|
| + SuggestionsService* suggestions_service,
|
| + ContentSuggestionsService* service,
|
| + CategoryFactory* category_factory,
|
| + PrefService* pref_service,
|
| + Profile* profile) {
|
| + scoped_refptr<net::URLRequestContextGetter> request_context =
|
| + content::BrowserContext::GetDefaultStoragePartition(profile)
|
| + ->GetURLRequestContext();
|
| +
|
| + NTPSnippetsScheduler* scheduler = nullptr;
|
| +#if defined(OS_ANDROID)
|
| + scheduler = NTPSnippetsLauncher::Get();
|
| +#endif // OS_ANDROID
|
| + base::FilePath database_dir(
|
| + profile->GetPath().Append(ntp_snippets::kDatabaseFolder));
|
| + scoped_refptr<base::SequencedTaskRunner> task_runner =
|
| + BrowserThread::GetBlockingPool()
|
| + ->GetSequencedTaskRunnerWithShutdownBehavior(
|
| + base::SequencedWorkerPool::GetSequenceToken(),
|
| + base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN);
|
| + bool is_stable_channel =
|
| + chrome::GetChannel() == version_info::Channel::STABLE;
|
| + std::unique_ptr<NTPSnippetsService> ntp_snippets_service =
|
| + base::MakeUnique<NTPSnippetsService>(
|
| + service, service->category_factory(), pref_service, history_service,
|
| + suggestions_service, g_browser_process->GetApplicationLocale(),
|
| + scheduler,
|
| + base::MakeUnique<NTPSnippetsFetcher>(
|
| + signin_manager, token_service, request_context, pref_service,
|
| + category_factory, base::Bind(&safe_json::SafeJsonParser::Parse),
|
| + is_stable_channel),
|
| + base::MakeUnique<ImageFetcherImpl>(
|
| + base::MakeUnique<ImageDecoderImpl>(), request_context.get()),
|
| + base::MakeUnique<ImageDecoderImpl>(),
|
| + base::MakeUnique<NTPSnippetsDatabase>(database_dir, task_runner),
|
| + base::MakeUnique<NTPSnippetsStatusService>(signin_manager,
|
| + pref_service));
|
| + service->set_ntp_snippets_service(ntp_snippets_service.get());
|
| + service->RegisterProvider(std::move(ntp_snippets_service));
|
| +}
|
| +
|
| } // namespace
|
|
|
| // static
|
| @@ -130,98 +218,50 @@ KeyedService* ContentSuggestionsServiceFactory::BuildServiceInstanceFor(
|
| return service;
|
| }
|
|
|
| + CategoryFactory* category_factory = service->category_factory();
|
| + PrefService* pref_service = profile->GetPrefs();
|
| +#if defined(OS_ANDROID)
|
| + OfflinePageModel* offline_page_model =
|
| + OfflinePageModelFactory::GetForBrowserContext(profile);
|
| +#endif // OS_ANDROID
|
| + BookmarkModel* bookmark_model =
|
| + BookmarkModelFactory::GetForBrowserContext(profile);
|
| + SigninManagerBase* signin_manager =
|
| + SigninManagerFactory::GetForProfile(profile);
|
| + OAuth2TokenService* token_service =
|
| + ProfileOAuth2TokenServiceFactory::GetForProfile(profile);
|
| + HistoryService* history_service = HistoryServiceFactory::GetForProfile(
|
| + profile, ServiceAccessType::EXPLICIT_ACCESS);
|
| + SuggestionsService* suggestions_service =
|
| + SuggestionsServiceFactory::GetForProfile(profile);
|
| +
|
| #if defined(OS_ANDROID)
|
| - // Create the OfflinePageSuggestionsProvider.
|
| bool recent_tabs_enabled = base::FeatureList::IsEnabled(
|
| ntp_snippets::kRecentOfflineTabSuggestionsFeature);
|
| bool downloads_enabled =
|
| base::FeatureList::IsEnabled(ntp_snippets::kDownloadSuggestionsFeature);
|
| - bool download_manager_ui_enabled =
|
| - base::FeatureList::IsEnabled(chrome::android::kDownloadsUiFeature);
|
| if (recent_tabs_enabled || downloads_enabled) {
|
| - OfflinePageModel* offline_page_model =
|
| - OfflinePageModelFactory::GetForBrowserContext(profile);
|
| -
|
| - std::unique_ptr<OfflinePageSuggestionsProvider>
|
| - offline_page_suggestions_provider =
|
| - base::MakeUnique<OfflinePageSuggestionsProvider>(
|
| - recent_tabs_enabled, downloads_enabled,
|
| - download_manager_ui_enabled, service,
|
| - service->category_factory(), offline_page_model,
|
| - profile->GetPrefs());
|
| - service->RegisterProvider(std::move(offline_page_suggestions_provider));
|
| + RegisterOfflinePageProvider(offline_page_model, service, category_factory,
|
| + pref_service);
|
| }
|
| #endif // OS_ANDROID
|
|
|
| - // Create the BookmarkSuggestionsProvider.
|
| - if (base::FeatureList::IsEnabled(
|
| - ntp_snippets::kBookmarkSuggestionsFeature)) {
|
| - BookmarkModel* bookmark_model =
|
| - BookmarkModelFactory::GetForBrowserContext(profile);
|
| - std::unique_ptr<BookmarkSuggestionsProvider> bookmark_suggestions_provider =
|
| - base::MakeUnique<BookmarkSuggestionsProvider>(
|
| - service, service->category_factory(), bookmark_model,
|
| - profile->GetPrefs());
|
| - service->RegisterProvider(std::move(bookmark_suggestions_provider));
|
| + if (base::FeatureList::IsEnabled(ntp_snippets::kBookmarkSuggestionsFeature)) {
|
| + RegisterBookmarkProvider(bookmark_model, service, category_factory,
|
| + pref_service);
|
| }
|
|
|
| #if defined(OS_ANDROID)
|
| - // Create the PhysicalWebPageSuggestionsProvider.
|
| if (base::FeatureList::IsEnabled(
|
| ntp_snippets::kPhysicalWebPageSuggestionsFeature)) {
|
| - std::unique_ptr<PhysicalWebPageSuggestionsProvider>
|
| - physical_web_page_suggestions_provider =
|
| - base::MakeUnique<PhysicalWebPageSuggestionsProvider>(
|
| - service, service->category_factory());
|
| - service->RegisterProvider(
|
| - std::move(physical_web_page_suggestions_provider));
|
| + RegisterPhysicalWebPageProvider(service, category_factory);
|
| }
|
| #endif // OS_ANDROID
|
|
|
| if (base::FeatureList::IsEnabled(ntp_snippets::kArticleSuggestionsFeature)) {
|
| - // Create the NTPSnippetsService (articles provider).
|
| - SigninManagerBase* signin_manager =
|
| - SigninManagerFactory::GetForProfile(profile);
|
| - OAuth2TokenService* token_service =
|
| - ProfileOAuth2TokenServiceFactory::GetForProfile(profile);
|
| - scoped_refptr<net::URLRequestContextGetter> request_context =
|
| - content::BrowserContext::GetDefaultStoragePartition(context)
|
| - ->GetURLRequestContext();
|
| - HistoryService* history_service = HistoryServiceFactory::GetForProfile(
|
| - profile, ServiceAccessType::EXPLICIT_ACCESS);
|
| - SuggestionsService* suggestions_service =
|
| - SuggestionsServiceFactory::GetForProfile(profile);
|
| - NTPSnippetsScheduler* scheduler = nullptr;
|
| -#if defined(OS_ANDROID)
|
| - scheduler = NTPSnippetsLauncher::Get();
|
| -#endif // OS_ANDROID
|
| - base::FilePath database_dir(
|
| - profile->GetPath().Append(ntp_snippets::kDatabaseFolder));
|
| - scoped_refptr<base::SequencedTaskRunner> task_runner =
|
| - BrowserThread::GetBlockingPool()
|
| - ->GetSequencedTaskRunnerWithShutdownBehavior(
|
| - base::SequencedWorkerPool::GetSequenceToken(),
|
| - base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN);
|
| - bool is_stable_channel =
|
| - chrome::GetChannel() == version_info::Channel::STABLE;
|
| - std::unique_ptr<NTPSnippetsService> ntp_snippets_service =
|
| - base::MakeUnique<NTPSnippetsService>(
|
| - service, service->category_factory(), profile->GetPrefs(),
|
| - history_service, suggestions_service,
|
| - g_browser_process->GetApplicationLocale(),
|
| - scheduler, base::MakeUnique<NTPSnippetsFetcher>(
|
| - signin_manager, token_service, request_context,
|
| - profile->GetPrefs(), service->category_factory(),
|
| - base::Bind(&safe_json::SafeJsonParser::Parse),
|
| - is_stable_channel),
|
| - base::MakeUnique<ImageFetcherImpl>(
|
| - base::MakeUnique<ImageDecoderImpl>(), request_context.get()),
|
| - base::MakeUnique<ImageDecoderImpl>(),
|
| - base::MakeUnique<NTPSnippetsDatabase>(database_dir, task_runner),
|
| - base::MakeUnique<NTPSnippetsStatusService>(signin_manager,
|
| - profile->GetPrefs()));
|
| - service->set_ntp_snippets_service(ntp_snippets_service.get());
|
| - service->RegisterProvider(std::move(ntp_snippets_service));
|
| + RegisterArticleProvider(signin_manager, token_service, history_service,
|
| + suggestions_service, service, category_factory,
|
| + pref_service, profile);
|
| }
|
|
|
| return service;
|
|
|