| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/ntp_snippets/content_suggestions_service_factory.h" | 5 #include "chrome/browser/ntp_snippets/content_suggestions_service_factory.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/feature_list.h" | 9 #include "base/feature_list.h" |
| 10 #include "base/files/file_path.h" | 10 #include "base/files/file_path.h" |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 88 using ntp_snippets::RemoteSuggestionsDatabase; | 88 using ntp_snippets::RemoteSuggestionsDatabase; |
| 89 using ntp_snippets::RemoteSuggestionsFetcher; | 89 using ntp_snippets::RemoteSuggestionsFetcher; |
| 90 using ntp_snippets::RemoteSuggestionsProviderImpl; | 90 using ntp_snippets::RemoteSuggestionsProviderImpl; |
| 91 using ntp_snippets::RemoteSuggestionsStatusService; | 91 using ntp_snippets::RemoteSuggestionsStatusService; |
| 92 using ntp_snippets::SchedulingRemoteSuggestionsProvider; | 92 using ntp_snippets::SchedulingRemoteSuggestionsProvider; |
| 93 using ntp_snippets::TabDelegateSyncAdapter; | 93 using ntp_snippets::TabDelegateSyncAdapter; |
| 94 using suggestions::ImageDecoderImpl; | 94 using suggestions::ImageDecoderImpl; |
| 95 using syncer::SyncService; | 95 using syncer::SyncService; |
| 96 using translate::LanguageModel; | 96 using translate::LanguageModel; |
| 97 | 97 |
| 98 // For now, ContentSuggestionsService must only be instantiated on Android. |
| 99 // See also crbug.com/688366. |
| 100 #if defined(OS_ANDROID) |
| 101 #define CONTENT_SUGGESTIONS_ENABLED 1 |
| 102 #else |
| 103 #define CONTENT_SUGGESTIONS_ENABLED 0 |
| 104 #endif // OS_ANDROID |
| 105 |
| 106 // The actual #if that does the work is below in BuildServiceInstanceFor. This |
| 107 // one is just required to avoid "unused code" compiler errors. |
| 108 #if CONTENT_SUGGESTIONS_ENABLED |
| 109 |
| 98 namespace { | 110 namespace { |
| 99 | 111 |
| 100 #if defined(OS_ANDROID) | 112 #if defined(OS_ANDROID) |
| 101 | 113 |
| 102 bool IsRecentTabProviderEnabled() { | 114 bool IsRecentTabProviderEnabled() { |
| 103 return base::FeatureList::IsEnabled( | 115 return base::FeatureList::IsEnabled( |
| 104 ntp_snippets::kRecentOfflineTabSuggestionsFeature) && | 116 ntp_snippets::kRecentOfflineTabSuggestionsFeature) && |
| 105 base::FeatureList::IsEnabled( | 117 base::FeatureList::IsEnabled( |
| 106 offline_pages::kOffliningRecentPagesFeature); | 118 offline_pages::kOffliningRecentPagesFeature); |
| 107 } | 119 } |
| 108 | 120 |
| 109 void RegisterRecentTabProvider(OfflinePageModel* offline_page_model, | 121 void RegisterRecentTabProvider(OfflinePageModel* offline_page_model, |
| 110 ContentSuggestionsService* service, | 122 ContentSuggestionsService* service, |
| 111 PrefService* pref_service) { | 123 PrefService* pref_service) { |
| 112 auto provider = base::MakeUnique<RecentTabSuggestionsProvider>( | 124 auto provider = base::MakeUnique<RecentTabSuggestionsProvider>( |
| 113 service, offline_page_model, pref_service); | 125 service, offline_page_model, pref_service); |
| 114 service->RegisterProvider(std::move(provider)); | 126 service->RegisterProvider(std::move(provider)); |
| 115 } | 127 } |
| 116 | 128 |
| 117 void RegisterDownloadsProvider(OfflinePageModel* offline_page_model, | 129 void RegisterDownloadsProvider(OfflinePageModel* offline_page_model, |
| 118 DownloadManager* download_manager, | 130 DownloadManager* download_manager, |
| 119 DownloadHistory* download_history, | 131 DownloadHistory* download_history, |
| 120 ContentSuggestionsService* service, | 132 ContentSuggestionsService* service, |
| 121 PrefService* pref_service) { | 133 PrefService* pref_service) { |
| 122 auto provider = base::MakeUnique<DownloadSuggestionsProvider>( | 134 auto provider = base::MakeUnique<DownloadSuggestionsProvider>( |
| 123 service, offline_page_model, download_manager, download_history, | 135 service, offline_page_model, download_manager, download_history, |
| 124 pref_service, base::MakeUnique<base::DefaultClock>()); | 136 pref_service, base::MakeUnique<base::DefaultClock>()); |
| 125 service->RegisterProvider(std::move(provider)); | 137 service->RegisterProvider(std::move(provider)); |
| 126 } | 138 } |
| 139 |
| 127 #endif // OS_ANDROID | 140 #endif // OS_ANDROID |
| 128 | 141 |
| 129 void RegisterBookmarkProvider(BookmarkModel* bookmark_model, | 142 void RegisterBookmarkProvider(BookmarkModel* bookmark_model, |
| 130 ContentSuggestionsService* service, | 143 ContentSuggestionsService* service, |
| 131 PrefService* pref_service) { | 144 PrefService* pref_service) { |
| 132 auto provider = base::MakeUnique<BookmarkSuggestionsProvider>( | 145 auto provider = base::MakeUnique<BookmarkSuggestionsProvider>( |
| 133 service, bookmark_model, pref_service); | 146 service, bookmark_model, pref_service); |
| 134 service->RegisterProvider(std::move(provider)); | 147 service->RegisterProvider(std::move(provider)); |
| 135 } | 148 } |
| 136 | 149 |
| 137 #if defined(OS_ANDROID) | 150 #if defined(OS_ANDROID) |
| 138 | 151 |
| 139 bool IsPhysicalWebPageProviderEnabled() { | 152 bool IsPhysicalWebPageProviderEnabled() { |
| 140 return base::FeatureList::IsEnabled( | 153 return base::FeatureList::IsEnabled( |
| 141 ntp_snippets::kPhysicalWebPageSuggestionsFeature) && | 154 ntp_snippets::kPhysicalWebPageSuggestionsFeature) && |
| 142 base::FeatureList::IsEnabled(chrome::android::kPhysicalWebFeature); | 155 base::FeatureList::IsEnabled(chrome::android::kPhysicalWebFeature); |
| 143 } | 156 } |
| 144 | 157 |
| 145 void RegisterPhysicalWebPageProvider( | 158 void RegisterPhysicalWebPageProvider( |
| 146 ContentSuggestionsService* service, | 159 ContentSuggestionsService* service, |
| 147 PhysicalWebDataSource* physical_web_data_source, | 160 PhysicalWebDataSource* physical_web_data_source, |
| 148 PrefService* pref_service) { | 161 PrefService* pref_service) { |
| 149 auto provider = base::MakeUnique<PhysicalWebPageSuggestionsProvider>( | 162 auto provider = base::MakeUnique<PhysicalWebPageSuggestionsProvider>( |
| 150 service, physical_web_data_source, pref_service); | 163 service, physical_web_data_source, pref_service); |
| 151 service->RegisterProvider(std::move(provider)); | 164 service->RegisterProvider(std::move(provider)); |
| 152 } | 165 } |
| 166 |
| 153 #endif // OS_ANDROID | 167 #endif // OS_ANDROID |
| 154 | 168 |
| 155 void RegisterArticleProvider(SigninManagerBase* signin_manager, | 169 void RegisterArticleProvider(SigninManagerBase* signin_manager, |
| 156 OAuth2TokenService* token_service, | 170 OAuth2TokenService* token_service, |
| 157 ContentSuggestionsService* service, | 171 ContentSuggestionsService* service, |
| 158 LanguageModel* language_model, | 172 LanguageModel* language_model, |
| 159 PrefService* pref_service, | 173 PrefService* pref_service, |
| 160 Profile* profile) { | 174 Profile* profile) { |
| 161 scoped_refptr<net::URLRequestContextGetter> request_context = | 175 scoped_refptr<net::URLRequestContextGetter> request_context = |
| 162 content::BrowserContext::GetDefaultStoragePartition(profile) | 176 content::BrowserContext::GetDefaultStoragePartition(profile) |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 206 PrefService* pref_service) { | 220 PrefService* pref_service) { |
| 207 std::unique_ptr<TabDelegateSyncAdapter> sync_adapter = | 221 std::unique_ptr<TabDelegateSyncAdapter> sync_adapter = |
| 208 base::MakeUnique<TabDelegateSyncAdapter>(sync_service); | 222 base::MakeUnique<TabDelegateSyncAdapter>(sync_service); |
| 209 auto provider = base::MakeUnique<ForeignSessionsSuggestionsProvider>( | 223 auto provider = base::MakeUnique<ForeignSessionsSuggestionsProvider>( |
| 210 service, std::move(sync_adapter), pref_service); | 224 service, std::move(sync_adapter), pref_service); |
| 211 service->RegisterProvider(std::move(provider)); | 225 service->RegisterProvider(std::move(provider)); |
| 212 } | 226 } |
| 213 | 227 |
| 214 } // namespace | 228 } // namespace |
| 215 | 229 |
| 230 #endif // CONTENT_SUGGESTIONS_ENABLED |
| 231 |
| 216 // static | 232 // static |
| 217 ContentSuggestionsServiceFactory* | 233 ContentSuggestionsServiceFactory* |
| 218 ContentSuggestionsServiceFactory::GetInstance() { | 234 ContentSuggestionsServiceFactory::GetInstance() { |
| 219 return base::Singleton<ContentSuggestionsServiceFactory>::get(); | 235 return base::Singleton<ContentSuggestionsServiceFactory>::get(); |
| 220 } | 236 } |
| 221 | 237 |
| 222 // static | 238 // static |
| 223 ContentSuggestionsService* ContentSuggestionsServiceFactory::GetForProfile( | 239 ContentSuggestionsService* ContentSuggestionsServiceFactory::GetForProfile( |
| 224 Profile* profile) { | 240 Profile* profile) { |
| 225 return static_cast<ContentSuggestionsService*>( | 241 return static_cast<ContentSuggestionsService*>( |
| (...skipping 18 matching lines...) Expand all Loading... |
| 244 #endif // OS_ANDROID | 260 #endif // OS_ANDROID |
| 245 DependsOn(ProfileOAuth2TokenServiceFactory::GetInstance()); | 261 DependsOn(ProfileOAuth2TokenServiceFactory::GetInstance()); |
| 246 DependsOn(ProfileSyncServiceFactory::GetInstance()); | 262 DependsOn(ProfileSyncServiceFactory::GetInstance()); |
| 247 DependsOn(SigninManagerFactory::GetInstance()); | 263 DependsOn(SigninManagerFactory::GetInstance()); |
| 248 } | 264 } |
| 249 | 265 |
| 250 ContentSuggestionsServiceFactory::~ContentSuggestionsServiceFactory() = default; | 266 ContentSuggestionsServiceFactory::~ContentSuggestionsServiceFactory() = default; |
| 251 | 267 |
| 252 KeyedService* ContentSuggestionsServiceFactory::BuildServiceInstanceFor( | 268 KeyedService* ContentSuggestionsServiceFactory::BuildServiceInstanceFor( |
| 253 content::BrowserContext* context) const { | 269 content::BrowserContext* context) const { |
| 270 #if CONTENT_SUGGESTIONS_ENABLED |
| 271 |
| 254 using State = ContentSuggestionsService::State; | 272 using State = ContentSuggestionsService::State; |
| 255 Profile* profile = Profile::FromBrowserContext(context); | 273 Profile* profile = Profile::FromBrowserContext(context); |
| 256 DCHECK(!profile->IsOffTheRecord()); | 274 DCHECK(!profile->IsOffTheRecord()); |
| 257 | 275 |
| 258 // Create the ContentSuggestionsService. | 276 // Create the ContentSuggestionsService. |
| 259 SigninManagerBase* signin_manager = | 277 SigninManagerBase* signin_manager = |
| 260 SigninManagerFactory::GetForProfile(profile); | 278 SigninManagerFactory::GetForProfile(profile); |
| 261 HistoryService* history_service = HistoryServiceFactory::GetForProfile( | 279 HistoryService* history_service = HistoryServiceFactory::GetForProfile( |
| 262 profile, ServiceAccessType::EXPLICIT_ACCESS); | 280 profile, ServiceAccessType::EXPLICIT_ACCESS); |
| 263 PrefService* pref_service = profile->GetPrefs(); | 281 PrefService* pref_service = profile->GetPrefs(); |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 322 RegisterArticleProvider(signin_manager, token_service, service, | 340 RegisterArticleProvider(signin_manager, token_service, service, |
| 323 language_model, pref_service, profile); | 341 language_model, pref_service, profile); |
| 324 } | 342 } |
| 325 | 343 |
| 326 if (base::FeatureList::IsEnabled( | 344 if (base::FeatureList::IsEnabled( |
| 327 ntp_snippets::kForeignSessionsSuggestionsFeature)) { | 345 ntp_snippets::kForeignSessionsSuggestionsFeature)) { |
| 328 RegisterForeignSessionsProvider(sync_service, service, pref_service); | 346 RegisterForeignSessionsProvider(sync_service, service, pref_service); |
| 329 } | 347 } |
| 330 | 348 |
| 331 return service; | 349 return service; |
| 350 |
| 351 #else |
| 352 return nullptr; |
| 353 #endif // CONTENT_SUGGESTIONS_ENABLED |
| 332 } | 354 } |
| OLD | NEW |