1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package org.htmlunit.javascript.host.worker;
16
17 import static org.htmlunit.javascript.configuration.SupportedBrowser.CHROME;
18 import static org.htmlunit.javascript.configuration.SupportedBrowser.EDGE;
19
20 import java.util.ArrayList;
21
22 import org.htmlunit.BrowserVersion;
23 import org.htmlunit.corejs.javascript.Scriptable;
24 import org.htmlunit.javascript.HtmlUnitScriptable;
25 import org.htmlunit.javascript.JavaScriptEngine;
26 import org.htmlunit.javascript.configuration.JsxClass;
27 import org.htmlunit.javascript.configuration.JsxConstructor;
28 import org.htmlunit.javascript.configuration.JsxGetter;
29 import org.htmlunit.javascript.host.network.NetworkInformation;
30 import org.htmlunit.util.StringUtils;
31
32
33
34
35
36
37
38
39 @JsxClass
40 public class WorkerNavigator extends HtmlUnitScriptable {
41
42 private final BrowserVersion browserVersion_;
43
44
45
46
47 public WorkerNavigator() {
48
49 super();
50 browserVersion_ = null;
51 }
52
53 WorkerNavigator(final BrowserVersion browserVersion) {
54 browserVersion_ = browserVersion;
55 }
56
57
58
59
60 @JsxConstructor
61 public void jsConstructor() {
62 throw JavaScriptEngine.typeErrorIllegalConstructor();
63 }
64
65
66
67
68 @Override
69 public BrowserVersion getBrowserVersion() {
70 return browserVersion_;
71 }
72
73
74
75
76
77
78 @JsxGetter
79 public String getAppCodeName() {
80 return getBrowserVersion().getApplicationCodeName();
81 }
82
83
84
85
86
87
88 @JsxGetter
89 public String getAppName() {
90 return getBrowserVersion().getApplicationName();
91 }
92
93
94
95
96
97
98 @JsxGetter
99 public String getAppVersion() {
100 return getBrowserVersion().getApplicationVersion();
101 }
102
103
104
105
106
107
108 @JsxGetter
109 public String getLanguage() {
110 return getBrowserVersion().getBrowserLanguage();
111 }
112
113
114
115
116
117
118 @JsxGetter
119 public Scriptable getLanguages() {
120 final String acceptLang = getBrowserVersion().getAcceptLanguageHeader();
121 if (StringUtils.isEmptyOrNull(acceptLang)) {
122 return JavaScriptEngine.newArray(getParentScope(), 0);
123 }
124
125 final ArrayList<String> res = new ArrayList<>();
126 final String[] parts = StringUtils.splitAtComma(acceptLang);
127 for (final String part : parts) {
128 if (!StringUtils.isEmptyOrNull(part)) {
129 final String lang = StringUtils.substringBefore(part, ";").trim();
130 if (!StringUtils.isEmptyOrNull(part)) {
131 res.add(lang);
132 }
133 }
134 }
135
136 return JavaScriptEngine.newArray(getParentScope(), res.toArray());
137 }
138
139
140
141
142
143
144 @JsxGetter
145 public String getPlatform() {
146 return getBrowserVersion().getPlatform();
147 }
148
149
150
151
152
153
154 @JsxGetter
155 public String getProduct() {
156 return "Gecko";
157 }
158
159
160
161
162
163
164 @JsxGetter
165 public String getUserAgent() {
166 return getBrowserVersion().getUserAgent();
167 }
168
169
170
171
172
173
174 @JsxGetter({CHROME, EDGE})
175 public NetworkInformation getConnection() {
176 final NetworkInformation networkInformation = new NetworkInformation();
177 networkInformation.setPrototype(getPrototype(networkInformation.getClass()));
178 networkInformation.setParentScope(getParentScope());
179 return networkInformation;
180 }
181 }