Index: sync/syncable/mutable_entry.cc |
diff --git a/sync/syncable/mutable_entry.cc b/sync/syncable/mutable_entry.cc |
index d9d5daa890f0c13fedd1723bfe9b27794a4b2d14..98af1ccf66ce5383226c41ca241147f308a195cb 100644 |
--- a/sync/syncable/mutable_entry.cc |
+++ b/sync/syncable/mutable_entry.cc |
@@ -247,6 +247,25 @@ void MutableEntry::PutAttachmentMetadata( |
} |
} |
+void MutableEntry::UpdateAttachmentIdWithServerInfo( |
+ const sync_pb::AttachmentIdProto& updated_attachment_id) { |
+ DCHECK(kernel_); |
+ DCHECK(!updated_attachment_id.unique_id().empty()); |
+ write_transaction()->TrackChangesTo(kernel_); |
+ sync_pb::AttachmentMetadata& attachment_metadata = |
+ kernel_->mutable_ref(ATTACHMENT_METADATA); |
+ for (int i = 0; i < attachment_metadata.record_size(); ++i) { |
+ sync_pb::AttachmentMetadataRecord* record = |
+ attachment_metadata.mutable_record(i); |
+ if (record->id().unique_id() != updated_attachment_id.unique_id()) |
+ continue; |
+ *record->mutable_id() = updated_attachment_id; |
+ record->set_is_on_server(true); |
+ } |
+ kernel_->mark_dirty(&dir()->kernel_->dirty_metahandles); |
+ MarkForSyncing(this); |
+} |
+ |
// This function sets only the flags needed to get this entry to sync. |
bool MarkForSyncing(MutableEntry* e) { |
DCHECK_NE(static_cast<MutableEntry*>(NULL), e); |