1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package org.htmlunit.html;
16
17 import static org.htmlunit.BrowserVersionFeatures.CSS_RP_DISPLAY_NONE;
18 import static org.htmlunit.BrowserVersionFeatures.CSS_RT_DISPLAY_RUBY_TEXT_ALWAYS;
19
20 import java.util.Map;
21
22 import org.htmlunit.SgmlPage;
23
24
25
26
27
28
29
30
31
32
33
34
35 public class HtmlUnknownElement extends HtmlElement {
36
37 private boolean createdByJavascript_;
38
39
40
41
42
43
44
45
46 HtmlUnknownElement(final SgmlPage page, final String tagName, final Map<String, DomAttr> attributes) {
47 super(tagName, page, attributes);
48 }
49
50
51
52
53
54
55 public void markAsCreatedByJavascript() {
56 createdByJavascript_ = true;
57 }
58
59
60
61
62
63
64
65 public boolean wasCreatedByJavascript() {
66 return createdByJavascript_;
67 }
68
69
70
71
72 @Override
73 public DisplayStyle getDefaultStyleDisplay() {
74 switch (getTagName()) {
75 case HtmlRuby.TAG_NAME:
76 return DisplayStyle.RUBY;
77 case HtmlRb.TAG_NAME:
78 if (!hasFeature(CSS_RT_DISPLAY_RUBY_TEXT_ALWAYS)
79 && wasCreatedByJavascript() && getParentNode() == null) {
80 return DisplayStyle.BLOCK;
81 }
82 return DisplayStyle.RUBY_BASE;
83 case HtmlRp.TAG_NAME:
84 if (hasFeature(CSS_RP_DISPLAY_NONE)) {
85 return DisplayStyle.NONE;
86 }
87 if (wasCreatedByJavascript() && getParentNode() == null) {
88 return DisplayStyle.BLOCK;
89 }
90 break;
91 case HtmlRt.TAG_NAME:
92 if (!hasFeature(CSS_RT_DISPLAY_RUBY_TEXT_ALWAYS)
93 && wasCreatedByJavascript() && getParentNode() == null) {
94 return DisplayStyle.BLOCK;
95 }
96 return DisplayStyle.RUBY_TEXT;
97 case HtmlRtc.TAG_NAME:
98 if (!hasFeature(CSS_RT_DISPLAY_RUBY_TEXT_ALWAYS)
99 && wasCreatedByJavascript() && getParentNode() == null) {
100 return DisplayStyle.BLOCK;
101 }
102 return DisplayStyle.RUBY_TEXT_CONTAINER;
103 case HtmlDialog.TAG_NAME:
104 return DisplayStyle.NONE;
105 case HtmlSlot.TAG_NAME:
106 return DisplayStyle.CONTENTS;
107 default:
108 }
109 return DisplayStyle.INLINE;
110 }
111
112
113
114
115
116 @Override
117 protected boolean isEmptyXmlTagExpanded() {
118 return true;
119 }
120 }