mirror of
https://github.com/apache/cordova-android.git
synced 2025-02-22 00:32:55 +08:00
Fix encoding of multipart messages.
This commit is contained in:
parent
4919a2d2a8
commit
33da6e9eb8
@ -488,6 +488,34 @@ public class NativeToJsMessageQueue {
|
|||||||
encodeAsMessageHelper(sb, pluginResult);
|
encodeAsMessageHelper(sb, pluginResult);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void encodeMessageAsJsMessage(StringBuilder sb) {
|
||||||
|
switch (pluginResult.getMessageType()) {
|
||||||
|
case PluginResult.MESSAGE_TYPE_MULTIPART:
|
||||||
|
int size = pluginResult.getMultipartMessagesSize();
|
||||||
|
for (int i=0; i<size; i++) {
|
||||||
|
PluginResult subresult = pluginResult.getMultipartMessage(i);
|
||||||
|
JsMessage submessage = new JsMessage(subresult, jsPayloadOrCallbackId);
|
||||||
|
submessage.encodeMessageAsJsMessage(sb);
|
||||||
|
if (i < (size-1)) {
|
||||||
|
sb.append(",");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case PluginResult.MESSAGE_TYPE_BINARYSTRING:
|
||||||
|
sb.append("atob('")
|
||||||
|
.append(pluginResult.getMessage())
|
||||||
|
.append("')");
|
||||||
|
break;
|
||||||
|
case PluginResult.MESSAGE_TYPE_ARRAYBUFFER:
|
||||||
|
sb.append("cordova.require('cordova/base64').toArrayBuffer('")
|
||||||
|
.append(pluginResult.getMessage())
|
||||||
|
.append("')");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
sb.append(pluginResult.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void encodeAsJsMessage(StringBuilder sb) {
|
void encodeAsJsMessage(StringBuilder sb) {
|
||||||
if (pluginResult == null) {
|
if (pluginResult == null) {
|
||||||
sb.append(jsPayloadOrCallbackId);
|
sb.append(jsPayloadOrCallbackId);
|
||||||
@ -495,29 +523,16 @@ public class NativeToJsMessageQueue {
|
|||||||
int status = pluginResult.getStatus();
|
int status = pluginResult.getStatus();
|
||||||
boolean success = (status == PluginResult.Status.OK.ordinal()) || (status == PluginResult.Status.NO_RESULT.ordinal());
|
boolean success = (status == PluginResult.Status.OK.ordinal()) || (status == PluginResult.Status.NO_RESULT.ordinal());
|
||||||
sb.append("cordova.callbackFromNative('")
|
sb.append("cordova.callbackFromNative('")
|
||||||
.append(jsPayloadOrCallbackId)
|
.append(jsPayloadOrCallbackId)
|
||||||
.append("',")
|
.append("',")
|
||||||
.append(success)
|
.append(success)
|
||||||
.append(",")
|
.append(",")
|
||||||
.append(status)
|
.append(status)
|
||||||
.append(",[");
|
.append(",[");
|
||||||
switch (pluginResult.getMessageType()) {
|
encodeMessageAsJsMessage(sb);
|
||||||
case PluginResult.MESSAGE_TYPE_BINARYSTRING:
|
|
||||||
sb.append("atob('")
|
|
||||||
.append(pluginResult.getMessage())
|
|
||||||
.append("')");
|
|
||||||
break;
|
|
||||||
case PluginResult.MESSAGE_TYPE_ARRAYBUFFER:
|
|
||||||
sb.append("cordova.require('cordova/base64').toArrayBuffer('")
|
|
||||||
.append(pluginResult.getMessage())
|
|
||||||
.append("')");
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
sb.append(pluginResult.getMessage());
|
|
||||||
}
|
|
||||||
sb.append("],")
|
sb.append("],")
|
||||||
.append(pluginResult.getKeepCallback())
|
.append(pluginResult.getKeepCallback())
|
||||||
.append(");");
|
.append(");");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user