View Javadoc
1   /*
2    * Copyright (c) 2002-2025 Gargoyle Software Inc.
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    * https://www.apache.org/licenses/LICENSE-2.0
8    *
9    * Unless required by applicable law or agreed to in writing, software
10   * distributed under the License is distributed on an "AS IS" BASIS,
11   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12   * See the License for the specific language governing permissions and
13   * limitations under the License.
14   */
15  package org.htmlunit.html;
16  
17  import static org.htmlunit.BrowserVersionFeatures.CSS_RT_DISPLAY_RUBY_TEXT_ALWAYS;
18  
19  import java.util.Map;
20  
21  import org.htmlunit.SgmlPage;
22  
23  /**
24   * Wrapper for the HTML element "rt".
25   *
26   * @author Ronald Brill
27   * @author Frank Danek
28   * @author Ahmed Ashour
29   */
30  public class HtmlRt extends HtmlElement {
31  
32      /** The HTML tag represented by this element. */
33      public static final String TAG_NAME = "rt";
34      private boolean createdByJavascript_;
35  
36      /**
37       * Creates a new instance.
38       *
39       * @param qualifiedName the qualified name of the element type to instantiate
40       * @param page the page that contains this element
41       * @param attributes the initial attributes
42       */
43      HtmlRt(final String qualifiedName, final SgmlPage page,
44              final Map<String, DomAttr> attributes) {
45          super(qualifiedName, page, attributes);
46      }
47  
48      /**
49       * <span style="color:red">INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.</span><br>
50       *
51       * Marks this frame as created by javascript.
52       */
53      public void markAsCreatedByJavascript() {
54          createdByJavascript_ = true;
55      }
56  
57      /**
58       * <span style="color:red">INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.</span><br>
59       *
60       * Returns true if this frame was created by javascript.
61       * @return true or false
62       */
63      public boolean wasCreatedByJavascript() {
64          return createdByJavascript_;
65      }
66  
67      /**
68       * {@inheritDoc}
69       */
70      @Override
71      public DisplayStyle getDefaultStyleDisplay() {
72          if (hasFeature(CSS_RT_DISPLAY_RUBY_TEXT_ALWAYS)) {
73              return DisplayStyle.RUBY_TEXT;
74          }
75          if (wasCreatedByJavascript()) {
76              if (getParentNode() == null) {
77                  return DisplayStyle.EMPTY;
78              }
79          }
80          else {
81              return DisplayStyle.RUBY_TEXT;
82          }
83          return DisplayStyle.INLINE;
84      }
85  }