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

Side by Side Diff: components/password_manager/core/browser/password_form_manager.h

Issue 870513002: [PasswordManager] Improve detection of ignorable change password forms. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed breakage. Created 5 years, 10 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_PASSWORD_FORM_MANAGER_H_ 5 #ifndef COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_PASSWORD_FORM_MANAGER_H_
6 #define COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_PASSWORD_FORM_MANAGER_H_ 6 #define COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_PASSWORD_FORM_MANAGER_H_
7 7
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
77 // conceivable that a user (or ui test) could attempt to submit a login 77 // conceivable that a user (or ui test) could attempt to submit a login
78 // prompt before the callback has occured, which would InvokeLater a call to 78 // prompt before the callback has occured, which would InvokeLater a call to
79 // PasswordManager::ProvisionallySave, which would interact with this object 79 // PasswordManager::ProvisionallySave, which would interact with this object
80 // before the db has had time to answer with matching password entries. 80 // before the db has had time to answer with matching password entries.
81 // This is intended to be a one-time check; if the return value is false the 81 // This is intended to be a one-time check; if the return value is false the
82 // expectation is caller will give up. This clearly won't work if you put it 82 // expectation is caller will give up. This clearly won't work if you put it
83 // in a loop and wait for matching to complete; you're (supposed to be) on 83 // in a loop and wait for matching to complete; you're (supposed to be) on
84 // the same thread! 84 // the same thread!
85 bool HasCompletedMatching() const; 85 bool HasCompletedMatching() const;
86 86
87 // Returns true if the observed form has both the current and new password
88 // fields, and the username field was not explicitly marked with
89 // autocomplete=username. In these cases it is not clear whether the username
90 // field is the right guess (often such change password forms do not contain
91 // the username at all), and the user should not be bothered with saving a
92 // potentially malformed credential. Once we handle change password forms
93 // correctly, or http://crbug.com/448351 gets implemented, this method should
94 // be replaced accordingly.
95 bool IsIgnorableChangePasswordForm() const;
96
97 // Determines if the user opted to 'never remember' passwords for this form. 87 // Determines if the user opted to 'never remember' passwords for this form.
98 bool IsBlacklisted() const; 88 bool IsBlacklisted() const;
99 89
100 // Used by PasswordManager to determine whether or not to display 90 // Used by PasswordManager to determine whether or not to display
101 // a SavePasswordBar when given the green light to save the PasswordForm 91 // a SavePasswordBar when given the green light to save the PasswordForm
102 // managed by this. 92 // managed by this.
103 bool IsNewLogin() const; 93 bool IsNewLogin() const;
104 94
105 // Returns true if the current pending credentials were found using 95 // Returns true if the current pending credentials were found using
106 // origin matching of the public suffix, instead of the signon realm of the 96 // origin matching of the public suffix, instead of the signon realm of the
(...skipping 16 matching lines...) Expand all
123 void ProcessFrame(const base::WeakPtr<PasswordManagerDriver>& driver); 113 void ProcessFrame(const base::WeakPtr<PasswordManagerDriver>& driver);
124 114
125 void OnGetPasswordStoreResults( 115 void OnGetPasswordStoreResults(
126 const std::vector<autofill::PasswordForm*>& results) override; 116 const std::vector<autofill::PasswordForm*>& results) override;
127 117
128 // A user opted to 'never remember' passwords for this form. 118 // A user opted to 'never remember' passwords for this form.
129 // Blacklist it so that from now on when it is seen we ignore it. 119 // Blacklist it so that from now on when it is seen we ignore it.
130 // TODO: Make this private once we switch to the new UI. 120 // TODO: Make this private once we switch to the new UI.
131 void PermanentlyBlacklist(); 121 void PermanentlyBlacklist();
132 122
133 // If the user has submitted observed_form_, provisionally hold on to 123 // If the user has submitted |observed_form_|, provisionally hold on to
134 // the submitted credentials until we are told by PasswordManager whether 124 // the submitted credentials until we are told by PasswordManager whether
135 // or not the login was successful. |action| describes how we deal with 125 // or not the login was successful. |action| describes how we deal with
136 // possible usernames. If |action| is ALLOW_OTHER_POSSIBLE_USERNAMES we will 126 // possible usernames. If |action| is ALLOW_OTHER_POSSIBLE_USERNAMES we will
137 // treat a possible usernames match as a sign that our original heuristics 127 // treat a possible usernames match as a sign that our original heuristics
138 // were wrong and that the user selected the correct username from the 128 // were wrong and that the user selected the correct username from the
139 // Autofill UI. 129 // Autofill UI. If the |observed_form_| is a ignorable change-password form
140 void ProvisionallySave(const autofill::PasswordForm& credentials, 130 // having non-matching credentials to that of in |best_matches_|, this
131 // functions returns false; for all other cases returns true.
132 bool ProvisionallySave(const autofill::PasswordForm& credentials,
141 OtherPossibleUsernamesAction action); 133 OtherPossibleUsernamesAction action);
142 134
143 // Handles save-as-new or update of the form managed by this manager. 135 // Handles save-as-new or update of the form managed by this manager.
144 // Note the basic data of updated_credentials must match that of 136 // Note the basic data of updated_credentials must match that of
145 // observed_form_ (e.g DoesManage(pending_credentials_) == true). 137 // observed_form_ (e.g DoesManage(pending_credentials_) == true).
146 // TODO: Make this private once we switch to the new UI. 138 // TODO: Make this private once we switch to the new UI.
147 void Save(); 139 void Save();
148 140
149 // Call these if/when we know the form submission worked or failed. 141 // Call these if/when we know the form submission worked or failed.
150 // These routines are used to update internal statistics ("ActionsTaken"). 142 // These routines are used to update internal statistics ("ActionsTaken").
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
275 267
276 // Remove possible_usernames that may contains sensitive information and 268 // Remove possible_usernames that may contains sensitive information and
277 // duplicates. 269 // duplicates.
278 void SanitizePossibleUsernames(autofill::PasswordForm* form); 270 void SanitizePossibleUsernames(autofill::PasswordForm* form);
279 271
280 // Helper function to delegate uploading to the AutofillManager. 272 // Helper function to delegate uploading to the AutofillManager.
281 virtual void UploadPasswordForm( 273 virtual void UploadPasswordForm(
282 const autofill::FormData& form_data, 274 const autofill::FormData& form_data,
283 const autofill::ServerFieldType& password_type); 275 const autofill::ServerFieldType& password_type);
284 276
277 // Returns true if the observed form has both the current and new password
278 // fields, and the username field was not explicitly marked with
279 // autocomplete=username. In these cases it is not clear whether the username
280 // field is the right guess (often such change password forms do not contain
281 // the username at all), and the user should not be bothered with saving a
282 // potentially malformed credential. Once we handle change password forms
283 // correctly, or http://crbug.com/448351 gets implemented, this method should
284 // be replaced accordingly.
285 bool IsIgnorableChangePasswordForm() const;
286
285 // Set of PasswordForms from the DB that best match the form 287 // Set of PasswordForms from the DB that best match the form
286 // being managed by this. Use a map instead of vector, because we most 288 // being managed by this. Use a map instead of vector, because we most
287 // frequently require lookups by username value in IsNewLogin. 289 // frequently require lookups by username value in IsNewLogin.
288 autofill::PasswordFormMap best_matches_; 290 autofill::PasswordFormMap best_matches_;
289 291
290 // Cleans up when best_matches_ goes out of scope. 292 // Cleans up when best_matches_ goes out of scope.
291 STLValueDeleter<autofill::PasswordFormMap> best_matches_deleter_; 293 STLValueDeleter<autofill::PasswordFormMap> best_matches_deleter_;
292 294
293 // The PasswordForm from the page or dialog managed by |this|. 295 // The PasswordForm from the page or dialog managed by |this|.
294 const autofill::PasswordForm observed_form_; 296 const autofill::PasswordForm observed_form_;
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
353 ManagerAction manager_action_; 355 ManagerAction manager_action_;
354 UserAction user_action_; 356 UserAction user_action_;
355 SubmitResult submit_result_; 357 SubmitResult submit_result_;
356 358
357 DISALLOW_COPY_AND_ASSIGN(PasswordFormManager); 359 DISALLOW_COPY_AND_ASSIGN(PasswordFormManager);
358 }; 360 };
359 361
360 } // namespace password_manager 362 } // namespace password_manager
361 363
362 #endif // COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_PASSWORD_FORM_MANAGER_H_ 364 #endif // COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_PASSWORD_FORM_MANAGER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698