1   
2   
3   
4   
5   
6   
7   
8   
9   
10  
11  
12  
13  
14  
15  package org.htmlunit.javascript.host;
16  
17  import java.util.ArrayList;
18  import java.util.List;
19  
20  import org.htmlunit.corejs.javascript.Scriptable;
21  import org.htmlunit.javascript.HtmlUnitScriptable;
22  import org.htmlunit.javascript.JavaScriptEngine;
23  import org.htmlunit.javascript.configuration.JsxClass;
24  import org.htmlunit.javascript.configuration.JsxConstructor;
25  import org.htmlunit.javascript.configuration.JsxFunction;
26  import org.htmlunit.javascript.configuration.JsxGetter;
27  import org.htmlunit.javascript.configuration.JsxSymbol;
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  @JsxClass
38  public class Plugin extends HtmlUnitScriptable {
39      private String description_;
40      private String filename_;
41      private String name_;
42  
43      private final List<MimeType> elements_ = new ArrayList<>();
44  
45      
46  
47  
48      public Plugin() {
49          super();
50      }
51  
52      
53  
54  
55      @JsxConstructor
56      public void jsConstructor() {
57          
58      }
59  
60      
61  
62  
63  
64  
65  
66  
67      public Plugin(final String name, final String description, final String filename) {
68          super();
69          name_ = name;
70          description_ = description;
71          filename_ = filename;
72      }
73  
74      
75  
76  
77  
78  
79      @JsxFunction
80      public MimeType item(final int index) {
81          if (index >= 0 && index < elements_.size()) {
82              return elements_.get(index);
83          }
84          return null;
85      }
86  
87      
88  
89  
90      @Override
91      protected Object getWithPreemption(final String name) {
92          final MimeType response = namedItem(name);
93          if (response != null) {
94              return response;
95          }
96          return NOT_FOUND;
97      }
98  
99      
100 
101 
102 
103     @Override
104     public final Object get(final int index, final Scriptable start) {
105         final Plugin plugin = (Plugin) start;
106         final List<MimeType> elements = plugin.elements_;
107 
108         if (index >= 0 && index < elements.size()) {
109             return elements.get(index);
110         }
111         return NOT_FOUND;
112     }
113 
114     
115 
116 
117 
118 
119     @JsxFunction
120     public MimeType namedItem(final String name) {
121         for (final MimeType element : elements_) {
122             if (name.equals(element.getType())) {
123                 return element;
124             }
125         }
126         return null;
127     }
128 
129     
130 
131 
132 
133     @JsxGetter
134     public int getLength() {
135         return elements_.size();
136     }
137 
138     
139 
140 
141 
142     void add(final MimeType element) {
143         elements_.add(element);
144     }
145 
146     
147 
148 
149 
150     @JsxGetter
151     public String getDescription() {
152         return description_;
153     }
154 
155     
156 
157 
158 
159     @JsxGetter
160     public String getFilename() {
161         return filename_;
162     }
163 
164     
165 
166 
167 
168     @JsxGetter
169     public String getName() {
170         return name_;
171     }
172 
173     
174 
175 
176     @JsxSymbol
177     public Scriptable iterator() {
178         return JavaScriptEngine.newArrayIteratorTypeValues(getParentScope(), this);
179     }
180 }