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

Unified Diff: components/sync_driver/generic_change_processor.cc

Issue 567053002: Pass AttachmentIdList instead of AttachmentList to SyncData (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase. Fix test. Apply feedback. Created 6 years, 3 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: components/sync_driver/generic_change_processor.cc
diff --git a/components/sync_driver/generic_change_processor.cc b/components/sync_driver/generic_change_processor.cc
index 30b215ea60f74e90e2d0f9a4ac3915737419aff8..9bfd0c229b779e9c08b90321f322cbe690a81caa 100644
--- a/components/sync_driver/generic_change_processor.cc
+++ b/components/sync_driver/generic_change_processor.cc
@@ -85,11 +85,6 @@ syncer::SyncData BuildRemoteSyncData(
attachment_service_proxy);
}
-const syncer::AttachmentId& AttachmentToAttachmentId(
- const syncer::Attachment& attachment) {
- return attachment.GetId();
-}
-
} // namespace
GenericChangeProcessor::GenericChangeProcessor(
@@ -410,7 +405,7 @@ syncer::SyncError GenericChangeProcessor::ProcessSyncChanges(
// Keep track of brand new attachments so we can persist them on this device
// and upload them to the server.
- syncer::AttachmentList new_attachments;
+ syncer::AttachmentIdList new_attachments;
syncer::WriteTransaction trans(from_here, share_handle());
@@ -476,7 +471,7 @@ syncer::SyncError GenericChangeProcessor::ProcessSyncChanges(
NOTREACHED();
return error;
}
- StoreAndUploadAttachments(new_attachments);
+ UploadAttachments(new_attachments);
}
return syncer::SyncError();
@@ -492,7 +487,7 @@ syncer::SyncError GenericChangeProcessor::HandleActionAdd(
const syncer::ModelType& type,
const syncer::WriteTransaction& trans,
syncer::WriteNode* sync_node,
- syncer::AttachmentList* new_attachments) {
+ syncer::AttachmentIdList* new_attachments) {
// TODO(sync): Handle other types of creation (custom parents, folders,
// etc.).
syncer::ReadNode root_node(&trans);
@@ -560,12 +555,8 @@ syncer::SyncError GenericChangeProcessor::HandleActionAdd(
SetAttachmentMetadata(attachment_ids, sync_node);
// Return any newly added attachments.
- const syncer::AttachmentList& local_attachments_for_upload =
- sync_data_local.GetLocalAttachmentsForUpload();
- new_attachments->insert(new_attachments->end(),
- local_attachments_for_upload.begin(),
- local_attachments_for_upload.end());
-
+ new_attachments->insert(
+ new_attachments->end(), attachment_ids.begin(), attachment_ids.end());
if (merge_result_.get()) {
merge_result_->set_num_items_added(merge_result_->num_items_added() + 1);
}
@@ -581,7 +572,7 @@ syncer::SyncError GenericChangeProcessor::HandleActionUpdate(
const syncer::ModelType& type,
const syncer::WriteTransaction& trans,
syncer::WriteNode* sync_node,
- syncer::AttachmentList* new_attachments) {
+ syncer::AttachmentIdList* new_attachments) {
// TODO(zea): consider having this logic for all possible changes?
const syncer::SyncDataLocal sync_data_local(change.sync_data());
@@ -663,14 +654,12 @@ syncer::SyncError GenericChangeProcessor::HandleActionUpdate(
sync_node->SetTitle(change.sync_data().GetTitle());
SetNodeSpecifics(sync_data_local.GetSpecifics(), sync_node);
- SetAttachmentMetadata(sync_data_local.GetAttachmentIds(), sync_node);
+ syncer::AttachmentIdList attachment_ids = sync_data_local.GetAttachmentIds();
+ SetAttachmentMetadata(attachment_ids, sync_node);
// Return any newly added attachments.
- const syncer::AttachmentList& local_attachments_for_upload =
- sync_data_local.GetLocalAttachmentsForUpload();
- new_attachments->insert(new_attachments->end(),
- local_attachments_for_upload.begin(),
- local_attachments_for_upload.end());
+ new_attachments->insert(
+ new_attachments->end(), attachment_ids.begin(), attachment_ids.end());
if (merge_result_.get()) {
merge_result_->set_num_items_modified(merge_result_->num_items_modified() +
@@ -722,42 +711,14 @@ syncer::UserShare* GenericChangeProcessor::share_handle() const {
return share_handle_;
}
-void GenericChangeProcessor::StoreAndUploadAttachments(
- const syncer::AttachmentList& attachments) {
+void GenericChangeProcessor::UploadAttachments(
+ const syncer::AttachmentIdList& attachment_ids) {
DCHECK(CalledOnValidThread());
DCHECK(attachment_service_.get() != NULL);
- attachment_service_->GetStore()->Write(
- attachments,
- base::Bind(&GenericChangeProcessor::WriteAttachmentsDone,
- weak_ptr_factory_.GetWeakPtr(),
- attachments));
-}
-
-void GenericChangeProcessor::WriteAttachmentsDone(
- const syncer::AttachmentList& attachments,
- const syncer::AttachmentStore::Result& result) {
- DCHECK(CalledOnValidThread());
- DCHECK(attachment_service_.get() != NULL);
- if (result != syncer::AttachmentStore::SUCCESS) {
- // TODO(maniscalco): Deal with case where an error occurred (bug 361251).
- return;
- }
- // TODO(maniscalco): Here is where we're going to update the in-directory
- // entry to indicate that the attachments have been successfully stored on
- // disk. Why do we care? Because we might crash after persisting the
- // directory to disk, but before we have persisted its attachments, leaving us
- // with danging attachment ids. Having a flag that indicates we've stored the
- // entry will allow us to detect and filter entries with dangling attachment
- // ids (bug 368353).
-
- // Begin uploading the attachments now that they are safe on disk.
- syncer::AttachmentIdSet attachment_ids;
- std::transform(attachments.begin(),
- attachments.end(),
- std::inserter(attachment_ids, attachment_ids.end()),
- AttachmentToAttachmentId);
- attachment_service_->UploadAttachments(attachment_ids);
+ syncer::AttachmentIdSet attachment_id_set;
+ attachment_id_set.insert(attachment_ids.begin(), attachment_ids.end());
+ attachment_service_->UploadAttachments(attachment_id_set);
}
} // namespace sync_driver
« no previous file with comments | « components/sync_driver/generic_change_processor.h ('k') | components/sync_driver/generic_change_processor_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698