Chromium Code Reviews| Index: Source/core/html/HTMLSelectElement.cpp |
| diff --git a/Source/core/html/HTMLSelectElement.cpp b/Source/core/html/HTMLSelectElement.cpp |
| index 9f1a5835a7c91e3b02988228ef2974fbd0b6e9ab..aca1b91a8367d8ef4ab782d192faab3c2d08c2a9 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 && this->isAutofilled()) |
|
tkent
2014/10/01 23:31:02
|this->| is unnecessary.
|
| + setAutofilled(false); |
| + |
| HTMLElement* element = 0; |
| if (listIndex >= 0) { |
| element = items[listIndex]; |