| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "components/ntp_snippets/ntp_snippets_service.h" | 5 #include "components/ntp_snippets/ntp_snippets_service.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <iterator> | 8 #include <iterator> |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| (...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 179 void WrapImageFetchedCallback( | 179 void WrapImageFetchedCallback( |
| 180 const NTPSnippetsService::ImageFetchedCallback& callback, | 180 const NTPSnippetsService::ImageFetchedCallback& callback, |
| 181 const GURL& snippet_id_url, | 181 const GURL& snippet_id_url, |
| 182 const gfx::Image& image) { | 182 const gfx::Image& image) { |
| 183 callback.Run(snippet_id_url.spec(), image); | 183 callback.Run(snippet_id_url.spec(), image); |
| 184 } | 184 } |
| 185 | 185 |
| 186 } // namespace | 186 } // namespace |
| 187 | 187 |
| 188 NTPSnippetsService::NTPSnippetsService( | 188 NTPSnippetsService::NTPSnippetsService( |
| 189 bool enabled, |
| 189 PrefService* pref_service, | 190 PrefService* pref_service, |
| 190 sync_driver::SyncService* sync_service, | 191 sync_driver::SyncService* sync_service, |
| 191 SuggestionsService* suggestions_service, | 192 SuggestionsService* suggestions_service, |
| 192 scoped_refptr<base::SequencedTaskRunner> file_task_runner, | 193 scoped_refptr<base::SequencedTaskRunner> file_task_runner, |
| 193 const std::string& application_language_code, | 194 const std::string& application_language_code, |
| 194 NTPSnippetsScheduler* scheduler, | 195 NTPSnippetsScheduler* scheduler, |
| 195 std::unique_ptr<NTPSnippetsFetcher> snippets_fetcher, | 196 std::unique_ptr<NTPSnippetsFetcher> snippets_fetcher, |
| 196 std::unique_ptr<ImageFetcher> image_fetcher) | 197 std::unique_ptr<ImageFetcher> image_fetcher) |
| 197 : state_(State::NOT_INITED), | 198 : state_(State::INITED), |
| 198 enabled_(false), | 199 enabled_(enabled), |
| 199 pref_service_(pref_service), | 200 pref_service_(pref_service), |
| 200 sync_service_(sync_service), | 201 sync_service_(sync_service), |
| 201 sync_service_observer_(this), | 202 sync_service_observer_(this), |
| 202 suggestions_service_(suggestions_service), | 203 suggestions_service_(suggestions_service), |
| 203 file_task_runner_(file_task_runner), | 204 file_task_runner_(file_task_runner), |
| 204 application_language_code_(application_language_code), | 205 application_language_code_(application_language_code), |
| 205 scheduler_(scheduler), | 206 scheduler_(scheduler), |
| 206 snippets_fetcher_(std::move(snippets_fetcher)), | 207 snippets_fetcher_(std::move(snippets_fetcher)), |
| 207 image_fetcher_(std::move(image_fetcher)) { | 208 image_fetcher_(std::move(image_fetcher)) { |
| 208 snippets_fetcher_->SetCallback(base::Bind( | 209 snippets_fetcher_->SetCallback(base::Bind( |
| 209 &NTPSnippetsService::OnFetchFinished, base::Unretained(this))); | 210 &NTPSnippetsService::OnFetchFinished, base::Unretained(this))); |
| 210 | 211 |
| 211 // |sync_service_| can be null in tests or if sync is disabled. | 212 // |sync_service_| can be null in tests or if sync is disabled. |
| 212 if (sync_service_) | 213 if (sync_service_) |
| 213 sync_service_observer_.Add(sync_service_); | 214 sync_service_observer_.Add(sync_service_); |
| 214 } | |
| 215 | 215 |
| 216 NTPSnippetsService::~NTPSnippetsService() { | |
| 217 DCHECK(state_ == State::NOT_INITED || state_ == State::SHUT_DOWN); | |
| 218 } | |
| 219 | |
| 220 // static | |
| 221 void NTPSnippetsService::RegisterProfilePrefs(PrefRegistrySimple* registry) { | |
| 222 registry->RegisterListPref(prefs::kSnippets); | |
| 223 registry->RegisterListPref(prefs::kDiscardedSnippets); | |
| 224 registry->RegisterListPref(prefs::kSnippetHosts); | |
| 225 } | |
| 226 | |
| 227 void NTPSnippetsService::Init(bool enabled) { | |
| 228 DCHECK(state_ == State::NOT_INITED); | |
| 229 state_ = State::INITED; | |
| 230 | |
| 231 enabled_ = enabled; | |
| 232 if (enabled_) { | 216 if (enabled_) { |
| 233 // |suggestions_service_| can be null in tests. | 217 // |suggestions_service_| can be null in tests. |
| 234 if (snippets_fetcher_->UsesHostRestrictions() && suggestions_service_) { | 218 if (snippets_fetcher_->UsesHostRestrictions() && suggestions_service_) { |
| 235 suggestions_service_subscription_ = suggestions_service_->AddCallback( | 219 suggestions_service_subscription_ = suggestions_service_->AddCallback( |
| 236 base::Bind(&NTPSnippetsService::OnSuggestionsChanged, | 220 base::Bind(&NTPSnippetsService::OnSuggestionsChanged, |
| 237 base::Unretained(this))); | 221 base::Unretained(this))); |
| 238 } | 222 } |
| 239 | 223 |
| 240 // Get any existing snippets immediately from prefs. | 224 // Get any existing snippets immediately from prefs. |
| 241 LoadDiscardedSnippetsFromPrefs(); | 225 LoadDiscardedSnippetsFromPrefs(); |
| 242 LoadSnippetsFromPrefs(); | 226 LoadSnippetsFromPrefs(); |
| 243 | 227 |
| 244 // If we don't have any snippets yet, start a fetch. | 228 // If we don't have any snippets yet, start a fetch. |
| 245 if (snippets_.empty()) | 229 if (snippets_.empty()) |
| 246 FetchSnippets(); | 230 FetchSnippets(); |
| 247 } | 231 } |
| 248 | 232 |
| 249 RescheduleFetching(); | 233 RescheduleFetching(); |
| 250 } | 234 } |
| 251 | 235 |
| 236 NTPSnippetsService::~NTPSnippetsService() { |
| 237 DCHECK(state_ == State::SHUT_DOWN); |
| 238 } |
| 239 |
| 240 // static |
| 241 void NTPSnippetsService::RegisterProfilePrefs(PrefRegistrySimple* registry) { |
| 242 registry->RegisterListPref(prefs::kSnippets); |
| 243 registry->RegisterListPref(prefs::kDiscardedSnippets); |
| 244 registry->RegisterListPref(prefs::kSnippetHosts); |
| 245 } |
| 246 |
| 252 void NTPSnippetsService::Shutdown() { | 247 void NTPSnippetsService::Shutdown() { |
| 253 DCHECK(state_ == State::INITED); | 248 DCHECK(state_ == State::INITED); |
| 254 state_ = State::SHUT_DOWN; | 249 state_ = State::SHUT_DOWN; |
| 255 | 250 |
| 256 FOR_EACH_OBSERVER(NTPSnippetsServiceObserver, observers_, | 251 FOR_EACH_OBSERVER(NTPSnippetsServiceObserver, observers_, |
| 257 NTPSnippetsServiceShutdown()); | 252 NTPSnippetsServiceShutdown()); |
| 258 suggestions_service_subscription_.reset(); | 253 suggestions_service_subscription_.reset(); |
| 259 enabled_ = false; | 254 enabled_ = false; |
| 260 } | 255 } |
| 261 | 256 |
| (...skipping 316 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 578 bool NTPSnippetsService::IsSyncStateIncompatible() { | 573 bool NTPSnippetsService::IsSyncStateIncompatible() { |
| 579 if (!sync_service_ || !sync_service_->CanSyncStart()) | 574 if (!sync_service_ || !sync_service_->CanSyncStart()) |
| 580 return true; | 575 return true; |
| 581 if (!sync_service_->IsSyncActive() || !sync_service_->ConfigurationDone()) | 576 if (!sync_service_->IsSyncActive() || !sync_service_->ConfigurationDone()) |
| 582 return false; // Sync service is not initialized, yet not disabled. | 577 return false; // Sync service is not initialized, yet not disabled. |
| 583 return !sync_service_->GetActiveDataTypes().Has( | 578 return !sync_service_->GetActiveDataTypes().Has( |
| 584 syncer::HISTORY_DELETE_DIRECTIVES); | 579 syncer::HISTORY_DELETE_DIRECTIVES); |
| 585 } | 580 } |
| 586 | 581 |
| 587 } // namespace ntp_snippets | 582 } // namespace ntp_snippets |
| OLD | NEW |