Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1145)

Unified Diff: Source/core/html/HTMLSelectElement.cpp

Issue 195813003: Use new is*Element() helper functions further more in HTML code (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Fix bad assertion Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/core/html/HTMLSelectElement.cpp
diff --git a/Source/core/html/HTMLSelectElement.cpp b/Source/core/html/HTMLSelectElement.cpp
index 948371821b3da6c5f83a3d61a006dc199c9b5b3e..535b803c57269174be227ee004b7a3a18d8efb85 100644
--- a/Source/core/html/HTMLSelectElement.cpp
+++ b/Source/core/html/HTMLSelectElement.cpp
@@ -473,7 +473,7 @@ int HTMLSelectElement::nextValidIndex(int listIndex, SkipDirection direction, in
int size = listItems.size();
for (listIndex += direction; listIndex >= 0 && listIndex < size; listIndex += direction) {
--skip;
- if (!listItems[listIndex]->isDisabledFormControl() && listItems[listIndex]->hasTagName(optionTag)) {
+ if (!listItems[listIndex]->isDisabledFormControl() && isHTMLOptionElement(*listItems[listIndex])) {
lastGoodIndex = listIndex;
if (skip <= 0)
break;
@@ -555,7 +555,7 @@ void HTMLSelectElement::saveLastSelection()
const Vector<HTMLElement*>& items = listItems();
for (unsigned i = 0; i < items.size(); ++i) {
HTMLElement* element = items[i];
- m_lastOnChangeSelection.append(element->hasTagName(optionTag) && toHTMLOptionElement(element)->selected());
+ m_lastOnChangeSelection.append(isHTMLOptionElement(*element) && toHTMLOptionElement(element)->selected());
}
}
@@ -570,7 +570,7 @@ void HTMLSelectElement::setActiveSelectionAnchorIndex(int index)
const Vector<HTMLElement*>& items = listItems();
for (unsigned i = 0; i < items.size(); ++i) {
HTMLElement* element = items[i];
- m_cachedStateForActiveSelection.append(element->hasTagName(optionTag) && toHTMLOptionElement(element)->selected());
+ m_cachedStateForActiveSelection.append(isHTMLOptionElement(*element) && toHTMLOptionElement(element)->selected());
}
}
@@ -590,7 +590,7 @@ void HTMLSelectElement::updateListBoxSelection(bool deselectOtherOptions)
const Vector<HTMLElement*>& items = listItems();
for (unsigned i = 0; i < items.size(); ++i) {
HTMLElement* element = items[i];
- if (!element->hasTagName(optionTag) || toHTMLOptionElement(element)->isDisabledFormControl())
+ if (!isHTMLOptionElement(*element) || toHTMLOptionElement(element)->isDisabledFormControl())
continue;
if (i >= start && i <= end)
@@ -624,7 +624,7 @@ void HTMLSelectElement::listBoxOnChange()
bool fireOnChange = false;
for (unsigned i = 0; i < items.size(); ++i) {
HTMLElement* element = items[i];
- bool selected = element->hasTagName(optionTag) && toHTMLOptionElement(element)->selected();
+ bool selected = isHTMLOptionElement(*element) && toHTMLOptionElement(element)->selected();
if (selected != m_lastOnChangeSelection[i])
fireOnChange = true;
m_lastOnChangeSelection[i] = selected;
@@ -732,7 +732,7 @@ void HTMLSelectElement::recalcListItems(bool updateSelectedStates) const
// optgroup tags may not nest. However, both FireFox and IE will
// flatten the tree automatically, so we follow suit.
// (http://www.w3.org/TR/html401/interact/forms.html#h-17.6)
- if (current.hasTagName(optgroupTag)) {
+ if (isHTMLOptGroupElement(current)) {
m_listItems.append(&current);
if (Element* nextElement = ElementTraversal::firstWithin(current)) {
currentElement = nextElement;
@@ -740,7 +740,7 @@ void HTMLSelectElement::recalcListItems(bool updateSelectedStates) const
}
}
- if (current.hasTagName(optionTag)) {
+ if (isHTMLOptionElement(current)) {
m_listItems.append(&current);
if (updateSelectedStates && !m_multiple) {
@@ -758,7 +758,7 @@ void HTMLSelectElement::recalcListItems(bool updateSelectedStates) const
}
}
- if (current.hasTagName(hrTag))
+ if (isHTMLHRElement(current))
m_listItems.append(&current);
// In conforming HTML code, only <optgroup> and <option> will be found
@@ -782,8 +782,8 @@ int HTMLSelectElement::selectedIndex() const
const Vector<HTMLElement*>& items = listItems();
for (size_t i = 0; i < items.size(); ++i) {
HTMLElement* element = items[i];
- if (element->hasTagName(optionTag)) {
- if (toHTMLOptionElement(element)->selected())
+ if (isHTMLOptionElement(*element)) {
+ if (toHTMLOptionElement(*element).selected())
return index;
++index;
}
@@ -818,12 +818,12 @@ void HTMLSelectElement::selectOption(int optionIndex, SelectOptionFlags flags)
HTMLElement* element = 0;
if (listIndex >= 0) {
element = items[listIndex];
- if (element->hasTagName(optionTag)) {
+ if (isHTMLOptionElement(*element)) {
if (m_activeSelectionAnchorIndex < 0 || shouldDeselect)
setActiveSelectionAnchorIndex(listIndex);
if (m_activeSelectionEndIndex < 0 || shouldDeselect)
setActiveSelectionEndIndex(listIndex);
- toHTMLOptionElement(element)->setSelectedState(true);
+ toHTMLOptionElement(*element).setSelectedState(true);
}
}
@@ -861,7 +861,7 @@ int HTMLSelectElement::optionToListIndex(int optionIndex) const
int optionIndex2 = -1;
for (int listIndex = 0; listIndex < listSize; ++listIndex) {
- if (items[listIndex]->hasTagName(optionTag)) {
+ if (isHTMLOptionElement(*items[listIndex])) {
++optionIndex2;
if (optionIndex2 == optionIndex)
return listIndex;
@@ -874,13 +874,13 @@ int HTMLSelectElement::optionToListIndex(int optionIndex) const
int HTMLSelectElement::listToOptionIndex(int listIndex) const
{
const Vector<HTMLElement*>& items = listItems();
- if (listIndex < 0 || listIndex >= static_cast<int>(items.size()) || !items[listIndex]->hasTagName(optionTag))
+ if (listIndex < 0 || listIndex >= static_cast<int>(items.size()) || !isHTMLOptionElement(*items[listIndex]))
return -1;
// Actual index of option not counting OPTGROUP entries that may be in list.
int optionIndex = 0;
for (int i = 0; i < listIndex; ++i) {
- if (items[i]->hasTagName(optionTag))
+ if (isHTMLOptionElement(*items[i]))
++optionIndex;
}
@@ -911,7 +911,7 @@ void HTMLSelectElement::deselectItemsWithoutValidation(HTMLElement* excludeEleme
const Vector<HTMLElement*>& items = listItems();
for (unsigned i = 0; i < items.size(); ++i) {
HTMLElement* element = items[i];
- if (element != excludeElement && element->hasTagName(optionTag))
+ if (element != excludeElement && isHTMLOptionElement(*element))
toHTMLOptionElement(element)->setSelectedState(false);
}
}
@@ -922,7 +922,7 @@ FormControlState HTMLSelectElement::saveFormControlState() const
size_t length = items.size();
FormControlState state;
for (unsigned i = 0; i < length; ++i) {
- if (!items[i]->hasTagName(optionTag))
+ if (!isHTMLOptionElement(*items[i]))
continue;
HTMLOptionElement* option = toHTMLOptionElement(items[i]);
if (!option->selected())
@@ -1004,8 +1004,8 @@ bool HTMLSelectElement::appendFormData(FormDataList& list, bool)
for (unsigned i = 0; i < items.size(); ++i) {
HTMLElement* element = items[i];
- if (element->hasTagName(optionTag) && toHTMLOptionElement(element)->selected() && !toHTMLOptionElement(element)->isDisabledFormControl()) {
- list.appendData(name, toHTMLOptionElement(element)->value());
+ if (isHTMLOptionElement(*element) && toHTMLOptionElement(*element).selected() && !toHTMLOptionElement(*element).isDisabledFormControl()) {
+ list.appendData(name, toHTMLOptionElement(*element).value());
successful = true;
}
}
@@ -1024,7 +1024,7 @@ void HTMLSelectElement::resetImpl()
const Vector<HTMLElement*>& items = listItems();
for (unsigned i = 0; i < items.size(); ++i) {
HTMLElement* element = items[i];
- if (!element->hasTagName(optionTag))
+ if (!isHTMLOptionElement(*element))
continue;
if (items[i]->fastHasAttribute(selectedAttr)) {
@@ -1229,13 +1229,14 @@ void HTMLSelectElement::updateSelectedState(int listIndex, bool multi, bool shif
bool multiSelect = m_multiple && multi && !shift;
HTMLElement* clickedElement = listItems()[listIndex];
- if (clickedElement->hasTagName(optionTag)) {
+ ASSERT(clickedElement);
+ if (isHTMLOptionElement(*clickedElement)) {
// Keep track of whether an active selection (like during drag
// selection), should select or deselect.
- if (toHTMLOptionElement(clickedElement)->selected() && multiSelect)
+ if (toHTMLOptionElement(*clickedElement).selected() && multiSelect)
m_activeSelectionState = false;
if (!m_activeSelectionState)
- toHTMLOptionElement(clickedElement)->setSelectedState(false);
+ toHTMLOptionElement(*clickedElement).setSelectedState(false);
}
// If we're not in any special multiple selection mode, then deselect all
@@ -1250,8 +1251,8 @@ void HTMLSelectElement::updateSelectedState(int listIndex, bool multi, bool shif
setActiveSelectionAnchorIndex(selectedIndex());
// Set the selection state of the clicked option.
- if (clickedElement->hasTagName(optionTag) && !toHTMLOptionElement(clickedElement)->isDisabledFormControl())
- toHTMLOptionElement(clickedElement)->setSelectedState(true);
+ if (isHTMLOptionElement(*clickedElement) && !toHTMLOptionElement(*clickedElement).isDisabledFormControl())
+ toHTMLOptionElement(*clickedElement).setSelectedState(true);
// If there was no selectedIndex() for the previous initialization, or If
// we're doing a single selection, or a multiple selection (using cmd or
@@ -1460,7 +1461,7 @@ int HTMLSelectElement::lastSelectedListIndex() const
const Vector<HTMLElement*>& items = listItems();
for (size_t i = items.size(); i;) {
HTMLElement* element = items[--i];
- if (element->hasTagName(optionTag) && toHTMLOptionElement(element)->selected())
+ if (isHTMLOptionElement(*element) && toHTMLOptionElement(element)->selected())
return i;
}
return -1;
@@ -1481,7 +1482,7 @@ String HTMLSelectElement::optionAtIndex(int index) const
const Vector<HTMLElement*>& items = listItems();
HTMLElement* element = items[index];
- if (!element->hasTagName(optionTag) || toHTMLOptionElement(element)->isDisabledFormControl())
+ if (!isHTMLOptionElement(*element) || toHTMLOptionElement(element)->isDisabledFormControl())
return String();
return toHTMLOptionElement(element)->textIndentedToRespectGroupLabel();
}
@@ -1517,9 +1518,9 @@ void HTMLSelectElement::accessKeySetSelectedIndex(int index)
int listIndex = optionToListIndex(index);
if (listIndex >= 0) {
HTMLElement* element = items[listIndex];
- if (element->hasTagName(optionTag)) {
- if (toHTMLOptionElement(element)->selected())
- toHTMLOptionElement(element)->setSelectedState(false);
+ if (isHTMLOptionElement(*element)) {
+ if (toHTMLOptionElement(*element).selected())
+ toHTMLOptionElement(*element).setSelectedState(false);
else
selectOption(index, DispatchInputAndChangeEvent | UserDriven);
}
@@ -1539,7 +1540,7 @@ unsigned HTMLSelectElement::length() const
const Vector<HTMLElement*>& items = listItems();
for (unsigned i = 0; i < items.size(); ++i) {
- if (items[i]->hasTagName(optionTag))
+ if (isHTMLOptionElement(*items[i]))
++options;
}

Powered by Google App Engine
This is Rietveld 408576698