// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "sync/test/engine/mock_update_handler.h"

#include "sync/internal_api/public/base/model_type.h"

namespace syncer {

MockUpdateHandler::MockUpdateHandler(ModelType type)
    : apply_updates_count_(0),
      passive_apply_updates_count_(0) {
  progress_marker_.set_data_type_id(GetSpecificsFieldNumberFromModelType(type));
  const std::string& token_str =
      std::string("Mock token: ") + std::string(ModelTypeToString(type));
  progress_marker_.set_token(token_str);
}

MockUpdateHandler::~MockUpdateHandler() {}

void MockUpdateHandler::GetDownloadProgress(
      sync_pb::DataTypeProgressMarker* progress_marker) const {
  progress_marker->CopyFrom(progress_marker_);
}

void MockUpdateHandler::GetDataTypeContext(
    sync_pb::DataTypeContext* context) const {
  context->Clear();
}

SyncerError MockUpdateHandler::ProcessGetUpdatesResponse(
    const sync_pb::DataTypeProgressMarker& progress_marker,
    const sync_pb::DataTypeContext& mutated_context,
    const SyncEntityList& applicable_updates,
    sessions::StatusController* status) {
  progress_marker_.CopyFrom(progress_marker);
  return syncer::SYNCER_OK;
}

void MockUpdateHandler::ApplyUpdates(sessions::StatusController* status) {
  apply_updates_count_++;
}

void MockUpdateHandler::PassiveApplyUpdates(
    sessions::StatusController* status) {
  passive_apply_updates_count_++;
}

int MockUpdateHandler::GetApplyUpdatesCount() {
  return apply_updates_count_;
}

int MockUpdateHandler::GetPassiveApplyUpdatesCount() {
  return passive_apply_updates_count_;
}

}  // namespace syncer