| // Copyright 2014 The Chromium Authors | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #include "components/sync/engine/get_updates_delegate.h" | |
| #include "components/sync/engine/events/configure_get_updates_request_event.h" | |
| #include "components/sync/engine/events/normal_get_updates_request_event.h" | |
| #include "components/sync/engine/events/poll_get_updates_request_event.h" | |
| #include "components/sync/engine/get_updates_processor.h" | |
| #include "components/sync/engine/update_handler.h" | |
| #include "components/sync/protocol/data_type_progress_marker.pb.h" | |
| #include "components/sync/protocol/get_updates_caller_info.pb.h" | |
| #include "components/sync/protocol/sync.pb.h" | |
| namespace syncer { | |
| NormalGetUpdatesDelegate::NormalGetUpdatesDelegate( | |
| const NudgeTracker& nudge_tracker) | |
| : nudge_tracker_(nudge_tracker) {} | |
| NormalGetUpdatesDelegate::~NormalGetUpdatesDelegate() = default; | |
| // This function assumes the progress markers have already been populated. | |
| void NormalGetUpdatesDelegate::HelpPopulateGuMessage( | |
| sync_pb::GetUpdatesMessage* get_updates) const { | |
| // Set the origin. | |
| get_updates->set_get_updates_origin(sync_pb::SyncEnums::GU_TRIGGER); | |
| // Fill in the notification hints. | |
| for (int i = 0; i < get_updates->from_progress_marker_size(); ++i) { | |
| sync_pb::DataTypeProgressMarker* progress_marker = | |
| get_updates->mutable_from_progress_marker(i); | |
| DataType type = | |
| GetDataTypeFromSpecificsFieldNumber(progress_marker->data_type_id()); | |
| DCHECK(!nudge_tracker_->IsTypeBlocked(type)) | |
| << "Throttled types should have been removed from the request_types."; | |
| nudge_tracker_->FillProtoMessage( | |
| type, progress_marker->mutable_get_update_triggers()); | |
| } | |
| } | |
| std::unique_ptr<ProtocolEvent> NormalGetUpdatesDelegate::GetNetworkRequestEvent( | |
| base::Time timestamp, | |
| const sync_pb::ClientToServerMessage& request) const { | |
| return std::unique_ptr<ProtocolEvent>( | |
| new NormalGetUpdatesRequestEvent(timestamp, *nudge_tracker_, request)); | |
| } | |
| bool NormalGetUpdatesDelegate::IsNotificationInfoRequired() const { | |
| return true; | |
| } | |
| ConfigureGetUpdatesDelegate::ConfigureGetUpdatesDelegate( | |
| sync_pb::SyncEnums::GetUpdatesOrigin origin) | |
| : origin_(origin) {} | |
| ConfigureGetUpdatesDelegate::~ConfigureGetUpdatesDelegate() = default; | |
| void ConfigureGetUpdatesDelegate::HelpPopulateGuMessage( | |
| sync_pb::GetUpdatesMessage* get_updates) const { | |
| get_updates->set_get_updates_origin(origin_); | |
| } | |
| std::unique_ptr<ProtocolEvent> | |
| ConfigureGetUpdatesDelegate::GetNetworkRequestEvent( | |
| base::Time timestamp, | |
| const sync_pb::ClientToServerMessage& request) const { | |
| return std::make_unique<ConfigureGetUpdatesRequestEvent>(timestamp, origin_, | |
| request); | |
| } | |
| bool ConfigureGetUpdatesDelegate::IsNotificationInfoRequired() const { | |
| return false; | |
| } | |
| PollGetUpdatesDelegate::PollGetUpdatesDelegate() = default; | |
| PollGetUpdatesDelegate::~PollGetUpdatesDelegate() = default; | |
| void PollGetUpdatesDelegate::HelpPopulateGuMessage( | |
| sync_pb::GetUpdatesMessage* get_updates) const { | |
| get_updates->set_get_updates_origin(sync_pb::SyncEnums::PERIODIC); | |
| } | |
| std::unique_ptr<ProtocolEvent> PollGetUpdatesDelegate::GetNetworkRequestEvent( | |
| base::Time timestamp, | |
| const sync_pb::ClientToServerMessage& request) const { | |
| return std::unique_ptr<ProtocolEvent>( | |
| new PollGetUpdatesRequestEvent(timestamp, request)); | |
| } | |
| bool PollGetUpdatesDelegate::IsNotificationInfoRequired() const { | |
| return false; | |
| } | |
| } // namespace syncer |