Index: chrome/browser/sync/profile_sync_service.cc |
diff --git a/chrome/browser/sync/profile_sync_service.cc b/chrome/browser/sync/profile_sync_service.cc |
index 67c8138f21fbb5b9371a6d5b4af70d16af1cbca9..c7672b9d554df0b732e371db2263f9a7fc108ddb 100644 |
--- a/chrome/browser/sync/profile_sync_service.cc |
+++ b/chrome/browser/sync/profile_sync_service.cc |
@@ -6,8 +6,7 @@ |
#include <cstddef> |
#include <map> |
-#include <set> |
-#include <utility> |
+#include <vector> |
#include "base/basictypes.h" |
#include "base/bind.h" |
@@ -55,6 +54,7 @@ |
#include "chrome/browser/sync/sessions/sessions_sync_manager.h" |
#include "chrome/browser/sync/supervised_user_signin_manager_wrapper.h" |
#include "chrome/browser/sync/sync_error_controller.h" |
+#include "chrome/browser/sync/sync_type_preference_provider.h" |
#include "chrome/browser/ui/browser.h" |
#include "chrome/browser/ui/browser_list.h" |
#include "chrome/browser/ui/browser_window.h" |
@@ -1937,7 +1937,8 @@ void ProfileSyncService::ConfigureDataTypeManager() { |
types = syncer::BackupTypes(); |
reason = syncer::CONFIGURE_REASON_BACKUP_ROLLBACK; |
} else { |
- types = GetPreferredDirectoryDataTypes(); |
+ types = Union(GetPreferredDirectoryDataTypes(), |
Nicolas Zea
2014/08/07 17:16:33
I think it might make more sense to put the GetDat
Marc Treib
2014/08/08 13:03:59
Done.
|
+ GetDataTypesFromPreferenceProviders()); |
if (!HasSyncSetupCompleted()) { |
reason = syncer::CONFIGURE_REASON_NEW_CLIENT; |
} else if (restart) { |
@@ -2296,6 +2297,25 @@ void ProfileSyncService::RemoveTypeDebugInfoObserver( |
} |
} |
+void ProfileSyncService::AddPreferenceProvider( |
+ SyncTypePreferenceProvider* provider) { |
+ DCHECK(!HasPreferenceProvider(provider)) |
+ << "Providers may only be added once!"; |
+ preference_providers_.insert(provider); |
+} |
+ |
+void ProfileSyncService::RemovePreferenceProvider( |
+ SyncTypePreferenceProvider* provider) { |
+ DCHECK(HasPreferenceProvider(provider)) |
+ << "Only providers that have been added before can be removed!"; |
+ preference_providers_.erase(provider); |
+} |
+ |
+bool ProfileSyncService::HasPreferenceProvider( |
+ SyncTypePreferenceProvider* provider) const { |
+ return preference_providers_.count(provider) > 0; |
+} |
+ |
namespace { |
class GetAllNodesRequestHelper |
@@ -2484,6 +2504,17 @@ void ProfileSyncService::ReconfigureDatatypeManager() { |
} |
} |
+syncer::ModelTypeSet ProfileSyncService::GetDataTypesFromPreferenceProviders() { |
+ syncer::ModelTypeSet types; |
+ for (std::set<SyncTypePreferenceProvider*>::iterator it = |
+ preference_providers_.begin(); |
+ it != preference_providers_.end(); |
+ ++it) { |
+ types.PutAll((*it)->GetPreferredDataTypes()); |
+ } |
+ return types; |
+} |
+ |
const FailedDataTypesHandler& ProfileSyncService::failed_data_types_handler() |
const { |
return failed_data_types_handler_; |