summaryrefslogtreecommitdiffstats
path: root/chrome/browser/sync
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/sync')
-rwxr-xr-xchrome/browser/sync/syncable/syncable.h8
-rwxr-xr-xchrome/browser/sync/syncable/syncable_unittest.cc18
2 files changed, 22 insertions, 4 deletions
diff --git a/chrome/browser/sync/syncable/syncable.h b/chrome/browser/sync/syncable/syncable.h
index 6665bf7..d0562f5 100755
--- a/chrome/browser/sync/syncable/syncable.h
+++ b/chrome/browser/sync/syncable/syncable.h
@@ -237,11 +237,11 @@ struct EntryKernel {
inline void mark_dirty() {
dirty_ = true;
}
-
+
inline void clear_dirty() {
dirty_ = false;
}
-
+
inline bool is_dirty() const {
return dirty_;
}
@@ -302,13 +302,13 @@ struct EntryKernel {
inline const std::string& ref(StringField field) const {
return string_fields[field - STRING_FIELDS_BEGIN];
}
- inline Blob ref(BlobField field) const {
+ inline const Blob& ref(BlobField field) const {
return blob_fields[field - BLOB_FIELDS_BEGIN];
}
inline bool ref(BitTemp field) const {
return bit_temps[field - BIT_TEMPS_BEGIN];
}
-
+
private:
// Tracks whether this entry needs to be saved to the database.
bool dirty_;
diff --git a/chrome/browser/sync/syncable/syncable_unittest.cc b/chrome/browser/sync/syncable/syncable_unittest.cc
index 7012142..9d7b07b 100755
--- a/chrome/browser/sync/syncable/syncable_unittest.cc
+++ b/chrome/browser/sync/syncable/syncable_unittest.cc
@@ -627,6 +627,7 @@ TEST_F(SyncableDirectoryTest, TestSimpleFieldsPreservedDuringSaveChanges) {
EntryKernel create_pre_save, update_pre_save;
EntryKernel create_post_save, update_post_save;
string create_name = "Create";
+ string favicon_bytes = "PNG";
{
WriteTransaction trans(dir_.get(), UNITTEST, __FILE__, __LINE__);
@@ -634,11 +635,20 @@ TEST_F(SyncableDirectoryTest, TestSimpleFieldsPreservedDuringSaveChanges) {
MutableEntry update(&trans, CREATE_NEW_UPDATE_ITEM, update_id);
create.Put(IS_UNSYNCED, true);
update.Put(IS_UNAPPLIED_UPDATE, true);
+ syncable::Blob fav(favicon_bytes.data(),
+ favicon_bytes.data() + favicon_bytes.size());
+ create.Put(BOOKMARK_FAVICON, fav);
+ update.Put(BOOKMARK_FAVICON, fav);
create_pre_save = create.GetKernelCopy();
update_pre_save = update.GetKernelCopy();
create_id = create.Get(ID);
}
+
dir_->SaveChanges();
+ dir_.reset(new Directory());
+ ASSERT_TRUE(dir_.get());
+ ASSERT_TRUE(OPENED == dir_->Open(file_path_, kName));
+ ASSERT_TRUE(dir_->good());
{
ReadTransaction trans(dir_.get(), __FILE__, __LINE__);
@@ -681,6 +691,14 @@ TEST_F(SyncableDirectoryTest, TestSimpleFieldsPreservedDuringSaveChanges) {
update_post_save.ref((StringField)i))
<< "String field #" << i << " changed during save/load";
}
+ for ( ; i < BLOB_FIELDS_END; ++i) {
+ EXPECT_EQ(create_pre_save.ref((BlobField)i),
+ create_post_save.ref((BlobField)i))
+ << "Blob field #" << i << " changed during save/load";
+ EXPECT_EQ(update_pre_save.ref((BlobField)i),
+ update_post_save.ref((BlobField)i))
+ << "Blob field #" << i << " changed during save/load";
+ }
}
TEST_F(SyncableDirectoryTest, TestSaveChangesFailure) {