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); |