1// Copyright 2013 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#ifndef SYNC_ENGINE_DOWNLOAD_H_ 6#define SYNC_ENGINE_DOWNLOAD_H_ 7 8#include "sync/base/sync_export.h" 9#include "sync/engine/sync_directory_update_handler.h" 10#include "sync/internal_api/public/base/model_type.h" 11#include "sync/internal_api/public/util/syncer_error.h" 12#include "sync/protocol/sync.pb.h" 13 14namespace sync_pb { 15class DebugInfo; 16} // namespace sync_pb 17 18namespace syncer { 19 20namespace sessions { 21class DebugInfoGetter; 22class NudgeTracker; 23class StatusController; 24class SyncSession; 25} // namespace sessions 26 27namespace download { 28 29// This function executes a single GetUpdate request and stores the response in 30// the session's StatusController. It constructs the type of request used to 31// keep types in sync when in normal mode. 32SYNC_EXPORT_PRIVATE void BuildNormalDownloadUpdates( 33 sessions::SyncSession* session, 34 bool create_mobile_bookmarks_folder, 35 ModelTypeSet request_types, 36 const sessions::NudgeTracker& nudge_tracker, 37 sync_pb::ClientToServerMessage* client_to_server_message); 38 39// Helper function. Defined here for testing. 40SYNC_EXPORT_PRIVATE void BuildNormalDownloadUpdatesImpl( 41 ModelTypeSet proto_request_types, 42 UpdateHandlerMap* update_handler_map, 43 const sessions::NudgeTracker& nudge_tracker, 44 sync_pb::GetUpdatesMessage* get_updates); 45 46// This function executes a single GetUpdate request and stores the response in 47// the session's StatusController. It constructs the type of request used to 48// initialize a type for the first time. 49SYNC_EXPORT_PRIVATE void BuildDownloadUpdatesForConfigure( 50 sessions::SyncSession* session, 51 bool create_mobile_bookmarks_folder, 52 sync_pb::GetUpdatesCallerInfo::GetUpdatesSource source, 53 ModelTypeSet request_types, 54 sync_pb::ClientToServerMessage* client_to_server_message); 55 56// Helper function. Defined here for testing. 57SYNC_EXPORT_PRIVATE void BuildDownloadUpdatesForConfigureImpl( 58 ModelTypeSet proto_request_types, 59 UpdateHandlerMap* update_handler_map, 60 sync_pb::GetUpdatesCallerInfo::GetUpdatesSource source, 61 sync_pb::GetUpdatesMessage* get_updates); 62 63// This function executes a single GetUpdate request and stores the response in 64// the session's status controller. It constructs the type of request used for 65// periodic polling. 66SYNC_EXPORT_PRIVATE void BuildDownloadUpdatesForPoll( 67 sessions::SyncSession* session, 68 bool create_mobile_bookmarks_folder, 69 ModelTypeSet request_types, 70 sync_pb::ClientToServerMessage* client_to_server_message); 71 72// Helper function. Defined here for testing. 73SYNC_EXPORT_PRIVATE void BuildDownloadUpdatesForPollImpl( 74 ModelTypeSet proto_request_types, 75 UpdateHandlerMap* update_handler_map, 76 sync_pb::GetUpdatesMessage* get_updates); 77 78// Sends the specified message to the server and stores the response in a member 79// of the |session|'s StatusController. 80SYNC_EXPORT_PRIVATE SyncerError 81 ExecuteDownloadUpdates(ModelTypeSet request_types, 82 sessions::SyncSession* session, 83 sync_pb::ClientToServerMessage* msg); 84 85// Helper function for processing responses from the server. 86// Defined here for testing. 87SYNC_EXPORT_PRIVATE SyncerError ProcessResponse( 88 const sync_pb::GetUpdatesResponse& gu_response, 89 ModelTypeSet proto_request_types, 90 UpdateHandlerMap* handler_map, 91 sessions::StatusController* status); 92 93// Helper function to copy client debug info from debug_info_getter to 94// debug_info. Defined here for testing. 95SYNC_EXPORT_PRIVATE void CopyClientDebugInfo( 96 sessions::DebugInfoGetter* debug_info_getter, 97 sync_pb::DebugInfo* debug_info); 98 99} // namespace download 100 101} // namespace syncer 102 103#endif // SYNC_ENGINE_DOWNLOAD_H_ 104