1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package org.htmlunit.javascript.host;
16
17 import java.nio.charset.StandardCharsets;
18
19 import org.htmlunit.corejs.javascript.ScriptableObject;
20 import org.htmlunit.corejs.javascript.typedarrays.NativeArrayBuffer;
21 import org.htmlunit.corejs.javascript.typedarrays.NativeUint8Array;
22 import org.htmlunit.javascript.HtmlUnitScriptable;
23 import org.htmlunit.javascript.JavaScriptEngine;
24 import org.htmlunit.javascript.configuration.JsxClass;
25 import org.htmlunit.javascript.configuration.JsxConstructor;
26 import org.htmlunit.javascript.configuration.JsxFunction;
27 import org.htmlunit.javascript.configuration.JsxGetter;
28
29
30
31
32
33
34
35 @JsxClass
36 public class TextEncoder extends HtmlUnitScriptable {
37
38
39
40
41 @JsxConstructor
42 public void jsConstructor() {
43
44 }
45
46
47
48
49 @JsxGetter
50 public String getEncoding() {
51 return "utf-8";
52 }
53
54
55
56
57
58 @JsxFunction
59 public NativeUint8Array encode(final Object toEncode) {
60 if (JavaScriptEngine.isUndefined(toEncode)) {
61 final NativeUint8Array result = new NativeUint8Array(0);
62 result.setParentScope(getParentScope());
63 result.setPrototype(ScriptableObject.getClassPrototype(getWindow(this), result.getClassName()));
64 return result;
65 }
66
67 final String txt;
68 if (toEncode == null) {
69 txt = "null";
70 }
71 else {
72 txt = JavaScriptEngine.toString(toEncode);
73 }
74
75 final byte[] bytes = txt.getBytes(StandardCharsets.UTF_8);
76
77 final NativeArrayBuffer arrayBuffer = new NativeArrayBuffer(bytes.length);
78 System.arraycopy(bytes, 0, arrayBuffer.getBuffer(), 0, bytes.length);
79
80 final NativeUint8Array result = new NativeUint8Array(arrayBuffer, 0, bytes.length);
81 result.setParentScope(getParentScope());
82 result.setPrototype(ScriptableObject.getClassPrototype(getWindow(this), result.getClassName()));
83 return result;
84 }
85 }