1// Copyright 2014 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_INTERNAL_API_SYNC_ROLLBACK_MANAGER_H_
6#define SYNC_INTERNAL_API_SYNC_ROLLBACK_MANAGER_H_
7
8#include <string>
9#include <vector>
10
11#include "sync/internal_api/sync_rollback_manager_base.h"
12
13class GURL;
14
15namespace syncer {
16
17// SyncRollbackManager restores user's data to pre-sync state using backup
18// DB created by SyncBackupManager.
19class SYNC_EXPORT_PRIVATE SyncRollbackManager : public SyncRollbackManagerBase {
20 public:
21  SyncRollbackManager();
22  virtual ~SyncRollbackManager();
23
24  // SyncManager implementation.
25  virtual void Init(InitArgs* args) OVERRIDE;
26  virtual void StartSyncingNormally(
27      const ModelSafeRoutingInfo& routing_info) OVERRIDE;
28
29 private:
30  // Deletes specified entries in local model.
31  SyncerError DeleteOnWorkerThread(ModelType type, std::vector<int64> handles);
32
33  void NotifyRollbackDone();
34
35  std::map<ModelSafeGroup, scoped_refptr<ModelSafeWorker> > workers_;
36
37  SyncManager::ChangeDelegate* change_delegate_;
38
39  // Types that can be rolled back.
40  ModelTypeSet rollback_ready_types_;
41
42  DISALLOW_COPY_AND_ASSIGN(SyncRollbackManager);
43};
44
45}  // namespace syncer
46
47#endif  // SYNC_INTERNAL_API_SYNC_ROLLBACK_MANAGER_H_
48