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

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

Issue 2262843002: Make PasswordFormManager::best_matches_ const (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@621355_pass_creds_to_update_by_value
Patch Set: Just rebased Created 4 years, 4 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.h
diff --git a/components/password_manager/core/browser/password_form_manager.h b/components/password_manager/core/browser/password_form_manager.h
index 7ad85312ca3cb5fde9bc3fb69a46a911ea85d1ba..4099812d25c331854c2e83dddae87ba4c40c217f 100644
--- a/components/password_manager/core/browser/password_form_manager.h
+++ b/components/password_manager/core/browser/password_form_manager.h
@@ -7,6 +7,7 @@
#include <stdint.h>
+#include <map>
#include <memory>
#include <string>
#include <vector>
@@ -15,6 +16,7 @@
#include "base/memory/scoped_vector.h"
#include "base/memory/weak_ptr.h"
#include "base/optional.h"
+#include "base/strings/string16.h"
#include "build/build_config.h"
#include "components/autofill/core/browser/field_types.h"
#include "components/autofill/core/browser/form_structure.h"
@@ -212,7 +214,8 @@ class PasswordFormManager : public PasswordStoreConsumer {
}
// Returns the best matches.
- const autofill::PasswordFormMap& best_matches() const {
+ const std::map<base::string16, const autofill::PasswordForm*>& best_matches()
+ const {
return best_matches_;
}
@@ -220,13 +223,12 @@ class PasswordFormManager : public PasswordStoreConsumer {
return preferred_match_;
}
- const std::vector<std::unique_ptr<autofill::PasswordForm>>&
- blacklisted_matches() const {
+ const std::vector<const autofill::PasswordForm*>& blacklisted_matches()
+ const {
return blacklisted_matches_;
}
- const std::vector<std::unique_ptr<InteractionsStats>>& interactions_stats()
- const {
+ const std::vector<const InteractionsStats*>& interactions_stats() const {
return interactions_stats_;
}
@@ -236,8 +238,7 @@ class PasswordFormManager : public PasswordStoreConsumer {
return is_possible_change_password_form_without_username_;
}
- const std::vector<std::unique_ptr<autofill::PasswordForm>>&
- federated_matches() {
+ const std::vector<const autofill::PasswordForm*>& federated_matches() const {
return federated_matches_;
}
@@ -438,7 +439,7 @@ class PasswordFormManager : public PasswordStoreConsumer {
// for empty |password| return nullptr and for non-empty |password| returns
// the unique entry in |best_matches_| with the same password, if it exists,
// and nullptr otherwise.
- autofill::PasswordForm* FindBestMatchForUpdatePassword(
+ const autofill::PasswordForm* FindBestMatchForUpdatePassword(
const base::string16& password) const;
// Try to find best matched to |form| from |best_matches_| by the rules:
@@ -450,7 +451,7 @@ class PasswordFormManager : public PasswordStoreConsumer {
// a form contains only one field which is a password) and there is an element
// from |best_matches_| with the same password as in |form| then return it;
// 4. Otherwise return nullptr.
- autofill::PasswordForm* FindBestSavedMatch(
+ const autofill::PasswordForm* FindBestSavedMatch(
const autofill::PasswordForm* form) const;
// Send appropriate votes based on what is currently being saved.
@@ -470,29 +471,35 @@ class PasswordFormManager : public PasswordStoreConsumer {
std::vector<autofill::PasswordForm>* credentials_to_update);
// Set of nonblacklisted PasswordForms from the DB that best match the form
- // being managed by this. Use a map instead of vector, because we most
- // frequently require lookups by username value in IsNewLogin.
- autofill::PasswordFormMap best_matches_;
+ // being managed by this.
dvadym 2016/08/23 17:02:19 Do I understand correctly that *_owned variables w
vabr (Chromium) 2016/08/24 08:07:28 Indeed! You can already see it here: https://coder
+ std::vector<std::unique_ptr<autofill::PasswordForm>> best_matches_owned_;
+ // Weak copy for sharing, indexed by username.
+ std::map<base::string16, const autofill::PasswordForm*> best_matches_;
// Set of forms from PasswordStore that correspond to the current site and
- // that are not in |best_matches_|.
- std::vector<std::unique_ptr<autofill::PasswordForm>> not_best_matches_;
+ // that are not in |best_matches_|, and their weak copy for sharing.
+ std::vector<std::unique_ptr<autofill::PasswordForm>> not_best_matches_owned_;
+ std::vector<const autofill::PasswordForm*> not_best_matches_;
// Federated credentials relevant to the observed form. They are neither
// filled not saved by this PasswordFormManager, so they are kept separately
// from |best_matches_|. The PasswordFormManager passes them further to
- // PasswordManager to show them in the UI.
- std::vector<std::unique_ptr<autofill::PasswordForm>> federated_matches_;
+ // PasswordManager to show them in the UI. Also weak copy for sharing.
+ std::vector<std::unique_ptr<autofill::PasswordForm>> federated_matches_owned_;
+ std::vector<const autofill::PasswordForm*> federated_matches_;
// Set of blacklisted forms from the PasswordStore that best match the current
- // form.
- std::vector<std::unique_ptr<autofill::PasswordForm>> blacklisted_matches_;
+ // form, and their weak copy for sharing.
+ std::vector<std::unique_ptr<autofill::PasswordForm>>
+ blacklisted_matches_owned_;
+ std::vector<const autofill::PasswordForm*> blacklisted_matches_;
// The PasswordForm from the page or dialog managed by |this|.
const autofill::PasswordForm observed_form_;
- // Statistics for the current domain.
- std::vector<std::unique_ptr<InteractionsStats>> interactions_stats_;
+ // Statistics for the current domain and their weak copy for sharing.
+ std::vector<std::unique_ptr<InteractionsStats>> interactions_stats_owned_;
+ std::vector<const InteractionsStats*> interactions_stats_;
// Stores a submitted form.
std::unique_ptr<const autofill::PasswordForm> provisionally_saved_form_;

Powered by Google App Engine
This is Rietveld 408576698