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

Unified Diff: components/password_manager/core/browser/password_form_manager.cc

Issue 1096983002: Update usages of std::map to use ScopedPtrMap. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@passwordmanager-scopedmemory
Patch Set: Rebase. Created 5 years, 6 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/password_manager/core/browser/password_form_manager.cc
diff --git a/components/password_manager/core/browser/password_form_manager.cc b/components/password_manager/core/browser/password_form_manager.cc
index 238825f2aacfb41b4241aff450ba3b89f3b19a8b..d532e1394a283ef25382a8f2b5c63c93ca06fb43 100644
--- a/components/password_manager/core/browser/password_form_manager.cc
+++ b/components/password_manager/core/browser/password_form_manager.cc
@@ -91,8 +91,7 @@ PasswordFormManager::PasswordFormManager(
const base::WeakPtr<PasswordManagerDriver>& driver,
const PasswordForm& observed_form,
bool ssl_valid)
- : best_matches_deleter_(&best_matches_),
- observed_form_(CopyAndModifySSLValidity(observed_form, ssl_valid)),
+ : observed_form_(CopyAndModifySSLValidity(observed_form, ssl_valid)),
provisionally_saved_form_(nullptr),
other_possible_username_action_(
PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES),
@@ -342,7 +341,7 @@ void PasswordFormManager::SetSubmittedForm(const autofill::PasswordForm& form) {
void PasswordFormManager::OnRequestDone(
ScopedVector<PasswordForm> logins_result) {
preferred_match_ = nullptr;
- STLDeleteValues(&best_matches_);
+ best_matches_.clear();
const size_t logins_result_size = logins_result.size();
scoped_ptr<BrowserSavePasswordProgressLogger> logger;
@@ -410,12 +409,19 @@ void PasswordFormManager::OnRequestDone(
// If there is another best-score match for the same username, replace it.
// TODO(vabr): Spare the replacing and keep the first instead of the last
// candidate.
- PasswordForm*& best_match = best_matches_[login->username_value];
- if (best_match == preferred_match_)
+ const base::string16& username = login->username_value;
+ auto best_match_username = best_matches_.find(username);
+ if (best_match_username != best_matches_.end() &&
+ best_match_username->second == preferred_match_) {
preferred_match_ = nullptr;
- delete best_match;
+ }
// Transfer ownership into the map.
- best_match = login.release();
+ const PasswordForm* best_match = login.get();
+ // TODO(mgiuca): Directly assign to |best_match_username|, instead of doing
+ // a second map traversal. This will only be possible once we have C++11
+ // library support (then |best_matches_| can be a map of scoped_ptrs instead
+ // of a ScopedPtrMap).
+ best_matches_.set(username, login.Pass());
if (best_match->preferred)
preferred_match_ = best_match;
}
@@ -427,11 +433,8 @@ void PasswordFormManager::OnRequestDone(
// Take ownership of the PasswordForm from the ScopedVector.
scoped_ptr<PasswordForm> protege(*it);
*it = nullptr;
-
- PasswordForm*& corresponding_best_match =
- best_matches_[protege->username_value];
- if (!corresponding_best_match)
- corresponding_best_match = protege.release();
+ const base::string16& username = protege->username_value;
+ best_matches_.insert(username, protege.Pass());
}
client_->AutofillResultsComputed();
@@ -574,7 +577,7 @@ void PasswordFormManager::SanitizePossibleUsernames(PasswordForm* form) {
// reasons. Also remove duplicates, both in other_possible_usernames and
// between other_possible_usernames and username_value.
std::set<base::string16> set;
- for (std::vector<base::string16>::iterator it =
+ for (std::vector<base::string16>::const_iterator it =
form->other_possible_usernames.begin();
it != form->other_possible_usernames.end(); ++it) {
if (!autofill::IsValidCreditCardNumber(*it) && !autofill::IsSSN(*it))
@@ -588,7 +591,7 @@ void PasswordFormManager::SanitizePossibleUsernames(PasswordForm* form) {
void PasswordFormManager::UpdatePreferredLoginState(
PasswordStore* password_store) {
DCHECK(password_store);
- PasswordFormMap::iterator iter;
+ PasswordFormMap::const_iterator iter;
for (iter = best_matches_.begin(); iter != best_matches_.end(); iter++) {
if (iter->second->username_value != pending_credentials_.username_value &&
iter->second->preferred) {

Powered by Google App Engine
This is Rietveld 408576698