You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by ka...@apache.org on 2014/11/12 17:49:41 UTC

[1/9] js commit: CB-7661 Incremented package version to -dev

Repository: cordova-js
Updated Branches:
  refs/heads/3.7.x f5046c966 -> 7afadfc04


CB-7661 Incremented package version to -dev


Project: http://git-wip-us.apache.org/repos/asf/cordova-js/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-js/commit/1b9dc0da
Tree: http://git-wip-us.apache.org/repos/asf/cordova-js/tree/1b9dc0da
Diff: http://git-wip-us.apache.org/repos/asf/cordova-js/diff/1b9dc0da

Branch: refs/heads/3.7.x
Commit: 1b9dc0da81c6c04c478ac0c6d0f5aa764ddb2ff3
Parents: f5046c9
Author: Steven Gill <st...@gmail.com>
Authored: Fri Oct 10 13:14:31 2014 -0700
Committer: Steven Gill <st...@gmail.com>
Committed: Fri Oct 10 13:14:31 2014 -0700

----------------------------------------------------------------------
 package.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-js/blob/1b9dc0da/package.json
----------------------------------------------------------------------
diff --git a/package.json b/package.json
index 7ce9eff..b4e0dc2 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
     "author": "Gord Tanner <gt...@gmail.com> (http://github.com/gtanner)",
     "name": "cordova-js",
     "description": "Cordova JavaScript: a unified JavaScript layer for the Cordova suite of projects enabling cross-platform native mobile development of applications using HTML, CSS and JavaScript.",
-    "version": "3.7.1",
+    "version": "3.7.2-dev",
     "homepage": "http://cordova.apache.org",
     "repository": {
         "type": "git",


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org


[6/9] js commit: CB-7868 Use utils.defineGetterSetter instead of Object.defineProperty which may or may not be defined

Posted by ka...@apache.org.
CB-7868 Use utils.defineGetterSetter instead of Object.defineProperty which may or may not be defined


Project: http://git-wip-us.apache.org/repos/asf/cordova-js/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-js/commit/bd5a35fa
Tree: http://git-wip-us.apache.org/repos/asf/cordova-js/tree/bd5a35fa
Diff: http://git-wip-us.apache.org/repos/asf/cordova-js/diff/bd5a35fa

Branch: refs/heads/3.7.x
Commit: bd5a35fac8ce04deda9317831aea3a4489b9fc33
Parents: 14fae3a
Author: purplecabbage <pu...@gmail.com>
Authored: Mon Oct 27 15:56:01 2014 -0700
Committer: purplecabbage <pu...@gmail.com>
Committed: Mon Oct 27 15:56:01 2014 -0700

----------------------------------------------------------------------
 src/common/init.js   | 17 ++++++++---------
 src/common/init_b.js | 16 +++++++---------
 2 files changed, 15 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-js/blob/bd5a35fa/src/common/init.js
----------------------------------------------------------------------
diff --git a/src/common/init.js b/src/common/init.js
index 758544e..46cca2e 100644
--- a/src/common/init.js
+++ b/src/common/init.js
@@ -24,6 +24,7 @@ var cordova = require('cordova');
 var modulemapper = require('cordova/modulemapper');
 var platform = require('cordova/platform');
 var pluginloader = require('cordova/pluginloader');
+var utils = require('cordova/utils');
 
 var platformInitChannelsArray = [channel.onNativeReady, channel.onPluginsReady];
 
@@ -55,21 +56,19 @@ function replaceNavigator(origNavigator) {
         for (var key in origNavigator) {
             if (typeof origNavigator[key] == 'function') {
                 newNavigator[key] = origNavigator[key].bind(origNavigator);
-            } else {
+            } 
+            else {
                 (function(k) {
-                        Object.defineProperty(newNavigator, k, {
-                            get: function() {
-                                return origNavigator[k];
-                            },
-                            configurable: true,
-                            enumerable: true
-                        });
-                    })(key);
+                    utils.defineGetterSetter(newNavigator,key,function() {
+                        return origNavigator[k];
+                    });
+                })(key);
             }
         }
     }
     return newNavigator;
 }
+
 if (window.navigator) {
     window.navigator = replaceNavigator(window.navigator);
 }

http://git-wip-us.apache.org/repos/asf/cordova-js/blob/bd5a35fa/src/common/init_b.js
----------------------------------------------------------------------
diff --git a/src/common/init_b.js b/src/common/init_b.js
index f00409b..207cc3c 100644
--- a/src/common/init_b.js
+++ b/src/common/init_b.js
@@ -22,6 +22,7 @@
 var channel = require('cordova/channel');
 var cordova = require('cordova');
 var platform = require('cordova/platform');
+var utils = require('cordova/utils');
 
 var platformInitChannelsArray = [channel.onDOMContentLoaded, channel.onNativeReady];
 
@@ -56,16 +57,13 @@ function replaceNavigator(origNavigator) {
         for (var key in origNavigator) {
             if (typeof origNavigator[key] == 'function') {
                 newNavigator[key] = origNavigator[key].bind(origNavigator);
-            } else {
+            } 
+            else {
                 (function(k) {
-                        Object.defineProperty(newNavigator, k, {
-                            get: function() {
-                                return origNavigator[k];
-                            },
-                            configurable: true,
-                            enumerable: true
-                        });
-                    })(key);
+                    utils.defineGetterSetter(newNavigator,key,function() {
+                        return origNavigator[k];
+                    });
+                })(key);
             }
         }
     }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org


[5/9] js commit: Upleveled amazon-fireos bridge.

Posted by ka...@apache.org.
Upleveled amazon-fireos 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/9da67a3a
Tree: http://git-wip-us.apache.org/repos/asf/cordova-js/tree/9da67a3a
Diff: http://git-wip-us.apache.org/repos/asf/cordova-js/diff/9da67a3a

Branch: refs/heads/3.7.x
Commit: 9da67a3ae34de1a91355f2a9f2fee8389f9dce54
Parents: 14fae3a
Author: Archana Naik <na...@lab126.com>
Authored: Mon Oct 27 14:27:15 2014 -0700
Committer: Archana Naik <na...@lab126.com>
Committed: Mon Oct 27 14:27:15 2014 -0700

----------------------------------------------------------------------
 src/amazon-fireos/exec.js               | 66 +++++++++++++++++-----------
 src/amazon-fireos/platform.js           | 11 +++++
 src/amazon-fireos/plugin/android/app.js | 15 +++++++
 3 files changed, 66 insertions(+), 26 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-js/blob/9da67a3a/src/amazon-fireos/exec.js
----------------------------------------------------------------------
diff --git a/src/amazon-fireos/exec.js b/src/amazon-fireos/exec.js
index eb7f862..856bd8e 100644
--- a/src/amazon-fireos/exec.js
+++ b/src/amazon-fireos/exec.js
@@ -180,6 +180,42 @@ androidExec.setNativeToJsBridgeMode = function(mode) {
     }
 };
 
+function buildPayload(payload, message) {
+    var payloadKind = message.charAt(0);
+    if (payloadKind == 's') {
+        payload.push(message.slice(1));
+    } else if (payloadKind == 't') {
+        payload.push(true);
+    } else if (payloadKind == 'f') {
+        payload.push(false);
+    } else if (payloadKind == 'N') {
+        payload.push(null);
+    } else if (payloadKind == 'n') {
+        payload.push(+message.slice(1));
+    } else if (payloadKind == 'A') {
+        var data = message.slice(1);
+        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.push(arraybuffer.buffer);
+    } else if (payloadKind == 'S') {
+        payload.push(window.atob(message.slice(1)));
+    } else if (payloadKind == 'M') {
+        var multipartMessages = message.slice(1);
+        while (multipartMessages !== "") {
+            var spaceIdx = multipartMessages.indexOf(' ');
+            var msgLen = +multipartMessages.slice(0, spaceIdx);
+            var multipartMessage = multipartMessages.substr(spaceIdx + 1, msgLen);
+            multipartMessages = multipartMessages.slice(spaceIdx + msgLen + 1);
+            buildPayload(payload, multipartMessage);
+        }
+    } else {
+        payload.push(JSON.parse(message));
+    }
+}
+
 // Processes a single message, as encoded by NativeToJsMessageQueue.java.
 function processMessage(message) {
     try {
@@ -193,32 +229,10 @@ function processMessage(message) {
             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));
-            }
-            cordova.callbackFromNative(callbackId, success, status, [payload], keepCallback);
+            var payloadMessage = message.slice(nextSpaceIdx + 1);
+            var payload = [];
+            buildPayload(payload, payloadMessage);
+            cordova.callbackFromNative(callbackId, success, status, payload, keepCallback);
         } else {
             console.log("processMessage failed: invalid message: " + JSON.stringify(message));
         }

http://git-wip-us.apache.org/repos/asf/cordova-js/blob/9da67a3a/src/amazon-fireos/platform.js
----------------------------------------------------------------------
diff --git a/src/amazon-fireos/platform.js b/src/amazon-fireos/platform.js
index e2e08c9..e380c2e 100644
--- a/src/amazon-fireos/platform.js
+++ b/src/amazon-fireos/platform.js
@@ -45,6 +45,17 @@ module.exports = {
         cordova.addDocumentEventHandler('menubutton');
         cordova.addDocumentEventHandler('searchbutton');
 
+        function bindButtonChannel(buttonName) {
+            // generic button bind used for volumeup/volumedown buttons
+            var volumeButtonChannel = cordova.addDocumentEventHandler(buttonName + 'button');
+            volumeButtonChannel.onHasSubscribersChange = function() {
+                exec(null, null, "App", "overrideButton", [buttonName, this.numHandlers == 1]);
+            };
+        }
+        // Inject a listener for the volume buttons on the document.
+        bindButtonChannel('volumeup');
+        bindButtonChannel('volumedown');
+
         // Let native code know we are all done on the JS side.
         // Native code will then un-hide the WebView.
         channel.onCordovaReady.subscribe(function() {

http://git-wip-us.apache.org/repos/asf/cordova-js/blob/9da67a3a/src/amazon-fireos/plugin/android/app.js
----------------------------------------------------------------------
diff --git a/src/amazon-fireos/plugin/android/app.js b/src/amazon-fireos/plugin/android/app.js
index c2a4df5..7fccc40 100644
--- a/src/amazon-fireos/plugin/android/app.js
+++ b/src/amazon-fireos/plugin/android/app.js
@@ -84,6 +84,21 @@ module.exports = {
     },
 
     /**
+    * Override the default behavior of the Android volume button.
+    * If overridden, when the volume button is pressed, the "volume[up|down]button"
+    * JavaScript event will be fired.
+    *
+    * Note: The user should not have to call this method.  Instead, when the user
+    *       registers for the "volume[up|down]button" event, this is automatically done.
+    *
+    * @param button          volumeup, volumedown
+    * @param override        T=override, F=cancel override
+    */
+    overrideButton:function(button, override) {
+        exec(null, null, "App", "overrideButton", [button, override]);
+    },
+
+    /**
     * Exit and terminate the application.
     */
     exitApp:function() {


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org


[4/9] js commit: CB-7816: updated dependencies

Posted by ka...@apache.org.
CB-7816: updated dependencies


Project: http://git-wip-us.apache.org/repos/asf/cordova-js/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-js/commit/14fae3a3
Tree: http://git-wip-us.apache.org/repos/asf/cordova-js/tree/14fae3a3
Diff: http://git-wip-us.apache.org/repos/asf/cordova-js/diff/14fae3a3

Branch: refs/heads/3.7.x
Commit: 14fae3a3054dd4d0f8d236a5802ae80518c89b5c
Parents: 9429170
Author: Steve Gill <st...@gmail.com>
Authored: Fri Oct 24 12:02:09 2014 -0700
Committer: Steve Gill <st...@gmail.com>
Committed: Fri Oct 24 12:02:09 2014 -0700

----------------------------------------------------------------------
 package.json | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-js/blob/14fae3a3/package.json
----------------------------------------------------------------------
diff --git a/package.json b/package.json
index b4e0dc2..c11f742 100644
--- a/package.json
+++ b/package.json
@@ -58,8 +58,8 @@
         "jsdom-nogyp": "0.8.3",
         "connect": "1.8.5",
         "grunt": "0.4.1",
-        "grunt-contrib-clean": "0.4.1",
-        "grunt-contrib-jshint": "0.6.0"
+        "grunt-contrib-clean": "0.6.0",
+        "grunt-contrib-jshint": "0.10.0"
     },
     "dependencies": {
         "uglify-js": "2.4.15",


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org


[2/9] js commit: CB-2520 - User agent-related changes for custom user agents in iOS

Posted by ka...@apache.org.
CB-2520 - User agent-related changes for custom user agents in iOS

Signed-off-by: Shazron Abdullah <sh...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/cordova-js/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-js/commit/d9e2a1c2
Tree: http://git-wip-us.apache.org/repos/asf/cordova-js/tree/d9e2a1c2
Diff: http://git-wip-us.apache.org/repos/asf/cordova-js/diff/d9e2a1c2

Branch: refs/heads/3.7.x
Commit: d9e2a1c2401b986b5af09ecd6b4be60df2cbf131
Parents: 1b9dc0d
Author: Kevin Hawkins <kh...@salesforce.com>
Authored: Tue Oct 7 14:09:32 2014 -0700
Committer: Shazron Abdullah <sh...@apache.org>
Committed: Mon Oct 13 15:17:34 2014 -0700

----------------------------------------------------------------------
 src/ios/exec.js | 11 ++---------
 1 file changed, 2 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-js/blob/d9e2a1c2/src/ios/exec.js
----------------------------------------------------------------------
diff --git a/src/ios/exec.js b/src/ios/exec.js
index 89c2f35..e3e8b32 100644
--- a/src/ios/exec.js
+++ b/src/ios/exec.js
@@ -131,15 +131,8 @@ function convertMessageToArgsNativeToJs(message) {
 }
 
 function iOSExec() {
-    // Use XHR for iOS 5 to work around a bug in -webkit-scroll.
-    // Use IFRAME_NAV elsewhere since it's faster and XHR bridge
-    // seems to have bugs in newer OS's (CB-3900, CB-3359, CB-5457, CB-4970, CB-4998, CB-5134)
     if (bridgeMode === undefined) {
-        if (navigator.userAgent) {
-            bridgeMode = navigator.userAgent.indexOf(' 5_') == -1 ? jsToNativeModes.IFRAME_NAV: jsToNativeModes.XHR_NO_PAYLOAD;
-        } else {
-            bridgeMode = jsToNativeModes.IFRAME_NAV;
-        }
+        bridgeMode = jsToNativeModes.IFRAME_NAV;
     }
 
     if (window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.cordova && window.webkit.messageHandlers.cordova.postMessage) {
@@ -230,7 +223,7 @@ function pokeNativeViaXhr() {
     // Add a timestamp to the query param to prevent caching.
     execXhr.open('HEAD', "/!gap_exec?" + (+new Date()), true);
     if (!vcHeaderValue) {
-        vcHeaderValue = /.*\((.*)\)/.exec(navigator.userAgent)[1];
+        vcHeaderValue = /.*\((.*)\)$/.exec(navigator.userAgent)[1];
     }
     execXhr.setRequestHeader('vc', vcHeaderValue);
     execXhr.setRequestHeader('rc', ++requestCount);


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org


[9/9] js commit: CB-7988 Updated version and RELEASENOTES.md for release 3.7.2

Posted by ka...@apache.org.
CB-7988 Updated version and RELEASENOTES.md for release 3.7.2


Project: http://git-wip-us.apache.org/repos/asf/cordova-js/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-js/commit/7afadfc0
Tree: http://git-wip-us.apache.org/repos/asf/cordova-js/tree/7afadfc0
Diff: http://git-wip-us.apache.org/repos/asf/cordova-js/diff/7afadfc0

Branch: refs/heads/3.7.x
Commit: 7afadfc044033741050bbe90e8656453ece258ac
Parents: f0ceadf
Author: Mark Koudritsky <ka...@gmail.com>
Authored: Fri Nov 7 11:38:43 2014 -0500
Committer: Mark Koudritsky <ka...@gmail.com>
Committed: Fri Nov 7 11:38:43 2014 -0500

----------------------------------------------------------------------
 RELEASENOTES.md | 7 +++++++
 package.json    | 2 +-
 2 files changed, 8 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-js/blob/7afadfc0/RELEASENOTES.md
----------------------------------------------------------------------
diff --git a/RELEASENOTES.md b/RELEASENOTES.md
index 0b682fd..ec349cb 100644
--- a/RELEASENOTES.md
+++ b/RELEASENOTES.md
@@ -20,6 +20,13 @@
 -->
 ## Release Notes for Cordova JS ##
 
+### 3.7.2 (Nov 7, 2014)
+* CB-7868 Make <clobbers> on navigator not break on some versions of Android
+* CB-7868 Use utils.defineGetterSetter instead of Object.defineProperty
+* Upleveled amazon-fireos bridge.
+* CB-7735 Fix iOS bridge race condition when using innerHTML on <body>
+* CB-2520 - User agent-related changes for custom user agents in iOS
+
 ### 3.7.1 (Oct 10, 2014)
 * added missing AL header
 * removed console.log

http://git-wip-us.apache.org/repos/asf/cordova-js/blob/7afadfc0/package.json
----------------------------------------------------------------------
diff --git a/package.json b/package.json
index c11f742..2cb9a4c 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
     "author": "Gord Tanner <gt...@gmail.com> (http://github.com/gtanner)",
     "name": "cordova-js",
     "description": "Cordova JavaScript: a unified JavaScript layer for the Cordova suite of projects enabling cross-platform native mobile development of applications using HTML, CSS and JavaScript.",
-    "version": "3.7.2-dev",
+    "version": "3.7.2",
     "homepage": "http://cordova.apache.org",
     "repository": {
         "type": "git",


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org


[7/9] js commit: Merge branch 'CB-7868' of https://github.com/purplecabbage/cordova-js

Posted by ka...@apache.org.
Merge branch 'CB-7868' of https://github.com/purplecabbage/cordova-js


Project: http://git-wip-us.apache.org/repos/asf/cordova-js/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-js/commit/91157c2e
Tree: http://git-wip-us.apache.org/repos/asf/cordova-js/tree/91157c2e
Diff: http://git-wip-us.apache.org/repos/asf/cordova-js/diff/91157c2e

Branch: refs/heads/3.7.x
Commit: 91157c2e1bf3eb098c7e2ab31404e895ccb0df2a
Parents: 9da67a3 bd5a35f
Author: purplecabbage <pu...@gmail.com>
Authored: Mon Oct 27 16:50:45 2014 -0700
Committer: purplecabbage <pu...@gmail.com>
Committed: Mon Oct 27 16:50:45 2014 -0700

----------------------------------------------------------------------
 src/common/init.js   | 17 ++++++++---------
 src/common/init_b.js | 16 +++++++---------
 2 files changed, 15 insertions(+), 18 deletions(-)
----------------------------------------------------------------------



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org


[3/9] js commit: CB-7735 Fix iOS bridge race condition when using innerHTML on

Posted by ka...@apache.org.
CB-7735 Fix iOS bridge race condition when using innerHTML on <body>


Project: http://git-wip-us.apache.org/repos/asf/cordova-js/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-js/commit/94291706
Tree: http://git-wip-us.apache.org/repos/asf/cordova-js/tree/94291706
Diff: http://git-wip-us.apache.org/repos/asf/cordova-js/diff/94291706

Branch: refs/heads/3.7.x
Commit: 94291706945c42fd47fa632ed30f5eb811080e95
Parents: d9e2a1c
Author: Andrew Grieve <ag...@chromium.org>
Authored: Tue Oct 14 16:39:06 2014 -0400
Committer: Andrew Grieve <ag...@chromium.org>
Committed: Tue Oct 14 16:39:48 2014 -0400

----------------------------------------------------------------------
 src/ios/exec.js | 30 ++++++++++++++++++++++++------
 1 file changed, 24 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-js/blob/94291706/src/ios/exec.js
----------------------------------------------------------------------
diff --git a/src/ios/exec.js b/src/ios/exec.js
index e3e8b32..5c7cc98 100644
--- a/src/ios/exec.js
+++ b/src/ios/exec.js
@@ -52,15 +52,20 @@ var cordova = require('cordova'),
     commandQueue = [], // Contains pending JS->Native messages.
     isInContextOfEvalJs = 0;
 
-function createExecIframe() {
+function createExecIframe(src, unloadListener) {
     var iframe = document.createElement("iframe");
     iframe.style.display = 'none';
+    // Both the unload listener and the src must be set before adding the iframe
+    // to the document in order to avoid race conditions. Callbacks from native
+    // can happen within the appendChild() call!
+    iframe.onunload = unloadListener;
+    iframe.src = src;
     document.body.appendChild(iframe);
     return iframe;
 }
 
 function createHashIframe() {
-    var ret = createExecIframe();
+    var ret = createExecIframe('about:blank');
     // Hash changes don't work on about:blank, so switch it to file:///.
     ret.contentWindow.history.replaceState(null, null, 'file:///#');
     return ret;
@@ -233,6 +238,11 @@ function pokeNativeViaXhr() {
     execXhr.send(null);
 }
 
+function onIframeUnload() {
+    execIframe = null;
+    setTimeout(pokeNativeViaIframe, 0);
+}
+
 function pokeNativeViaIframe() {
     // CB-5488 - Don't attempt to create iframe before document.body is available.
     if (!document.body) {
@@ -240,6 +250,7 @@ function pokeNativeViaIframe() {
         return;
     }
     if (bridgeMode === jsToNativeModes.IFRAME_HASH_NO_PAYLOAD || bridgeMode === jsToNativeModes.IFRAME_HASH_WITH_PAYLOAD) {
+        // TODO: This bridge mode doesn't properly support being removed from the DOM (CB-7735)
         execHashIframe = execHashIframe || createHashIframe();
         // Check if they've removed it from the DOM, and put it back if so.
         if (!execHashIframe.contentWindow) {
@@ -253,12 +264,15 @@ function pokeNativeViaIframe() {
         }
         execHashIframe.contentWindow.location.hash = hashValue;
     } else {
-        execIframe = execIframe || createExecIframe();
         // Check if they've removed it from the DOM, and put it back if so.
-        if (!execIframe.contentWindow) {
-            execIframe = createExecIframe();
+        if (execIframe && execIframe.contentWindow) {
+            // Listen for unload, since it can happen (CB-7735) that the iframe gets
+            // removed from the DOM before it gets a chance to poke the native side.
+            execIframe.contentWindow.onunload = onIframeUnload;
+            execIframe.src = 'gap://ready';
+        } else {
+            execIframe = createExecIframe('gap://ready', onIframeUnload);
         }
-        execIframe.src = "gap://ready";
     }
 }
 
@@ -276,6 +290,10 @@ iOSExec.setJsToNativeBridgeMode = function(mode) {
 };
 
 iOSExec.nativeFetchMessages = function() {
+    // Stop listing for window detatch once native side confirms poke.
+    if (execIframe && execIframe.contentWindow) {
+        execIframe.contentWindow.onunload = null;
+    }
     // Each entry in commandQueue is a JSON string already.
     if (!commandQueue.length) {
         return '';


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org


[8/9] js commit: CB-7868 Make on navigator not break on some versions of Android

Posted by ka...@apache.org.
CB-7868 Make <clobbers> on navigator not break on some versions of Android


Project: http://git-wip-us.apache.org/repos/asf/cordova-js/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-js/commit/f0ceadfd
Tree: http://git-wip-us.apache.org/repos/asf/cordova-js/tree/f0ceadfd
Diff: http://git-wip-us.apache.org/repos/asf/cordova-js/diff/f0ceadfd

Branch: refs/heads/3.7.x
Commit: f0ceadfd6f59c3bfc7db2922bfd08b4ea8cafe45
Parents: 91157c2
Author: Andrew Grieve <ag...@chromium.org>
Authored: Tue Nov 4 14:18:17 2014 -0500
Committer: Andrew Grieve <ag...@chromium.org>
Committed: Tue Nov 4 14:18:17 2014 -0500

----------------------------------------------------------------------
 src/common/builder.js | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-js/blob/f0ceadfd/src/common/builder.js
----------------------------------------------------------------------
diff --git a/src/common/builder.js b/src/common/builder.js
index 826820d..75d3ea7 100644
--- a/src/common/builder.js
+++ b/src/common/builder.js
@@ -31,9 +31,14 @@ function each(objects, func, context) {
 
 function clobber(obj, key, value) {
     exports.replaceHookForTesting(obj, key);
-    obj[key] = value;
+    var needsProperty = false;
+    try {
+        obj[key] = value;
+    } catch (e) {
+        needsProperty = true;
+    }
     // Getters can only be overridden by getters.
-    if (obj[key] !== value) {
+    if (needsProperty || obj[key] !== value) {
         utils.defineGetter(obj, key, function() {
             return value;
         });


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org