You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by ma...@apache.org on 2012/11/23 15:38:53 UTC
android commit: Updating JS so that InAppBrowser will work out of the
box
Updated Branches:
refs/heads/master f1e8400ab -> 9ca2a1621
Updating JS so that InAppBrowser will work out of the box
Project: http://git-wip-us.apache.org/repos/asf/cordova-android/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-android/commit/9ca2a162
Tree: http://git-wip-us.apache.org/repos/asf/cordova-android/tree/9ca2a162
Diff: http://git-wip-us.apache.org/repos/asf/cordova-android/diff/9ca2a162
Branch: refs/heads/master
Commit: 9ca2a1621865a21152bcedfabfaa53f708b3c6f8
Parents: f1e8400
Author: Simon MacDonald <si...@gmail.com>
Authored: Fri Nov 23 09:38:49 2012 -0500
Committer: Simon MacDonald <si...@gmail.com>
Committed: Fri Nov 23 09:38:49 2012 -0500
----------------------------------------------------------------------
framework/assets/js/cordova.android.js | 241 +++++++++++++++++----------
1 files changed, 155 insertions(+), 86 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-android/blob/9ca2a162/framework/assets/js/cordova.android.js
----------------------------------------------------------------------
diff --git a/framework/assets/js/cordova.android.js b/framework/assets/js/cordova.android.js
index b4aa1fe..eac42d6 100644
--- a/framework/assets/js/cordova.android.js
+++ b/framework/assets/js/cordova.android.js
@@ -1,6 +1,6 @@
-// commit 02b91c5313ff37d74a58f71775170afd360f4a1f
+// commit 7203d335b59902a72a374a170b1edb04438b6a47
-// File generated at :: Wed Oct 31 2012 10:40:25 GMT-0700 (PDT)
+// File generated at :: Wed Nov 21 2012 16:34:19 GMT-0500 (EST)
/*
Licensed to the Apache Software Foundation (ASF) under one
@@ -329,14 +329,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);
}
}
@@ -395,8 +405,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]);
+ }
}
}
}
@@ -404,18 +417,14 @@ function recursiveMerge(target, src) {
}
module.exports = {
- build: function (objects) {
- return {
- intoButDoNotClobber: function (target) {
- include(target, objects, false, false);
- },
- intoAndClobber: function(target) {
- include(target, objects, true, false);
- },
- intoAndMerge: function(target) {
- include(target, objects, true, true);
- }
- };
+ buildIntoButDoNotClobber: function(objects, target) {
+ include(target, objects, false, false);
+ },
+ buildIntoAndClobber: function(objects, target) {
+ include(target, objects, true, false);
+ },
+ buildIntoAndMerge: function(objects, target) {
+ include(target, objects, true, true);
}
};
@@ -701,7 +710,7 @@ module.exports = {
define("cordova/common", function(require, exports, module) {
module.exports = {
- objects: {
+ defaults: {
cordova: {
path: 'cordova',
children: {
@@ -720,6 +729,9 @@ module.exports = {
}
}
},
+ open : {
+ path: 'cordova/plugin/InAppBrowser'
+ },
navigator: {
children: {
notification: {
@@ -737,9 +749,6 @@ module.exports = {
compass:{
path: 'cordova/plugin/compass'
},
- connection: {
- path: 'cordova/plugin/network'
- },
contacts: {
path: 'cordova/plugin/contacts'
},
@@ -907,6 +916,15 @@ module.exports = {
resolveLocalFileSystemURI:{
path: 'cordova/plugin/resolveLocalFileSystemURI'
}
+ },
+ clobbers: {
+ navigator: {
+ children: {
+ connection: {
+ path: 'cordova/plugin/network'
+ }
+ }
+ }
}
};
@@ -961,6 +979,7 @@ var cordova = require('cordova'),
function androidExec(success, fail, service, action, args) {
// Set default bridge modes if they have not already been set.
+ // By default, we use the failsafe, since addJavascriptInterface breaks too often
if (jsToNativeBridgeMode === undefined) {
androidExec.setJsToNativeBridgeMode(jsToNativeModes.JS_OBJECT);
}
@@ -1199,7 +1218,7 @@ module.exports = {
exec(null, null, "App", "show", []);
}, [channel.onCordovaReady]);
},
- objects: {
+ clobbers: {
navigator: {
children: {
app:{
@@ -1218,6 +1237,9 @@ module.exports = {
},
MediaError: { // exists natively on Android WebView on Android 4.x
path: "cordova/plugin/MediaError"
+ },
+ open : {
+ path: 'cordova/plugin/InAppBrowser'
}
},
merges: {
@@ -3237,6 +3259,25 @@ module.exports = GlobalizationError;
});
+// file: lib/common/plugin/InAppBrowser.js
+define("cordova/plugin/InAppBrowser", function(require, exports, module) {
+
+var exec = require('cordova/exec');
+
+var InAppBrowser = {
+ open : function(strUrl, strWindowName, strWindowFeatures) {
+ exec(null, null, "InAppBrowser", "open", [strUrl, strWindowName, strWindowFeatures]);
+ return InAppBrowser;
+ },
+ close : function() {
+ exec(null, null, "InAppBrowser", "close", []);
+ }
+};
+
+module.exports = InAppBrowser.open;
+
+});
+
// file: lib/common/plugin/LocalFileSystem.js
define("cordova/plugin/LocalFileSystem", function(require, exports, module) {
@@ -4954,6 +4995,7 @@ function Device() {
this.name = null;
this.uuid = null;
this.cordova = null;
+ this.model = null;
var me = this;
@@ -4965,6 +5007,7 @@ function Device() {
me.name = info.name;
me.uuid = info.uuid;
me.cordova = info.cordova;
+ me.model = info.model;
channel.onCordovaInfoReady.fire();
},function(e) {
me.available = false;
@@ -6004,49 +6047,9 @@ if (typeof navigator != 'undefined') {
});
}
-var NetworkConnection = function () {
- this.type = null;
- this._firstRun = true;
- this._timer = null;
- this.timeout = 500;
-
- var me = this;
-
- channel.onCordovaReady.subscribe(function() {
- me.getInfo(function (info) {
- me.type = info;
- if (info === "none") {
- // set a timer if still offline at the end of timer send the offline event
- me._timer = setTimeout(function(){
- cordova.fireDocumentEvent("offline");
- me._timer = null;
- }, me.timeout);
- } else {
- // If there is a current offline event pending clear it
- if (me._timer !== null) {
- clearTimeout(me._timer);
- me._timer = null;
- }
- cordova.fireDocumentEvent("online");
- }
-
- // should only fire this once
- if (me._firstRun) {
- me._firstRun = false;
- channel.onCordovaConnectionReady.fire();
- }
- },
- function (e) {
- // If we can't get the network info we should still tell Cordova
- // to fire the deviceready event.
- if (me._firstRun) {
- me._firstRun = false;
- channel.onCordovaConnectionReady.fire();
- }
- console.log("Error initializing Network Connection: " + e);
- });
- });
-};
+function NetworkConnection() {
+ this.type = 'unknown';
+}
/**
* Get connection info
@@ -6054,12 +6057,48 @@ var NetworkConnection = function () {
* @param {Function} successCallback The function to call when the Connection data is available
* @param {Function} errorCallback The function to call when there is an error getting the Connection data. (OPTIONAL)
*/
-NetworkConnection.prototype.getInfo = function (successCallback, errorCallback) {
- // Get info
+NetworkConnection.prototype.getInfo = function(successCallback, errorCallback) {
exec(successCallback, errorCallback, "NetworkStatus", "getConnectionInfo", []);
};
-module.exports = new NetworkConnection();
+var me = new NetworkConnection();
+var timerId = null;
+var timeout = 500;
+
+channel.onCordovaReady.subscribe(function() {
+ me.getInfo(function(info) {
+ me.type = info;
+ if (info === "none") {
+ // set a timer if still offline at the end of timer send the offline event
+ timerId = setTimeout(function(){
+ cordova.fireDocumentEvent("offline");
+ timerId = null;
+ }, timeout);
+ } else {
+ // If there is a current offline event pending clear it
+ if (timerId !== null) {
+ clearTimeout(timerId);
+ timerId = null;
+ }
+ cordova.fireDocumentEvent("online");
+ }
+
+ // should only fire this once
+ if (channel.onCordovaConnectionReady.state !== 2) {
+ channel.onCordovaConnectionReady.fire();
+ }
+ },
+ function (e) {
+ // If we can't get the network info we should still tell Cordova
+ // to fire the deviceready event.
+ if (channel.onCordovaConnectionReady.state !== 2) {
+ channel.onCordovaConnectionReady.fire();
+ }
+ console.log("Error initializing Network Connection: " + e);
+ });
+});
+
+module.exports = me;
});
@@ -6106,10 +6145,20 @@ module.exports = {
/**
* Causes the device to vibrate.
*
- * @param {Integer} mills The number of milliseconds to vibrate for.
+ * @param {Integer} time The number of milliseconds to vibrate for.
+ * OR
+ * @param {Integer} pattern A vibration pattern represented by a list of time entries, in milliseconds.
*/
- vibrate: function(mills) {
- exec(null, null, "Notification", "vibrate", [mills]);
+ vibrate: function(time) {
+ var pattern = [];
+ if (time) {
+ if (typeof time === 'number') {
+ pattern.push(time);
+ } else {
+ pattern = time;
+ }
+ }
+ exec(null, null, "Notification", "vibrate", [pattern]);
},
/**
@@ -6259,6 +6308,30 @@ utils.defineGetter = function(obj, key, func) {
}
};
+utils.arrayIndexOf = function(a, item) {
+ if (a.indexOf) {
+ return a.indexOf(item);
+ }
+ var len = a.length;
+ for (var i = 0; i < len; ++i) {
+ if (a[i] == item) {
+ return i;
+ }
+ }
+ return -1;
+};
+
+/**
+ * Returns whether the item was found in the array.
+ */
+utils.arrayRemove = function(a, item) {
+ var index = utils.arrayIndexOf(a, item);
+ if (index != -1) {
+ a.splice(index, 1);
+ }
+ return index != -1;
+};
+
/**
* Returns an indication of whether the argument is an array or not
*/
@@ -6454,10 +6527,10 @@ window.cordova = require('cordova');
(function (context) {
// Replace navigator before any modules are required(), to ensure it happens as soon as possible.
// We replace it so that properties that can't be clobbered can instead be overridden.
- if (typeof navigator != 'undefined') {
- var CordovaNavigator = function () {};
- CordovaNavigator.prototype = navigator;
- navigator = new CordovaNavigator();
+ if (context.navigator) {
+ function CordovaNavigator() {}
+ CordovaNavigator.prototype = context.navigator;
+ context.navigator = new CordovaNavigator();
}
var channel = require("cordova/channel"),
@@ -6472,17 +6545,13 @@ window.cordova = require('cordova');
platform = require('cordova/platform');
// Drop the common globals into the window object, but be nice and don't overwrite anything.
- builder.build(base.objects).intoButDoNotClobber(window);
+ builder.buildIntoButDoNotClobber(base.defaults, context);
+ builder.buildIntoAndMerge(base.merges, context);
+ builder.buildIntoAndClobber(base.clobbers, context);
- // Drop the platform-specific globals into the window object
- // and clobber any existing object.
- builder.build(platform.objects).intoAndClobber(window);
-
- // Merge the platform-specific overrides/enhancements into
- // the window object.
- if (typeof platform.merges !== 'undefined') {
- builder.build(platform.merges).intoAndMerge(window);
- }
+ builder.buildIntoButDoNotClobber(platform.defaults, context);
+ builder.buildIntoAndMerge(platform.merges, context);
+ builder.buildIntoAndClobber(platform.clobbers, context);
// Call the platform-specific initialization
platform.initialize();