You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by bh...@apache.org on 2013/12/17 17:13:30 UTC
js commit: CB-5604 [BlackBerry10] Switch to async XHR for exec bridge
Updated Branches:
refs/heads/master 686f16c28 -> a320b7932
CB-5604 [BlackBerry10] Switch to async XHR for exec bridge
Project: http://git-wip-us.apache.org/repos/asf/cordova-js/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-js/commit/a320b793
Tree: http://git-wip-us.apache.org/repos/asf/cordova-js/tree/a320b793
Diff: http://git-wip-us.apache.org/repos/asf/cordova-js/diff/a320b793
Branch: refs/heads/master
Commit: a320b79325e376c38b5555fbee0cf80aec2668d2
Parents: 686f16c
Author: Genevieve Mak <gm...@blackberry.com>
Authored: Mon Dec 9 10:01:09 2013 -0500
Committer: Bryan Higgins <bh...@blackberry.com>
Committed: Tue Dec 17 11:11:48 2013 -0500
----------------------------------------------------------------------
src/blackberry10/exec.js | 58 +++++++++++++++++++++++++------------------
1 file changed, 34 insertions(+), 24 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-js/blob/a320b793/src/blackberry10/exec.js
----------------------------------------------------------------------
diff --git a/src/blackberry10/exec.js b/src/blackberry10/exec.js
index e373b4a..31f9b7c 100644
--- a/src/blackberry10/exec.js
+++ b/src/blackberry10/exec.js
@@ -40,15 +40,42 @@ function RemoteFunctionCall(functionUri) {
params[name] = encodeURIComponent(JSON.stringify(value));
};
- this.makeSyncCall = function () {
+ this.makeAsyncCall = function () {
var requestUri = composeUri(),
- request = createXhrRequest(requestUri, false),
- response;
+ request = new XMLHttpRequest(),
+ didSucceed,
+ response,
+ fail = function () {
+ var callbackId = JSON.parse(decodeURIComponent(params.callbackId));
+ response = JSON.parse(decodeURIComponent(request.responseText) || "null");
+ cordova.callbacks[callbackId].fail && cordova.callbacks[callbackId].fail(response.msg, response);
+ delete cordova.callbacks[callbackId];
+ };
+
+ request.open("POST", requestUri, true /* async */);
+ request.setRequestHeader("Content-Type", "application/json");
+ request.timeout = 1000; // Timeout in 1000ms
+ request.ontimeout = fail;
+ request.onerror = fail;
+
+ request.onload = function () {
+ response = JSON.parse(decodeURIComponent(request.responseText) || "null");
+ if (request.status === 200) {
+ didSucceed = response.code === cordova.callbackStatus.OK || response.code === cordova.callbackStatus.NO_RESULT;
+ cordova.callbackFromNative(
+ JSON.parse(decodeURIComponent(params.callbackId)),
+ didSucceed,
+ response.code,
+ [ didSucceed ? response.data : response.msg ],
+ !!response.keepCallback
+ );
+ } else {
+ fail();
+ }
+ };
+
request.send(JSON.stringify(params));
- response = JSON.parse(decodeURIComponent(request.responseText) || "null");
- return response;
};
-
}
module.exports = function (success, fail, service, action, args) {
@@ -56,7 +83,6 @@ module.exports = function (success, fail, service, action, args) {
request = new RemoteFunctionCall(uri),
callbackId = service + cordova.callbackId++,
proxy,
- response,
name,
didSucceed;
@@ -81,23 +107,7 @@ module.exports = function (success, fail, service, action, args) {
}
}
- response = request.makeSyncCall();
-
- if (response.code < 0) {
- if (fail) {
- fail(response.msg, response);
- }
- delete cordova.callbacks[callbackId];
- } else {
- didSucceed = response.code === cordova.callbackStatus.OK || response.code === cordova.callbackStatus.NO_RESULT;
- cordova.callbackFromNative(
- callbackId,
- didSucceed,
- response.code,
- [ didSucceed ? response.data : response.msg ],
- !!response.keepCallback
- );
- }
+ request.makeAsyncCall();
}
};