1 // Copyright (c) 2010 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 CHROME_BROWSER_SYNC_PROFILE_SYNC_FACTORY_H__ 6 #define CHROME_BROWSER_SYNC_PROFILE_SYNC_FACTORY_H__ 7 #pragma once 8 9 #include <string> 10 #include <utility> 11 12 #include "base/task.h" 13 #include "chrome/browser/sync/glue/change_processor.h" 14 #include "chrome/browser/sync/glue/data_type_controller.h" 15 #include "chrome/browser/sync/glue/model_associator.h" 16 #include "chrome/browser/sync/unrecoverable_error_handler.h" 17 18 class PersonalDataManager; 19 class PasswordStore; 20 class ProfileSyncService; 21 class WebDatabase; 22 23 namespace browser_sync { 24 class DataTypeManager; 25 class SyncBackendHost; 26 class UnrecoverableErrorHandler; 27 } 28 29 namespace history { 30 class HistoryBackend; 31 }; 32 33 // Factory class for all profile sync related classes. 34 class ProfileSyncFactory { 35 public: 36 // The various factory methods for the data type model associators 37 // and change processors all return this struct. This is needed 38 // because the change processors typically require a type-specific 39 // model associator at construction time. 40 struct SyncComponents { 41 browser_sync::AssociatorInterface* model_associator; 42 browser_sync::ChangeProcessor* change_processor; 43 SyncComponents(browser_sync::AssociatorInterface* ma, 44 browser_sync::ChangeProcessor* cp) 45 : model_associator(ma), change_processor(cp) {} 46 }; 47 48 virtual ~ProfileSyncFactory() {} 49 50 // Instantiates and initializes a new ProfileSyncService. Enabled 51 // data types are registered with the service. The return pointer 52 // is owned by the caller. 53 virtual ProfileSyncService* CreateProfileSyncService( 54 const std::string& cros_user) = 0; 55 56 // Instantiates a new DataTypeManager with a SyncBackendHost and a 57 // list of data type controllers. The return pointer is owned by 58 // the caller. 59 virtual browser_sync::DataTypeManager* CreateDataTypeManager( 60 browser_sync::SyncBackendHost* backend, 61 const browser_sync::DataTypeController::TypeMap& controllers) = 0; 62 63 // Instantiates both a model associator and change processor for the 64 // app data type. The pointers in the return struct are 65 // owned by the caller. 66 virtual SyncComponents CreateAppSyncComponents( 67 ProfileSyncService* profile_sync_service, 68 browser_sync::UnrecoverableErrorHandler* error_handler) = 0; 69 70 // Instantiates both a model associator and change processor for the 71 // autofill data type. The pointers in the return struct are owned 72 // by the caller. 73 virtual SyncComponents CreateAutofillSyncComponents( 74 ProfileSyncService* profile_sync_service, 75 WebDatabase* web_database, 76 PersonalDataManager* personal_data, 77 browser_sync::UnrecoverableErrorHandler* error_handler) = 0; 78 79 // Instantiates both a model associator and change processor for the 80 // autofill data type. The pointers in the return struct are owned 81 // by the caller. 82 virtual SyncComponents CreateAutofillProfileSyncComponents( 83 ProfileSyncService* profile_sync_service, 84 WebDatabase* web_database, 85 PersonalDataManager* personal_data, 86 browser_sync::UnrecoverableErrorHandler* error_handler) = 0; 87 88 // Instantiates both a model associator and change processor for the 89 // bookmark data type. The pointers in the return struct are owned 90 // by the caller. 91 virtual SyncComponents CreateBookmarkSyncComponents( 92 ProfileSyncService* profile_sync_service, 93 browser_sync::UnrecoverableErrorHandler* error_handler) = 0; 94 95 // Instantiates both a model associator and change processor for the 96 // extension data type. The pointers in the return struct are 97 // owned by the caller. 98 virtual SyncComponents CreateExtensionSyncComponents( 99 ProfileSyncService* profile_sync_service, 100 browser_sync::UnrecoverableErrorHandler* error_handler) = 0; 101 102 // Instantiates both a model associator and change processor for the 103 // password data type. The pointers in the return struct are 104 // owned by the caller. 105 virtual SyncComponents CreatePasswordSyncComponents( 106 ProfileSyncService* profile_sync_service, 107 PasswordStore* password_store, 108 browser_sync::UnrecoverableErrorHandler* error_handler) = 0; 109 110 // Instantiates both a model associator and change processor for the 111 // preference data type. The pointers in the return struct are 112 // owned by the caller. 113 virtual SyncComponents CreatePreferenceSyncComponents( 114 ProfileSyncService* profile_sync_service, 115 browser_sync::UnrecoverableErrorHandler* error_handler) = 0; 116 117 // Instantiates both a model associator and change processor for the 118 // theme data type. The pointers in the return struct are 119 // owned by the caller. 120 virtual SyncComponents CreateThemeSyncComponents( 121 ProfileSyncService* profile_sync_service, 122 browser_sync::UnrecoverableErrorHandler* error_handler) = 0; 123 124 // Instantiates both a model associator and change processor for the 125 // typed_url data type. The pointers in the return struct are owned 126 // by the caller. 127 virtual SyncComponents CreateTypedUrlSyncComponents( 128 ProfileSyncService* profile_sync_service, 129 history::HistoryBackend* history_backend, 130 browser_sync::UnrecoverableErrorHandler* error_handler) = 0; 131 132 // Instantiates both a model associator and change processor for the 133 // session data type. The pointers in the return struct are 134 // owned by the caller. 135 virtual SyncComponents CreateSessionSyncComponents( 136 ProfileSyncService* profile_sync_service, 137 browser_sync::UnrecoverableErrorHandler* error_handler) = 0; 138 }; 139 140 #endif // CHROME_BROWSER_SYNC_PROFILE_SYNC_FACTORY_H__ 141