1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package org.htmlunit.javascript.host.html;
16
17 import org.htmlunit.Page;
18 import org.htmlunit.html.HtmlElement;
19 import org.htmlunit.html.HtmlRb;
20 import org.htmlunit.html.HtmlRp;
21 import org.htmlunit.html.HtmlRt;
22 import org.htmlunit.html.HtmlRtc;
23 import org.htmlunit.html.HtmlRuby;
24 import org.htmlunit.html.HtmlUnknownElement;
25 import org.htmlunit.javascript.configuration.JsxClass;
26 import org.htmlunit.javascript.configuration.JsxConstructor;
27 import org.htmlunit.xml.XmlPage;
28
29
30
31
32
33
34
35
36
37 @JsxClass(domClass = HtmlUnknownElement.class)
38 public class HTMLUnknownElement extends HTMLElement {
39
40
41
42
43 @Override
44 @JsxConstructor
45 public void jsConstructor() {
46 super.jsConstructor();
47 }
48
49
50
51
52
53 @Override
54 public String getNodeName() {
55 final HtmlElement elem = getDomNodeOrDie();
56 final Page page = elem.getPage();
57 if (page instanceof XmlPage) {
58 return elem.getLocalName();
59 }
60 return super.getNodeName();
61 }
62
63
64
65
66 @Override
67 public String getClassName() {
68 if (getWindow().getWebWindow() != null) {
69 final HtmlElement element = getDomNodeOrNull();
70 if (element != null) {
71 final String name = element.getNodeName();
72 if (HtmlRb.TAG_NAME.equals(name)
73 || HtmlRp.TAG_NAME.equals(name)
74 || HtmlRt.TAG_NAME.equals(name)
75 || HtmlRtc.TAG_NAME.equals(name)
76 || HtmlRuby.TAG_NAME.equals(name)) {
77 return "HTMLElement";
78 }
79
80 if (name.indexOf('-') != -1) {
81 return "HTMLElement";
82 }
83 }
84 }
85 return super.getClassName();
86 }
87
88
89
90
91 @Override
92 protected boolean isLowerCaseInOuterHtml() {
93 return true;
94 }
95
96
97
98
99 @Override
100 protected boolean isEndTagForbidden() {
101 final String nodeName = getNodeName();
102 if ("BGSOUND".equals(nodeName) || "KEYGEN".equals(nodeName)) {
103 return true;
104 }
105 return super.isEndTagForbidden();
106 }
107 }