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

Unified Diff: chrome/browser/chromeos/contacts/contact_database.cc

Issue 10933127: contacts: Don't save deleted contacts to disk. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: merge Created 8 years, 2 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: chrome/browser/chromeos/contacts/contact_database.cc
diff --git a/chrome/browser/chromeos/contacts/contact_database.cc b/chrome/browser/chromeos/contacts/contact_database.cc
index fe8911ba6926227087ec11e7d1982310f8128769..e25d16390ab0e3945f0704a59d3b6ce0cf388cc4 100644
--- a/chrome/browser/chromeos/contacts/contact_database.cc
+++ b/chrome/browser/chromeos/contacts/contact_database.cc
@@ -86,7 +86,8 @@ void ContactDatabase::Init(const FilePath& database_dir,
base::Owned(success)));
}
-void ContactDatabase::SaveContacts(scoped_ptr<ContactPointers> contacts,
+void ContactDatabase::SaveContacts(scoped_ptr<ContactPointers> contacts_to_save,
+ scoped_ptr<ContactIds> contact_ids_to_delete,
scoped_ptr<UpdateMetadata> metadata,
bool is_full_update,
SaveCallback callback) {
@@ -96,7 +97,8 @@ void ContactDatabase::SaveContacts(scoped_ptr<ContactPointers> contacts,
FROM_HERE,
base::Bind(&ContactDatabase::SaveContactsFromTaskRunner,
base::Unretained(this),
- base::Passed(contacts.Pass()),
+ base::Passed(contacts_to_save.Pass()),
+ base::Passed(contact_ids_to_delete.Pass()),
base::Passed(metadata.Pass()),
is_full_update,
success),
@@ -213,13 +215,15 @@ void ContactDatabase::InitFromTaskRunner(const FilePath& database_dir,
}
void ContactDatabase::SaveContactsFromTaskRunner(
- scoped_ptr<ContactPointers> contacts,
+ scoped_ptr<ContactPointers> contacts_to_save,
+ scoped_ptr<ContactIds> contact_ids_to_delete,
scoped_ptr<UpdateMetadata> metadata,
bool is_full_update,
bool* success) {
DCHECK(IsRunByTaskRunner());
DCHECK(success);
- VLOG(1) << "Saving " << contacts->size() << " contact(s) to database as "
+ VLOG(1) << "Saving " << contacts_to_save->size() << " contact(s) to database "
+ << "and deleting " << contact_ids_to_delete->size() << " as "
<< (is_full_update ? "full" : "incremental") << " update";
*success = false;
@@ -237,6 +241,11 @@ void ContactDatabase::SaveContactsFromTaskRunner(
keys_to_delete.insert(key);
db_iterator->Next();
}
+ } else {
+ for (ContactIds::const_iterator it = contact_ids_to_delete->begin();
+ it != contact_ids_to_delete->end(); ++it) {
+ keys_to_delete.insert(*it);
+ }
}
// TODO(derat): Serializing all of the contacts and so we can write them in a
@@ -245,8 +254,8 @@ void ContactDatabase::SaveContactsFromTaskRunner(
// crash, maybe add a dummy "write completed" contact that's removed in the
// first batch and added in the last.)
leveldb::WriteBatch updates;
- for (ContactPointers::const_iterator it = contacts->begin();
- it != contacts->end(); ++it) {
+ for (ContactPointers::const_iterator it = contacts_to_save->begin();
+ it != contacts_to_save->end(); ++it) {
const contacts::Contact& contact = **it;
if (contact.contact_id() == kUpdateMetadataKey) {
LOG(WARNING) << "Skipping contact with reserved ID "

Powered by Google App Engine
This is Rietveld 408576698