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

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: Addresses Vaclav's & Evan's Inputs. Created 5 years, 9 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 357ab1e8eca3ca228c39e42d00296a617b46bb5b..2327d04fa8bd201958441b8a2d46370e6cb82096 100644
--- a/components/autofill/content/renderer/password_autofill_agent.cc
+++ b/components/autofill/content/renderer/password_autofill_agent.cc
@@ -17,6 +17,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"
@@ -236,7 +237,9 @@ bool DoUsernamesMatch(const base::string16& username1,
bool exact_match) {
if (exact_match)
return username1 == username2;
- return StartsWith(username1, username2, true);
+ return IsFeatureSubstringMatchEnabled()
+ ? HasTokenStartsWith(username1, username2, true)
+ : StartsWith(username1, username2, true);
}
// Returns |true| if the given element is editable. Otherwise, returns |false|.
@@ -426,8 +429,16 @@ bool FillUserNameAndPassword(
username_element->setAutofilled(true);
if (set_selection) {
- username_element->setSelectionRange(current_username.length(),
- username.length());
+ if (IsFeatureSubstringMatchEnabled()) {
+ size_t start = 0, end = 0;
vabr (Chromium) 2015/03/24 13:32:28 nit: Although the style guide does not speak about
Pritam Nikam 2015/03/25 14:25:26 Done.
+ if (base::string16::npos !=
+ ComputeRange(username, current_username, &start, &end)) {
+ username_element->setSelectionRange(start, end);
+ }
+ } else {
+ username_element->setSelectionRange(current_username.length(),
+ username.length());
+ }
}
} else if (current_username != username) {
// If the username can't be filled and it doesn't match a saved password
@@ -764,13 +775,25 @@ bool PasswordAutofillAgent::PreviewSuggestion(
return false;
}
+ base::string16 current_username =
+ static_cast<base::string16>(username_element.value());
vabr (Chromium) 2015/03/24 13:32:28 You do not need the static_cast. WebString defines
Pritam Nikam 2015/03/25 14:25:26 Done.
+ base::string16 suggested_username = static_cast<base::string16>(username);
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());
+
+ if (IsFeatureSubstringMatchEnabled()) {
+ size_t start = 0, end = 0;
vabr (Chromium) 2015/03/24 13:32:28 As above, please declare the variables separately.
Pritam Nikam 2015/03/25 14:25:26 Done.
+ if (base::string16::npos !=
+ ComputeRange(suggested_username, current_username, &start, &end)) {
+ username_element.setSelectionRange(start, end);
+ was_username_autofilled_ = start;
+ }
+ } else {
+ username_element.setSelectionRange(
+ username_selection_start_, username_element.suggestedValue().length());
+ }
was_password_autofilled_ = password_info->password_field.isAutofilled();
password_info->password_field.setSuggestedValue(password);
@@ -1335,7 +1358,8 @@ void PasswordAutofillAgent::PerformInlineAutocomplete(
#if !defined(OS_ANDROID)
// Fill the user and password field with the most relevant match. Android
// only fills in the fields after the user clicks on the suggestion popup.
- if (FillUserNameAndPassword(
+ if (!IsFeatureSubstringMatchEnabled() &&
vabr (Chromium) 2015/03/24 13:32:28 Why do we switch off inline autocomplete also for
Pritam Nikam 2015/03/25 14:25:26 Will address this input in next patch set.
+ FillUserNameAndPassword(
&username,
&password,
fill_data,

Powered by Google App Engine
This is Rietveld 408576698