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 2012/11/07 21:19:04 UTC

[3/3] js commit: [all] Use JS getters to clobber getters in buider.js

[all] Use JS getters to clobber getters in buider.js

Required to get navigator.connection to work correctly (CB-1807)


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/41ef8a73
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/tree/41ef8a73
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/diff/41ef8a73

Branch: refs/heads/master
Commit: 41ef8a73d4eae43640f3d8242e965eb5eba22ec0
Parents: 72bf85c
Author: Andrew Grieve <ag...@chromium.org>
Authored: Wed Nov 7 15:10:38 2012 -0500
Committer: Andrew Grieve <ag...@chromium.org>
Committed: Wed Nov 7 15:17:52 2012 -0500

----------------------------------------------------------------------
 lib/common/builder.js |   21 +++++++++++++++++----
 1 files changed, 17 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/blob/41ef8a73/lib/common/builder.js
----------------------------------------------------------------------
diff --git a/lib/common/builder.js b/lib/common/builder.js
index 475ed29..1c74bff 100644
--- a/lib/common/builder.js
+++ b/lib/common/builder.js
@@ -29,14 +29,24 @@ function each(objects, func, context) {
     }
 }
 
+function clobber(obj, key, value) {
+    obj[key] = value;
+    // Getters can only be overridden by getters.
+    if (obj[key] !== value) {
+        utils.defineGetter(obj, key, function() {
+            return value;
+        });
+    }
+}
+
 function assignOrWrapInDeprecateGetter(obj, key, value, message) {
     if (message) {
         utils.defineGetter(obj, key, function() {
-            window.console && console.log(message);
+            console.log(message);
             return value;
         });
     } else {
-        obj[key] = value;
+        clobber(obj, key, value);
     }
 }
 
@@ -95,8 +105,11 @@ function recursiveMerge(target, src) {
                 // If the target object is a constructor override off prototype.
                 target.prototype[prop] = src[prop];
             } else {
-                target[prop] = typeof src[prop] === 'object' ? recursiveMerge(
-                        target[prop], src[prop]) : src[prop];
+                if (typeof src[prop] === 'object') {
+                    target[prop] = recursiveMerge(target[prop], src[prop]);
+                } else {
+                    clobber(target, prop, src[prop]);
+                }
             }
         }
     }