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 62b8b76c5349c3549335e04c29b152dab9e72243..eea44479ff11a25739b8917b6b7ff76a3d197d0d 100644 |
--- a/chrome/browser/sync/profile_sync_service.cc |
+++ b/chrome/browser/sync/profile_sync_service.cc |
@@ -1774,7 +1774,7 @@ void ProfileSyncService::UpdateSelectedTypesHistogram( |
// Only log the data types that are shown in the sync settings ui. |
// Note: the order of these types must match the ordering of |
// the respective types in ModelType |
-const sync_driver::user_selectable_type::UserSelectableSyncType |
+ const sync_driver::user_selectable_type::UserSelectableSyncType |
user_selectable_types[] = { |
sync_driver::user_selectable_type::BOOKMARKS, |
sync_driver::user_selectable_type::PREFERENCES, |
@@ -1886,7 +1886,9 @@ syncer::ModelTypeSet ProfileSyncService::GetPreferredDataTypes() const { |
const syncer::ModelTypeSet registered_types = GetRegisteredDataTypes(); |
const syncer::ModelTypeSet preferred_types = |
sync_prefs_.GetPreferredDataTypes(registered_types); |
- return preferred_types; |
+ const syncer::ModelTypeSet enforced_types = |
+ Intersection(GetDataTypesFromPreferenceProviders(), registered_types); |
+ return Union(preferred_types, enforced_types); |
} |
syncer::ModelTypeSet |
@@ -1895,8 +1897,10 @@ ProfileSyncService::GetPreferredDirectoryDataTypes() const { |
GetRegisteredDirectoryDataTypes(); |
const syncer::ModelTypeSet preferred_types = |
sync_prefs_.GetPreferredDataTypes(registered_directory_types); |
- |
- return Union(preferred_types, GetDataTypesFromPreferenceProviders()); |
+ const syncer::ModelTypeSet enforced_types = |
+ Intersection(GetDataTypesFromPreferenceProviders(), |
+ registered_directory_types); |
+ return Union(preferred_types, enforced_types); |
} |
syncer::ModelTypeSet |
@@ -1904,6 +1908,13 @@ ProfileSyncService::GetPreferredNonBlockingDataTypes() const { |
return sync_prefs_.GetPreferredDataTypes(GetRegisteredNonBlockingDataTypes()); |
} |
+syncer::ModelTypeSet ProfileSyncService::GetForcedDataTypes() const { |
+ // TODO(treib,zea): When SyncPrefs also implements SyncTypePreferenceProvider, |
+ // we'll need another way to distinguish user-choosable types from |
+ // programmatically-enabled types. |
+ return GetDataTypesFromPreferenceProviders(); |
+} |
+ |
syncer::ModelTypeSet ProfileSyncService::GetRegisteredDataTypes() const { |
return Union(GetRegisteredDirectoryDataTypes(), |
GetRegisteredNonBlockingDataTypes()); |