| 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 "base/feature_list.h" | 7 #include "base/feature_list.h" |
| 8 #include "base/files/file_path.h" | 8 #include "base/files/file_path.h" |
| 9 #include "base/memory/ptr_util.h" | 9 #include "base/memory/ptr_util.h" |
| 10 #include "base/memory/singleton.h" | 10 #include "base/memory/singleton.h" |
| (...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 119 std::unique_ptr<PhysicalWebPageSuggestionsProvider> | 119 std::unique_ptr<PhysicalWebPageSuggestionsProvider> |
| 120 physical_web_page_suggestions_provider = | 120 physical_web_page_suggestions_provider = |
| 121 base::MakeUnique<PhysicalWebPageSuggestionsProvider>( | 121 base::MakeUnique<PhysicalWebPageSuggestionsProvider>( |
| 122 service, category_factory); | 122 service, category_factory); |
| 123 service->RegisterProvider(std::move(physical_web_page_suggestions_provider)); | 123 service->RegisterProvider(std::move(physical_web_page_suggestions_provider)); |
| 124 } | 124 } |
| 125 #endif // OS_ANDROID | 125 #endif // OS_ANDROID |
| 126 | 126 |
| 127 void RegisterArticleProvider(SigninManagerBase* signin_manager, | 127 void RegisterArticleProvider(SigninManagerBase* signin_manager, |
| 128 OAuth2TokenService* token_service, | 128 OAuth2TokenService* token_service, |
| 129 HistoryService* history_service, | |
| 130 SuggestionsService* suggestions_service, | 129 SuggestionsService* suggestions_service, |
| 131 ContentSuggestionsService* service, | 130 ContentSuggestionsService* service, |
| 132 CategoryFactory* category_factory, | 131 CategoryFactory* category_factory, |
| 133 PrefService* pref_service, | 132 PrefService* pref_service, |
| 134 Profile* profile) { | 133 Profile* profile) { |
| 135 scoped_refptr<net::URLRequestContextGetter> request_context = | 134 scoped_refptr<net::URLRequestContextGetter> request_context = |
| 136 content::BrowserContext::GetDefaultStoragePartition(profile) | 135 content::BrowserContext::GetDefaultStoragePartition(profile) |
| 137 ->GetURLRequestContext(); | 136 ->GetURLRequestContext(); |
| 138 | 137 |
| 139 NTPSnippetsScheduler* scheduler = nullptr; | 138 NTPSnippetsScheduler* scheduler = nullptr; |
| 140 #if defined(OS_ANDROID) | 139 #if defined(OS_ANDROID) |
| 141 scheduler = NTPSnippetsLauncher::Get(); | 140 scheduler = NTPSnippetsLauncher::Get(); |
| 142 #endif // OS_ANDROID | 141 #endif // OS_ANDROID |
| 143 base::FilePath database_dir( | 142 base::FilePath database_dir( |
| 144 profile->GetPath().Append(ntp_snippets::kDatabaseFolder)); | 143 profile->GetPath().Append(ntp_snippets::kDatabaseFolder)); |
| 145 scoped_refptr<base::SequencedTaskRunner> task_runner = | 144 scoped_refptr<base::SequencedTaskRunner> task_runner = |
| 146 BrowserThread::GetBlockingPool() | 145 BrowserThread::GetBlockingPool() |
| 147 ->GetSequencedTaskRunnerWithShutdownBehavior( | 146 ->GetSequencedTaskRunnerWithShutdownBehavior( |
| 148 base::SequencedWorkerPool::GetSequenceToken(), | 147 base::SequencedWorkerPool::GetSequenceToken(), |
| 149 base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN); | 148 base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN); |
| 150 bool is_stable_channel = | 149 bool is_stable_channel = |
| 151 chrome::GetChannel() == version_info::Channel::STABLE; | 150 chrome::GetChannel() == version_info::Channel::STABLE; |
| 152 std::unique_ptr<NTPSnippetsService> ntp_snippets_service = | 151 std::unique_ptr<NTPSnippetsService> ntp_snippets_service = |
| 153 base::MakeUnique<NTPSnippetsService>( | 152 base::MakeUnique<NTPSnippetsService>( |
| 154 service, service->category_factory(), pref_service, history_service, | 153 service, service->category_factory(), pref_service, |
| 155 suggestions_service, g_browser_process->GetApplicationLocale(), | 154 suggestions_service, g_browser_process->GetApplicationLocale(), |
| 156 scheduler, | 155 scheduler, |
| 157 base::MakeUnique<NTPSnippetsFetcher>( | 156 base::MakeUnique<NTPSnippetsFetcher>( |
| 158 signin_manager, token_service, request_context, pref_service, | 157 signin_manager, token_service, request_context, pref_service, |
| 159 category_factory, base::Bind(&safe_json::SafeJsonParser::Parse), | 158 category_factory, base::Bind(&safe_json::SafeJsonParser::Parse), |
| 160 is_stable_channel), | 159 is_stable_channel), |
| 161 base::MakeUnique<ImageFetcherImpl>( | 160 base::MakeUnique<ImageFetcherImpl>( |
| 162 base::MakeUnique<ImageDecoderImpl>(), request_context.get()), | 161 base::MakeUnique<ImageDecoderImpl>(), request_context.get()), |
| 163 base::MakeUnique<ImageDecoderImpl>(), | 162 base::MakeUnique<ImageDecoderImpl>(), |
| 164 base::MakeUnique<NTPSnippetsDatabase>(database_dir, task_runner), | 163 base::MakeUnique<NTPSnippetsDatabase>(database_dir, task_runner), |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 203 content::BrowserContext* context) const { | 202 content::BrowserContext* context) const { |
| 204 using State = ContentSuggestionsService::State; | 203 using State = ContentSuggestionsService::State; |
| 205 Profile* profile = Profile::FromBrowserContext(context); | 204 Profile* profile = Profile::FromBrowserContext(context); |
| 206 DCHECK(!profile->IsOffTheRecord()); | 205 DCHECK(!profile->IsOffTheRecord()); |
| 207 | 206 |
| 208 // Create the ContentSuggestionsService. | 207 // Create the ContentSuggestionsService. |
| 209 State state = | 208 State state = |
| 210 base::FeatureList::IsEnabled(ntp_snippets::kContentSuggestionsFeature) | 209 base::FeatureList::IsEnabled(ntp_snippets::kContentSuggestionsFeature) |
| 211 ? State::ENABLED | 210 ? State::ENABLED |
| 212 : State::DISABLED; | 211 : State::DISABLED; |
| 213 ContentSuggestionsService* service = new ContentSuggestionsService(state); | 212 HistoryService* history_service = HistoryServiceFactory::GetForProfile( |
| 213 profile, ServiceAccessType::EXPLICIT_ACCESS); |
| 214 ContentSuggestionsService* service = |
| 215 new ContentSuggestionsService(state, history_service); |
| 214 if (state == State::DISABLED) { | 216 if (state == State::DISABLED) { |
| 215 // Since we won't initialise the services, they won't get a chance to | 217 // Since we won't initialise the services, they won't get a chance to |
| 216 // unschedule their tasks. We do it explicitly here instead. | 218 // unschedule their tasks. We do it explicitly here instead. |
| 217 ClearScheduledTasks(); | 219 ClearScheduledTasks(); |
| 218 return service; | 220 return service; |
| 219 } | 221 } |
| 220 | 222 |
| 221 CategoryFactory* category_factory = service->category_factory(); | 223 CategoryFactory* category_factory = service->category_factory(); |
| 222 PrefService* pref_service = profile->GetPrefs(); | 224 PrefService* pref_service = profile->GetPrefs(); |
| 223 #if defined(OS_ANDROID) | 225 #if defined(OS_ANDROID) |
| 224 OfflinePageModel* offline_page_model = | 226 OfflinePageModel* offline_page_model = |
| 225 OfflinePageModelFactory::GetForBrowserContext(profile); | 227 OfflinePageModelFactory::GetForBrowserContext(profile); |
| 226 #endif // OS_ANDROID | 228 #endif // OS_ANDROID |
| 227 BookmarkModel* bookmark_model = | 229 BookmarkModel* bookmark_model = |
| 228 BookmarkModelFactory::GetForBrowserContext(profile); | 230 BookmarkModelFactory::GetForBrowserContext(profile); |
| 229 SigninManagerBase* signin_manager = | 231 SigninManagerBase* signin_manager = |
| 230 SigninManagerFactory::GetForProfile(profile); | 232 SigninManagerFactory::GetForProfile(profile); |
| 231 OAuth2TokenService* token_service = | 233 OAuth2TokenService* token_service = |
| 232 ProfileOAuth2TokenServiceFactory::GetForProfile(profile); | 234 ProfileOAuth2TokenServiceFactory::GetForProfile(profile); |
| 233 HistoryService* history_service = HistoryServiceFactory::GetForProfile( | |
| 234 profile, ServiceAccessType::EXPLICIT_ACCESS); | |
| 235 SuggestionsService* suggestions_service = | 235 SuggestionsService* suggestions_service = |
| 236 SuggestionsServiceFactory::GetForProfile(profile); | 236 SuggestionsServiceFactory::GetForProfile(profile); |
| 237 | 237 |
| 238 #if defined(OS_ANDROID) | 238 #if defined(OS_ANDROID) |
| 239 bool recent_tabs_enabled = base::FeatureList::IsEnabled( | 239 bool recent_tabs_enabled = base::FeatureList::IsEnabled( |
| 240 ntp_snippets::kRecentOfflineTabSuggestionsFeature); | 240 ntp_snippets::kRecentOfflineTabSuggestionsFeature); |
| 241 bool downloads_enabled = | 241 bool downloads_enabled = |
| 242 base::FeatureList::IsEnabled(ntp_snippets::kDownloadSuggestionsFeature); | 242 base::FeatureList::IsEnabled(ntp_snippets::kDownloadSuggestionsFeature); |
| 243 if (recent_tabs_enabled || downloads_enabled) { | 243 if (recent_tabs_enabled || downloads_enabled) { |
| 244 RegisterOfflinePageProvider(offline_page_model, service, category_factory, | 244 RegisterOfflinePageProvider(offline_page_model, service, category_factory, |
| 245 pref_service); | 245 pref_service); |
| 246 } | 246 } |
| 247 #endif // OS_ANDROID | 247 #endif // OS_ANDROID |
| 248 | 248 |
| 249 // |bookmark_model| can be null in tests. | 249 // |bookmark_model| can be null in tests. |
| 250 if (base::FeatureList::IsEnabled(ntp_snippets::kBookmarkSuggestionsFeature) && | 250 if (base::FeatureList::IsEnabled(ntp_snippets::kBookmarkSuggestionsFeature) && |
| 251 bookmark_model) { | 251 bookmark_model) { |
| 252 RegisterBookmarkProvider(bookmark_model, service, category_factory, | 252 RegisterBookmarkProvider(bookmark_model, service, category_factory, |
| 253 pref_service); | 253 pref_service); |
| 254 } | 254 } |
| 255 | 255 |
| 256 #if defined(OS_ANDROID) | 256 #if defined(OS_ANDROID) |
| 257 if (base::FeatureList::IsEnabled( | 257 if (base::FeatureList::IsEnabled( |
| 258 ntp_snippets::kPhysicalWebPageSuggestionsFeature)) { | 258 ntp_snippets::kPhysicalWebPageSuggestionsFeature)) { |
| 259 RegisterPhysicalWebPageProvider(service, category_factory); | 259 RegisterPhysicalWebPageProvider(service, category_factory); |
| 260 } | 260 } |
| 261 #endif // OS_ANDROID | 261 #endif // OS_ANDROID |
| 262 | 262 |
| 263 if (base::FeatureList::IsEnabled(ntp_snippets::kArticleSuggestionsFeature)) { | 263 if (base::FeatureList::IsEnabled(ntp_snippets::kArticleSuggestionsFeature)) { |
| 264 RegisterArticleProvider(signin_manager, token_service, history_service, | 264 RegisterArticleProvider(signin_manager, token_service, suggestions_service, |
| 265 suggestions_service, service, category_factory, | 265 service, category_factory, pref_service, profile); |
| 266 pref_service, profile); | |
| 267 } | 266 } |
| 268 | 267 |
| 269 return service; | 268 return service; |
| 270 } | 269 } |
| OLD | NEW |