1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package org.htmlunit.javascript.host.html;
16
17 import static org.htmlunit.html.DomElement.ATTRIBUTE_NOT_DEFINED;
18
19 import java.util.ArrayList;
20 import java.util.List;
21
22 import org.htmlunit.html.DomElement;
23 import org.htmlunit.html.DomNode;
24 import org.htmlunit.html.HtmlLabel;
25 import org.htmlunit.javascript.host.dom.NodeList;
26
27
28
29
30
31
32
33
34 class LabelsNodeList extends NodeList {
35
36
37
38
39
40
41 LabelsNodeList(final DomElement domeNode) {
42 super(domeNode, false);
43 }
44
45
46
47
48
49
50 @Override
51 public List<DomNode> getElements() {
52 final List<DomNode> response = new ArrayList<>();
53 final DomElement domElement = (DomElement) getDomNodeOrDie();
54 for (DomNode parent = domElement.getParentNode(); parent != null; parent = parent.getParentNode()) {
55 if (parent instanceof HtmlLabel) {
56 response.add(parent);
57 }
58 }
59 final String id = domElement.getId();
60 if (ATTRIBUTE_NOT_DEFINED != id) {
61 for (final DomElement label : domElement.getHtmlPageOrNull().getElementsByTagName("label")) {
62 if (id.equals(label.getAttributeDirect("for"))) {
63 response.add(label);
64 }
65 }
66 }
67
68 return response;
69 }
70 }