| Index: Source/core/html/HTMLSelectElement.cpp | 
| diff --git a/Source/core/html/HTMLSelectElement.cpp b/Source/core/html/HTMLSelectElement.cpp | 
| index 9f1a5835a7c91e3b02988228ef2974fbd0b6e9ab..130987773a9acd18a7b95053067fb5ef731ad9b9 100644 | 
| --- a/Source/core/html/HTMLSelectElement.cpp | 
| +++ b/Source/core/html/HTMLSelectElement.cpp | 
| @@ -82,6 +82,7 @@ HTMLSelectElement::HTMLSelectElement(Document& document, HTMLFormElement* form) | 
| , m_activeSelectionState(false) | 
| , m_shouldRecalcListItems(false) | 
| , m_suggestedIndex(-1) | 
| +    , m_isAutofilledByPreview(false) | 
| { | 
| } | 
|  | 
| @@ -269,6 +270,8 @@ void HTMLSelectElement::setValue(const String &value, bool sendEvents) | 
|  | 
| int previousSelectedIndex = selectedIndex(); | 
| setSuggestedIndex(-1); | 
| +    if (m_isAutofilledByPreview) | 
| +        setAutofilled(false); | 
| setSelectedIndex(optionIndex); | 
|  | 
| if (sendEvents && previousSelectedIndex != selectedIndex()) { | 
| @@ -304,6 +307,7 @@ void HTMLSelectElement::setSuggestedValue(const String& value) | 
| if (isHTMLOptionElement(items[i])) { | 
| if (toHTMLOptionElement(items[i])->value() == value) { | 
| setSuggestedIndex(optionIndex); | 
| +                m_isAutofilledByPreview = true; | 
| return; | 
| } | 
| optionIndex++; | 
| @@ -924,6 +928,9 @@ void HTMLSelectElement::selectOption(int optionIndex, SelectOptionFlags flags) | 
| const WillBeHeapVector<RawPtrWillBeMember<HTMLElement> >& items = listItems(); | 
| int listIndex = optionToListIndex(optionIndex); | 
|  | 
| +    if (selectedIndex() != optionIndex && isAutofilled()) | 
| +        setAutofilled(false); | 
| + | 
| HTMLElement* element = 0; | 
| if (listIndex >= 0) { | 
| element = items[listIndex]; | 
|  |