Chromium Code Reviews| 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..15b7e8cdff9babe0f48dc5c46cfc118733fd8cf5 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,90 @@ void ClearScheduledTasks() { |
| #endif // 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); |
| + if (recent_tabs_enabled || downloads_enabled) { |
|
Marc Treib
2016/08/25 13:51:54
Hm, so this method checks the features itself, but
vitaliii
2016/08/25 14:24:24
Done.
|
| + 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)); |
| + } |
| +} |
| + |
| +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)); |
| +} |
| + |
| +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)); |
| +} |
| + |
| +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 +216,42 @@ KeyedService* ContentSuggestionsServiceFactory::BuildServiceInstanceFor( |
| return service; |
| } |
| -#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); |
| + CategoryFactory* category_factory = service->category_factory(); |
| + PrefService* pref_service = profile->GetPrefs(); |
| + OfflinePageModel* offline_page_model = |
| + OfflinePageModelFactory::GetForBrowserContext(profile); |
| + 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); |
| - 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)); |
| - } |
| +#if defined(OS_ANDROID) |
| + 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; |