Index: Source/core/html/HTMLFormElement.cpp |
diff --git a/Source/core/html/HTMLFormElement.cpp b/Source/core/html/HTMLFormElement.cpp |
index b887dd8b5e6c42eb2cefe51e87d34b7f55f2bffc..18029a27892256224908d529d7aa7b849728458c 100644 |
--- a/Source/core/html/HTMLFormElement.cpp |
+++ b/Source/core/html/HTMLFormElement.cpp |
@@ -96,11 +96,11 @@ bool HTMLFormElement::rendererIsNeeded(const RenderStyle& style) |
RenderObject* parentRenderer = node->renderer(); |
// FIXME: Shouldn't we also check for table caption (see |formIsTablePart| below). |
// FIXME: This check is not correct for Shadow DOM. |
- bool parentIsTableElementPart = (parentRenderer->isTable() && node->hasTagName(tableTag)) |
- || (parentRenderer->isTableRow() && node->hasTagName(trTag)) |
+ bool parentIsTableElementPart = (parentRenderer->isTable() && isHTMLTableElement(*node)) |
+ || (parentRenderer->isTableRow() && isHTMLTableRowElement(*node)) |
|| (parentRenderer->isTableSection() && node->hasTagName(tbodyTag)) |
|| (parentRenderer->isRenderTableCol() && node->hasTagName(colTag)) |
- || (parentRenderer->isTableCell() && node->hasTagName(trTag)); |
+ || (parentRenderer->isTableCell() && isHTMLTableRowElement(*node)); |
if (!parentIsTableElementPart) |
return true; |
@@ -330,23 +330,23 @@ void HTMLFormElement::getTextFieldValues(StringPairVector& fieldNamesAndValues) |
fieldNamesAndValues.reserveCapacity(elements.size()); |
for (unsigned i = 0; i < elements.size(); ++i) { |
FormAssociatedElement* control = elements[i]; |
- HTMLElement* element = toHTMLElement(control); |
- if (!element->hasTagName(inputTag)) |
+ HTMLElement& element = toHTMLElement(*control); |
+ if (!isHTMLInputElement(element)) |
continue; |
- HTMLInputElement* input = toHTMLInputElement(element); |
- if (!input->isTextField()) |
+ HTMLInputElement& input = toHTMLInputElement(element); |
+ if (!input.isTextField()) |
continue; |
- fieldNamesAndValues.append(make_pair(input->name().string(), input->value())); |
+ fieldNamesAndValues.append(make_pair(input.name().string(), input.value())); |
} |
} |
void HTMLFormElement::submitDialog(PassRefPtr<FormSubmission> formSubmission) |
{ |
for (Node* node = this; node; node = node->parentOrShadowHostNode()) { |
- if (node->hasTagName(dialogTag)) { |
- toHTMLDialogElement(node)->closeDialog(formSubmission->result()); |
+ if (isHTMLDialogElement(*node)) { |
+ toHTMLDialogElement(*node).closeDialog(formSubmission->result()); |
return; |
} |
} |
@@ -577,18 +577,16 @@ PassRefPtr<HTMLCollection> HTMLFormElement::elements() |
void HTMLFormElement::collectAssociatedElements(Node& root, Vector<FormAssociatedElement*>& elements) const |
{ |
elements.clear(); |
- for (Node* node = &root; node; node = NodeTraversal::next(*node)) { |
- if (!node->isHTMLElement()) |
- continue; |
- FormAssociatedElement* element = 0; |
- if (toElement(node)->isFormControlElement()) |
- element = toHTMLFormControlElement(node); |
- else if (node->hasTagName(objectTag)) |
- element = toHTMLObjectElement(node); |
+ for (HTMLElement* element = Traversal<HTMLElement>::firstWithin(root); element; element = Traversal<HTMLElement>::next(*element)) { |
+ FormAssociatedElement* associatedElement = 0; |
+ if (element->isFormControlElement()) |
+ associatedElement = toHTMLFormControlElement(element); |
+ else if (isHTMLObjectElement(*element)) |
+ associatedElement = toHTMLObjectElement(element); |
else |
continue; |
- if (element->form()== this) |
- elements.append(element); |
+ if (associatedElement->form()== this) |
+ elements.append(associatedElement); |
} |
} |
@@ -613,9 +611,9 @@ const Vector<FormAssociatedElement*>& HTMLFormElement::associatedElements() cons |
void HTMLFormElement::collectImageElements(Node& root, Vector<HTMLImageElement*>& elements) |
{ |
elements.clear(); |
- for (Node* node = &root; node; node = NodeTraversal::next(*node)) { |
- if (node->isHTMLElement() && node->hasTagName(imgTag) && toHTMLElement(node)->formOwner() == this) |
- elements.append(toHTMLImageElement(node)); |
+ for (HTMLImageElement* image = Traversal<HTMLImageElement>::firstWithin(root); image; image = Traversal<HTMLImageElement>::next(*image)) { |
+ if (image->formOwner() == this) |
+ elements.append(image); |
} |
} |
@@ -721,9 +719,9 @@ Element* HTMLFormElement::elementFromPastNamesMap(const AtomicString& pastName) |
if (!element) |
return 0; |
ASSERT_WITH_SECURITY_IMPLICATION(toHTMLElement(element)->formOwner() == this); |
- if (element->hasTagName(imgTag)) { |
+ if (isHTMLImageElement(*element)) { |
ASSERT_WITH_SECURITY_IMPLICATION(imageElements().find(element) != kNotFound); |
- } else if (element->hasTagName(objectTag)) { |
+ } else if (isHTMLObjectElement(*element)) { |
ASSERT_WITH_SECURITY_IMPLICATION(associatedElements().find(toHTMLObjectElement(element)) != kNotFound); |
} else { |
ASSERT_WITH_SECURITY_IMPLICATION(associatedElements().find(toHTMLFormControlElement(element)) != kNotFound); |
@@ -810,7 +808,7 @@ void HTMLFormElement::anonymousNamedGetter(const AtomicString& name, bool& retur |
return; |
} |
- bool onlyMatchImg = elements.size() && elements.at(0)->hasTagName(imgTag); |
+ bool onlyMatchImg = !elements.isEmpty() && isHTMLImageElement(*elements.first()); |
returnValue0Enabled = true; |
returnValue0 = radioNodeList(name, onlyMatchImg); |
} |