summaryrefslogtreecommitdiffstats
path: root/sync
diff options
context:
space:
mode:
authorhaitaol@chromium.org <haitaol@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-15 03:49:27 +0000
committerhaitaol@chromium.org <haitaol@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-15 03:49:27 +0000
commit8597ccf7a74ff785d8c51d1174b49dac750c84e7 (patch)
tree0c16a6882e7e43c78ddfe0d5fe411344043269ac /sync
parent94a17c90142c1fb6e4ef88e5f8b9d124562d2650 (diff)
downloadchromium_src-8597ccf7a74ff785d8c51d1174b49dac750c84e7.zip
chromium_src-8597ccf7a74ff785d8c51d1174b49dac750c84e7.tar.gz
chromium_src-8597ccf7a74ff785d8c51d1174b49dac750c84e7.tar.bz2
Let SyncManagerFactory create different types of sync managers according to
constructor param. BUG=362679 Review URL: https://codereview.chromium.org/265823009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@270576 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'sync')
-rw-r--r--sync/internal_api/public/sync_manager_factory.h9
-rw-r--r--sync/internal_api/sync_manager_factory.cc17
-rw-r--r--sync/internal_api/test/sync_manager_factory_for_profile_sync_test.cc3
-rw-r--r--sync/tools/sync_client.cc2
4 files changed, 26 insertions, 5 deletions
diff --git a/sync/internal_api/public/sync_manager_factory.h b/sync/internal_api/public/sync_manager_factory.h
index 12fa52f..a121c8b 100644
--- a/sync/internal_api/public/sync_manager_factory.h
+++ b/sync/internal_api/public/sync_manager_factory.h
@@ -17,12 +17,19 @@ class SyncManager;
// Helper class to allow dependency injection of the SyncManager.
class SYNC_EXPORT SyncManagerFactory {
public:
- SyncManagerFactory();
+ enum MANAGER_TYPE {
+ NORMAL, // Normal sync manager
+ BACKUP, // Backup sync manager
+ ROLLBACK, // Rollback sync manager
+ };
+
+ SyncManagerFactory(MANAGER_TYPE type);
virtual ~SyncManagerFactory();
virtual scoped_ptr<SyncManager> CreateSyncManager(std::string name);
private:
+ MANAGER_TYPE type_;
DISALLOW_COPY_AND_ASSIGN(SyncManagerFactory);
};
diff --git a/sync/internal_api/sync_manager_factory.cc b/sync/internal_api/sync_manager_factory.cc
index 9d784b4..c3f09d32 100644
--- a/sync/internal_api/sync_manager_factory.cc
+++ b/sync/internal_api/sync_manager_factory.cc
@@ -4,11 +4,14 @@
#include "sync/internal_api/public/sync_manager_factory.h"
+#include "sync/internal_api/sync_backup_manager.h"
#include "sync/internal_api/sync_manager_impl.h"
+#include "sync/internal_api/sync_rollback_manager.h"
namespace syncer {
-SyncManagerFactory::SyncManagerFactory() {
+SyncManagerFactory::SyncManagerFactory(SyncManagerFactory::MANAGER_TYPE type)
+ : type_(type) {
}
SyncManagerFactory::~SyncManagerFactory() {
@@ -16,7 +19,17 @@ SyncManagerFactory::~SyncManagerFactory() {
scoped_ptr<SyncManager> SyncManagerFactory::CreateSyncManager(
const std::string name) {
- return scoped_ptr<SyncManager>(new SyncManagerImpl(name));
+ switch (type_) {
+ case NORMAL:
+ return scoped_ptr<SyncManager>(new SyncManagerImpl(name));
+ case BACKUP:
+ return scoped_ptr<SyncManager>(new SyncBackupManager());
+ case ROLLBACK:
+ return scoped_ptr<SyncManager>(new SyncRollbackManager());
+ default:
+ NOTREACHED();
+ return scoped_ptr<SyncManager>(new SyncManagerImpl(name));
+ }
}
} // namespace syncer
diff --git a/sync/internal_api/test/sync_manager_factory_for_profile_sync_test.cc b/sync/internal_api/test/sync_manager_factory_for_profile_sync_test.cc
index 34289c4..7c3e643 100644
--- a/sync/internal_api/test/sync_manager_factory_for_profile_sync_test.cc
+++ b/sync/internal_api/test/sync_manager_factory_for_profile_sync_test.cc
@@ -10,7 +10,8 @@ namespace syncer {
SyncManagerFactoryForProfileSyncTest::SyncManagerFactoryForProfileSyncTest(
base::Closure init_callback)
- : init_callback_(init_callback) {
+ : SyncManagerFactory(SyncManagerFactory::NORMAL),
+ init_callback_(init_callback) {
}
SyncManagerFactoryForProfileSyncTest::~SyncManagerFactoryForProfileSyncTest() {}
diff --git a/sync/tools/sync_client.cc b/sync/tools/sync_client.cc
index 5953871..8edd6fa 100644
--- a/sync/tools/sync_client.cc
+++ b/sync/tools/sync_client.cc
@@ -326,7 +326,7 @@ int SyncClientMain(int argc, char* argv[]) {
workers.push_back(passive_model_safe_worker);
// Set up sync manager.
- SyncManagerFactory sync_manager_factory;
+ SyncManagerFactory sync_manager_factory(SyncManagerFactory::NORMAL);
scoped_ptr<SyncManager> sync_manager =
sync_manager_factory.CreateSyncManager("sync_client manager");
LoggingJsEventHandler js_event_handler;