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

Side by Side Diff: components/sync/engine_impl/get_updates_processor.cc

Issue 2376123003: [Sync] Move //components/sync to the syncer namespace. (Closed)
Patch Set: Fix tools and iOS. Created 4 years, 2 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 unified diff | Download patch
OLDNEW
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 "components/sync/engine_impl/get_updates_processor.h" 5 #include "components/sync/engine_impl/get_updates_processor.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <map> 9 #include <map>
10 #include <utility>
10 11
11 #include "base/trace_event/trace_event.h" 12 #include "base/trace_event/trace_event.h"
12 #include "components/sync/engine/events/get_updates_response_event.h" 13 #include "components/sync/engine/events/get_updates_response_event.h"
13 #include "components/sync/engine_impl/cycle/status_controller.h" 14 #include "components/sync/engine_impl/cycle/status_controller.h"
14 #include "components/sync/engine_impl/cycle/sync_cycle.h" 15 #include "components/sync/engine_impl/cycle/sync_cycle.h"
15 #include "components/sync/engine_impl/get_updates_delegate.h" 16 #include "components/sync/engine_impl/get_updates_delegate.h"
16 #include "components/sync/engine_impl/syncer_proto_util.h" 17 #include "components/sync/engine_impl/syncer_proto_util.h"
17 #include "components/sync/engine_impl/update_handler.h" 18 #include "components/sync/engine_impl/update_handler.h"
18 #include "components/sync/protocol/sync.pb.h" 19 #include "components/sync/protocol/sync.pb.h"
19 #include "components/sync/syncable/directory.h" 20 #include "components/sync/syncable/directory.h"
20 #include "components/sync/syncable/nigori_handler.h" 21 #include "components/sync/syncable/nigori_handler.h"
21 #include "components/sync/syncable/syncable_read_transaction.h" 22 #include "components/sync/syncable/syncable_read_transaction.h"
22 23
23 typedef std::vector<const sync_pb::SyncEntity*> SyncEntityList;
24 typedef std::map<syncer::ModelType, SyncEntityList> TypeSyncEntityMap;
25
26 namespace syncer { 24 namespace syncer {
27 25
26 namespace {
27
28 typedef std::vector<const sync_pb::SyncEntity*> SyncEntityList;
29 typedef std::map<ModelType, SyncEntityList> TypeSyncEntityMap;
28 typedef std::map<ModelType, size_t> TypeToIndexMap; 30 typedef std::map<ModelType, size_t> TypeToIndexMap;
29 31
30 namespace {
31
32 bool ShouldRequestEncryptionKey(SyncCycleContext* context) { 32 bool ShouldRequestEncryptionKey(SyncCycleContext* context) {
33 syncable::Directory* dir = context->directory(); 33 syncable::Directory* dir = context->directory();
34 syncable::ReadTransaction trans(FROM_HERE, dir); 34 syncable::ReadTransaction trans(FROM_HERE, dir);
35 syncable::NigoriHandler* nigori_handler = dir->GetNigoriHandler(); 35 syncable::NigoriHandler* nigori_handler = dir->GetNigoriHandler();
36 return nigori_handler->NeedKeystoreKey(&trans); 36 return nigori_handler->NeedKeystoreKey(&trans);
37 } 37 }
38 38
39 SyncerError HandleGetEncryptionKeyResponse( 39 SyncerError HandleGetEncryptionKeyResponse(
40 const sync_pb::ClientToServerResponse& update_response, 40 const sync_pb::ClientToServerResponse& update_response,
41 syncable::Directory* dir) { 41 syncable::Directory* dir) {
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after
280 ModelTypeSet request_types, 280 ModelTypeSet request_types,
281 StatusController* status) { 281 StatusController* status) {
282 status->increment_num_updates_downloaded_by(gu_response.entries_size()); 282 status->increment_num_updates_downloaded_by(gu_response.entries_size());
283 283
284 // The changes remaining field is used to prevent the client from looping. If 284 // The changes remaining field is used to prevent the client from looping. If
285 // that field is being set incorrectly, we're in big trouble. 285 // that field is being set incorrectly, we're in big trouble.
286 if (!gu_response.has_changes_remaining()) { 286 if (!gu_response.has_changes_remaining()) {
287 return SERVER_RESPONSE_VALIDATION_FAILED; 287 return SERVER_RESPONSE_VALIDATION_FAILED;
288 } 288 }
289 289
290 syncer::SyncerError result = 290 SyncerError result =
291 ProcessGetUpdatesResponse(request_types, gu_response, status); 291 ProcessGetUpdatesResponse(request_types, gu_response, status);
292 if (result != syncer::SYNCER_OK) 292 if (result != SYNCER_OK)
293 return result; 293 return result;
294 294
295 if (gu_response.changes_remaining() == 0) { 295 if (gu_response.changes_remaining() == 0) {
296 return SYNCER_OK; 296 return SYNCER_OK;
297 } else { 297 } else {
298 return SERVER_MORE_TO_DOWNLOAD; 298 return SERVER_MORE_TO_DOWNLOAD;
299 } 299 }
300 } 300 }
301 301
302 syncer::SyncerError GetUpdatesProcessor::ProcessGetUpdatesResponse( 302 SyncerError GetUpdatesProcessor::ProcessGetUpdatesResponse(
303 ModelTypeSet gu_types, 303 ModelTypeSet gu_types,
304 const sync_pb::GetUpdatesResponse& gu_response, 304 const sync_pb::GetUpdatesResponse& gu_response,
305 StatusController* status_controller) { 305 StatusController* status_controller) {
306 TypeSyncEntityMap updates_by_type; 306 TypeSyncEntityMap updates_by_type;
307 PartitionUpdatesByType(gu_response, gu_types, &updates_by_type); 307 PartitionUpdatesByType(gu_response, gu_types, &updates_by_type);
308 DCHECK_EQ(gu_types.Size(), updates_by_type.size()); 308 DCHECK_EQ(gu_types.Size(), updates_by_type.size());
309 309
310 TypeToIndexMap progress_index_by_type; 310 TypeToIndexMap progress_index_by_type;
311 PartitionProgressMarkersByType(gu_response, gu_types, 311 PartitionProgressMarkersByType(gu_response, gu_types,
312 &progress_index_by_type); 312 &progress_index_by_type);
313 if (gu_types.Size() != progress_index_by_type.size()) { 313 if (gu_types.Size() != progress_index_by_type.size()) {
314 NOTREACHED() << "Missing progress markers in GetUpdates response."; 314 NOTREACHED() << "Missing progress markers in GetUpdates response.";
315 return syncer::SERVER_RESPONSE_VALIDATION_FAILED; 315 return SERVER_RESPONSE_VALIDATION_FAILED;
316 } 316 }
317 317
318 TypeToIndexMap context_by_type; 318 TypeToIndexMap context_by_type;
319 PartitionContextMutationsByType(gu_response, gu_types, &context_by_type); 319 PartitionContextMutationsByType(gu_response, gu_types, &context_by_type);
320 320
321 // Iterate over these maps in parallel, processing updates for each type. 321 // Iterate over these maps in parallel, processing updates for each type.
322 TypeToIndexMap::iterator progress_marker_iter = 322 TypeToIndexMap::iterator progress_marker_iter =
323 progress_index_by_type.begin(); 323 progress_index_by_type.begin();
324 TypeSyncEntityMap::iterator updates_iter = updates_by_type.begin(); 324 TypeSyncEntityMap::iterator updates_iter = updates_by_type.begin();
325 for (; (progress_marker_iter != progress_index_by_type.end() && 325 for (; (progress_marker_iter != progress_index_by_type.end() &&
326 updates_iter != updates_by_type.end()); 326 updates_iter != updates_by_type.end());
327 ++progress_marker_iter, ++updates_iter) { 327 ++progress_marker_iter, ++updates_iter) {
328 DCHECK_EQ(progress_marker_iter->first, updates_iter->first); 328 DCHECK_EQ(progress_marker_iter->first, updates_iter->first);
329 ModelType type = progress_marker_iter->first; 329 ModelType type = progress_marker_iter->first;
330 330
331 UpdateHandlerMap::iterator update_handler_iter = 331 UpdateHandlerMap::iterator update_handler_iter =
332 update_handler_map_->find(type); 332 update_handler_map_->find(type);
333 333
334 sync_pb::DataTypeContext context; 334 sync_pb::DataTypeContext context;
335 TypeToIndexMap::iterator context_iter = context_by_type.find(type); 335 TypeToIndexMap::iterator context_iter = context_by_type.find(type);
336 if (context_iter != context_by_type.end()) 336 if (context_iter != context_by_type.end())
337 context.CopyFrom(gu_response.context_mutations(context_iter->second)); 337 context.CopyFrom(gu_response.context_mutations(context_iter->second));
338 338
339 if (update_handler_iter != update_handler_map_->end()) { 339 if (update_handler_iter != update_handler_map_->end()) {
340 syncer::SyncerError result = 340 SyncerError result =
341 update_handler_iter->second->ProcessGetUpdatesResponse( 341 update_handler_iter->second->ProcessGetUpdatesResponse(
342 gu_response.new_progress_marker(progress_marker_iter->second), 342 gu_response.new_progress_marker(progress_marker_iter->second),
343 context, updates_iter->second, status_controller); 343 context, updates_iter->second, status_controller);
344 if (result != syncer::SYNCER_OK) 344 if (result != SYNCER_OK)
345 return result; 345 return result;
346 } else { 346 } else {
347 DLOG(WARNING) << "Ignoring received updates of a type we can't handle. " 347 DLOG(WARNING) << "Ignoring received updates of a type we can't handle. "
348 << "Type is: " << ModelTypeToString(type); 348 << "Type is: " << ModelTypeToString(type);
349 continue; 349 continue;
350 } 350 }
351 } 351 }
352 DCHECK(progress_marker_iter == progress_index_by_type.end() && 352 DCHECK(progress_marker_iter == progress_index_by_type.end() &&
353 updates_iter == updates_by_type.end()); 353 updates_iter == updates_by_type.end());
354 354
355 return syncer::SYNCER_OK; 355 return SYNCER_OK;
356 } 356 }
357 357
358 void GetUpdatesProcessor::ApplyUpdates(ModelTypeSet gu_types, 358 void GetUpdatesProcessor::ApplyUpdates(ModelTypeSet gu_types,
359 StatusController* status_controller) { 359 StatusController* status_controller) {
360 status_controller->set_get_updates_request_types(gu_types); 360 status_controller->set_get_updates_request_types(gu_types);
361 delegate_.ApplyUpdates(gu_types, status_controller, update_handler_map_); 361 delegate_.ApplyUpdates(gu_types, status_controller, update_handler_map_);
362 } 362 }
363 363
364 void GetUpdatesProcessor::CopyClientDebugInfo( 364 void GetUpdatesProcessor::CopyClientDebugInfo(
365 DebugInfoGetter* debug_info_getter, 365 DebugInfoGetter* debug_info_getter,
366 sync_pb::DebugInfo* debug_info) { 366 sync_pb::DebugInfo* debug_info) {
367 DVLOG(1) << "Copying client debug info to send."; 367 DVLOG(1) << "Copying client debug info to send.";
368 debug_info_getter->GetDebugInfo(debug_info); 368 debug_info_getter->GetDebugInfo(debug_info);
369 } 369 }
370 370
371 } // namespace syncer 371 } // namespace syncer
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698