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#ifndef SYNC_API_FAKE_SYNCABLE_SERVICE_H_
6#define SYNC_API_FAKE_SYNCABLE_SERVICE_H_
7
8#include "sync/api/syncable_service.h"
9
10namespace syncer {
11
12class SyncErrorFactory;
13
14// A fake SyncableService that can return arbitrary values and maintains the
15// syncing status.
16class FakeSyncableService : public SyncableService {
17 public:
18  FakeSyncableService();
19  virtual ~FakeSyncableService();
20
21  // Setters for SyncableService implementation results.
22  void set_merge_data_and_start_syncing_error(const SyncError& error);
23  void set_process_sync_changes_error(const SyncError& error);
24
25  // Whether we're syncing or not. Set on a successful MergeDataAndStartSyncing,
26  // unset on StopSyncing. False by default.
27  bool syncing() const;
28
29  // SyncableService implementation.
30  virtual SyncMergeResult MergeDataAndStartSyncing(
31      ModelType type,
32      const SyncDataList& initial_sync_data,
33      scoped_ptr<SyncChangeProcessor> sync_processor,
34      scoped_ptr<SyncErrorFactory> sync_error_factory) OVERRIDE;
35  virtual void StopSyncing(ModelType type) OVERRIDE;
36  virtual SyncDataList GetAllSyncData(ModelType type) const OVERRIDE;
37  virtual SyncError ProcessSyncChanges(
38      const tracked_objects::Location& from_here,
39      const SyncChangeList& change_list) OVERRIDE;
40
41 private:
42  scoped_ptr<SyncChangeProcessor> sync_processor_;
43  SyncError merge_data_and_start_syncing_error_;
44  SyncError process_sync_changes_error_;
45  bool syncing_;
46  ModelType type_;
47};
48
49}  // namespace syncer
50
51#endif  // SYNC_API_FAKE_SYNCABLE_SERVICE_H_
52