diff options
Diffstat (limited to 'chrome/browser/sync')
-rwxr-xr-x | chrome/browser/sync/syncable/syncable.h | 8 | ||||
-rwxr-xr-x | chrome/browser/sync/syncable/syncable_unittest.cc | 18 |
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) { |