1// Copyright (c) 2012 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/api/fake_syncable_service.h"
6
7#include "base/location.h"
8#include "sync/api/sync_error_factory.h"
9
10namespace syncer {
11
12FakeSyncableService::FakeSyncableService()
13    : syncing_(false),
14      type_(UNSPECIFIED) {}
15
16FakeSyncableService::~FakeSyncableService() {}
17
18void FakeSyncableService::set_merge_data_and_start_syncing_error(
19    const SyncError& error) {
20  merge_data_and_start_syncing_error_ = error;
21}
22
23void FakeSyncableService::set_process_sync_changes_error(
24    const SyncError& error) {
25  process_sync_changes_error_ = error;
26}
27
28bool FakeSyncableService::syncing() const {
29  return syncing_;
30}
31
32// SyncableService implementation.
33SyncMergeResult FakeSyncableService::MergeDataAndStartSyncing(
34    ModelType type,
35    const SyncDataList& initial_sync_data,
36    scoped_ptr<SyncChangeProcessor> sync_processor,
37    scoped_ptr<SyncErrorFactory> sync_error_factory) {
38  SyncMergeResult merge_result(type);
39  sync_processor_ = sync_processor.Pass();
40  type_ = type;
41  if (!merge_data_and_start_syncing_error_.IsSet()) {
42    syncing_ = true;
43  } else {
44    merge_result.set_error(merge_data_and_start_syncing_error_);
45  }
46  return merge_result;
47}
48
49void FakeSyncableService::StopSyncing(ModelType type) {
50  syncing_ = false;
51  sync_processor_.reset();
52}
53
54SyncDataList FakeSyncableService::GetAllSyncData(ModelType type) const {
55  return SyncDataList();
56}
57
58SyncError FakeSyncableService::ProcessSyncChanges(
59    const tracked_objects::Location& from_here,
60    const SyncChangeList& change_list) {
61  return process_sync_changes_error_;
62}
63
64}  // namespace syncer
65