| 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
|
|
|