| 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 d77fc6352e0cb6d1be5a1e364ef21f7d0784f275..b84f01e2c9afb024c2cfaf8e1243bea9c24ad677 100644
|
| --- a/chrome/browser/sync/profile_sync_service.cc
|
| +++ b/chrome/browser/sync/profile_sync_service.cc
|
| @@ -316,12 +316,12 @@ void ProfileSyncService::InitializeBackend(bool delete_stale_data) {
|
| return;
|
| }
|
|
|
| - syncable::ModelTypeSet initial_types;
|
| + syncable::ModelEnumSet initial_types;
|
| // If sync setup hasn't finished, we don't want to initialize routing info
|
| // for any data types so that we don't download updates for types that the
|
| // user chooses not to sync on the first DownloadUpdatesCommand.
|
| if (HasSyncSetupCompleted()) {
|
| - GetPreferredDataTypes(&initial_types);
|
| + initial_types = GetPreferredDataTypes();
|
| }
|
|
|
| SyncCredentials credentials = GetCredentials();
|
| @@ -350,18 +350,10 @@ void ProfileSyncService::CreateBackend() {
|
| bool ProfileSyncService::IsEncryptedDatatypeEnabled() const {
|
| if (encryption_pending())
|
| return true;
|
| - syncable::ModelTypeSet preferred_types;
|
| - GetPreferredDataTypes(&preferred_types);
|
| - syncable::ModelTypeSet encrypted_types;
|
| - GetEncryptedDataTypes(&encrypted_types);
|
| - const syncable::ModelEnumSet preferred_types_enum_set =
|
| - syncable::ModelTypeSetToEnumSet(preferred_types);
|
| - const syncable::ModelEnumSet encrypted_types_enum_set =
|
| - syncable::ModelTypeSetToEnumSet(encrypted_types);
|
| - DCHECK(encrypted_types.count(syncable::PASSWORDS));
|
| - return
|
| - !Intersection(preferred_types_enum_set,
|
| - encrypted_types_enum_set).Empty();
|
| + const syncable::ModelEnumSet preferred_types = GetPreferredDataTypes();
|
| + const syncable::ModelEnumSet encrypted_types = GetEncryptedDataTypes();
|
| + DCHECK(encrypted_types.Has(syncable::PASSWORDS));
|
| + return !Intersection(preferred_types, encrypted_types).Empty();
|
| }
|
|
|
| void ProfileSyncService::OnSyncConfigureDone(
|
| @@ -647,7 +639,7 @@ void ProfileSyncService::OnSyncCycleCompleted() {
|
|
|
| // TODO(sync): eventually support removing datatypes too.
|
| void ProfileSyncService::OnDataTypesChanged(
|
| - const syncable::ModelTypeSet& to_add) {
|
| + syncable::ModelEnumSet to_add) {
|
| // If this is a first time sync for a client, this will be called before
|
| // OnBackendInitialized() to ensure the new datatypes are available at sync
|
| // setup. As a result, the migrator won't exist yet. This is fine because for
|
| @@ -660,28 +652,25 @@ void ProfileSyncService::OnDataTypesChanged(
|
| }
|
|
|
| DVLOG(2) << "OnDataTypesChanged called with types: "
|
| - << syncable::ModelTypeSetToString(to_add);
|
| + << syncable::ModelEnumSetToString(to_add);
|
|
|
| - syncable::ModelTypeSet registered_types;
|
| - GetRegisteredDataTypes(®istered_types);
|
| + syncable::ModelEnumSet registered_types = GetRegisteredDataTypes();
|
|
|
| - syncable::ModelTypeSet to_register;
|
| - std::set_difference(to_add.begin(), to_add.end(),
|
| - registered_types.begin(), registered_types.end(),
|
| - std::inserter(to_register, to_register.end()));
|
| + syncable::ModelEnumSet to_register =
|
| + Difference(to_add, registered_types);
|
|
|
| - DVLOG(2) << "Enabling types: " << syncable::ModelTypeSetToString(to_register);
|
| + DVLOG(2) << "Enabling types: " << syncable::ModelEnumSetToString(to_register);
|
|
|
| - for (syncable::ModelTypeSet::const_iterator it = to_register.begin();
|
| - it != to_register.end(); ++it) {
|
| + for (syncable::ModelEnumSet::Iterator it = to_register.First();
|
| + it.Good(); it.Inc()) {
|
| // Received notice to enable experimental type. Check if the type is
|
| // registered, and if not register a new datatype controller.
|
| - RegisterNewDataType(*it);
|
| + RegisterNewDataType(it.Get());
|
| // Enable the about:flags switch for the experimental type so we don't have
|
| // to always perform this reconfiguration. Once we set this, the type will
|
| // remain registered on restart, so we will no longer go down this code
|
| // path.
|
| - std::string experiment_name = GetExperimentNameForDataType(*it);
|
| + std::string experiment_name = GetExperimentNameForDataType(it.Get());
|
| if (experiment_name.empty())
|
| continue;
|
| about_flags::SetExperimentEnabled(g_browser_process->local_state(),
|
| @@ -701,9 +690,9 @@ void ProfileSyncService::OnDataTypesChanged(
|
|
|
| // Only automatically turn on types if we have already finished set up.
|
| // Otherwise, just leave the experimental types on by default.
|
| - if (!to_register.empty() && HasSyncSetupCompleted() && migrator_.get()) {
|
| + if (!to_register.Empty() && HasSyncSetupCompleted() && migrator_.get()) {
|
| DVLOG(1) << "Dynamically enabling new datatypes: "
|
| - << syncable::ModelTypeSetToString(to_register);
|
| + << syncable::ModelEnumSetToString(to_register);
|
| OnMigrationNeededForTypes(to_register);
|
| }
|
| }
|
| @@ -845,8 +834,7 @@ void ProfileSyncService::OnPassphraseAccepted() {
|
|
|
| // Make sure the data types that depend on the passphrase are started at
|
| // this time.
|
| - syncable::ModelTypeSet types;
|
| - GetPreferredDataTypes(&types);
|
| + syncable::ModelEnumSet types = GetPreferredDataTypes();
|
|
|
| if (data_type_manager_.get()) {
|
| // Unblock the data type manager if necessary.
|
| @@ -873,15 +861,15 @@ void ProfileSyncService::ResolvePassphraseRequired() {
|
| }
|
|
|
| void ProfileSyncService::OnEncryptedTypesChanged(
|
| - const syncable::ModelTypeSet& encrypted_types,
|
| + syncable::ModelEnumSet encrypted_types,
|
| bool encrypt_everything) {
|
| encrypted_types_ = encrypted_types;
|
| encrypt_everything_ = encrypt_everything;
|
| DVLOG(1) << "Encrypted types changed to "
|
| - << syncable::ModelTypeSetToString(encrypted_types_)
|
| + << syncable::ModelEnumSetToString(encrypted_types_)
|
| << " (encrypt everything is set to "
|
| << (encrypt_everything_ ? "true" : "false") << ")";
|
| - DCHECK_GT(encrypted_types_.count(syncable::PASSWORDS), 0u);
|
| + DCHECK(encrypted_types_.Has(syncable::PASSWORDS));
|
| }
|
|
|
| void ProfileSyncService::OnEncryptionComplete() {
|
| @@ -898,7 +886,7 @@ void ProfileSyncService::OnEncryptionComplete() {
|
| }
|
|
|
| void ProfileSyncService::OnMigrationNeededForTypes(
|
| - const syncable::ModelTypeSet& types) {
|
| + syncable::ModelEnumSet types) {
|
| DCHECK(backend_initialized_);
|
| DCHECK(data_type_manager_.get());
|
|
|
| @@ -1129,7 +1117,7 @@ void ProfileSyncService::OnUserSubmittedOAuth(
|
| }
|
|
|
| void ProfileSyncService::OnUserChoseDatatypes(bool sync_everything,
|
| - const syncable::ModelTypeSet& chosen_types) {
|
| + syncable::ModelEnumSet chosen_types) {
|
| if (!backend_.get() &&
|
| unrecoverable_error_detected_ == false) {
|
| NOTREACHED();
|
| @@ -1169,17 +1157,12 @@ void ProfileSyncService::OnUserCancelledDialog() {
|
| }
|
|
|
| void ProfileSyncService::ChangePreferredDataTypes(
|
| - const syncable::ModelTypeSet& preferred_types) {
|
| + syncable::ModelEnumSet preferred_types) {
|
|
|
| DVLOG(1) << "ChangePreferredDataTypes invoked";
|
| - syncable::ModelTypeSet registered_types;
|
| - GetRegisteredDataTypes(®istered_types);
|
| - syncable::ModelTypeSet registered_preferred_types;
|
| - std::set_intersection(
|
| - registered_types.begin(), registered_types.end(),
|
| - preferred_types.begin(), preferred_types.end(),
|
| - std::inserter(registered_preferred_types,
|
| - registered_preferred_types.end()));
|
| + syncable::ModelEnumSet registered_types = GetRegisteredDataTypes();
|
| + syncable::ModelEnumSet registered_preferred_types =
|
| + Intersection(registered_types, preferred_types);
|
| sync_prefs_.SetPreferredDataTypes(registered_types,
|
| registered_preferred_types);
|
|
|
| @@ -1187,31 +1170,25 @@ void ProfileSyncService::ChangePreferredDataTypes(
|
| ReconfigureDatatypeManager();
|
| }
|
|
|
| -void ProfileSyncService::GetPreferredDataTypes(
|
| - syncable::ModelTypeSet* preferred_types) const {
|
| - syncable::ModelTypeSet registered_types;
|
| - GetRegisteredDataTypes(®istered_types);
|
| - *preferred_types = sync_prefs_.GetPreferredDataTypes(registered_types);
|
| -
|
| - syncable::ModelTypeSet failed_types =
|
| +syncable::ModelEnumSet ProfileSyncService::GetPreferredDataTypes() const {
|
| + syncable::ModelEnumSet registered_types = GetRegisteredDataTypes();
|
| + syncable::ModelEnumSet preferred_types =
|
| + sync_prefs_.GetPreferredDataTypes(registered_types);
|
| + syncable::ModelEnumSet failed_types =
|
| failed_datatypes_handler_.GetFailedTypes();
|
| - syncable::ModelTypeSet difference;
|
| - std::set_difference(preferred_types->begin(), preferred_types->end(),
|
| - failed_types.begin(), failed_types.end(),
|
| - std::inserter(difference, difference.end()));
|
| - std::swap(*preferred_types, difference);
|
| + return Difference(preferred_types, failed_types);
|
| }
|
|
|
| -void ProfileSyncService::GetRegisteredDataTypes(
|
| - syncable::ModelTypeSet* registered_types) const {
|
| - registered_types->clear();
|
| +syncable::ModelEnumSet ProfileSyncService::GetRegisteredDataTypes() const {
|
| + syncable::ModelEnumSet registered_types;
|
| // The data_type_controllers_ are determined by command-line flags; that's
|
| // effectively what controls the values returned here.
|
| for (DataTypeController::TypeMap::const_iterator it =
|
| data_type_controllers_.begin();
|
| it != data_type_controllers_.end(); ++it) {
|
| - registered_types->insert((*it).first);
|
| + registered_types.Put(it->first);
|
| }
|
| + return registered_types;
|
| }
|
|
|
| bool ProfileSyncService::IsUsingSecondaryPassphrase() const {
|
| @@ -1258,8 +1235,7 @@ void ProfileSyncService::ConfigureDataTypeManager() {
|
| this, data_type_manager_.get()));
|
| }
|
|
|
| - syncable::ModelTypeSet types;
|
| - GetPreferredDataTypes(&types);
|
| + syncable::ModelEnumSet types = GetPreferredDataTypes();
|
| if (IsPassphraseRequiredForDecryption()) {
|
| // We need a passphrase still. We don't bother to attempt to configure
|
| // until we receive an OnPassphraseAccepted (which triggers a configure).
|
| @@ -1373,13 +1349,11 @@ bool ProfileSyncService::EncryptEverythingEnabled() const {
|
| return encrypt_everything_;
|
| }
|
|
|
| -void ProfileSyncService::GetEncryptedDataTypes(
|
| - syncable::ModelTypeSet* encrypted_types) const {
|
| - CHECK(encrypted_types);
|
| +syncable::ModelEnumSet ProfileSyncService::GetEncryptedDataTypes() const {
|
| + DCHECK(encrypted_types_.Has(syncable::PASSWORDS));
|
| // We may be called during the setup process before we're
|
| // initialized. In this case, we default to the sensitive types.
|
| - *encrypted_types = encrypted_types_;
|
| - DCHECK_GT(encrypted_types->count(syncable::PASSWORDS), 0u);
|
| + return encrypted_types_;
|
| }
|
|
|
| void ProfileSyncService::OnSyncManagedPrefChange(bool is_sync_managed) {
|
| @@ -1586,8 +1560,7 @@ void ProfileSyncService::UnsuppressAndStart() {
|
| }
|
|
|
| void ProfileSyncService::AcknowledgeSyncedTypes() {
|
| - syncable::ModelTypeSet registered_types;
|
| - GetRegisteredDataTypes(®istered_types);
|
| + syncable::ModelEnumSet registered_types = GetRegisteredDataTypes();
|
| sync_prefs_.AcknowledgeSyncedTypes(registered_types);
|
| }
|
|
|
|
|