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