| 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 7f26bd73c2693559fa738e434c81fa3fff492a24..4f5353e5e67fac1d7e0134e25327d22009f12dfc 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"
|
| @@ -1824,7 +1824,8 @@ ProfileSyncService::GetPreferredDirectoryDataTypes() const {
|
| GetRegisteredDirectoryDataTypes();
|
| const syncer::ModelTypeSet preferred_types =
|
| sync_prefs_.GetPreferredDataTypes(registered_directory_types);
|
| - return preferred_types;
|
| +
|
| + return Union(preferred_types, GetDataTypesFromPreferenceProviders());
|
| }
|
|
|
| syncer::ModelTypeSet
|
| @@ -2280,6 +2281,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
|
| @@ -2468,6 +2488,18 @@ void ProfileSyncService::ReconfigureDatatypeManager() {
|
| }
|
| }
|
|
|
| +syncer::ModelTypeSet ProfileSyncService::GetDataTypesFromPreferenceProviders()
|
| + const {
|
| + syncer::ModelTypeSet types;
|
| + for (std::set<SyncTypePreferenceProvider*>::const_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_;
|
|
|