Chromium Code Reviews| 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_; |