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

Unified Diff: components/ntp_snippets/ntp_snippets_database.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 side-by-side diff with in-line comments
Download patch
Index: components/ntp_snippets/ntp_snippets_database.cc
diff --git a/components/ntp_snippets/ntp_snippets_database.cc b/components/ntp_snippets/ntp_snippets_database.cc
index 9feeacdffded9e9ba402df241321dde89781baa1..4b1427961588e4f70a4b0591d526aa3279479b0d 100644
--- a/components/ntp_snippets/ntp_snippets_database.cc
+++ b/components/ntp_snippets/ntp_snippets_database.cc
@@ -50,10 +50,19 @@ NTPSnippetsDatabase::NTPSnippetsDatabase(
NTPSnippetsDatabase::~NTPSnippetsDatabase() {}
bool NTPSnippetsDatabase::IsInitialized() const {
- return database_ && database_initialized_ && image_database_ &&
+ return !IsErrorState() && database_initialized_ &&
image_database_initialized_;
}
+bool NTPSnippetsDatabase::IsErrorState() const {
+ return !database_ || !image_database_;
+}
+
+void NTPSnippetsDatabase::SetErrorCallback(
+ const base::Closure& error_callback) {
+ error_callback_ = error_callback;
+}
+
void NTPSnippetsDatabase::LoadSnippets(const SnippetsCallback& callback) {
if (IsInitialized())
LoadSnippetsImpl(callback);
@@ -98,9 +107,7 @@ void NTPSnippetsDatabase::LoadImage(const std::string& snippet_id,
void NTPSnippetsDatabase::SaveImage(const std::string& snippet_id,
const std::string& image_data) {
- // TODO(treib): After we pass errors to the client, DCHECK(IsInitialized()).
- if (!IsInitialized())
- return;
+ DCHECK(IsInitialized());
SnippetImageProto image_proto;
image_proto.set_data(image_data);
@@ -125,7 +132,7 @@ void NTPSnippetsDatabase::OnDatabaseInited(bool success) {
DCHECK(!database_initialized_);
if (!success) {
DVLOG(1) << "NTPSnippetsDatabase init failed.";
- ResetDatabases();
+ OnDatabaseError();
return;
}
database_initialized_ = true;
@@ -139,7 +146,7 @@ void NTPSnippetsDatabase::OnDatabaseLoaded(
std::unique_ptr<std::vector<SnippetProto>> entries) {
if (!success) {
DVLOG(1) << "NTPSnippetsDatabase load failed.";
- ResetDatabases();
+ OnDatabaseError();
return;
}
@@ -168,7 +175,7 @@ void NTPSnippetsDatabase::OnDatabaseLoaded(
void NTPSnippetsDatabase::OnDatabaseSaved(bool success) {
if (!success) {
DVLOG(1) << "NTPSnippetsDatabase save failed.";
- ResetDatabases();
+ OnDatabaseError();
}
}
@@ -176,7 +183,7 @@ void NTPSnippetsDatabase::OnImageDatabaseInited(bool success) {
DCHECK(!image_database_initialized_);
if (!success) {
DVLOG(1) << "NTPSnippetsDatabase init failed.";
- ResetDatabases();
+ OnDatabaseError();
return;
}
image_database_initialized_ = true;
@@ -190,7 +197,7 @@ void NTPSnippetsDatabase::OnImageDatabaseLoaded(
std::unique_ptr<SnippetImageProto> entry) {
if (!success) {
DVLOG(1) << "NTPSnippetsDatabase load failed.";
- ResetDatabases();
+ OnDatabaseError();
return;
}
@@ -206,10 +213,17 @@ void NTPSnippetsDatabase::OnImageDatabaseLoaded(
void NTPSnippetsDatabase::OnImageDatabaseSaved(bool success) {
if (!success) {
DVLOG(1) << "NTPSnippetsDatabase save failed.";
- ResetDatabases();
+ OnDatabaseError();
}
}
+void NTPSnippetsDatabase::OnDatabaseError() {
+ database_.reset();
+ image_database_.reset();
+ if (!error_callback_.is_null())
+ error_callback_.Run();
+}
+
void NTPSnippetsDatabase::ProcessPendingLoads() {
DCHECK(IsInitialized());
@@ -231,9 +245,7 @@ void NTPSnippetsDatabase::LoadSnippetsImpl(const SnippetsCallback& callback) {
void NTPSnippetsDatabase::SaveSnippetsImpl(
std::unique_ptr<KeyEntryVector> entries_to_save) {
- // TODO(treib): After we pass errors to the client, DCHECK(IsInitialized()).
- if (!IsInitialized())
- return;
+ DCHECK(IsInitialized());
std::unique_ptr<std::vector<std::string>> keys_to_remove(
new std::vector<std::string>());
@@ -245,9 +257,7 @@ void NTPSnippetsDatabase::SaveSnippetsImpl(
void NTPSnippetsDatabase::DeleteSnippetsImpl(
std::unique_ptr<std::vector<std::string>> keys_to_remove) {
- // TODO(treib): After we pass errors to the client, DCHECK(IsInitialized()).
- if (!IsInitialized())
- return;
+ DCHECK(IsInitialized());
DeleteImagesImpl(
base::WrapUnique(new std::vector<std::string>(*keys_to_remove)));
@@ -270,9 +280,7 @@ void NTPSnippetsDatabase::LoadImageImpl(const std::string& snippet_id,
void NTPSnippetsDatabase::DeleteImagesImpl(
std::unique_ptr<std::vector<std::string>> keys_to_remove) {
- // TODO(treib): After we pass errors to the client, DCHECK(IsInitialized()).
- if (!IsInitialized())
- return;
+ DCHECK(IsInitialized());
image_database_->UpdateEntries(
base::WrapUnique(new ImageKeyEntryVector()),
@@ -281,9 +289,4 @@ void NTPSnippetsDatabase::DeleteImagesImpl(
weak_ptr_factory_.GetWeakPtr()));
}
-void NTPSnippetsDatabase::ResetDatabases() {
- database_.reset();
- image_database_.reset();
-}
-
} // namespace ntp_snippets

Powered by Google App Engine
This is Rietveld 408576698