1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package org.htmlunit.html;
16
17 import java.util.Collection;
18 import java.util.Collections;
19 import java.util.HashSet;
20 import java.util.Map;
21
22 import org.apache.commons.lang3.StringUtils;
23 import org.htmlunit.SgmlPage;
24
25
26
27
28
29
30
31 public class HtmlOutput extends HtmlElement implements LabelableElement, ValidatableElement, FormFieldWithNameHistory {
32
33
34 public static final String TAG_NAME = "output";
35
36 private final String originalName_;
37 private Collection<String> newNames_ = Collections.emptySet();
38 private String customValidity_;
39
40
41
42
43
44
45
46
47 HtmlOutput(final String qualifiedName, final SgmlPage page,
48 final Map<String, DomAttr> attributes) {
49 super(qualifiedName, page, attributes);
50 originalName_ = getAttributeDirect(NAME_ATTRIBUTE);
51 }
52
53
54
55
56 @Override
57 public DisplayStyle getDefaultStyleDisplay() {
58 return DisplayStyle.INLINE;
59 }
60
61
62
63
64 @Override
65 public boolean willValidate() {
66 return false;
67 }
68
69
70
71
72 @Override
73 public void setCustomValidity(final String message) {
74 customValidity_ = message;
75 }
76
77
78
79
80 @Override
81 public boolean isValid() {
82 return true;
83 }
84
85
86
87
88 @Override
89 public boolean isCustomErrorValidityState() {
90 return !StringUtils.isEmpty(customValidity_);
91 }
92
93 @Override
94 public boolean isValidValidityState() {
95 return !isCustomErrorValidityState();
96 }
97
98
99
100
101 @Override
102 protected void setAttributeNS(final String namespaceURI, final String qualifiedName, final String attributeValue,
103 final boolean notifyAttributeChangeListeners, final boolean notifyMutationObservers) {
104 final String qualifiedNameLC = StringUtils.toRootLowerCase(qualifiedName);
105 if (NAME_ATTRIBUTE.equals(qualifiedNameLC)) {
106 if (newNames_.isEmpty()) {
107 newNames_ = new HashSet<>();
108 }
109 newNames_.add(attributeValue);
110 }
111 super.setAttributeNS(namespaceURI, qualifiedNameLC, attributeValue, notifyAttributeChangeListeners,
112 notifyMutationObservers);
113 }
114
115
116
117
118 @Override
119 public String getOriginalName() {
120 return originalName_;
121 }
122
123
124
125
126 @Override
127 public Collection<String> getNewNames() {
128 return newNames_;
129 }
130 }