Chromium Code Reviews| Index: Source/core/html/HTMLSelectElement.cpp |
| diff --git a/Source/core/html/HTMLSelectElement.cpp b/Source/core/html/HTMLSelectElement.cpp |
| index 6be5c079cccbc348acd6f9a648b0a4354870d240..1720cb51ed377dc105ab31df2135b30afdb2ddeb 100644 |
| --- a/Source/core/html/HTMLSelectElement.cpp |
| +++ b/Source/core/html/HTMLSelectElement.cpp |
| @@ -253,6 +253,40 @@ void HTMLSelectElement::setValue(const String &value) |
| setSelectedIndex(-1); |
| } |
| +String HTMLSelectElement::suggestedValue() const |
| +{ |
| + const Vector<HTMLElement*>& items = listItems(); |
| + for (unsigned i = 0; i < items.size(); i++) { |
|
tkent
2014/03/14 00:06:41
We prefer ++i.
ziran.sun
2014/03/14 11:32:37
Done.
|
| + if (items[i]->hasLocalName(optionTag) && toHTMLOptionElement(items[i])->value() == m_suggestedValue) |
| + return m_suggestedValue; |
| + } |
| + return ""; |
| +} |
| + |
| +void HTMLSelectElement::setSuggestedValue(const String& value) |
| +{ |
| + m_suggestedValue = value; |
| + |
| + if (value.isNull()) { |
| + setSuggestedIndex(-1); |
| + return; |
| + } |
| + |
| + const Vector<HTMLElement*>& items = listItems(); |
| + unsigned optionIndex = 0; |
| + for (unsigned i = 0; i < items.size(); i++) { |
|
tkent
2014/03/14 00:06:41
Ditto.
ziran.sun
2014/03/14 11:32:37
Done.
|
| + if (items[i]->hasLocalName(optionTag)) { |
| + if (toHTMLOptionElement(items[i])->value() == value) { |
| + setSuggestedIndex(optionIndex); |
| + return; |
| + } |
| + optionIndex++; |
| + } |
| + } |
| + |
| + setSuggestedIndex(-1); |
| +} |
| + |
| bool HTMLSelectElement::isPresentationAttribute(const QualifiedName& name) const |
| { |
| if (name == alignAttr) { |
| @@ -795,6 +829,24 @@ void HTMLSelectElement::setSelectedIndex(int index) |
| selectOption(index, DeselectOtherOptions); |
| } |
| +int HTMLSelectElement::suggestedIndex() const |
| +{ |
| + return m_suggestedIndex; |
| +} |
| + |
| +void HTMLSelectElement::setSuggestedIndex(int suggestedIndex) |
| +{ |
| + m_suggestedIndex = suggestedIndex; |
| + |
| + if (RenderObject* renderer = this->renderer()) { |
| + renderer->updateFromElement(); |
| + if (renderer->isListBox()) |
| + toRenderListBox(renderer)->scrollToRevealElementAtListIndex(suggestedIndex); |
| + } |
| + |
| + setNeedsValidityCheck(); |
|
tkent
2014/03/14 00:06:41
I don't think validity check is necessary. Updatin
ziran.sun
2014/03/14 11:32:37
Done.
|
| +} |
| + |
| void HTMLSelectElement::optionSelectionStateChanged(HTMLOptionElement* option, bool optionIsSelected) |
| { |
| ASSERT(option->ownerSelectElement() == this); |