Skip to content

Commit ca7be3c

Browse files
committed
Fixed additional CI pipeline failures
1 parent f2daad6 commit ca7be3c

4 files changed

Lines changed: 243 additions & 63 deletions

File tree

Ports/JavaScriptPort/src/main/java/com/codename1/impl/html5/HTML5Implementation.java

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7264,7 +7264,9 @@ public void browserStop(PeerComponent browserPeer) {
72647264

72657265
@Override
72667266
public Object createSoftWeakRef(Object o) {
7267-
if (Display.getInstance().getProperty("javascript.useES6WeakRefs", "true").equals("true") && isWeakMapSupported()) {
7267+
if (Display.getInstance().getProperty("javascript.useES6WeakRefs", "true").equals("true")
7268+
&& isWeakMapSupported()
7269+
&& (o == null || o instanceof JSObject)) {
72687270
if (o == null) {
72697271
return new JSObjectWrapper();
72707272
}
@@ -7473,18 +7475,34 @@ public InputStream getArrayBufferInputStream(String url){
74737475
url = url + "?v=" + getBuildVersion();
74747476
}
74757477
req.open("get", url, false);
7476-
req.setResponseType("arraybuffer");
7478+
req.overrideMimeType("text/plain; charset=x-user-defined");
74777479
req.send();
74787480

7479-
if (req.getResponse() == null ){
7481+
Uint8Array responseBytes = toResponseBytes(req);
7482+
if (responseBytes == null) {
74807483
System.out.println(req.getAllResponseHeaders());
74817484
System.out.println(req.getStatusText());
74827485
System.out.println("Failed to load resource "+url);
74837486
System.out.println("Status code was "+req.getStatus());
74847487
return null;
74857488
}
74867489

7487-
ArrayBufferInputStream out = new ArrayBufferInputStream(Uint8Array.create((ArrayBuffer)req.getResponse()), req.getResponseType());
7490+
ArrayBufferInputStream out = new ArrayBufferInputStream(responseBytes, req.getResponseType());
7491+
return out;
7492+
}
7493+
7494+
private Uint8Array toResponseBytes(XMLHttpRequest req) {
7495+
if ("arraybuffer".equals(req.getResponseType()) && req.getResponse() != null) {
7496+
return Uint8Array.create((ArrayBuffer)req.getResponse());
7497+
}
7498+
String responseText = req.getResponseText();
7499+
if (responseText == null) {
7500+
return null;
7501+
}
7502+
Uint8Array out = Uint8Array.create(responseText.length());
7503+
for (int i = 0; i < responseText.length(); i++) {
7504+
out.set(i, (short)(responseText.charAt(i) & 0xff));
7505+
}
74887506
return out;
74897507
}
74907508

Ports/JavaScriptPort/src/main/java/com/codename1/impl/html5/NetworkConnection.java

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ private void open(){
7373
if (!isOpen){
7474
isOpen = true;
7575
req.open(httpMethod, url, false);
76-
req.setResponseType("arraybuffer");
76+
req.overrideMimeType("text/plain; charset=x-user-defined");
7777
}
7878
}
7979

@@ -99,12 +99,18 @@ public void setHeader(String key, String val) {
9999
}
100100

101101
public int getContentLength(){
102-
if (req.getResponse()==null){
103-
return 0;
104-
} else {
102+
try {
103+
InputStream stream = inputStream;
104+
if (stream instanceof ArrayBufferInputStream) {
105+
return ((ArrayBufferInputStream) stream).getBuffer().getByteLength();
106+
}
107+
} catch (Throwable ignored) {
108+
}
109+
if (req.getResponse() != null) {
105110
return ((ArrayBuffer)req.getResponse()).getByteLength();
106111
}
107-
112+
String responseText = req.getResponseText();
113+
return responseText == null ? 0 : responseText.length();
108114
}
109115

110116

@@ -138,19 +144,35 @@ public InputStream openInputStream() throws IOException {
138144
}
139145

140146

141-
if (req.getResponse() == null || req.getStatus() == 0 ){
147+
Uint8Array responseBytes = toResponseBytes(req);
148+
if (responseBytes == null || req.getStatus() == 0 ){
142149
System.out.println(req.getAllResponseHeaders());
143150
System.out.println(req.getStatusText());
144151
System.out.println("Failed to load url "+url);
145152
System.out.println("Status code was "+req.getStatus());
146153
throw new IOException("Failed to load "+url+". Status "+req.getStatusText());
147154
}
148155

149-
inputStream = new ArrayBufferInputStream(Uint8Array.create((ArrayBuffer)req.getResponse()), req.getResponseType());
156+
inputStream = new ArrayBufferInputStream(responseBytes, req.getResponseType());
150157
return inputStream;
151158

152159

153160

161+
}
162+
163+
private Uint8Array toResponseBytes(XMLHttpRequest req) {
164+
if ("arraybuffer".equals(req.getResponseType()) && req.getResponse() != null) {
165+
return Uint8Array.create((ArrayBuffer)req.getResponse());
166+
}
167+
String responseText = req.getResponseText();
168+
if (responseText == null) {
169+
return null;
170+
}
171+
Uint8Array out = Uint8Array.create(responseText.length());
172+
for (int i = 0; i < responseText.length(); i++) {
173+
out.set(i, (short)(responseText.charAt(i) & 0xff));
174+
}
175+
return out;
154176
}
155177

156178
public OutputStream openOutputStream() throws IOException {

vm/ByteCodeTranslator/src/javascript/index.html

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,12 @@
1010
<p>Loading...</p>
1111
</div>
1212
<canvas id="codenameone-canvas" width="320" height="480"></canvas>
13+
<script>
14+
window.cn1LoadedFiles = window.cn1LoadedFiles || [];
15+
window.cn1LoadedFile = window.cn1LoadedFile || function(filename) {
16+
window.cn1LoadedFiles.push(String(filename || ""));
17+
};
18+
</script>
1319
<script src="js/push.js"></script>
1420
<script src="js/jquery.min.js"></script>
1521
<script src="js/fontmetrics.js"></script>

0 commit comments

Comments
 (0)