Index: components/dom_distiller/core/dom_distiller_store.cc |
diff --git a/components/dom_distiller/core/dom_distiller_store.cc b/components/dom_distiller/core/dom_distiller_store.cc |
index b8d7fbbe6347b5ff509db582201e98b9ca5bb6fe..c6def8d4e3bb4b2ab965a18cae2805f038924db7 100644 |
--- a/components/dom_distiller/core/dom_distiller_store.cc |
+++ b/components/dom_distiller/core/dom_distiller_store.cc |
@@ -11,6 +11,7 @@ |
#include "sync/protocol/article_specifics.pb.h" |
#include "sync/protocol/sync.pb.h" |
+using leveldb_proto::ProtoDatabase; |
using sync_pb::ArticleSpecifics; |
using sync_pb::EntitySpecifics; |
using syncer::ModelType; |
@@ -24,27 +25,25 @@ using syncer::SyncMergeResult; |
namespace dom_distiller { |
DomDistillerStore::DomDistillerStore( |
- scoped_ptr<DomDistillerDatabaseInterface> database, |
+ scoped_ptr<ProtoDatabase<ArticleEntry> > database, |
const base::FilePath& database_dir) |
: database_(database.Pass()), |
database_loaded_(false), |
weak_ptr_factory_(this) { |
- database_->Init(database_dir, |
- base::Bind(&DomDistillerStore::OnDatabaseInit, |
- weak_ptr_factory_.GetWeakPtr())); |
+ database_->Init(database_dir, base::Bind(&DomDistillerStore::OnDatabaseInit, |
+ weak_ptr_factory_.GetWeakPtr())); |
} |
DomDistillerStore::DomDistillerStore( |
- scoped_ptr<DomDistillerDatabaseInterface> database, |
+ scoped_ptr<ProtoDatabase<ArticleEntry> > database, |
const std::vector<ArticleEntry>& initial_data, |
const base::FilePath& database_dir) |
: database_(database.Pass()), |
database_loaded_(false), |
model_(initial_data), |
weak_ptr_factory_(this) { |
- database_->Init(database_dir, |
- base::Bind(&DomDistillerStore::OnDatabaseInit, |
- weak_ptr_factory_.GetWeakPtr())); |
+ database_->Init(database_dir, base::Bind(&DomDistillerStore::OnDatabaseInit, |
+ weak_ptr_factory_.GetWeakPtr())); |
} |
DomDistillerStore::~DomDistillerStore() {} |
@@ -59,12 +58,10 @@ bool DomDistillerStore::GetEntryById(const std::string& entry_id, |
return model_.GetEntryById(entry_id, entry); |
} |
-bool DomDistillerStore::GetEntryByUrl(const GURL& url, |
- ArticleEntry* entry) { |
+bool DomDistillerStore::GetEntryByUrl(const GURL& url, ArticleEntry* entry) { |
return model_.GetEntryByUrl(url, entry); |
} |
- |
bool DomDistillerStore::AddEntry(const ArticleEntry& entry) { |
if (!database_loaded_) { |
return false; |
@@ -165,8 +162,7 @@ std::vector<ArticleEntry> DomDistillerStore::GetEntries() const { |
// syncer::SyncableService implementation. |
SyncMergeResult DomDistillerStore::MergeDataAndStartSyncing( |
- ModelType type, |
- const SyncDataList& initial_sync_data, |
+ ModelType type, const SyncDataList& initial_sync_data, |
scoped_ptr<syncer::SyncChangeProcessor> sync_processor, |
scoped_ptr<syncer::SyncErrorFactory> error_handler) { |
DCHECK_EQ(syncer::ARTICLES, type); |
@@ -210,8 +206,7 @@ void DomDistillerStore::NotifyObservers(const syncer::SyncChangeList& changes) { |
if (observers_.might_have_observers() && changes.size() > 0) { |
std::vector<DomDistillerObserver::ArticleUpdate> article_changes; |
for (SyncChangeList::const_iterator it = changes.begin(); |
- it != changes.end(); |
- ++it) { |
+ it != changes.end(); ++it) { |
DomDistillerObserver::ArticleUpdate article_update; |
switch (it->change_type()) { |
case SyncChange::ACTION_ADD: |
@@ -233,16 +228,14 @@ void DomDistillerStore::NotifyObservers(const syncer::SyncChangeList& changes) { |
article_update.entry_id = entry.entry_id(); |
article_changes.push_back(article_update); |
} |
- FOR_EACH_OBSERVER(DomDistillerObserver, |
- observers_, |
+ FOR_EACH_OBSERVER(DomDistillerObserver, observers_, |
ArticleEntriesUpdated(article_changes)); |
} |
} |
-void DomDistillerStore::ApplyChangesToModel( |
- const SyncChangeList& changes, |
- SyncChangeList* changes_applied, |
- SyncChangeList* changes_missing) { |
+void DomDistillerStore::ApplyChangesToModel(const SyncChangeList& changes, |
+ SyncChangeList* changes_applied, |
+ SyncChangeList* changes_missing) { |
model_.ApplyChangesToModel(changes, changes_applied, changes_missing); |
NotifyObservers(*changes_applied); |
} |
@@ -313,27 +306,29 @@ bool DomDistillerStore::ApplyChangesToDatabase( |
if (change_list.empty()) { |
return true; |
} |
- scoped_ptr<EntryVector> entries_to_save(new EntryVector()); |
- scoped_ptr<EntryVector> entries_to_remove(new EntryVector()); |
+ scoped_ptr<ProtoDatabase<ArticleEntry>::KeyEntryVector> entries_to_save( |
+ new ProtoDatabase<ArticleEntry>::KeyEntryVector()); |
+ scoped_ptr<std::vector<std::string> > keys_to_remove( |
+ new std::vector<std::string>()); |
for (SyncChangeList::const_iterator it = change_list.begin(); |
- it != change_list.end(); |
- ++it) { |
- if (it->change_type() == SyncChange::ACTION_DELETE) |
- entries_to_remove->push_back(GetEntryFromChange(*it)); |
- else |
- entries_to_save->push_back(GetEntryFromChange(*it)); |
+ it != change_list.end(); ++it) { |
+ if (it->change_type() == SyncChange::ACTION_DELETE) { |
+ ArticleEntry entry = GetEntryFromChange(*it); |
+ keys_to_remove->push_back(entry.entry_id()); |
+ } else { |
+ ArticleEntry entry = GetEntryFromChange(*it); |
+ entries_to_save->push_back(std::make_pair(entry.entry_id(), entry)); |
+ } |
} |
- database_->UpdateEntries(entries_to_save.Pass(), |
- entries_to_remove.Pass(), |
+ database_->UpdateEntries(entries_to_save.Pass(), keys_to_remove.Pass(), |
base::Bind(&DomDistillerStore::OnDatabaseSave, |
weak_ptr_factory_.GetWeakPtr())); |
return true; |
} |
SyncMergeResult DomDistillerStore::MergeDataWithModel( |
- const SyncDataList& data, |
- SyncChangeList* changes_applied, |
+ const SyncDataList& data, SyncChangeList* changes_applied, |
SyncChangeList* changes_missing) { |
DCHECK(changes_applied); |
DCHECK(changes_missing); |
@@ -349,8 +344,7 @@ SyncMergeResult DomDistillerStore::MergeDataWithModel( |
int num_added = 0; |
int num_modified = 0; |
for (SyncChangeList::const_iterator it = changes_applied->begin(); |
- it != changes_applied->end(); |
- ++it) { |
+ it != changes_applied->end(); ++it) { |
DCHECK(it->IsValid()); |
switch (it->change_type()) { |
case SyncChange::ACTION_ADD: |