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 f9a9371616a26ece8a5c4d277ee4eb4489e9d349..9723c89734e670879e842ee11d504085b5174b08 100644 |
| --- a/chrome/browser/ntp_snippets/content_suggestions_service_factory.cc |
| +++ b/chrome/browser/ntp_snippets/content_suggestions_service_factory.cc |
| @@ -16,6 +16,9 @@ |
| #include "chrome/browser/bookmarks/bookmark_model_factory.h" |
| #include "chrome/browser/browser_process.h" |
| #include "chrome/browser/favicon/large_icon_service_factory.h" |
| +#include "chrome/browser/gcm/gcm_profile_service_factory.h" |
| +#include "chrome/browser/gcm/instance_id/instance_id_profile_service.h" |
| +#include "chrome/browser/gcm/instance_id/instance_id_profile_service_factory.h" |
| #include "chrome/browser/history/history_service_factory.h" |
| #include "chrome/browser/profiles/profile.h" |
| #include "chrome/browser/search/suggestions/image_decoder_impl.h" |
| @@ -28,12 +31,16 @@ |
| #include "chrome/common/pref_names.h" |
| #include "components/bookmarks/browser/bookmark_model.h" |
| #include "components/browser_sync/profile_sync_service.h" |
| +#include "components/gcm_driver/gcm_profile_service.h" |
| #include "components/image_fetcher/core/image_decoder.h" |
| #include "components/image_fetcher/core/image_fetcher.h" |
| #include "components/image_fetcher/core/image_fetcher_impl.h" |
| #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/breaking_news/breaking_news_suggestions_provider.h" |
| +#include "components/ntp_snippets/breaking_news/content_suggestions_gcm_app_handler.h" |
| +#include "components/ntp_snippets/breaking_news/subscription_manager.h" |
| #include "components/ntp_snippets/category_rankers/category_ranker.h" |
| #include "components/ntp_snippets/content_suggestions_service.h" |
| #include "components/ntp_snippets/features.h" |
| @@ -88,16 +95,20 @@ using content::BrowserThread; |
| using history::HistoryService; |
| using image_fetcher::ImageFetcherImpl; |
| using ntp_snippets::BookmarkSuggestionsProvider; |
| +using ntp_snippets::BreakingNewsSuggestionsProvider; |
| using ntp_snippets::CategoryRanker; |
| +using ntp_snippets::ContentSuggestionsGCMAppHandler; |
| using ntp_snippets::ContentSuggestionsService; |
| using ntp_snippets::ForeignSessionsSuggestionsProvider; |
| using ntp_snippets::GetFetchEndpoint; |
| +using ntp_snippets::GetPushUpdatesSubscriptionEndpoint; |
| using ntp_snippets::PersistentScheduler; |
| using ntp_snippets::RemoteSuggestionsDatabase; |
| using ntp_snippets::RemoteSuggestionsFetcher; |
| using ntp_snippets::RemoteSuggestionsProviderImpl; |
| using ntp_snippets::RemoteSuggestionsSchedulerImpl; |
| using ntp_snippets::RemoteSuggestionsStatusService; |
| +using ntp_snippets::SubscriptionManager; |
| using ntp_snippets::TabDelegateSyncAdapter; |
| using ntp_snippets::UserClassifier; |
| using suggestions::ImageDecoderImpl; |
| @@ -268,6 +279,36 @@ void RegisterForeignSessionsProvider(SyncService* sync_service, |
| service->RegisterProvider(std::move(provider)); |
| } |
| +void SubscribeForGCMPushUpdates(PrefService* pref_service, |
| + ContentSuggestionsService* service, |
| + Profile* profile) { |
| + gcm::GCMDriver* gcm_driver = |
| + gcm::GCMProfileServiceFactory::GetForProfile(profile)->driver(); |
| + |
| + scoped_refptr<net::URLRequestContextGetter> request_context = |
| + content::BrowserContext::GetDefaultStoragePartition(profile) |
| + ->GetURLRequestContext(); |
| + |
| + auto subscription_manager = base::MakeUnique<SubscriptionManager>( |
| + request_context, pref_service, |
| + GetPushUpdatesSubscriptionEndpoint(chrome::GetChannel())); |
| + |
| + instance_id::InstanceIDProfileService* instance_id_profile_service = |
| + instance_id::InstanceIDProfileServiceFactory::GetForProfile(profile); |
| + CHECK(instance_id_profile_service); |
| + CHECK(instance_id_profile_service->driver()); |
| + |
| + auto handler = base::MakeUnique<ContentSuggestionsGCMAppHandler>( |
| + gcm_driver, instance_id_profile_service->driver(), pref_service, |
| + std::move(subscription_manager)); |
| + |
| + handler->StartListening(); |
| + |
| + auto provider = base::MakeUnique<BreakingNewsSuggestionsProvider>( |
| + service, std::move(handler)); |
|
sfiera
2017/06/07 13:58:14
So far you've punted on the question of how sugges
mamir
2017/06/08 09:58:28
Thank you very much for the suggestion which I lik
|
| + service->RegisterProvider(std::move(provider)); |
| +} |
| + |
| } // namespace |
| #endif // CONTENT_SUGGESTIONS_ENABLED |
| @@ -418,6 +459,10 @@ KeyedService* ContentSuggestionsServiceFactory::BuildServiceInstanceFor( |
| RegisterForeignSessionsProvider(sync_service, service, pref_service); |
| } |
| + if (base::FeatureList::IsEnabled( |
| + ntp_snippets::kContentSuggestionsPushFeature)) { |
| + SubscribeForGCMPushUpdates(pref_service, service, profile); |
| + } |
| return service; |
| #else |