| 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 | 
|  |