Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(96)

Side by Side Diff: components/ntp_snippets/ntp_snippets_service.cc

Issue 2083533002: [NTP Snippets] Shut down the service on database failure (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@image_db_tests
Patch Set: comments Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
196 sync_service_(sync_service), 196 sync_service_(sync_service),
197 sync_service_observer_(this), 197 sync_service_observer_(this),
198 suggestions_service_(suggestions_service), 198 suggestions_service_(suggestions_service),
199 application_language_code_(application_language_code), 199 application_language_code_(application_language_code),
200 scheduler_(scheduler), 200 scheduler_(scheduler),
201 snippets_fetcher_(std::move(snippets_fetcher)), 201 snippets_fetcher_(std::move(snippets_fetcher)),
202 image_fetcher_(std::move(image_fetcher)), 202 image_fetcher_(std::move(image_fetcher)),
203 image_decoder_(std::move(image_decoder)), 203 image_decoder_(std::move(image_decoder)),
204 database_(std::move(database)), 204 database_(std::move(database)),
205 fetch_after_load_(false) { 205 fetch_after_load_(false) {
206 // TODO(dgn) should be removed after branch point (https:://crbug.com/617585). 206 // TODO(dgn) should be removed after branch point (https://crbug.com/617585).
207 ClearDeprecatedPrefs(); 207 ClearDeprecatedPrefs();
208 208
209 if (explicitly_disabled_) { 209 if (explicitly_disabled_) {
210 EnterState(State::DISABLED); 210 EnterState(State::DISABLED);
211 return; 211 return;
212 } 212 }
213 213
214 if (database_->IsErrorState()) {
215 EnterState(State::SHUT_DOWN);
216 return;
217 }
218
219 database_->SetErrorCallback(base::Bind(&NTPSnippetsService::OnDatabaseError,
220 base::Unretained(this)));
221
214 // We transition to other states while finalizing the initialization, when the 222 // We transition to other states while finalizing the initialization, when the
215 // database is done loading. 223 // database is done loading.
216 database_->LoadSnippets(base::Bind(&NTPSnippetsService::OnDatabaseLoaded, 224 database_->LoadSnippets(base::Bind(&NTPSnippetsService::OnDatabaseLoaded,
217 base::Unretained(this))); 225 base::Unretained(this)));
218 } 226 }
219 227
220 NTPSnippetsService::~NTPSnippetsService() { 228 NTPSnippetsService::~NTPSnippetsService() {
221 DCHECK(state_ == State::SHUT_DOWN); 229 DCHECK(state_ == State::SHUT_DOWN);
222 } 230 }
223 231
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
318 326
319 FOR_EACH_OBSERVER(NTPSnippetsServiceObserver, observers_, 327 FOR_EACH_OBSERVER(NTPSnippetsServiceObserver, observers_,
320 NTPSnippetsServiceLoaded()); 328 NTPSnippetsServiceLoaded());
321 return true; 329 return true;
322 } 330 }
323 331
324 void NTPSnippetsService::ClearDiscardedSnippets() { 332 void NTPSnippetsService::ClearDiscardedSnippets() {
325 if (!initialized()) 333 if (!initialized())
326 return; 334 return;
327 335
336 if (discarded_snippets_.empty())
337 return;
338
328 database_->DeleteSnippets(discarded_snippets_); 339 database_->DeleteSnippets(discarded_snippets_);
329 discarded_snippets_.clear(); 340 discarded_snippets_.clear();
330 } 341 }
331 342
332 void NTPSnippetsService::AddObserver(NTPSnippetsServiceObserver* observer) { 343 void NTPSnippetsService::AddObserver(NTPSnippetsServiceObserver* observer) {
333 observers_.AddObserver(observer); 344 observers_.AddObserver(observer);
334 } 345 }
335 346
336 void NTPSnippetsService::RemoveObserver(NTPSnippetsServiceObserver* observer) { 347 void NTPSnippetsService::RemoveObserver(NTPSnippetsServiceObserver* observer) {
337 observers_.RemoveObserver(observer); 348 observers_.RemoveObserver(observer);
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
415 std::sort(snippets_.begin(), snippets_.end(), 426 std::sort(snippets_.begin(), snippets_.end(),
416 [](const std::unique_ptr<NTPSnippet>& lhs, 427 [](const std::unique_ptr<NTPSnippet>& lhs,
417 const std::unique_ptr<NTPSnippet>& rhs) { 428 const std::unique_ptr<NTPSnippet>& rhs) {
418 return lhs->score() > rhs->score(); 429 return lhs->score() > rhs->score();
419 }); 430 });
420 431
421 ClearExpiredSnippets(); 432 ClearExpiredSnippets();
422 FinishInitialization(); 433 FinishInitialization();
423 } 434 }
424 435
436 void NTPSnippetsService::OnDatabaseError() {
437 EnterState(State::SHUT_DOWN);
438 }
439
425 void NTPSnippetsService::OnSuggestionsChanged( 440 void NTPSnippetsService::OnSuggestionsChanged(
426 const SuggestionsProfile& suggestions) { 441 const SuggestionsProfile& suggestions) {
427 DCHECK(initialized()); 442 DCHECK(initialized());
428 443
429 std::set<std::string> hosts = GetSuggestionsHostsImpl(suggestions); 444 std::set<std::string> hosts = GetSuggestionsHostsImpl(suggestions);
430 if (hosts == GetSnippetHostsFromPrefs()) 445 if (hosts == GetSnippetHostsFromPrefs())
431 return; 446 return;
432 447
433 // Remove existing snippets that aren't in the suggestions anymore. 448 // Remove existing snippets that aren't in the suggestions anymore.
434 // TODO(treib,maybelle): If there is another source with an allowed host, 449 // TODO(treib,maybelle): If there is another source with an allowed host,
(...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after
791 return; 806 return;
792 } 807 }
793 } 808 }
794 809
795 void NTPSnippetsService::ClearDeprecatedPrefs() { 810 void NTPSnippetsService::ClearDeprecatedPrefs() {
796 pref_service_->ClearPref(prefs::kDeprecatedSnippets); 811 pref_service_->ClearPref(prefs::kDeprecatedSnippets);
797 pref_service_->ClearPref(prefs::kDeprecatedDiscardedSnippets); 812 pref_service_->ClearPref(prefs::kDeprecatedDiscardedSnippets);
798 } 813 }
799 814
800 } // namespace ntp_snippets 815 } // namespace ntp_snippets
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698