Skip to content

Commit 1930190

Browse files
committed
take care of referencing form elements
1 parent 34a655b commit 1930190

File tree

5 files changed

+10
-41
lines changed

5 files changed

+10
-41
lines changed

src/changes/changes.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
Upgrade Apache commons-io to 2.14.0.
2222
</action>
2323
<action type="fix" dev="rbri">
24-
Form elements are all elements that belong to a form; not only the child elements. We now
24+
Form elements are all elements that belong to a form; not only the child elements. We now
2525
take care of elements that use the form attribute to specify the associated form in many more places.
2626
</action>
2727
<action type="add" dev="Lai Quang Duong">

src/main/java/org/htmlunit/html/HtmlButton.java

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
package org.htmlunit.html;
1616

1717
import static org.htmlunit.BrowserVersionFeatures.EVENT_MOUSE_ON_DISABLED;
18-
import static org.htmlunit.BrowserVersionFeatures.FORM_FORM_ATTRIBUTE_SUPPORTED;
1918
import static org.htmlunit.BrowserVersionFeatures.HTMLBUTTON_SUBMIT_IGNORES_DISABLED_STATE;
2019
import static org.htmlunit.BrowserVersionFeatures.HTMLBUTTON_WILL_VALIDATE_IGNORES_READONLY;
2120
import static org.htmlunit.html.HtmlForm.ATTRIBUTE_FORMNOVALIDATE;
@@ -92,18 +91,7 @@ public void setValueAttribute(final String newValue) {
9291
@Override
9392
protected boolean doClickStateUpdate(final boolean shiftKey, final boolean ctrlKey) throws IOException {
9493
if (hasFeature(HTMLBUTTON_SUBMIT_IGNORES_DISABLED_STATE) || !isDisabled()) {
95-
HtmlForm form = null;
96-
final String formId = getAttributeDirect("form");
97-
if (DomElement.ATTRIBUTE_NOT_DEFINED == formId || !hasFeature(FORM_FORM_ATTRIBUTE_SUPPORTED)) {
98-
form = getEnclosingForm();
99-
}
100-
else {
101-
final DomElement elem = getHtmlPageOrNull().getElementById(formId);
102-
if (elem instanceof HtmlForm) {
103-
form = (HtmlForm) elem;
104-
}
105-
}
106-
94+
final HtmlForm form = getEnclosingForm();
10795
if (form != null) {
10896
final String type = getType();
10997
if (TYPE_BUTTON.equals(type)) {

src/main/java/org/htmlunit/html/HtmlForm.java

Lines changed: 6 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -600,36 +600,17 @@ private <E extends HtmlElement> List<E> getFormElementsByAttribute(
600600
public List<HtmlElement> getElements() {
601601
final List<HtmlElement> elements = new ArrayList<>();
602602

603-
final String formId = getId();
604-
final boolean formAttribSupported = formId != ATTRIBUTE_NOT_DEFINED
605-
&& getPage().getWebClient().getBrowserVersion().hasFeature(FORM_FORM_ATTRIBUTE_SUPPORTED);
606-
607-
final HashSet<HtmlElement> nestedForms = new HashSet<>();
608-
609603
for (final HtmlElement element : ((HtmlPage) getPage()).getBody().getHtmlElementDescendants()) {
610-
if (element != this && element instanceof HtmlForm && this.isAncestorOf(element)) {
611-
nestedForms.add(element);
612-
continue;
613-
}
614-
615-
if (SUBMITTABLE_ELEMENT_NAMES.contains(element.getTagName())) {
616-
if (isAncestorOf(element)) {
617-
elements.add(element);
618-
continue;
619-
}
620-
621-
if (formAttribSupported) {
622-
final String formIdRef = element.getAttribute("form");
623-
if (formId.equals(formIdRef)) {
624-
elements.add(element);
625-
continue;
626-
}
627-
}
604+
if (SUBMITTABLE_ELEMENT_NAMES.contains(element.getTagName())
605+
&& element.getEnclosingForm() == this) {
606+
elements.add(element);
628607
}
629608
}
630609

631610
for (final HtmlElement element : lostChildren_) {
632-
if (SUBMITTABLE_ELEMENT_NAMES.contains(element.getTagName())) {
611+
if (SUBMITTABLE_ELEMENT_NAMES.contains(element.getTagName())
612+
&& element.getEnclosingForm() == this
613+
&& !elements.contains(element)) {
633614
elements.add(element);
634615
}
635616
}

src/main/java/org/htmlunit/javascript/host/html/HTMLFormElement.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,6 @@ protected Object getWithPreemption(final String name) {
133133
return new ArrayList<>();
134134
}
135135
response.addAll(((HtmlForm) domNode).getElements());
136-
response.addAll(htmlForm.getLostChildren());
137136
return response;
138137
});
139138

src/test/java/org/htmlunit/html/parser/MalformedHtmlTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.htmlunit.html.HtmlPageTest;
2424
import org.htmlunit.junit.BrowserRunner;
2525
import org.htmlunit.junit.BrowserRunner.Alerts;
26+
import org.htmlunit.junit.BrowserRunner.HtmlUnitNYI;
2627
import org.htmlunit.junit.BrowserRunner.NotYetImplemented;
2728
import org.junit.Test;
2829
import org.junit.runner.RunWith;
@@ -965,7 +966,7 @@ public void formInTable8() throws Exception {
965966
@Test
966967
@Alerts(DEFAULT = {"3", "1b", "1a", "1c", "0", "TABLE"},
967968
IE = {"3", "1a", "1b", "1c", "0", "TABLE"})
968-
@NotYetImplemented({CHROME, EDGE, FF, FF_ESR})
969+
@HtmlUnitNYI(IE = {"3", "1b", "1a", "1c", "0", "TABLE"})
969970
public void formInTable9() throws Exception {
970971
final String html = "<html>\n"
971972
+ "<body>\n"

0 commit comments

Comments
 (0)