| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "sync/engine/get_updates_processor.h" | 5 #include "sync/engine/get_updates_processor.h" |
| 6 | 6 |
| 7 #include <map> | 7 #include <map> |
| 8 | 8 |
| 9 #include "base/debug/trace_event.h" | 9 #include "base/debug/trace_event.h" |
| 10 #include "sync/engine/get_updates_delegate.h" | 10 #include "sync/engine/get_updates_delegate.h" |
| (...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 171 sync_pb::GetUpdatesMessage* get_updates = message->mutable_get_updates(); | 171 sync_pb::GetUpdatesMessage* get_updates = message->mutable_get_updates(); |
| 172 | 172 |
| 173 for (ModelTypeSet::Iterator it = gu_types.First(); it.Good(); it.Inc()) { | 173 for (ModelTypeSet::Iterator it = gu_types.First(); it.Good(); it.Inc()) { |
| 174 UpdateHandlerMap::iterator handler_it = update_handler_map_->find(it.Get()); | 174 UpdateHandlerMap::iterator handler_it = update_handler_map_->find(it.Get()); |
| 175 DCHECK(handler_it != update_handler_map_->end()) | 175 DCHECK(handler_it != update_handler_map_->end()) |
| 176 << "Failed to look up handler for " << ModelTypeToString(it.Get()); | 176 << "Failed to look up handler for " << ModelTypeToString(it.Get()); |
| 177 sync_pb::DataTypeProgressMarker* progress_marker = | 177 sync_pb::DataTypeProgressMarker* progress_marker = |
| 178 get_updates->add_from_progress_marker(); | 178 get_updates->add_from_progress_marker(); |
| 179 handler_it->second->GetDownloadProgress(progress_marker); | 179 handler_it->second->GetDownloadProgress(progress_marker); |
| 180 progress_marker->clear_gc_directive(); | 180 progress_marker->clear_gc_directive(); |
| 181 |
| 182 sync_pb::DataTypeContext context; |
| 183 handler_it->second->GetDataTypeContext(&context); |
| 184 if (!context.context().empty()) |
| 185 get_updates->add_client_contexts()->Swap(&context); |
| 181 } | 186 } |
| 187 |
| 182 delegate_.HelpPopulateGuMessage(get_updates); | 188 delegate_.HelpPopulateGuMessage(get_updates); |
| 183 } | 189 } |
| 184 | 190 |
| 185 SyncerError GetUpdatesProcessor::ExecuteDownloadUpdates( | 191 SyncerError GetUpdatesProcessor::ExecuteDownloadUpdates( |
| 186 ModelTypeSet request_types, | 192 ModelTypeSet request_types, |
| 187 sessions::SyncSession* session, | 193 sessions::SyncSession* session, |
| 188 sync_pb::ClientToServerMessage* msg) { | 194 sync_pb::ClientToServerMessage* msg) { |
| 189 sync_pb::ClientToServerResponse update_response; | 195 sync_pb::ClientToServerResponse update_response; |
| 190 sessions::StatusController* status = session->mutable_status_controller(); | 196 sessions::StatusController* status = session->mutable_status_controller(); |
| 191 bool need_encryption_key = ShouldRequestEncryptionKey(session->context()); | 197 bool need_encryption_key = ShouldRequestEncryptionKey(session->context()); |
| (...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 307 } else { | 313 } else { |
| 308 DLOG(WARNING) | 314 DLOG(WARNING) |
| 309 << "Ignoring received updates of a type we can't handle. " | 315 << "Ignoring received updates of a type we can't handle. " |
| 310 << "Type is: " << ModelTypeToString(type); | 316 << "Type is: " << ModelTypeToString(type); |
| 311 continue; | 317 continue; |
| 312 } | 318 } |
| 313 } | 319 } |
| 314 DCHECK(progress_marker_iter == progress_index_by_type.end() && | 320 DCHECK(progress_marker_iter == progress_index_by_type.end() && |
| 315 updates_iter == updates_by_type.end()); | 321 updates_iter == updates_by_type.end()); |
| 316 | 322 |
| 323 for (int i = 0; i < gu_response.context_mutations_size(); ++i) { |
| 324 const sync_pb::DataTypeContext& context = gu_response.context_mutations(i); |
| 325 syncer::ModelType type = |
| 326 GetModelTypeFromSpecificsFieldNumber(context.type()); |
| 327 if (!syncer::IsRealDataType(type)) { |
| 328 DLOG(WARNING) << "Received datatype context mutation with invalid type."; |
| 329 continue; |
| 330 } |
| 331 |
| 332 UpdateHandlerMap::iterator update_handler_iter = |
| 333 update_handler_map_->find(type); |
| 334 |
| 335 if (update_handler_iter != update_handler_map_->end()) { |
| 336 update_handler_iter->second->ProcessDataTypeContextMutation(context); |
| 337 } else { |
| 338 DLOG(WARNING) |
| 339 << "Ignoring received context mutations of a type we can't handle. " |
| 340 << "Type is: " << ModelTypeToString(type); |
| 341 continue; |
| 342 } |
| 343 } |
| 344 |
| 317 return true; | 345 return true; |
| 318 } | 346 } |
| 319 | 347 |
| 320 void GetUpdatesProcessor::ApplyUpdates( | 348 void GetUpdatesProcessor::ApplyUpdates( |
| 321 ModelTypeSet gu_types, | 349 ModelTypeSet gu_types, |
| 322 sessions::StatusController* status_controller) { | 350 sessions::StatusController* status_controller) { |
| 323 delegate_.ApplyUpdates(gu_types, status_controller, update_handler_map_); | 351 delegate_.ApplyUpdates(gu_types, status_controller, update_handler_map_); |
| 324 } | 352 } |
| 325 | 353 |
| 326 void GetUpdatesProcessor::CopyClientDebugInfo( | 354 void GetUpdatesProcessor::CopyClientDebugInfo( |
| 327 sessions::DebugInfoGetter* debug_info_getter, | 355 sessions::DebugInfoGetter* debug_info_getter, |
| 328 sync_pb::DebugInfo* debug_info) { | 356 sync_pb::DebugInfo* debug_info) { |
| 329 DVLOG(1) << "Copying client debug info to send."; | 357 DVLOG(1) << "Copying client debug info to send."; |
| 330 debug_info_getter->GetDebugInfo(debug_info); | 358 debug_info_getter->GetDebugInfo(debug_info); |
| 331 } | 359 } |
| 332 | 360 |
| 333 } // namespace syncer | 361 } // namespace syncer |
| OLD | NEW |