Index: components/password_manager/core/browser/password_manager_util.cc |
diff --git a/components/password_manager/core/browser/password_manager_util.cc b/components/password_manager/core/browser/password_manager_util.cc |
index 6383418df27aec8e0804872bf9f804917d106510..d2fa75e2ac603b280a3a8539cf9f4d76e658e2f9 100644 |
--- a/components/password_manager/core/browser/password_manager_util.cc |
+++ b/components/password_manager/core/browser/password_manager_util.cc |
@@ -26,8 +26,8 @@ password_manager::PasswordSyncState GetPasswordSyncState( |
} |
void FindDuplicates( |
- ScopedVector<autofill::PasswordForm>* forms, |
- ScopedVector<autofill::PasswordForm>* duplicates, |
+ std::vector<std::unique_ptr<autofill::PasswordForm>>* forms, |
+ std::vector<std::unique_ptr<autofill::PasswordForm>>* duplicates, |
std::vector<std::vector<autofill::PasswordForm*>>* tag_groups) { |
if (forms->empty()) |
return; |
@@ -36,27 +36,26 @@ void FindDuplicates( |
// duplicates. Therefore, the caller should try to preserve it. |
std::stable_sort(forms->begin(), forms->end(), autofill::LessThanUniqueKey()); |
- ScopedVector<autofill::PasswordForm> unique_forms; |
- unique_forms.push_back(forms->front()); |
- forms->front() = nullptr; |
+ std::vector<std::unique_ptr<autofill::PasswordForm>> unique_forms; |
+ unique_forms.push_back(std::move(forms->front())); |
if (tag_groups) { |
tag_groups->clear(); |
tag_groups->push_back(std::vector<autofill::PasswordForm*>()); |
- tag_groups->front().push_back(unique_forms.front()); |
+ tag_groups->front().push_back(unique_forms.front().get()); |
} |
for (auto it = forms->begin() + 1; it != forms->end(); ++it) { |
- if (ArePasswordFormUniqueKeyEqual(**it, *unique_forms.back())) { |
- duplicates->push_back(*it); |
+ if (autofill::ArePasswordFormUniqueKeyEqual(**it, *unique_forms.back())) { |
vabr (Chromium)
2016/12/12 18:34:26
Based on your explanation, I'm dropping the unnece
|
if (tag_groups) |
- tag_groups->back().push_back(*it); |
+ tag_groups->back().push_back(it->get()); |
+ duplicates->push_back(std::move(*it)); |
} else { |
- unique_forms.push_back(*it); |
if (tag_groups) |
- tag_groups->push_back(std::vector<autofill::PasswordForm*>(1, *it)); |
+ tag_groups->push_back( |
+ std::vector<autofill::PasswordForm*>(1, it->get())); |
+ unique_forms.push_back(std::move(*it)); |
} |
*it = nullptr; |
vasilii
2016/12/12 18:10:57
not needed.
vabr (Chromium)
2016/12/12 18:34:26
Well spotted, thanks!
|
} |
- forms->weak_clear(); |
forms->swap(unique_forms); |
} |