Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(114)

Unified Diff: components/autofill/core/browser/webdata/autofill_profile_syncable_service.cc

Issue 2403773002: Remove stl_util's STLDeleteContainerPointers from autofill. (Closed)
Patch Set: rebase Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/autofill/core/browser/webdata/autofill_profile_syncable_service.cc
diff --git a/components/autofill/core/browser/webdata/autofill_profile_syncable_service.cc b/components/autofill/core/browser/webdata/autofill_profile_syncable_service.cc
index ae9a4f28df8308f777d6cad426484ae2e297e3c2..0e5035111c27d411b0e7441e309c558cffce9503 100644
--- a/components/autofill/core/browser/webdata/autofill_profile_syncable_service.cc
+++ b/components/autofill/core/browser/webdata/autofill_profile_syncable_service.cc
@@ -11,6 +11,7 @@
#include "base/guid.h"
#include "base/location.h"
#include "base/logging.h"
+#include "base/memory/ptr_util.h"
#include "base/strings/utf_string_conversions.h"
#include "components/autofill/core/browser/autofill_country.h"
#include "components/autofill/core/browser/autofill_profile.h"
@@ -102,7 +103,7 @@ AutofillProfileSyncableService::MergeDataAndStartSyncing(
syncer::SyncMergeResult merge_result(type);
sync_error_factory_ = std::move(sync_error_factory);
- if (!LoadAutofillData(&profiles_.get())) {
+ if (!LoadAutofillData(&profiles_)) {
merge_result.set_error(sync_error_factory_->CreateAndUploadError(
FROM_HERE, "Could not get the autofill data from WebDatabase."));
return merge_result;
@@ -112,7 +113,7 @@ AutofillProfileSyncableService::MergeDataAndStartSyncing(
DVLOG(2) << "[AUTOFILL MIGRATION]"
<< "Printing profiles from web db";
- for (const auto* p : profiles_) {
+ for (const auto& p : profiles_) {
DVLOG(2) << "[AUTOFILL MIGRATION] "
<< UTF16ToUTF8(p->GetRawInfo(NAME_FIRST))
<< UTF16ToUTF8(p->GetRawInfo(NAME_LAST))
@@ -123,12 +124,12 @@ AutofillProfileSyncableService::MergeDataAndStartSyncing(
sync_processor_ = std::move(sync_processor);
GUIDToProfileMap remaining_local_profiles;
- CreateGUIDToProfileMap(profiles_.get(), &remaining_local_profiles);
+ CreateGUIDToProfileMap(profiles_, &remaining_local_profiles);
DataBundle bundle;
// For every incoming profile from sync, attempt to update a local profile or
// otherwise create a new one.
for (const auto& sync_iter : initial_sync_data) {
- GUIDToProfileMap::iterator it =
+ auto it =
CreateOrUpdateProfile(sync_iter, &remaining_local_profiles, &bundle);
// |it| points to created/updated profile. Add it to the |profiles_map_| and
// then remove it from |remaining_local_profiles|. After this loop is
@@ -143,7 +144,7 @@ AutofillProfileSyncableService::MergeDataAndStartSyncing(
// Check for similar unmatched profiles - they are created independently on
// two systems, so merge them.
for (const auto& sync_profile_it : bundle.candidates_to_merge) {
- GUIDToProfileMap::iterator profile_to_merge =
+ auto profile_to_merge =
remaining_local_profiles.find(sync_profile_it.first);
if (profile_to_merge != remaining_local_profiles.end()) {
bundle.profiles_to_delete.push_back(profile_to_merge->second->guid());
@@ -288,7 +289,7 @@ void AutofillProfileSyncableService::AutofillProfileChanged(
}
bool AutofillProfileSyncableService::LoadAutofillData(
- std::vector<AutofillProfile*>* profiles) {
+ std::vector<std::unique_ptr<AutofillProfile>>* profiles) {
return GetAutofillTable()->GetAutofillProfiles(profiles);
}
@@ -484,12 +485,12 @@ void AutofillProfileSyncableService::WriteAutofillProfile(
}
void AutofillProfileSyncableService::CreateGUIDToProfileMap(
- const std::vector<AutofillProfile*>& profiles,
+ const std::vector<std::unique_ptr<AutofillProfile>>& profiles,
GUIDToProfileMap* profile_map) {
DCHECK(profile_map);
profile_map->clear();
- for (size_t i = 0; i < profiles.size(); ++i)
- (*profile_map)[profiles[i]->guid()] = profiles[i];
+ for (const auto& profile : profiles)
+ (*profile_map)[profile->guid()] = profile.get();
}
AutofillProfileSyncableService::GUIDToProfileMap::iterator
@@ -506,8 +507,7 @@ AutofillProfileSyncableService::CreateOrUpdateProfile(
const sync_pb::AutofillProfileSpecifics& autofill_specifics(
specifics.autofill_profile());
- GUIDToProfileMap::iterator existing_profile = profile_map->find(
- autofill_specifics.guid());
+ auto existing_profile = profile_map->find(autofill_specifics.guid());
if (existing_profile != profile_map->end()) {
// The synced profile already exists locally. It might need to be updated.
if (OverwriteProfileWithServerData(autofill_specifics,
@@ -518,24 +518,25 @@ AutofillProfileSyncableService::CreateOrUpdateProfile(
}
// New profile synced.
- AutofillProfile* new_profile = new AutofillProfile(
- autofill_specifics.guid(), autofill_specifics.origin());
- OverwriteProfileWithServerData(autofill_specifics, new_profile);
+ std::unique_ptr<AutofillProfile> new_profile =
+ base::MakeUnique<AutofillProfile>(autofill_specifics.guid(),
+ autofill_specifics.origin());
+ AutofillProfile* new_profile_ptr = new_profile.get();
+ OverwriteProfileWithServerData(autofill_specifics, new_profile_ptr);
// Check if profile appears under a different guid. Compares only profile
// contents. (Ignores origin and language code in comparison.)
//
// Unverified profiles should never overwrite verified ones.
AutofillProfileComparator comparator(app_locale_);
- for (GUIDToProfileMap::iterator it = profile_map->begin();
- it != profile_map->end(); ++it) {
+ for (auto it = profile_map->begin(); it != profile_map->end(); ++it) {
AutofillProfile* local_profile = it->second;
if (local_profile->Compare(*new_profile) == 0) {
// Ensure that a verified profile can never revert back to an unverified
// one.
if (local_profile->IsVerified() && !new_profile->IsVerified()) {
new_profile->set_origin(local_profile->origin());
- bundle->profiles_to_sync_back.push_back(new_profile);
+ bundle->profiles_to_sync_back.push_back(new_profile.get());
}
bundle->profiles_to_delete.push_back(local_profile->guid());
@@ -552,14 +553,15 @@ AutofillProfileSyncableService::CreateOrUpdateProfile(
// Add it to candidates for merge - if there is no profile with this guid
// we will merge them.
bundle->candidates_to_merge.insert(
- std::make_pair(local_profile->guid(), new_profile));
+ std::make_pair(local_profile->guid(), new_profile_ptr));
break;
}
}
- profiles_.push_back(new_profile);
- bundle->profiles_to_add.push_back(new_profile);
- return profile_map->insert(std::make_pair(new_profile->guid(),
- new_profile)).first;
+ profiles_.push_back(std::move(new_profile));
+ bundle->profiles_to_add.push_back(new_profile_ptr);
+ return profile_map
+ ->insert(std::make_pair(new_profile_ptr->guid(), new_profile_ptr))
+ .first;
}
void AutofillProfileSyncableService::ActOnChange(
@@ -585,12 +587,12 @@ void AutofillProfileSyncableService::ActOnChange(
CreateData(*(change.data_model()))));
DCHECK(profiles_map_.find(change.data_model()->guid()) ==
profiles_map_.end());
- profiles_.push_back(new AutofillProfile(*(change.data_model())));
- profiles_map_[change.data_model()->guid()] = profiles_.get().back();
+ profiles_.push_back(
+ base::MakeUnique<AutofillProfile>(*(change.data_model())));
+ profiles_map_[change.data_model()->guid()] = profiles_.back().get();
break;
case AutofillProfileChange::UPDATE: {
- GUIDToProfileMap::iterator it = profiles_map_.find(
- change.data_model()->guid());
+ auto it = profiles_map_.find(change.data_model()->guid());
DCHECK(it != profiles_map_.end());
*(it->second) = *(change.data_model());
new_changes.push_back(

Powered by Google App Engine
This is Rietveld 408576698