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

Unified Diff: chrome/browser/sync/glue/generic_change_processor.cc

Issue 187303006: Update sync API to support attachments. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@attachmentapi
Patch Set: Pull in upstream changes. Created 6 years, 9 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: chrome/browser/sync/glue/generic_change_processor.cc
diff --git a/chrome/browser/sync/glue/generic_change_processor.cc b/chrome/browser/sync/glue/generic_change_processor.cc
index 06842886aaf10453ba42f51f197a5b5a68ede30b..580f51bcf06813e4c79b2f3ce44d371391a633c9 100644
--- a/chrome/browser/sync/glue/generic_change_processor.cc
+++ b/chrome/browser/sync/glue/generic_change_processor.cc
@@ -39,13 +39,15 @@ void SetNodeSpecifics(const sync_pb::EntitySpecifics& entity_specifics,
syncer::SyncData BuildRemoteSyncData(
int64 sync_id,
- const syncer::BaseNode& read_node) {
+ const syncer::BaseNode& read_node,
+ const syncer::WeakHandle<syncer::AttachmentService>& attachment_service) {
// Use the specifics of non-password datatypes directly (encryption has
// already been handled).
if (read_node.GetModelType() != syncer::PASSWORDS) {
return syncer::SyncData::CreateRemoteData(sync_id,
read_node.GetEntitySpecifics(),
- read_node.GetModificationTime());
+ read_node.GetModificationTime(),
+ attachment_service);
}
// Passwords must be accessed differently, to account for their encryption,
@@ -55,7 +57,8 @@ syncer::SyncData BuildRemoteSyncData(
CopyFrom(read_node.GetPasswordSpecifics());
return syncer::SyncData::CreateRemoteData(sync_id,
password_holder,
- read_node.GetModificationTime());
+ read_node.GetModificationTime(),
+ attachment_service);
}
} // namespace
@@ -64,12 +67,18 @@ GenericChangeProcessor::GenericChangeProcessor(
DataTypeErrorHandler* error_handler,
const base::WeakPtr<syncer::SyncableService>& local_service,
const base::WeakPtr<syncer::SyncMergeResult>& merge_result,
- syncer::UserShare* user_share)
+ syncer::UserShare* user_share,
+ scoped_ptr<syncer::AttachmentService> attachment_service)
: ChangeProcessor(error_handler),
local_service_(local_service),
merge_result_(merge_result),
- share_handle_(user_share) {
+ share_handle_(user_share),
+ attachment_service_(attachment_service.Pass()),
+ attachment_service_weak_ptr_factory_(attachment_service_.get()),
+ attachment_service_weak_handle_(
tim (not reviewing) 2014/03/10 22:55:58 Do we actually need a weak_handle_ member? Is atta
maniscalco 2014/03/18 20:49:18 Good question. Since it's related to your comment
+ MakeWeakHandle(attachment_service_weak_ptr_factory_.GetWeakPtr())) {
DCHECK(CalledOnValidThread());
+ DCHECK(attachment_service_);
}
GenericChangeProcessor::~GenericChangeProcessor() {
@@ -92,11 +101,14 @@ void GenericChangeProcessor::ApplyChangesFromSyncModel(
specifics->mutable_password()->mutable_client_only_encrypted_data()->
CopyFrom(it->extra->unencrypted());
}
- syncer_changes_.push_back(syncer::SyncChange(
- FROM_HERE,
- syncer::SyncChange::ACTION_DELETE,
- syncer::SyncData::CreateRemoteData(
- it->id, specifics ? *specifics : it->specifics, base::Time())));
+ syncer_changes_.push_back(
+ syncer::SyncChange(FROM_HERE,
+ syncer::SyncChange::ACTION_DELETE,
+ syncer::SyncData::CreateRemoteData(
+ it->id,
+ specifics ? *specifics : it->specifics,
+ base::Time(),
+ attachment_service_weak_handle_)));
} else {
syncer::SyncChange::SyncChangeType action =
(it->action == syncer::ChangeRecord::ACTION_ADD) ?
@@ -110,11 +122,11 @@ void GenericChangeProcessor::ApplyChangesFromSyncModel(
base::Int64ToString(it->id));
return;
}
- syncer_changes_.push_back(
- syncer::SyncChange(
- FROM_HERE,
- action,
- BuildRemoteSyncData(it->id, read_node)));
+ syncer_changes_.push_back(syncer::SyncChange(
+ FROM_HERE,
+ action,
+ BuildRemoteSyncData(
+ it->id, read_node, attachment_service_weak_handle_)));
}
}
}
@@ -186,8 +198,10 @@ syncer::SyncError GenericChangeProcessor::GetAllSyncDataReturnError(
type);
return error;
}
- current_sync_data->push_back(BuildRemoteSyncData(sync_child_node.GetId(),
- sync_child_node));
+ current_sync_data->push_back(
+ BuildRemoteSyncData(sync_child_node.GetId(),
+ sync_child_node,
+ attachment_service_weak_handle_));
}
return syncer::SyncError();
}
@@ -338,6 +352,7 @@ syncer::SyncError GenericChangeProcessor::ProcessSyncChanges(
NOTREACHED();
return error;
}
+ attachment_service_->OnSyncDataDelete(change.sync_data());
if (merge_result_.get()) {
merge_result_->set_num_items_deleted(
merge_result_->num_items_deleted() + 1);
@@ -449,6 +464,7 @@ syncer::SyncError GenericChangeProcessor::HandleActionAdd(
}
sync_node->SetTitle(base::UTF8ToWide(change.sync_data().GetTitle()));
SetNodeSpecifics(change.sync_data().GetSpecifics(), sync_node);
+ attachment_service_->OnSyncDataAdd(change.sync_data());
if (merge_result_.get()) {
merge_result_->set_num_items_added(merge_result_->num_items_added() + 1);
}
@@ -550,6 +566,8 @@ syncer::SyncError GenericChangeProcessor::HandleActionUpdate(
sync_node->SetTitle(base::UTF8ToWide(change.sync_data().GetTitle()));
SetNodeSpecifics(change.sync_data().GetSpecifics(), sync_node);
+ attachment_service_->OnSyncDataUpdate(sync_node->GetAttachmentIds(),
+ change.sync_data());
if (merge_result_.get()) {
merge_result_->set_num_items_modified(merge_result_->num_items_modified() +
1);

Powered by Google App Engine
This is Rietveld 408576698