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

Unified Diff: components/autofill/content/renderer/password_autofill_agent.cc

Issue 688633004: Do not haul suggestions back to browser in AutofillHostMsg_ShowPasswordSuggestions (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Comments removed, iterator renamed Created 6 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/content/renderer/password_autofill_agent.cc
diff --git a/components/autofill/content/renderer/password_autofill_agent.cc b/components/autofill/content/renderer/password_autofill_agent.cc
index c5986925655c495ce14568681a46695e53a3f80d..f2882c9ff03c8f317012bc560fe544ab5dbe9f69 100644
--- a/components/autofill/content/renderer/password_autofill_agent.cc
+++ b/components/autofill/content/renderer/password_autofill_agent.cc
@@ -240,45 +240,41 @@ bool FillDataContainsUsername(const PasswordFormFillData& fill_data) {
return !fill_data.basic_data.fields[0].name.empty();
}
-// This function attempts to fill |suggestions| and |realms| form |fill_data|
-// based on |current_username|. Returns true when |suggestions| gets filled
-// from |fill_data.other_possible_usernames|, else returns false.
-bool GetSuggestions(const PasswordFormFillData& fill_data,
- const base::string16& current_username,
- std::vector<base::string16>* suggestions,
- std::vector<base::string16>* realms,
- bool show_all) {
- bool other_possible_username_shown = false;
- if (show_all ||
- StartsWith(
- fill_data.basic_data.fields[0].value, current_username, false)) {
- suggestions->push_back(fill_data.basic_data.fields[0].value);
- realms->push_back(base::UTF8ToUTF16(fill_data.preferred_realm));
+// Sets |suggestions_present| to true if there are any suggestions to be derived
+// from |fill_data|. Unless |show_all| is true, only considers suggestions with
+// usernames having |current_username| as a prefix. Returns true if a username
+// from the |fill_data.other_possible_usernames| would be included in the
+// suggestions.
+bool GetSuggestionsStats(const PasswordFormFillData& fill_data,
+ const base::string16& current_username,
+ bool show_all,
+ bool* suggestions_present) {
+ *suggestions_present = false;
+
+ for (const auto& usernames : fill_data.other_possible_usernames) {
+ for (size_t i = 0; i < usernames.second.size(); ++i) {
+ if (show_all ||
+ StartsWith(usernames.second[i], current_username, false)) {
+ *suggestions_present = true;
+ return true;
+ }
+ }
}
- for (PasswordFormFillData::LoginCollection::const_iterator iter =
- fill_data.additional_logins.begin();
- iter != fill_data.additional_logins.end();
- ++iter) {
- if (show_all || StartsWith(iter->first, current_username, false)) {
- suggestions->push_back(iter->first);
- realms->push_back(base::UTF8ToUTF16(iter->second.realm));
- }
+ if (show_all || StartsWith(fill_data.basic_data.fields[0].value,
+ current_username, false)) {
+ *suggestions_present = true;
+ return false;
}
- for (PasswordFormFillData::UsernamesCollection::const_iterator iter =
- fill_data.other_possible_usernames.begin();
- iter != fill_data.other_possible_usernames.end();
- ++iter) {
- for (size_t i = 0; i < iter->second.size(); ++i) {
- if (show_all || StartsWith(iter->second[i], current_username, false)) {
- other_possible_username_shown = true;
- suggestions->push_back(iter->second[i]);
- realms->push_back(base::UTF8ToUTF16(iter->first.realm));
- }
+ for (const auto& login : fill_data.additional_logins) {
+ if (show_all || StartsWith(login.first, current_username, false)) {
+ *suggestions_present = true;
+ return false;
}
}
- return other_possible_username_shown;
+
+ return false;
}
// This function attempts to fill |username_element| and |password_element|
@@ -1108,15 +1104,6 @@ bool PasswordAutofillAgent::ShowSuggestionPopup(
if (!webview)
return false;
- std::vector<base::string16> suggestions;
- std::vector<base::string16> realms;
- if (GetSuggestions(
- fill_data, user_input.value(), &suggestions, &realms, show_all)) {
- usernames_usage_ = OTHER_POSSIBLE_USERNAME_SHOWN;
- }
-
- DCHECK_EQ(suggestions.size(), realms.size());
-
FormData form;
FormFieldData field;
FindFormAndFieldForFormControlElement(
@@ -1131,8 +1118,14 @@ bool PasswordAutofillAgent::ShowSuggestionPopup(
bounding_box.width() * scale,
bounding_box.height() * scale);
Send(new AutofillHostMsg_ShowPasswordSuggestions(
- routing_id(), field, bounding_box_scaled, suggestions, realms));
- return !suggestions.empty();
+ routing_id(), field, user_input.value(), show_all, bounding_box_scaled));
+
+ bool suggestions_present = false;
+ if (GetSuggestionsStats(fill_data, user_input.value(), show_all,
+ &suggestions_present)) {
+ usernames_usage_ = OTHER_POSSIBLE_USERNAME_SHOWN;
+ }
+ return suggestions_present;
}
void PasswordAutofillAgent::PerformInlineAutocomplete(

Powered by Google App Engine
This is Rietveld 408576698