You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by br...@apache.org on 2013/01/18 18:32:18 UTC
[1/3] js commit: ArrayBuffers support using Base64.
ArrayBuffers support using Base64.
Project: http://git-wip-us.apache.org/repos/asf/cordova-js/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-js/commit/22d88176
Tree: http://git-wip-us.apache.org/repos/asf/cordova-js/tree/22d88176
Diff: http://git-wip-us.apache.org/repos/asf/cordova-js/diff/22d88176
Branch: refs/heads/master
Commit: 22d8817622ff1f651d932253e5e8691f045df4a3
Parents: d40d6a4
Author: Braden Shepherdson <br...@chromium.org>
Authored: Tue Jan 15 11:53:16 2013 -0500
Committer: Braden Shepherdson <br...@chromium.org>
Committed: Tue Jan 15 11:53:16 2013 -0500
----------------------------------------------------------------------
lib/android/exec.js | 15 +++++++++++++++
1 files changed, 15 insertions(+), 0 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-js/blob/22d88176/lib/android/exec.js
----------------------------------------------------------------------
diff --git a/lib/android/exec.js b/lib/android/exec.js
index c6e426f..4810e07 100644
--- a/lib/android/exec.js
+++ b/lib/android/exec.js
@@ -70,6 +70,13 @@ function androidExec(success, fail, service, action, args) {
androidExec.setJsToNativeBridgeMode(jsToNativeModes.JS_OBJECT);
}
+ // Process any ArrayBuffers in the args into a string.
+ for (var i = 0; i < args.length; i++) {
+ if (args[i].constructor == ArrayBuffer || (args[i].buffer && args[i].buffer.constructor == ArrayBuffer)) {
+ args[i] = window.btoa(String.fromCharCode.apply(null, new Uint8Array(args[i])));
+ }
+ }
+
var callbackId = service + cordova.callbackId++,
argsJson = JSON.stringify(args),
returnValue;
@@ -184,6 +191,14 @@ function processMessage(message) {
payload = null;
} else if (payloadKind == 'n') {
payload = +message.slice(nextSpaceIdx + 2);
+ } else if (payloadKind == 'A') {
+ var data = message.slice(nextSpaceIdx + 2);
+ var bytes = window.atob(data);
+ var arraybuffer = new Uint8Array(bytes.length);
+ for (var i = 0; i < bytes.length; i++) {
+ arraybuffer[i] = bytes.charCodeAt(i);
+ }
+ payload = arraybuffer.buffer;
} else {
payload = JSON.parse(message.slice(nextSpaceIdx + 1));
}