Updated Branches: refs/heads/master 9878d97f7 -> 34239a8c1
[android] Hide window.online/offline events that are triggered by exec() This relates to native bridge issue: https://issues.apache.org/jira/browse/CB-638 As well as online events issue: https://issues.apache.org/jira/browse/CB-1269 Project: http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/commit/951136b9 Tree: http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/tree/951136b9 Diff: http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/diff/951136b9 Branch: refs/heads/master Commit: 951136b9974fc06e99ff7f8b98468ad7bb8358c0 Parents: b25e91d Author: Andrew Grieve <agri...@chromium.org> Authored: Wed Sep 5 16:50:41 2012 -0400 Committer: Andrew Grieve <agri...@chromium.org> Committed: Tue Sep 18 10:46:48 2012 -0400 ---------------------------------------------------------------------- lib/android/exec.js | 27 +++++++++++++++++++-------- 1 files changed, 19 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/blob/951136b9/lib/android/exec.js ---------------------------------------------------------------------- diff --git a/lib/android/exec.js b/lib/android/exec.js index d5b2c1e..b9d3ad5 100644 --- a/lib/android/exec.js +++ b/lib/android/exec.js @@ -153,10 +153,27 @@ function androidExec(success, fail, service, action, args) { } } -function onOnLineEvent(e) { - while (polling.pollOnce()); +function hookOnlineApis() { + function onOnLineEvent(e) { + while (polling.pollOnce()); + } + function proxyEvent(e) { + cordova.fireWindowEvent(e.type); + } + // The network module takes care of firing online and offline events. + // It currently fires them only on document though, so we bridge them + // to window here (while first listening for exec()-releated online/offline + // events). + window.addEventListener('online', onOnLineEvent, false); + window.addEventListener('offline', onOnLineEvent, false); + cordova.addWindowEventHandler('online'); + cordova.addWindowEventHandler('offline'); + document.addEventListener('online', proxyEvent, false); + document.addEventListener('offline', proxyEvent, false); } +hookOnlineApis(); + androidExec.jsToNativeModes = jsToNativeModes; androidExec.nativeToJsModes = nativeToJsModes; @@ -176,9 +193,6 @@ androidExec.setNativeToJsBridgeMode = function(mode) { polling.stop(); } else if (nativeToJsBridgeMode == nativeToJsModes.HANGING_GET) { callback.stop(); - } else if (nativeToJsBridgeMode == nativeToJsModes.ONLINE_EVENT) { - window.removeEventListener('online', onOnLineEvent, false); - window.removeEventListener('offline', onOnLineEvent, false); } nativeToJsBridgeMode = mode; @@ -189,9 +203,6 @@ androidExec.setNativeToJsBridgeMode = function(mode) { polling.start(); } else if (mode == nativeToJsModes.HANGING_GET) { callback.start(); - } else if (mode == nativeToJsModes.ONLINE_EVENT) { - window.addEventListener('online', onOnLineEvent, false); - window.addEventListener('offline', onOnLineEvent, false); } };