| Index: sync/syncable/mutable_entry.cc
|
| diff --git a/sync/syncable/mutable_entry.cc b/sync/syncable/mutable_entry.cc
|
| index 8e33a67a98f1345cf4729caf8e2dc4c5b0870488..6c13261ba0463d805526d3ba8aef50ae3bad6d76 100644
|
| --- a/sync/syncable/mutable_entry.cc
|
| +++ b/sync/syncable/mutable_entry.cc
|
| @@ -122,36 +122,36 @@ MutableEntry::MutableEntry(WriteTransaction* trans, GetTypeRoot, ModelType type)
|
|
|
| void MutableEntry::PutLocalExternalId(int64 value) {
|
| DCHECK(kernel_);
|
| - write_transaction()->TrackChangesTo(kernel_);
|
| if (kernel_->ref(LOCAL_EXTERNAL_ID) != value) {
|
| + write_transaction()->TrackChangesTo(kernel_);
|
| ScopedKernelLock lock(dir());
|
| kernel_->put(LOCAL_EXTERNAL_ID, value);
|
| - kernel_->mark_dirty(&dir()->kernel()->dirty_metahandles);
|
| + MarkDirty();
|
| }
|
| }
|
|
|
| void MutableEntry::PutMtime(base::Time value) {
|
| DCHECK(kernel_);
|
| - write_transaction()->TrackChangesTo(kernel_);
|
| if (kernel_->ref(MTIME) != value) {
|
| + write_transaction()->TrackChangesTo(kernel_);
|
| kernel_->put(MTIME, value);
|
| - kernel_->mark_dirty(&dir()->kernel()->dirty_metahandles);
|
| + MarkDirty();
|
| }
|
| }
|
|
|
| void MutableEntry::PutCtime(base::Time value) {
|
| DCHECK(kernel_);
|
| - write_transaction()->TrackChangesTo(kernel_);
|
| if (kernel_->ref(CTIME) != value) {
|
| + write_transaction()->TrackChangesTo(kernel_);
|
| kernel_->put(CTIME, value);
|
| - kernel_->mark_dirty(&dir()->kernel()->dirty_metahandles);
|
| + MarkDirty();
|
| }
|
| }
|
|
|
| void MutableEntry::PutParentId(const Id& value) {
|
| DCHECK(kernel_);
|
| - write_transaction()->TrackChangesTo(kernel_);
|
| if (kernel_->ref(PARENT_ID) != value) {
|
| + write_transaction()->TrackChangesTo(kernel_);
|
| PutParentIdPropertyOnly(value);
|
| if (!GetIsDel()) {
|
| if (!PutPredecessor(Id())) {
|
| @@ -164,20 +164,20 @@ void MutableEntry::PutParentId(const Id& value) {
|
|
|
| void MutableEntry::PutIsDir(bool value) {
|
| DCHECK(kernel_);
|
| - write_transaction()->TrackChangesTo(kernel_);
|
| - bool old_value = kernel_->ref(IS_DIR);
|
| - if (old_value != value) {
|
| + if (kernel_->ref(IS_DIR) != value) {
|
| + write_transaction()->TrackChangesTo(kernel_);
|
| kernel_->put(IS_DIR, value);
|
| - kernel_->mark_dirty(GetDirtyIndexHelper());
|
| + MarkDirty();
|
| }
|
| }
|
|
|
| void MutableEntry::PutIsDel(bool value) {
|
| DCHECK(kernel_);
|
| - write_transaction()->TrackChangesTo(kernel_);
|
| if (value == kernel_->ref(IS_DEL)) {
|
| return;
|
| }
|
| +
|
| + write_transaction()->TrackChangesTo(kernel_);
|
| if (value) {
|
| // If the server never knew about this item and it's deleted then we don't
|
| // need to keep it around. Unsetting IS_UNSYNCED will:
|
| @@ -202,28 +202,27 @@ void MutableEntry::PutIsDel(bool value) {
|
| &dir()->kernel()->parent_child_index);
|
|
|
| kernel_->put(IS_DEL, value);
|
| - kernel_->mark_dirty(&dir()->kernel()->dirty_metahandles);
|
| + MarkDirty();
|
| }
|
| }
|
|
|
| void MutableEntry::PutNonUniqueName(const std::string& value) {
|
| DCHECK(kernel_);
|
| - write_transaction()->TrackChangesTo(kernel_);
|
| -
|
| if (kernel_->ref(NON_UNIQUE_NAME) != value) {
|
| + write_transaction()->TrackChangesTo(kernel_);
|
| kernel_->put(NON_UNIQUE_NAME, value);
|
| - kernel_->mark_dirty(&dir()->kernel()->dirty_metahandles);
|
| + MarkDirty();
|
| }
|
| }
|
|
|
| void MutableEntry::PutSpecifics(const sync_pb::EntitySpecifics& value) {
|
| DCHECK(kernel_);
|
| CHECK(!value.password().has_client_only_encrypted_data());
|
| - write_transaction()->TrackChangesTo(kernel_);
|
| // TODO(ncarter): This is unfortunately heavyweight. Can we do
|
| // better?
|
| const std::string& serialized_value = value.SerializeAsString();
|
| if (serialized_value != kernel_->ref(SPECIFICS).SerializeAsString()) {
|
| + write_transaction()->TrackChangesTo(kernel_);
|
| // Check for potential sharing - SPECIFICS is often
|
| // copied from SERVER_SPECIFICS.
|
| if (serialized_value ==
|
| @@ -232,21 +231,21 @@ void MutableEntry::PutSpecifics(const sync_pb::EntitySpecifics& value) {
|
| } else {
|
| kernel_->put(SPECIFICS, value);
|
| }
|
| - kernel_->mark_dirty(&dir()->kernel()->dirty_metahandles);
|
| + MarkDirty();
|
| }
|
| }
|
|
|
| void MutableEntry::PutUniquePosition(const UniquePosition& value) {
|
| DCHECK(kernel_);
|
| - write_transaction()->TrackChangesTo(kernel_);
|
| if(!kernel_->ref(UNIQUE_POSITION).Equals(value)) {
|
| + write_transaction()->TrackChangesTo(kernel_);
|
| // We should never overwrite a valid position with an invalid one.
|
| DCHECK(value.IsValid());
|
| ScopedKernelLock lock(dir());
|
| ScopedParentChildIndexUpdater updater(
|
| lock, kernel_, &dir()->kernel()->parent_child_index);
|
| kernel_->put(UNIQUE_POSITION, value);
|
| - kernel_->mark_dirty(&dir()->kernel()->dirty_metahandles);
|
| + MarkDirty();
|
| }
|
| }
|
|
|
| @@ -258,6 +257,7 @@ bool MutableEntry::PutPredecessor(const Id& predecessor_id) {
|
| if (!predecessor.good())
|
| return false;
|
| dir()->PutPredecessor(kernel_, predecessor.kernel_);
|
| + DCHECK(kernel_->is_dirty());
|
| }
|
| return true;
|
| }
|
| @@ -265,10 +265,10 @@ bool MutableEntry::PutPredecessor(const Id& predecessor_id) {
|
| void MutableEntry::PutAttachmentMetadata(
|
| const sync_pb::AttachmentMetadata& value) {
|
| DCHECK(kernel_);
|
| - write_transaction()->TrackChangesTo(kernel_);
|
| const std::string& serialized_value = value.SerializeAsString();
|
| if (serialized_value !=
|
| kernel_->ref(ATTACHMENT_METADATA).SerializeAsString()) {
|
| + write_transaction()->TrackChangesTo(kernel_);
|
| dir()->UpdateAttachmentIndex(GetMetahandle(),
|
| kernel_->ref(ATTACHMENT_METADATA), value);
|
| // Check for potential sharing - ATTACHMENT_METADATA is often
|
| @@ -279,7 +279,7 @@ void MutableEntry::PutAttachmentMetadata(
|
| } else {
|
| kernel_->put(ATTACHMENT_METADATA, value);
|
| }
|
| - kernel_->mark_dirty(&dir()->kernel()->dirty_metahandles);
|
| + MarkDirty();
|
| }
|
| }
|
|
|
| @@ -298,7 +298,7 @@ void MutableEntry::MarkAttachmentAsOnServer(
|
| record->set_is_on_server(true);
|
| }
|
| kernel_->put(ATTACHMENT_METADATA, attachment_metadata);
|
| - kernel_->mark_dirty(&dir()->kernel()->dirty_metahandles);
|
| + MarkDirty();
|
| MarkForSyncing(this);
|
| }
|
|
|
|
|