| OLD | NEW |
| (Empty) |
| 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 | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #include "sync/engine/get_updates_delegate.h" | |
| 6 | |
| 7 #include "sync/engine/directory_update_handler.h" | |
| 8 #include "sync/engine/get_updates_processor.h" | |
| 9 #include "sync/internal_api/public/events/configure_get_updates_request_event.h" | |
| 10 #include "sync/internal_api/public/events/normal_get_updates_request_event.h" | |
| 11 #include "sync/internal_api/public/events/poll_get_updates_request_event.h" | |
| 12 | |
| 13 namespace syncer { | |
| 14 | |
| 15 namespace { | |
| 16 | |
| 17 void NonPassiveApplyUpdates( | |
| 18 ModelTypeSet gu_types, | |
| 19 sessions::StatusController* status_controller, | |
| 20 UpdateHandlerMap* update_handler_map) { | |
| 21 for (UpdateHandlerMap::iterator it = update_handler_map->begin(); | |
| 22 it != update_handler_map->end(); ++it) { | |
| 23 if (gu_types.Has(it->first)) | |
| 24 it->second->ApplyUpdates(status_controller); | |
| 25 } | |
| 26 } | |
| 27 | |
| 28 void PassiveApplyUpdates( | |
| 29 ModelTypeSet gu_types, | |
| 30 sessions::StatusController* status_controller, | |
| 31 UpdateHandlerMap* update_handler_map) { | |
| 32 for (UpdateHandlerMap::iterator it = update_handler_map->begin(); | |
| 33 it != update_handler_map->end(); ++it) { | |
| 34 if (gu_types.Has(it->first)) | |
| 35 it->second->PassiveApplyUpdates(status_controller); | |
| 36 } | |
| 37 } | |
| 38 | |
| 39 } // namespace | |
| 40 | |
| 41 GetUpdatesDelegate::GetUpdatesDelegate() {} | |
| 42 | |
| 43 GetUpdatesDelegate::~GetUpdatesDelegate() {} | |
| 44 | |
| 45 NormalGetUpdatesDelegate::NormalGetUpdatesDelegate( | |
| 46 const sessions::NudgeTracker& nudge_tracker) | |
| 47 : nudge_tracker_(nudge_tracker) {} | |
| 48 | |
| 49 NormalGetUpdatesDelegate::~NormalGetUpdatesDelegate() {} | |
| 50 | |
| 51 // This function assumes the progress markers have already been populated. | |
| 52 void NormalGetUpdatesDelegate::HelpPopulateGuMessage( | |
| 53 sync_pb::GetUpdatesMessage* get_updates) const { | |
| 54 // Set legacy GetUpdatesMessage.GetUpdatesCallerInfo information. | |
| 55 get_updates->mutable_caller_info()->set_source( | |
| 56 nudge_tracker_.GetLegacySource()); | |
| 57 | |
| 58 // Set the new and improved version of source, too. | |
| 59 get_updates->set_get_updates_origin(sync_pb::SyncEnums::GU_TRIGGER); | |
| 60 get_updates->set_is_retry(nudge_tracker_.IsRetryRequired()); | |
| 61 | |
| 62 // Special case: A GU performed for no other reason than retry will have its | |
| 63 // origin set to RETRY. | |
| 64 if (nudge_tracker_.GetLegacySource() == sync_pb::GetUpdatesCallerInfo::RETRY) | |
| 65 get_updates->set_get_updates_origin(sync_pb::SyncEnums::RETRY); | |
| 66 | |
| 67 // Fill in the notification hints. | |
| 68 for (int i = 0; i < get_updates->from_progress_marker_size(); ++i) { | |
| 69 sync_pb::DataTypeProgressMarker* progress_marker = | |
| 70 get_updates->mutable_from_progress_marker(i); | |
| 71 ModelType type = GetModelTypeFromSpecificsFieldNumber( | |
| 72 progress_marker->data_type_id()); | |
| 73 | |
| 74 DCHECK(!nudge_tracker_.IsTypeThrottled(type)) | |
| 75 << "Throttled types should have been removed from the request_types."; | |
| 76 | |
| 77 nudge_tracker_.SetLegacyNotificationHint(type, progress_marker); | |
| 78 nudge_tracker_.FillProtoMessage( | |
| 79 type, | |
| 80 progress_marker->mutable_get_update_triggers()); | |
| 81 } | |
| 82 } | |
| 83 | |
| 84 void NormalGetUpdatesDelegate::ApplyUpdates( | |
| 85 ModelTypeSet gu_types, | |
| 86 sessions::StatusController* status_controller, | |
| 87 UpdateHandlerMap* update_handler_map) const { | |
| 88 NonPassiveApplyUpdates(gu_types, status_controller, update_handler_map); | |
| 89 } | |
| 90 | |
| 91 std::unique_ptr<ProtocolEvent> NormalGetUpdatesDelegate::GetNetworkRequestEvent( | |
| 92 base::Time timestamp, | |
| 93 const sync_pb::ClientToServerMessage& request) const { | |
| 94 return std::unique_ptr<ProtocolEvent>( | |
| 95 new NormalGetUpdatesRequestEvent(timestamp, nudge_tracker_, request)); | |
| 96 } | |
| 97 | |
| 98 ConfigureGetUpdatesDelegate::ConfigureGetUpdatesDelegate( | |
| 99 sync_pb::GetUpdatesCallerInfo::GetUpdatesSource source) : source_(source) {} | |
| 100 | |
| 101 ConfigureGetUpdatesDelegate::~ConfigureGetUpdatesDelegate() {} | |
| 102 | |
| 103 void ConfigureGetUpdatesDelegate::HelpPopulateGuMessage( | |
| 104 sync_pb::GetUpdatesMessage* get_updates) const { | |
| 105 get_updates->mutable_caller_info()->set_source(source_); | |
| 106 get_updates->set_get_updates_origin(ConvertConfigureSourceToOrigin(source_)); | |
| 107 } | |
| 108 | |
| 109 void ConfigureGetUpdatesDelegate::ApplyUpdates( | |
| 110 ModelTypeSet gu_types, | |
| 111 sessions::StatusController* status_controller, | |
| 112 UpdateHandlerMap* update_handler_map) const { | |
| 113 PassiveApplyUpdates(gu_types, status_controller, update_handler_map); | |
| 114 } | |
| 115 | |
| 116 std::unique_ptr<ProtocolEvent> | |
| 117 ConfigureGetUpdatesDelegate::GetNetworkRequestEvent( | |
| 118 base::Time timestamp, | |
| 119 const sync_pb::ClientToServerMessage& request) const { | |
| 120 return std::unique_ptr<ProtocolEvent>(new ConfigureGetUpdatesRequestEvent( | |
| 121 timestamp, ConvertConfigureSourceToOrigin(source_), request)); | |
| 122 } | |
| 123 | |
| 124 sync_pb::SyncEnums::GetUpdatesOrigin | |
| 125 ConfigureGetUpdatesDelegate::ConvertConfigureSourceToOrigin( | |
| 126 sync_pb::GetUpdatesCallerInfo::GetUpdatesSource source) { | |
| 127 switch (source) { | |
| 128 // Configurations: | |
| 129 case sync_pb::GetUpdatesCallerInfo::NEWLY_SUPPORTED_DATATYPE: | |
| 130 return sync_pb::SyncEnums::NEWLY_SUPPORTED_DATATYPE; | |
| 131 case sync_pb::GetUpdatesCallerInfo::MIGRATION: | |
| 132 return sync_pb::SyncEnums::MIGRATION; | |
| 133 case sync_pb::GetUpdatesCallerInfo::RECONFIGURATION: | |
| 134 return sync_pb::SyncEnums::RECONFIGURATION; | |
| 135 case sync_pb::GetUpdatesCallerInfo::NEW_CLIENT: | |
| 136 return sync_pb::SyncEnums::NEW_CLIENT; | |
| 137 case sync_pb::GetUpdatesCallerInfo::PROGRAMMATIC: | |
| 138 return sync_pb::SyncEnums::PROGRAMMATIC; | |
| 139 default: | |
| 140 NOTREACHED(); | |
| 141 return sync_pb::SyncEnums::UNKNOWN_ORIGIN; | |
| 142 } | |
| 143 } | |
| 144 | |
| 145 PollGetUpdatesDelegate::PollGetUpdatesDelegate() {} | |
| 146 | |
| 147 PollGetUpdatesDelegate::~PollGetUpdatesDelegate() {} | |
| 148 | |
| 149 void PollGetUpdatesDelegate::HelpPopulateGuMessage( | |
| 150 sync_pb::GetUpdatesMessage* get_updates) const { | |
| 151 // Set legacy GetUpdatesMessage.GetUpdatesCallerInfo information. | |
| 152 get_updates->mutable_caller_info()->set_source( | |
| 153 sync_pb::GetUpdatesCallerInfo::PERIODIC); | |
| 154 | |
| 155 // Set the new and improved version of source, too. | |
| 156 get_updates->set_get_updates_origin(sync_pb::SyncEnums::PERIODIC); | |
| 157 } | |
| 158 | |
| 159 void PollGetUpdatesDelegate::ApplyUpdates( | |
| 160 ModelTypeSet gu_types, | |
| 161 sessions::StatusController* status_controller, | |
| 162 UpdateHandlerMap* update_handler_map) const { | |
| 163 NonPassiveApplyUpdates(gu_types, status_controller, update_handler_map); | |
| 164 } | |
| 165 | |
| 166 std::unique_ptr<ProtocolEvent> PollGetUpdatesDelegate::GetNetworkRequestEvent( | |
| 167 base::Time timestamp, | |
| 168 const sync_pb::ClientToServerMessage& request) const { | |
| 169 return std::unique_ptr<ProtocolEvent>( | |
| 170 new PollGetUpdatesRequestEvent(timestamp, request)); | |
| 171 } | |
| 172 | |
| 173 } // namespace syncer | |
| OLD | NEW |