You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by ag...@apache.org on 2013/08/31 20:44:45 UTC
js commit: Revert "[android] Don't catch exceptions wihtin the bridge
since the browser does better logging of them when uncaught."
Updated Branches:
refs/heads/master 8937f29ee -> 0ab1d2bd2
Revert "[android] Don't catch exceptions wihtin the bridge since the browser does better logging of them when uncaught."
This reverts commit 8937f29ee8aa58568db94865860c86615acf23ca.
I checked it in too hastily. It doesn't actually work as I wanted. Needs
more thinking...
Project: http://git-wip-us.apache.org/repos/asf/cordova-js/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-js/commit/0ab1d2bd
Tree: http://git-wip-us.apache.org/repos/asf/cordova-js/tree/0ab1d2bd
Diff: http://git-wip-us.apache.org/repos/asf/cordova-js/diff/0ab1d2bd
Branch: refs/heads/master
Commit: 0ab1d2bd2e44e0e42bcb12c3fbd8f461eb7e84f4
Parents: 8937f29
Author: Andrew Grieve <ag...@chromium.org>
Authored: Sat Aug 31 14:44:06 2013 -0400
Committer: Andrew Grieve <ag...@chromium.org>
Committed: Sat Aug 31 14:44:06 2013 -0400
----------------------------------------------------------------------
lib/android/exec.js | 89 +++++++++++++++++++++++++-----------------------
1 file changed, 46 insertions(+), 43 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-js/blob/0ab1d2bd/lib/android/exec.js
----------------------------------------------------------------------
diff --git a/lib/android/exec.js b/lib/android/exec.js
index a68608f..0d35ff1 100644
--- a/lib/android/exec.js
+++ b/lib/android/exec.js
@@ -169,44 +169,50 @@ androidExec.setNativeToJsBridgeMode = function(mode) {
// Processes a single message, as encoded by NativeToJsMessageQueue.java.
function processMessage(message) {
- var firstChar = message.charAt(0);
- if (firstChar == 'J') {
- eval(message.slice(1));
- } else if (firstChar == 'S' || firstChar == 'F') {
- var success = firstChar == 'S';
- var keepCallback = message.charAt(1) == '1';
- var spaceIdx = message.indexOf(' ', 2);
- var status = +message.slice(2, spaceIdx);
- var nextSpaceIdx = message.indexOf(' ', spaceIdx + 1);
- var callbackId = message.slice(spaceIdx + 1, nextSpaceIdx);
- var payloadKind = message.charAt(nextSpaceIdx + 1);
- var payload;
- if (payloadKind == 's') {
- payload = message.slice(nextSpaceIdx + 2);
- } else if (payloadKind == 't') {
- payload = true;
- } else if (payloadKind == 'f') {
- payload = false;
- } else if (payloadKind == 'N') {
- 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);
+ try {
+ var firstChar = message.charAt(0);
+ if (firstChar == 'J') {
+ eval(message.slice(1));
+ } else if (firstChar == 'S' || firstChar == 'F') {
+ var success = firstChar == 'S';
+ var keepCallback = message.charAt(1) == '1';
+ var spaceIdx = message.indexOf(' ', 2);
+ var status = +message.slice(2, spaceIdx);
+ var nextSpaceIdx = message.indexOf(' ', spaceIdx + 1);
+ var callbackId = message.slice(spaceIdx + 1, nextSpaceIdx);
+ var payloadKind = message.charAt(nextSpaceIdx + 1);
+ var payload;
+ if (payloadKind == 's') {
+ payload = message.slice(nextSpaceIdx + 2);
+ } else if (payloadKind == 't') {
+ payload = true;
+ } else if (payloadKind == 'f') {
+ payload = false;
+ } else if (payloadKind == 'N') {
+ 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 if (payloadKind == 'S') {
+ payload = window.atob(message.slice(nextSpaceIdx + 2));
+ } else {
+ payload = JSON.parse(message.slice(nextSpaceIdx + 1));
}
- payload = arraybuffer.buffer;
- } else if (payloadKind == 'S') {
- payload = window.atob(message.slice(nextSpaceIdx + 2));
+ cordova.callbackFromNative(callbackId, success, status, [payload], keepCallback);
} else {
- payload = JSON.parse(message.slice(nextSpaceIdx + 1));
+ console.log("processMessage failed: invalid message:" + message);
}
- cordova.callbackFromNative(callbackId, success, status, [payload], keepCallback);
- } else {
- console.log("processMessage failed: invalid message:" + message);
+ } catch (e) {
+ console.log("processMessage failed: Message: " + message);
+ console.log("processMessage failed: Error: " + e);
+ console.log("processMessage failed: Stack: " + e.stack);
}
}
@@ -233,14 +239,11 @@ androidExec.processMessages = function(messages) {
var msgLen = +messages.slice(0, spaceIdx);
var message = messages.substr(spaceIdx + 1, msgLen);
messages = messages.slice(spaceIdx + msgLen + 1);
- try {
- processMessage(message);
- } finally {
- if (messages) {
- messagesFromNative[0] = messages;
- } else {
- messagesFromNative.shift();
- }
+ processMessage(message);
+ if (messages) {
+ messagesFromNative[0] = messages;
+ } else {
+ messagesFromNative.shift();
}
}
}