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