1// Copyright 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_INTERNAL_API_PUBLIC_SYNC_MANAGER_FACTORY_H_
6#define SYNC_INTERNAL_API_PUBLIC_SYNC_MANAGER_FACTORY_H_
7
8#include <string>
9
10#include "base/memory/scoped_ptr.h"
11#include "sync/base/sync_export.h"
12
13namespace syncer {
14
15class SyncManager;
16
17// Helper class to allow dependency injection of the SyncManager.
18class SYNC_EXPORT SyncManagerFactory {
19 public:
20  enum MANAGER_TYPE {
21    NORMAL,     // Normal sync manager
22    BACKUP,     // Backup sync manager
23    ROLLBACK,   // Rollback sync manager
24  };
25
26  SyncManagerFactory(MANAGER_TYPE type);
27  virtual ~SyncManagerFactory();
28
29  virtual scoped_ptr<SyncManager> CreateSyncManager(std::string name);
30
31 private:
32  MANAGER_TYPE type_;
33  DISALLOW_COPY_AND_ASSIGN(SyncManagerFactory);
34};
35
36}  // namespace syncer
37
38#endif  // SYNC_INTERNAL_API_PUBLIC_SYNC_MANAGER_FACTORY_H_
39