Index: components/autofill/content/renderer/form_autofill_util.cc |
diff --git a/components/autofill/content/renderer/form_autofill_util.cc b/components/autofill/content/renderer/form_autofill_util.cc |
index 51a2251258b73d0faf6bf61afbc8fec36b951d11..4cf695ffc3ec9b9e8f1b6a755c3b59dd037ab25e 100644 |
--- a/components/autofill/content/renderer/form_autofill_util.cc |
+++ b/components/autofill/content/renderer/form_autofill_util.cc |
@@ -16,6 +16,7 @@ |
#include "components/autofill/core/common/autofill_data_validation.h" |
#include "components/autofill/core/common/autofill_regexes.h" |
#include "components/autofill/core/common/autofill_switches.h" |
+#include "components/autofill/core/common/autofill_util.h" |
#include "components/autofill/core/common/form_data.h" |
#include "components/autofill/core/common/form_field_data.h" |
#include "third_party/WebKit/public/platform/WebString.h" |
@@ -871,9 +872,7 @@ void PreviewFormField(const FormFieldData& data, |
if (is_initiating_node && |
(IsTextInput(input_element) || IsTextAreaElement(*field))) { |
// Select the part of the text that the user didn't type. |
- int start = field->value().length(); |
- int end = field->suggestedValue().length(); |
- field->setSelectionRange(start, end); |
+ PreviewSuggestion(field->suggestedValue(), field->value(), field); |
} |
} |
@@ -1534,4 +1533,19 @@ gfx::RectF GetScaledBoundingBox(float scale, WebElement* element) { |
bounding_box.height() * scale); |
} |
+void PreviewSuggestion(const base::string16& suggestion, |
+ const base::string16& user_input, |
+ blink::WebFormControlElement* input_element) { |
+ size_t selection_start = user_input.length(); |
+ if (IsFeatureSubstringMatchEnabled()) { |
+ size_t offset = |
+ autofill::GetTextSelectionStart(suggestion, user_input, false); |
+ // Zero selection start is for password manager, which can show usernames |
+ // that do not begin with the user input value. |
+ selection_start = (offset == base::string16::npos) ? 0 : offset; |
+ } |
+ |
+ input_element->setSelectionRange(selection_start, suggestion.length()); |
+} |
+ |
} // namespace autofill |