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

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

Issue 962673004: [Autofill/Autocomplete Feature] Substring matching instead of prefix matching. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Modified to resolve bot breakages. Created 5 years, 5 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 9999d26e2c38dbc120a14996b5593fa49264096f..4cc20d87bf7ae1f08e16dfa5dcdc88a2152c7231 100644
--- a/components/autofill/content/renderer/password_autofill_agent.cc
+++ b/components/autofill/content/renderer/password_autofill_agent.cc
@@ -18,6 +18,7 @@
#include "components/autofill/content/renderer/renderer_save_password_progress_logger.h"
#include "components/autofill/core/common/autofill_constants.h"
#include "components/autofill/core/common/autofill_switches.h"
+#include "components/autofill/core/common/autofill_util.h"
#include "components/autofill/core/common/form_field_data.h"
#include "components/autofill/core/common/password_form.h"
#include "components/autofill/core/common/password_form_fill_data.h"
@@ -226,7 +227,8 @@ bool DoUsernamesMatch(const base::string16& username1,
bool exact_match) {
if (exact_match)
return username1 == username2;
- return base::StartsWith(username1, username2, base::CompareCase::SENSITIVE);
+ return base::StartsWith(username1, username2, base::CompareCase::SENSITIVE) ||
vabr (Chromium) 2015/07/09 06:17:51 I understand that the StartsWith call is there in
Pritam Nikam 2015/07/10 16:58:45 For autofill & CC suggestions we are using base::S
vabr (Chromium) 2015/07/13 14:04:25 I don't understand what you mean. FieldIsSuggestio
Pritam Nikam 2015/07/14 10:30:07 Done.
+ ContainsTokenThatStartsWith(username1, username2, true);
}
// Returns |true| if the given element is editable. Otherwise, returns |false|.
@@ -421,11 +423,8 @@ bool FillUserNameAndPassword(
username_element->setValue(username, true);
vabr (Chromium) 2015/07/09 08:27:50 Please add: // TODO(vabr): Why not setSuggestedVal
Pritam Nikam 2015/07/10 16:58:46 Done.
nonscript_modified_values[*username_element] = username;
username_element->setAutofilled(true);
-
- if (set_selection) {
- username_element->setSelectionRange(current_username.length(),
- username.length());
- }
+ if (set_selection)
+ PreviewSuggestion(username, current_username, username_element);
} else if (current_username != username) {
// If the username can't be filled and it doesn't match a saved password
// as is, don't autofill a password.
@@ -572,7 +571,6 @@ PasswordAutofillAgent::PasswordAutofillAgent(content::RenderFrame* render_frame)
logging_state_active_(false),
was_username_autofilled_(false),
was_password_autofilled_(false),
- username_selection_start_(0),
did_stop_loading_(false),
weak_ptr_factory_(this) {
Send(new AutofillHostMsg_PasswordAutofillAgentConstructed(routing_id()));
@@ -799,14 +797,14 @@ bool PasswordAutofillAgent::PreviewSuggestion(
return false;
}
+ if (username_query_prefix_.empty())
+ username_query_prefix_ = username_element.value();
+
was_username_autofilled_ = username_element.isAutofilled();
- username_selection_start_ = username_element.selectionStart();
username_element.setSuggestedValue(username);
username_element.setAutofilled(true);
- username_element.setSelectionRange(
- username_selection_start_,
- username_element.suggestedValue().length());
-
+ ::autofill::PreviewSuggestion(username_element.suggestedValue(),
+ username_query_prefix_, &username_element);
was_password_autofilled_ = password_info->password_field.isAutofilled();
password_info->password_field.setSuggestedValue(password);
password_info->password_field.setAutofilled(true);
@@ -1369,6 +1367,7 @@ bool PasswordAutofillAgent::ShowSuggestionPopup(
routing_id(), key_it->second, field.text_direction, username_string,
options, bounding_box_scaled));
+ username_query_prefix_ = username_string;
bool suggestions_present = false;
if (GetSuggestionsStats(fill_data, username_string, show_all,
&suggestions_present)) {
@@ -1446,7 +1445,7 @@ void PasswordAutofillAgent::ClearPreview(
if (!username->suggestedValue().isEmpty()) {
username->setSuggestedValue(blink::WebString());
username->setAutofilled(was_username_autofilled_);
- username->setSelectionRange(username_selection_start_,
+ username->setSelectionRange(username_query_prefix_.length(),
username->value().length());
}
if (!password->suggestedValue().isEmpty()) {

Powered by Google App Engine
This is Rietveld 408576698