You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by bo...@apache.org on 2017/03/22 17:55:12 UTC
[3/5] android commit: Fix encoding of multipart messages.
Fix encoding of multipart messages.
Project: http://git-wip-us.apache.org/repos/asf/cordova-android/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-android/commit/33da6e9e
Tree: http://git-wip-us.apache.org/repos/asf/cordova-android/tree/33da6e9e
Diff: http://git-wip-us.apache.org/repos/asf/cordova-android/diff/33da6e9e
Branch: refs/heads/master
Commit: 33da6e9eb8b5a5dd66d9de7c474da6818f3d911d
Parents: 4919a2d
Author: Josh Jackson <jj...@kallisteconsulting.com>
Authored: Fri Feb 3 15:20:37 2017 -0600
Committer: Joe Bowser <bo...@apache.org>
Committed: Wed Mar 22 10:54:41 2017 -0700
----------------------------------------------------------------------
.../apache/cordova/NativeToJsMessageQueue.java | 59 ++++++++++++--------
1 file changed, 37 insertions(+), 22 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-android/blob/33da6e9e/framework/src/org/apache/cordova/NativeToJsMessageQueue.java
----------------------------------------------------------------------
diff --git a/framework/src/org/apache/cordova/NativeToJsMessageQueue.java b/framework/src/org/apache/cordova/NativeToJsMessageQueue.java
index 61d04f1..ff91a3d 100755
--- a/framework/src/org/apache/cordova/NativeToJsMessageQueue.java
+++ b/framework/src/org/apache/cordova/NativeToJsMessageQueue.java
@@ -488,6 +488,34 @@ public class NativeToJsMessageQueue {
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) {
if (pluginResult == null) {
sb.append(jsPayloadOrCallbackId);
@@ -495,29 +523,16 @@ public class NativeToJsMessageQueue {
int status = pluginResult.getStatus();
boolean success = (status == PluginResult.Status.OK.ordinal()) || (status == PluginResult.Status.NO_RESULT.ordinal());
sb.append("cordova.callbackFromNative('")
- .append(jsPayloadOrCallbackId)
- .append("',")
- .append(success)
- .append(",")
- .append(status)
- .append(",[");
- switch (pluginResult.getMessageType()) {
- 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());
- }
+ .append(jsPayloadOrCallbackId)
+ .append("',")
+ .append(success)
+ .append(",")
+ .append(status)
+ .append(",[");
+ encodeMessageAsJsMessage(sb);
sb.append("],")
- .append(pluginResult.getKeepCallback())
- .append(");");
+ .append(pluginResult.getKeepCallback())
+ .append(");");
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org