Return-Path: X-Original-To: apmail-cordova-commits-archive@www.apache.org Delivered-To: apmail-cordova-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 7F6F0E72A for ; Mon, 21 Jan 2013 22:25:48 +0000 (UTC) Received: (qmail 50744 invoked by uid 500); 21 Jan 2013 22:25:48 -0000 Delivered-To: apmail-cordova-commits-archive@cordova.apache.org Received: (qmail 50724 invoked by uid 500); 21 Jan 2013 22:25:48 -0000 Mailing-List: contact commits-help@cordova.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: callback-dev@cordova.apache.org Delivered-To: mailing list commits@cordova.apache.org Received: (qmail 50716 invoked by uid 99); 21 Jan 2013 22:25:48 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 21 Jan 2013 22:25:48 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id 29F4A82290A; Mon, 21 Jan 2013 22:25:48 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: anis@apache.org To: commits@cordova.apache.org X-Mailer: ASF-Git Admin Mailer Subject: bada-wac commit: Updating javascript and VERSION Message-Id: <20130121222548.29F4A82290A@tyr.zones.apache.org> Date: Mon, 21 Jan 2013 22:25:48 +0000 (UTC) Updated Branches: refs/heads/master a65d38123 -> 400e92db0 Updating javascript and VERSION Project: http://git-wip-us.apache.org/repos/asf/cordova-bada-wac/repo Commit: http://git-wip-us.apache.org/repos/asf/cordova-bada-wac/commit/400e92db Tree: http://git-wip-us.apache.org/repos/asf/cordova-bada-wac/tree/400e92db Diff: http://git-wip-us.apache.org/repos/asf/cordova-bada-wac/diff/400e92db Branch: refs/heads/master Commit: 400e92db07181a70284dcdd8fa2ba9bfec3c999d Parents: a65d381 Author: Anis Kadri Authored: Mon Jan 21 14:25:21 2013 -0800 Committer: Anis Kadri Committed: Mon Jan 21 14:25:21 2013 -0800 ---------------------------------------------------------------------- Res/js/cordova.js | 923 +++++++++++++++++++++++++---------------------- VERSION | 2 +- 2 files changed, 492 insertions(+), 433 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cordova-bada-wac/blob/400e92db/Res/js/cordova.js ---------------------------------------------------------------------- diff --git a/Res/js/cordova.js b/Res/js/cordova.js index 3a99bce..ecde022 100644 --- a/Res/js/cordova.js +++ b/Res/js/cordova.js @@ -1,6 +1,6 @@ -// commit 24d65ab645742e8360c3dd16d7a36411cc3383e0 +// commit 71223711fb1591b1255d871140d959fd9095f0c3 -// File generated at :: Wed Jan 02 2013 22:16:07 GMT-0800 (PST) +// File generated at :: Mon Jan 21 2013 14:24:13 GMT-0800 (PST) /* Licensed to the Apache Software Foundation (ASF) under one @@ -78,6 +78,7 @@ var require, delete modules[id]; }; + define.moduleMap = modules; })(); //Export for use in node @@ -320,6 +321,8 @@ module.exports = cordova; define("cordova/argscheck", function(require, exports, module) { var exec = require('cordova/exec'); +var utils = require('cordova/utils'); + var moduleExports = module.exports; var typeMap = { @@ -340,7 +343,7 @@ function checkArgs(spec, functionName, args, opt_callee) { return; } var errMsg = null; - var type; + var typeName; for (var i = 0; i < spec.length; ++i) { var c = spec.charAt(i), cUpper = c.toUpperCase(), @@ -349,17 +352,17 @@ function checkArgs(spec, functionName, args, opt_callee) { if (c == '*') { continue; } - type = Object.prototype.toString.call(arg).slice(8, -1); + typeName = utils.typeName(arg); if ((arg === null || arg === undefined) && c == cUpper) { continue; } - if (type != typeMap[cUpper]) { + if (typeName != typeMap[cUpper]) { errMsg = 'Expected ' + typeMap[cUpper]; break; } } if (errMsg) { - errMsg += ', but got ' + type + '.'; + errMsg += ', but got ' + typeName + '.'; errMsg = 'Wrong type for parameter "' + extractParamName(opt_callee || args.callee, i) + '" of ' + functionName + ': ' + errMsg; // Don't log when running jake test. if (typeof jasmine == 'undefined') { @@ -369,7 +372,12 @@ function checkArgs(spec, functionName, args, opt_callee) { } } +function getValue(value, defaultValue) { + return value === undefined ? defaultValue : value; +} + moduleExports.checkArgs = checkArgs; +moduleExports.getValue = getValue; moduleExports.enableChecks = true; @@ -402,6 +410,8 @@ function assignOrWrapInDeprecateGetter(obj, key, value, message) { if (message) { utils.defineGetter(obj, key, function() { console.log(message); + delete obj[key]; + clobber(obj, key, value); return value; }); } else { @@ -431,10 +441,6 @@ function include(parent, objects, clobber, merge) { // Overwrite if not currently defined. if (typeof parent[key] == 'undefined') { assignOrWrapInDeprecateGetter(parent, key, result, obj.deprecated); - } else if (merge && typeof obj.path !== 'undefined') { - // If merging, merge parent onto result - recursiveMerge(result, parent[key]); - parent[key] = result; } else { // Set result to what already exists, so we can build children into it if they exist. result = parent[key]; @@ -460,19 +466,18 @@ function include(parent, objects, clobber, merge) { function recursiveMerge(target, src) { for (var prop in src) { if (src.hasOwnProperty(prop)) { - if (typeof target.prototype !== 'undefined' && target.prototype.constructor === target) { + if (target.prototype && target.prototype.constructor === target) { // If the target object is a constructor override off prototype. - target.prototype[prop] = src[prop]; + clobber(target.prototype, prop, src[prop]); } else { - if (typeof src[prop] === 'object') { - target[prop] = recursiveMerge(target[prop], src[prop]); + if (typeof src[prop] === 'object' && typeof target[prop] === 'object') { + recursiveMerge(target[prop], src[prop]); } else { clobber(target, prop, src[prop]); } } } } - return target; } module.exports = { @@ -484,7 +489,9 @@ module.exports = { }, buildIntoAndMerge: function(objects, target) { include(target, objects, true, true); - } + }, + recursiveMerge: recursiveMerge, + assignOrWrapInDeprecateGetter: assignOrWrapInDeprecateGetter }; }); @@ -897,54 +904,9 @@ module.exports = { device: { path: 'cordova/plugin/device' }, - DirectoryEntry: { - path: 'cordova/plugin/DirectoryEntry' - }, - DirectoryReader: { - path: 'cordova/plugin/DirectoryReader' - }, - Entry: { - path: 'cordova/plugin/Entry' - }, - File: { - path: 'cordova/plugin/File' - }, - FileEntry: { - path: 'cordova/plugin/FileEntry' - }, - FileError: { - path: 'cordova/plugin/FileError' - }, - FileReader: { - path: 'cordova/plugin/FileReader' - }, - FileSystem: { - path: 'cordova/plugin/FileSystem' - }, - FileTransfer: { - path: 'cordova/plugin/FileTransfer' - }, - FileTransferError: { - path: 'cordova/plugin/FileTransferError' - }, - FileUploadOptions: { - path: 'cordova/plugin/FileUploadOptions' - }, - FileUploadResult: { - path: 'cordova/plugin/FileUploadResult' - }, - FileWriter: { - path: 'cordova/plugin/FileWriter' - }, - Flags: { - path: 'cordova/plugin/Flags' - }, GlobalizationError: { path: 'cordova/plugin/GlobalizationError' }, - LocalFileSystem: { - path: 'cordova/plugin/LocalFileSystem' - }, Media: { path: 'cordova/plugin/Media' }, @@ -957,9 +919,6 @@ module.exports = { MediaFileData:{ path: 'cordova/plugin/MediaFileData' }, - Metadata:{ - path: 'cordova/plugin/Metadata' - }, Position: { path: 'cordova/plugin/Position' }, @@ -968,12 +927,6 @@ module.exports = { }, ProgressEvent: { path: 'cordova/plugin/ProgressEvent' - }, - requestFileSystem:{ - path: 'cordova/plugin/requestFileSystem' - }, - resolveLocalFileSystemURI:{ - path: 'cordova/plugin/resolveLocalFileSystemURI' } }, clobbers: { @@ -1017,12 +970,118 @@ module.exports = function(success, fail, service, action, args) { }); +// file: lib/common/modulemapper.js +define("cordova/modulemapper", function(require, exports, module) { + +var builder = require('cordova/builder'), + moduleMap = define.moduleMap, + symbolList, + deprecationMap; + +exports.reset = function() { + symbolList = []; + deprecationMap = {}; +}; + +function addEntry(strategy, moduleName, symbolPath, opt_deprecationMessage) { + if (!(moduleName in moduleMap)) { + throw new Error('Module ' + moduleName + ' does not exist.'); + } + symbolList.push(strategy, moduleName, symbolPath); + if (opt_deprecationMessage) { + deprecationMap[symbolPath] = opt_deprecationMessage; + } +} + +// Note: Android 2.3 does have Function.bind(). +exports.clobbers = function(moduleName, symbolPath, opt_deprecationMessage) { + addEntry('c', moduleName, symbolPath, opt_deprecationMessage); +}; + +exports.merges = function(moduleName, symbolPath, opt_deprecationMessage) { + addEntry('m', moduleName, symbolPath, opt_deprecationMessage); +}; + +exports.defaults = function(moduleName, symbolPath, opt_deprecationMessage) { + addEntry('d', moduleName, symbolPath, opt_deprecationMessage); +}; + +function prepareNamespace(symbolPath, context) { + if (!symbolPath) { + return context; + } + var parts = symbolPath.split('.'); + var cur = context; + for (var i = 0, part; part = parts[i]; ++i) { + cur[part] = cur[part] || {}; + } + return cur[parts[i-1]]; +} + +exports.mapModules = function(context) { + var origSymbols = {}; + context.CDV_origSymbols = origSymbols; + for (var i = 0, len = symbolList.length; i < len; i += 3) { + var strategy = symbolList[i]; + var moduleName = symbolList[i + 1]; + var symbolPath = symbolList[i + 2]; + var lastDot = symbolPath.lastIndexOf('.'); + var namespace = symbolPath.substr(0, lastDot); + var lastName = symbolPath.substr(lastDot + 1); + + var module = require(moduleName); + var deprecationMsg = symbolPath in deprecationMap ? 'Access made to deprecated symbol: ' + symbolPath + '. ' + deprecationMsg : null; + var parentObj = prepareNamespace(namespace, context); + var target = parentObj[lastName]; + + if (strategy == 'm' && target) { + builder.recursiveMerge(target, module); + } else if ((strategy == 'd' && !target) || (strategy != 'd')) { + if (target) { + origSymbols[symbolPath] = target; + } + builder.assignOrWrapInDeprecateGetter(parentObj, lastName, module, deprecationMsg); + } + } +}; + +exports.getOriginalSymbol = function(context, symbolPath) { + var origSymbols = context.CDV_origSymbols; + if (origSymbols && (symbolPath in origSymbols)) { + return origSymbols[symbolPath]; + } + var parts = symbolPath.split('.'); + var obj = context; + for (var i = 0; i < parts.length; ++i) { + obj = obj && obj[parts[i]]; + } + return obj; +}; + +exports.loadMatchingModules = function(matchingRegExp) { + for (var k in moduleMap) { + if (matchingRegExp.exec(k)) { + require(k); + } + } +}; + +exports.reset(); + + +}); + // file: lib/bada/platform.js define("cordova/platform", function(require, exports, module) { module.exports = { id: "bada", - initialize: function() {}, + initialize: function() { + var modulemapper = require('cordova/modulemapper'); + + modulemapper.loadMatchingModules(/cordova.*\/symbols$/); + modulemapper.mapModules(window); + }, clobbers: { device: { path: 'cordova/plugin/bada/device' @@ -1074,7 +1133,8 @@ module.exports = Acceleration; // file: lib/common/plugin/Camera.js define("cordova/plugin/Camera", function(require, exports, module) { -var exec = require('cordova/exec'), +var argscheck = require('cordova/argscheck'), + exec = require('cordova/exec'), Camera = require('cordova/plugin/CameraConstants'); var cameraExport = {}; @@ -1095,90 +1155,21 @@ for (var key in Camera) { * @param {Object} options */ cameraExport.getPicture = function(successCallback, errorCallback, options) { + argscheck.checkArgs('fFO', 'Camera.getPicture', arguments); options = options || {}; - // successCallback required - if (typeof successCallback != "function") { - console.log("Camera Error: successCallback is not a function"); - return; - } - - // errorCallback optional - if (errorCallback && (typeof errorCallback != "function")) { - console.log("Camera Error: errorCallback is not a function"); - return; - } - - var quality = 50; - if (typeof options.quality == "number") { - quality = options.quality; - } else if (typeof options.quality == "string") { - var qlity = parseInt(options.quality, 10); - if (isNaN(qlity) === false) { - quality = qlity.valueOf(); - } - } - - var destinationType = Camera.DestinationType.FILE_URI; - if (typeof options.destinationType == "number") { - destinationType = options.destinationType; - } - - var sourceType = Camera.PictureSourceType.CAMERA; - if (typeof options.sourceType == "number") { - sourceType = options.sourceType; - } - - var targetWidth = -1; - if (typeof options.targetWidth == "number") { - targetWidth = options.targetWidth; - } else if (typeof options.targetWidth == "string") { - var width = parseInt(options.targetWidth, 10); - if (isNaN(width) === false) { - targetWidth = width.valueOf(); - } - } - - var targetHeight = -1; - if (typeof options.targetHeight == "number") { - targetHeight = options.targetHeight; - } else if (typeof options.targetHeight == "string") { - var height = parseInt(options.targetHeight, 10); - if (isNaN(height) === false) { - targetHeight = height.valueOf(); - } - } - - var encodingType = Camera.EncodingType.JPEG; - if (typeof options.encodingType == "number") { - encodingType = options.encodingType; - } - - var mediaType = Camera.MediaType.PICTURE; - if (typeof options.mediaType == "number") { - mediaType = options.mediaType; - } - var allowEdit = false; - if (typeof options.allowEdit == "boolean") { - allowEdit = options.allowEdit; - } else if (typeof options.allowEdit == "number") { - allowEdit = options.allowEdit <= 0 ? false : true; - } - var correctOrientation = false; - if (typeof options.correctOrientation == "boolean") { - correctOrientation = options.correctOrientation; - } else if (typeof options.correctOrientation == "number") { - correctOrientation = options.correctOrientation <=0 ? false : true; - } - var saveToPhotoAlbum = false; - if (typeof options.saveToPhotoAlbum == "boolean") { - saveToPhotoAlbum = options.saveToPhotoAlbum; - } else if (typeof options.saveToPhotoAlbum == "number") { - saveToPhotoAlbum = options.saveToPhotoAlbum <=0 ? false : true; - } - var popoverOptions = null; - if (typeof options.popoverOptions == "object") { - popoverOptions = options.popoverOptions; - } + var getValue = argscheck.getValue; + + var quality = getValue(options.quality, 50); + var destinationType = getValue(options.destinationType, Camera.DestinationType.FILE_URI); + var sourceType = getValue(options.sourceType, Camera.PictureSourceType.CAMERA); + var targetWidth = getValue(options.targetWidth, -1); + var targetHeight = getValue(options.targetHeight, -1); + var encodingType = getValue(options.encodingType, Camera.EncodingType.JPEG); + var mediaType = getValue(options.mediaType, Camera.MediaType.PICTURE); + var allowEdit = !!options.allowEdit; + var correctOrientation = !!options.correctOrientation; + var saveToPhotoAlbum = !!options.saveToPhotoAlbum; + var popoverOptions = getValue(options.popoverOptions, null); var args = [quality, destinationType, sourceType, targetWidth, targetHeight, encodingType, mediaType, allowEdit, correctOrientation, saveToPhotoAlbum, popoverOptions]; @@ -1200,7 +1191,8 @@ define("cordova/plugin/CameraConstants", function(require, exports, module) { module.exports = { DestinationType:{ DATA_URL: 0, // Return base64 encoded string - FILE_URI: 1 // Return file uri (content://media/external/images/media/2 for Android) + FILE_URI: 1, // Return file uri (content://media/external/images/media/2 for Android) + NATIVE_URI: 2 // Return native uri (eg. asset-library://... for iOS) }, EncodingType:{ JPEG: 0, // Return JPEG encoded image @@ -1352,10 +1344,10 @@ module.exports = CompassError; define("cordova/plugin/CompassHeading", function(require, exports, module) { var CompassHeading = function(magneticHeading, trueHeading, headingAccuracy, timestamp) { - this.magneticHeading = (magneticHeading !== undefined ? magneticHeading : null); - this.trueHeading = (trueHeading !== undefined ? trueHeading : null); - this.headingAccuracy = (headingAccuracy !== undefined ? headingAccuracy : null); - this.timestamp = (timestamp !== undefined ? timestamp : new Date().getTime()); + this.magneticHeading = magneticHeading || null; + this.trueHeading = trueHeading || null; + this.headingAccuracy = headingAccuracy || null; + this.timestamp = timestamp || new Date().getTime(); }; module.exports = CompassHeading; @@ -1404,7 +1396,8 @@ module.exports = { // file: lib/common/plugin/Contact.js define("cordova/plugin/Contact", function(require, exports, module) { -var exec = require('cordova/exec'), +var argscheck = require('cordova/argscheck'), + exec = require('cordova/exec'), ContactError = require('cordova/plugin/ContactError'), utils = require('cordova/utils'); @@ -1489,7 +1482,8 @@ var Contact = function (id, displayName, name, nickname, phoneNumbers, emails, a * @param errorCB error callback */ Contact.prototype.remove = function(successCB, errorCB) { - var fail = function(code) { + argscheck.checkArgs('FF', 'Contact.remove', arguments); + var fail = errorCB && function(code) { errorCB(new ContactError(code)); }; if (this.id === null) { @@ -1507,50 +1501,26 @@ Contact.prototype.remove = function(successCB, errorCB) { */ Contact.prototype.clone = function() { var clonedContact = utils.clone(this); - var i; clonedContact.id = null; clonedContact.rawId = null; - // Loop through and clear out any id's in phones, emails, etc. - if (clonedContact.phoneNumbers) { - for (i = 0; i < clonedContact.phoneNumbers.length; i++) { - clonedContact.phoneNumbers[i].id = null; - } - } - if (clonedContact.emails) { - for (i = 0; i < clonedContact.emails.length; i++) { - clonedContact.emails[i].id = null; - } - } - if (clonedContact.addresses) { - for (i = 0; i < clonedContact.addresses.length; i++) { - clonedContact.addresses[i].id = null; - } - } - if (clonedContact.ims) { - for (i = 0; i < clonedContact.ims.length; i++) { - clonedContact.ims[i].id = null; - } - } - if (clonedContact.organizations) { - for (i = 0; i < clonedContact.organizations.length; i++) { - clonedContact.organizations[i].id = null; - } - } - if (clonedContact.categories) { - for (i = 0; i < clonedContact.categories.length; i++) { - clonedContact.categories[i].id = null; - } - } - if (clonedContact.photos) { - for (i = 0; i < clonedContact.photos.length; i++) { - clonedContact.photos[i].id = null; - } - } - if (clonedContact.urls) { - for (i = 0; i < clonedContact.urls.length; i++) { - clonedContact.urls[i].id = null; + + function nullIds(arr) { + if (arr) { + for (var i = 0; i < arr.length; ++i) { + arr[i].id = null; + } } } + + // Loop through and clear out any id's in phones, emails, etc. + nullIds(clonedContact.phoneNumbers); + nullIds(clonedContact.emails); + nullIds(clonedContact.addresses); + nullIds(clonedContact.ims); + nullIds(clonedContact.organizations); + nullIds(clonedContact.categories); + nullIds(clonedContact.photos); + nullIds(clonedContact.urls); return clonedContact; }; @@ -1560,21 +1530,22 @@ Contact.prototype.clone = function() { * @param errorCB error callback */ Contact.prototype.save = function(successCB, errorCB) { - var fail = function(code) { - errorCB(new ContactError(code)); - }; + argscheck.checkArgs('FFO', 'Contact.save', arguments); + var fail = errorCB && function(code) { + errorCB(new ContactError(code)); + }; var success = function(result) { - if (result) { - if (typeof successCB === 'function') { - var fullContact = require('cordova/plugin/contacts').create(result); - successCB(convertIn(fullContact)); - } - } - else { - // no Entry object returned - fail(ContactError.UNKNOWN_ERROR); - } - }; + if (result) { + if (successCB) { + var fullContact = require('cordova/plugin/contacts').create(result); + successCB(convertIn(fullContact)); + } + } + else { + // no Entry object returned + fail(ContactError.UNKNOWN_ERROR); + } + }; var dupContact = convertOut(utils.clone(this)); exec(success, fail, "Contacts", "save", [dupContact]); }; @@ -1795,7 +1766,8 @@ module.exports = Coordinates; // file: lib/common/plugin/DirectoryEntry.js define("cordova/plugin/DirectoryEntry", function(require, exports, module) { -var utils = require('cordova/utils'), +var argscheck = require('cordova/argscheck'), + utils = require('cordova/utils'), exec = require('cordova/exec'), Entry = require('cordova/plugin/Entry'), FileError = require('cordova/plugin/FileError'), @@ -1811,7 +1783,7 @@ var utils = require('cordova/utils'), * TODO: implement this!!! {FileSystem} filesystem on which the directory resides (readonly) */ var DirectoryEntry = function(name, fullPath) { - DirectoryEntry.__super__.constructor.apply(this, [false, true, name, fullPath]); + DirectoryEntry.__super__.constructor.call(this, false, true, name, fullPath); }; utils.extend(DirectoryEntry, Entry); @@ -1832,11 +1804,12 @@ DirectoryEntry.prototype.createReader = function() { * @param {Function} errorCallback is called with a FileError */ DirectoryEntry.prototype.getDirectory = function(path, options, successCallback, errorCallback) { - var win = typeof successCallback !== 'function' ? null : function(result) { + argscheck.checkArgs('sOFF', 'DirectoryEntry.getDirectory', arguments); + var win = successCallback && function(result) { var entry = new DirectoryEntry(result.name, result.fullPath); successCallback(entry); }; - var fail = typeof errorCallback !== 'function' ? null : function(code) { + var fail = errorCallback && function(code) { errorCallback(new FileError(code)); }; exec(win, fail, "File", "getDirectory", [this.fullPath, path, options]); @@ -1849,7 +1822,8 @@ DirectoryEntry.prototype.getDirectory = function(path, options, successCallback, * @param {Function} errorCallback is called with a FileError */ DirectoryEntry.prototype.removeRecursively = function(successCallback, errorCallback) { - var fail = typeof errorCallback !== 'function' ? null : function(code) { + argscheck.checkArgs('FF', 'DirectoryEntry.removeRecursively', arguments); + var fail = errorCallback && function(code) { errorCallback(new FileError(code)); }; exec(successCallback, fail, "File", "removeRecursively", [this.fullPath]); @@ -1864,12 +1838,13 @@ DirectoryEntry.prototype.removeRecursively = function(successCallback, errorCall * @param {Function} errorCallback is called with a FileError */ DirectoryEntry.prototype.getFile = function(path, options, successCallback, errorCallback) { - var win = typeof successCallback !== 'function' ? null : function(result) { + argscheck.checkArgs('sOFF', 'DirectoryEntry.getFile', arguments); + var win = successCallback && function(result) { var FileEntry = require('cordova/plugin/FileEntry'); var entry = new FileEntry(result.name, result.fullPath); successCallback(entry); }; - var fail = typeof errorCallback !== 'function' ? null : function(code) { + var fail = errorCallback && function(code) { errorCallback(new FileError(code)); }; exec(win, fail, "File", "getFile", [this.fullPath, path, options]); @@ -1930,7 +1905,8 @@ module.exports = DirectoryReader; // file: lib/common/plugin/Entry.js define("cordova/plugin/Entry", function(require, exports, module) { -var exec = require('cordova/exec'), +var argscheck = require('cordova/argscheck'), + exec = require('cordova/exec'), FileError = require('cordova/plugin/FileError'), Metadata = require('cordova/plugin/Metadata'); @@ -1949,8 +1925,8 @@ var exec = require('cordova/exec'), * (readonly) */ function Entry(isFile, isDirectory, name, fullPath, fileSystem) { - this.isFile = (typeof isFile != 'undefined'?isFile:false); - this.isDirectory = (typeof isDirectory != 'undefined'?isDirectory:false); + this.isFile = !!isFile; + this.isDirectory = !!isDirectory; this.name = name || ''; this.fullPath = fullPath || ''; this.filesystem = fileSystem || null; @@ -1965,15 +1941,16 @@ function Entry(isFile, isDirectory, name, fullPath, fileSystem) { * {Function} is called with a FileError */ Entry.prototype.getMetadata = function(successCallback, errorCallback) { - var success = typeof successCallback !== 'function' ? null : function(lastModified) { - var metadata = new Metadata(lastModified); - successCallback(metadata); - }; - var fail = typeof errorCallback !== 'function' ? null : function(code) { - errorCallback(new FileError(code)); - }; + argscheck.checkArgs('FF', 'Entry.getMetadata', arguments); + var success = successCallback && function(lastModified) { + var metadata = new Metadata(lastModified); + successCallback(metadata); + }; + var fail = errorCallback && function(code) { + errorCallback(new FileError(code)); + }; - exec(success, fail, "File", "getMetadata", [this.fullPath]); + exec(success, fail, "File", "getMetadata", [this.fullPath]); }; /** @@ -1987,8 +1964,8 @@ Entry.prototype.getMetadata = function(successCallback, errorCallback) { * {Object} keys and values to set */ Entry.prototype.setMetadata = function(successCallback, errorCallback, metadataObject) { - - exec(successCallback, errorCallback, "File", "setMetadata", [this.fullPath, metadataObject]); + argscheck.checkArgs('FFO', 'Entry.setMetadata', arguments); + exec(successCallback, errorCallback, "File", "setMetadata", [this.fullPath, metadataObject]); }; /** @@ -2004,36 +1981,25 @@ Entry.prototype.setMetadata = function(successCallback, errorCallback, metadataO * {Function} called with a FileError */ Entry.prototype.moveTo = function(parent, newName, successCallback, errorCallback) { - var fail = function(code) { - if (typeof errorCallback === 'function') { - errorCallback(new FileError(code)); - } + argscheck.checkArgs('oSFF', 'Entry.moveTo', arguments); + var fail = errorCallback && function(code) { + errorCallback(new FileError(code)); }; - // user must specify parent Entry - if (!parent) { - fail(FileError.NOT_FOUND_ERR); - return; - } // source path var srcPath = this.fullPath, // entry name name = newName || this.name, success = function(entry) { if (entry) { - if (typeof successCallback === 'function') { + if (successCallback) { // create appropriate Entry object var result = (entry.isDirectory) ? new (require('cordova/plugin/DirectoryEntry'))(entry.name, entry.fullPath) : new (require('cordova/plugin/FileEntry'))(entry.name, entry.fullPath); - try { - successCallback(result); - } - catch (e) { - console.log('Error invoking callback: ' + e); - } + successCallback(result); } } else { // no Entry object returned - fail(FileError.NOT_FOUND_ERR); + fail && fail(FileError.NOT_FOUND_ERR); } }; @@ -2054,18 +2020,11 @@ Entry.prototype.moveTo = function(parent, newName, successCallback, errorCallbac * {Function} called with a FileError */ Entry.prototype.copyTo = function(parent, newName, successCallback, errorCallback) { - var fail = function(code) { - if (typeof errorCallback === 'function') { - errorCallback(new FileError(code)); - } + argscheck.checkArgs('oSFF', 'Entry.copyTo', arguments); + var fail = errorCallback && function(code) { + errorCallback(new FileError(code)); }; - // user must specify parent Entry - if (!parent) { - fail(FileError.NOT_FOUND_ERR); - return; - } - // source path var srcPath = this.fullPath, // entry name @@ -2073,20 +2032,15 @@ Entry.prototype.copyTo = function(parent, newName, successCallback, errorCallbac // success callback success = function(entry) { if (entry) { - if (typeof successCallback === 'function') { + if (successCallback) { // create appropriate Entry object var result = (entry.isDirectory) ? new (require('cordova/plugin/DirectoryEntry'))(entry.name, entry.fullPath) : new (require('cordova/plugin/FileEntry'))(entry.name, entry.fullPath); - try { - successCallback(result); - } - catch (e) { - console.log('Error invoking callback: ' + e); - } + successCallback(result); } } else { // no Entry object returned - fail(FileError.NOT_FOUND_ERR); + fail && fail(FileError.NOT_FOUND_ERR); } }; @@ -2123,7 +2077,8 @@ Entry.prototype.toURI = function(mimeType) { * @param errorCallback {Function} called with a FileError */ Entry.prototype.remove = function(successCallback, errorCallback) { - var fail = typeof errorCallback !== 'function' ? null : function(code) { + argscheck.checkArgs('FF', 'Entry.remove', arguments); + var fail = errorCallback && function(code) { errorCallback(new FileError(code)); }; exec(successCallback, fail, "File", "remove", [this.fullPath]); @@ -2136,12 +2091,13 @@ Entry.prototype.remove = function(successCallback, errorCallback) { * @param errorCallback {Function} called with a FileError */ Entry.prototype.getParent = function(successCallback, errorCallback) { - var win = typeof successCallback !== 'function' ? null : function(result) { + argscheck.checkArgs('FF', 'Entry.getParent', arguments); + var win = successCallback && function(result) { var DirectoryEntry = require('cordova/plugin/DirectoryEntry'); var entry = new DirectoryEntry(result.name, result.fullPath); successCallback(entry); }; - var fail = typeof errorCallback !== 'function' ? null : function(code) { + var fail = errorCallback && function(code) { errorCallback(new FileError(code)); }; exec(win, fail, "File", "getParent", [this.fullPath]); @@ -2169,8 +2125,46 @@ var File = function(name, fullPath, type, lastModifiedDate, size){ this.type = type || null; this.lastModifiedDate = lastModifiedDate || null; this.size = size || 0; + + // These store the absolute start and end for slicing the file. + this.start = 0; + this.end = this.size; }; +/** + * Returns a "slice" of the file. Since Cordova Files don't contain the actual + * content, this really returns a File with adjusted start and end. + * Slices of slices are supported. + * start {Number} The index at which to start the slice (inclusive). + * end {Number} The index at which to end the slice (exclusive). + */ +File.prototype.slice = function(start, end) { + var size = this.end - this.start; + var newStart = 0; + var newEnd = size; + if (arguments.length) { + if (start < 0) { + newStart = Math.max(size + start, 0); + } else { + newStart = Math.min(size, start); + } + } + + if (arguments.length >= 2) { + if (end < 0) { + newEnd = Math.max(size + end, 0); + } else { + newEnd = Math.min(end, size); + } + } + + var newFile = new File(this.name, this.fullPath, this.type, this.lastModifiedData, this.size); + newFile.start = this.start + newStart; + newFile.end = this.start + newEnd; + return newFile; +}; + + module.exports = File; }); @@ -2211,13 +2205,9 @@ FileEntry.prototype.createWriter = function(successCallback, errorCallback) { var writer = new FileWriter(filePointer); if (writer.fileName === null || writer.fileName === "") { - if (typeof errorCallback === "function") { - errorCallback(new FileError(FileError.INVALID_STATE_ERR)); - } + errorCallback && errorCallback(new FileError(FileError.INVALID_STATE_ERR)); } else { - if (typeof successCallback === "function") { - successCallback(writer); - } + successCallback && successCallback(writer); } }, errorCallback); }; @@ -2229,11 +2219,11 @@ FileEntry.prototype.createWriter = function(successCallback, errorCallback) { * @param {Function} errorCallback is called with a FileError */ FileEntry.prototype.file = function(successCallback, errorCallback) { - var win = typeof successCallback !== 'function' ? null : function(f) { + var win = successCallback && function(f) { var file = new File(f.name, f.fullPath, f.type, f.lastModifiedDate, f.size); successCallback(file); }; - var fail = typeof errorCallback !== 'function' ? null : function(code) { + var fail = errorCallback && function(code) { errorCallback(new FileError(code)); }; exec(win, fail, "File", "getFileMetadata", [this.fullPath]); @@ -2279,8 +2269,12 @@ module.exports = FileError; define("cordova/plugin/FileReader", function(require, exports, module) { var exec = require('cordova/exec'), + modulemapper = require('cordova/modulemapper'), + utils = require('cordova/utils'), + File = require('cordova/plugin/File'), FileError = require('cordova/plugin/FileError'), - ProgressEvent = require('cordova/plugin/ProgressEvent'); + ProgressEvent = require('cordova/plugin/ProgressEvent'), + origFileReader = modulemapper.getOriginalSymbol(this, 'FileReader'); /** * This class reads the mobile device file system. @@ -2291,23 +2285,11 @@ var exec = require('cordova/exec'), * @constructor */ var FileReader = function() { - this.fileName = ""; - - this.readyState = 0; // FileReader.EMPTY - - // File data - this.result = null; - - // Error - this.error = null; - - // Event handlers - this.onloadstart = null; // When the read starts. - this.onprogress = null; // While reading (and decoding) file or fileBlob data, and reporting partial file data (progress.loaded/progress.total) - this.onload = null; // When the read has successfully completed. - this.onerror = null; // When the read has failed (see errors). - this.onloadend = null; // When the request has completed (either in success or failure). - this.onabort = null; // When the read has been aborted. For instance, by invoking the abort() method. + this._readyState = 0; + this._error = null; + this._result = null; + this._fileName = ''; + this._realReader = origFileReader ? new origFileReader() : {}; }; // States @@ -2315,17 +2297,70 @@ FileReader.EMPTY = 0; FileReader.LOADING = 1; FileReader.DONE = 2; +utils.defineGetter(FileReader.prototype, 'readyState', function() { + return this._fileName ? this._readyState : this._realReader.readyState; +}); + +utils.defineGetter(FileReader.prototype, 'error', function() { + return this._fileName ? this._error: this._realReader.error; +}); + +utils.defineGetter(FileReader.prototype, 'result', function() { + return this._fileName ? this._result: this._realReader.result; +}); + +function defineEvent(eventName) { + utils.defineGetterSetter(FileReader.prototype, eventName, function() { + return this._realReader[eventName] || null; + }, function(value) { + this._realReader[eventName] = value; + }); +} +defineEvent('onloadstart'); // When the read starts. +defineEvent('onprogress'); // While reading (and decoding) file or fileBlob data, and reporting partial file data (progress.loaded/progress.total) +defineEvent('onload'); // When the read has successfully completed. +defineEvent('onerror'); // When the read has failed (see errors). +defineEvent('onloadend'); // When the request has completed (either in success or failure). +defineEvent('onabort'); // When the read has been aborted. For instance, by invoking the abort() method. + +function initRead(reader, file) { + // Already loading something + if (reader.readyState == FileReader.LOADING) { + throw new FileError(FileError.INVALID_STATE_ERR); + } + + reader._result = null; + reader._error = null; + reader._readyState = FileReader.LOADING; + + if (typeof file == 'string') { + // Deprecated in Cordova 2.4. + console.warning('Using a string argument with FileReader.readAs functions is deprecated.'); + reader._fileName = file; + } else if (typeof file.fullPath == 'string') { + reader._fileName = file.fullPath; + } else { + reader._fileName = ''; + return true; + } + + reader.onloadstart && reader.onloadstart(new ProgressEvent("loadstart", {target:reader})); +} + /** * Abort reading file. */ FileReader.prototype.abort = function() { - this.result = null; + if (origFileReader && !this._fileName) { + return this._realReader.abort(); + } + this._result = null; - if (this.readyState == FileReader.DONE || this.readyState == FileReader.EMPTY) { + if (this._readyState == FileReader.DONE || this._readyState == FileReader.EMPTY) { return; } - this.readyState = FileReader.DONE; + this._readyState = FileReader.DONE; // If abort callback if (typeof this.onabort === 'function') { @@ -2344,43 +2379,33 @@ FileReader.prototype.abort = function() { * @param encoding [Optional] (see http://www.iana.org/assignments/character-sets) */ FileReader.prototype.readAsText = function(file, encoding) { - // Figure out pathing - this.fileName = ''; - if (typeof file.fullPath === 'undefined') { - this.fileName = file; - } else { - this.fileName = file.fullPath; - } - - // Already loading something - if (this.readyState == FileReader.LOADING) { - throw new FileError(FileError.INVALID_STATE_ERR); - } - - // LOADING state - this.readyState = FileReader.LOADING; - - // If loadstart callback - if (typeof this.onloadstart === "function") { - this.onloadstart(new ProgressEvent("loadstart", {target:this})); + if (initRead(this, file)) { + return this._realReader.readAsText(file, encoding); } // Default encoding is UTF-8 var enc = encoding ? encoding : "UTF-8"; - var me = this; + var execArgs = [this._fileName, enc]; + + // Maybe add slice parameters. + if (file.end < file.size) { + execArgs.push(file.start, file.end); + } else if (file.start > 0) { + execArgs.push(file.start); + } // Read file exec( // Success callback function(r) { // If DONE (cancelled), then don't do anything - if (me.readyState === FileReader.DONE) { + if (me._readyState === FileReader.DONE) { return; } // Save result - me.result = r; + me._result = r; // If onload callback if (typeof me.onload === "function") { @@ -2388,7 +2413,7 @@ FileReader.prototype.readAsText = function(file, encoding) { } // DONE state - me.readyState = FileReader.DONE; + me._readyState = FileReader.DONE; // If onloadend callback if (typeof me.onloadend === "function") { @@ -2398,18 +2423,18 @@ FileReader.prototype.readAsText = function(file, encoding) { // Error callback function(e) { // If DONE (cancelled), then don't do anything - if (me.readyState === FileReader.DONE) { + if (me._readyState === FileReader.DONE) { return; } // DONE state - me.readyState = FileReader.DONE; + me._readyState = FileReader.DONE; // null result - me.result = null; + me._result = null; // Save error - me.error = new FileError(e); + me._error = new FileError(e); // If onerror callback if (typeof me.onerror === "function") { @@ -2420,7 +2445,7 @@ FileReader.prototype.readAsText = function(file, encoding) { if (typeof me.onloadend === "function") { me.onloadend(new ProgressEvent("loadend", {target:me})); } - }, "File", "readAsText", [this.fileName, enc]); + }, "File", "readAsText", execArgs); }; @@ -2432,42 +2457,34 @@ FileReader.prototype.readAsText = function(file, encoding) { * @param file {File} File object containing file properties */ FileReader.prototype.readAsDataURL = function(file) { - this.fileName = ""; - if (typeof file.fullPath === "undefined") { - this.fileName = file; - } else { - this.fileName = file.fullPath; - } - - // Already loading something - if (this.readyState == FileReader.LOADING) { - throw new FileError(FileError.INVALID_STATE_ERR); + if (initRead(this, file)) { + return this._realReader.readAsDataURL(file); } - // LOADING state - this.readyState = FileReader.LOADING; + var me = this; + var execArgs = [this._fileName]; - // If loadstart callback - if (typeof this.onloadstart === "function") { - this.onloadstart(new ProgressEvent("loadstart", {target:this})); + // Maybe add slice parameters. + if (file.end < file.size) { + execArgs.push(file.start, file.end); + } else if (file.start > 0) { + execArgs.push(file.start); } - var me = this; - // Read file exec( // Success callback function(r) { // If DONE (cancelled), then don't do anything - if (me.readyState === FileReader.DONE) { + if (me._readyState === FileReader.DONE) { return; } // DONE state - me.readyState = FileReader.DONE; + me._readyState = FileReader.DONE; // Save result - me.result = r; + me._result = r; // If onload callback if (typeof me.onload === "function") { @@ -2482,17 +2499,17 @@ FileReader.prototype.readAsDataURL = function(file) { // Error callback function(e) { // If DONE (cancelled), then don't do anything - if (me.readyState === FileReader.DONE) { + if (me._readyState === FileReader.DONE) { return; } // DONE state - me.readyState = FileReader.DONE; + me._readyState = FileReader.DONE; - me.result = null; + me._result = null; // Save error - me.error = new FileError(e); + me._error = new FileError(e); // If onerror callback if (typeof me.onerror === "function") { @@ -2503,7 +2520,7 @@ FileReader.prototype.readAsDataURL = function(file) { if (typeof me.onloadend === "function") { me.onloadend(new ProgressEvent("loadend", {target:me})); } - }, "File", "readAsDataURL", [this.fileName]); + }, "File", "readAsDataURL", execArgs); }; /** @@ -2512,8 +2529,12 @@ FileReader.prototype.readAsDataURL = function(file) { * @param file {File} File object containing file properties */ FileReader.prototype.readAsBinaryString = function(file) { + if (initRead(this, file)) { + return this._realReader.readAsBinaryString(file); + } // TODO - Can't return binary data to browser. console.log('method "readAsBinaryString" is not supported at this time.'); + this.abort(); }; /** @@ -2522,8 +2543,12 @@ FileReader.prototype.readAsBinaryString = function(file) { * @param file {File} File object containing file properties */ FileReader.prototype.readAsArrayBuffer = function(file) { + if (initRead(this, file)) { + return this._realReader.readAsArrayBuffer(file); + } // TODO - Can't return binary data to browser. console.log('This method is not supported at this time.'); + this.abort(); }; module.exports = FileReader; @@ -2556,7 +2581,8 @@ module.exports = FileSystem; // file: lib/common/plugin/FileTransfer.js define("cordova/plugin/FileTransfer", function(require, exports, module) { -var exec = require('cordova/exec'), +var argscheck = require('cordova/argscheck'), + exec = require('cordova/exec'), FileTransferError = require('cordova/plugin/FileTransferError'), ProgressEvent = require('cordova/plugin/ProgressEvent'); @@ -2590,8 +2616,7 @@ var FileTransfer = function() { * @param trustAllHosts {Boolean} Optional trust all hosts (e.g. for self-signed certs), defaults to false */ FileTransfer.prototype.upload = function(filePath, server, successCallback, errorCallback, options, trustAllHosts) { - // sanity parameter checking - if (!filePath || !server) throw new Error("FileTransfer.upload requires filePath and server URL parameters at the minimum."); + argscheck.checkArgs('ssFFO*', 'FileTransfer.upload', arguments); // check for options var fileKey = null; var fileName = null; @@ -2615,7 +2640,7 @@ FileTransfer.prototype.upload = function(filePath, server, successCallback, erro } } - var fail = function(e) { + var fail = errorCallback && function(e) { var error = new FileTransferError(e.code, e.source, e.target, e.http_status); errorCallback(error); }; @@ -2624,10 +2649,10 @@ FileTransfer.prototype.upload = function(filePath, server, successCallback, erro var win = function(result) { if (typeof result.lengthComputable != "undefined") { if (self.onprogress) { - return self.onprogress(newProgressEvent(result)); + self.onprogress(newProgressEvent(result)); } } else { - return successCallback(result); + successCallback && successCallback(result); } }; exec(win, fail, 'FileTransfer', 'upload', [filePath, server, fileKey, fileName, mimeType, params, trustAllHosts, chunkedMode, headers, this._id]); @@ -2642,15 +2667,14 @@ FileTransfer.prototype.upload = function(filePath, server, successCallback, erro * @param trustAllHosts {Boolean} Optional trust all hosts (e.g. for self-signed certs), defaults to false */ FileTransfer.prototype.download = function(source, target, successCallback, errorCallback, trustAllHosts) { - // sanity parameter checking - if (!source || !target) throw new Error("FileTransfer.download requires source URI and target URI parameters at the minimum."); + argscheck.checkArgs('ssFF*', 'FileTransfer.download', arguments); var self = this; var win = function(result) { if (typeof result.lengthComputable != "undefined") { if (self.onprogress) { return self.onprogress(newProgressEvent(result)); } - } else { + } else if (successCallback) { var entry = null; if (result.isDirectory) { entry = new (require('cordova/plugin/DirectoryEntry'))(); @@ -2666,7 +2690,7 @@ FileTransfer.prototype.download = function(source, target, successCallback, erro } }; - var fail = function(e) { + var fail = errorCallback && function(e) { var error = new FileTransferError(e.code, e.source, e.target, e.http_status); errorCallback(error); }; @@ -3062,55 +3086,48 @@ module.exports = GlobalizationError; define("cordova/plugin/InAppBrowser", function(require, exports, module) { var exec = require('cordova/exec'); +var channel = require('cordova/channel'); -function InAppBrowser() -{ - var _channel = require('cordova/channel'); +function InAppBrowser() { this.channels = { - 'loadstart': _channel.create('loadstart'), - 'loadstop' : _channel.create('loadstop'), - 'exit' : _channel.create('exit') + 'loadstart': channel.create('loadstart'), + 'loadstop' : channel.create('loadstop'), + 'exit' : channel.create('exit') }; } -InAppBrowser.prototype._eventHandler = function(event) -{ - if (event.type in this.channels) { - this.channels[event.type].fire(event); +InAppBrowser.prototype = { + _eventHandler: function (event) { + if (event.type in this.channels) { + this.channels[event.type].fire(event); + } + }, + close: function (eventname) { + exec(null, null, "InAppBrowser", "close", []); + }, + addEventListener: function (eventname,f) { + if (eventname in this.channels) { + this.channels[eventname].subscribe(f); + } + }, + removeEventListener: function(eventname, f) { + if (eventname in this.channels) { + this.channels[eventname].unsubscribe(f); + } } -} +}; -InAppBrowser.open = function(strUrl, strWindowName, strWindowFeatures) -{ +module.exports = function(strUrl, strWindowName, strWindowFeatures) { var iab = new InAppBrowser(); var cb = function(eventname) { iab._eventHandler(eventname); - } + }; exec(cb, null, "InAppBrowser", "open", [strUrl, strWindowName, strWindowFeatures]); return iab; -} - -InAppBrowser.prototype.close = function(eventname, f) -{ - exec(null, null, "InAppBrowser", "close", []); -} - -InAppBrowser.prototype.addEventListener = function(eventname, f) -{ - if (eventname in this.channels) { - this.channels[eventname].subscribe(f); - } -} - -InAppBrowser.prototype.removeEventListener = function(eventname, f) -{ - if (eventname in this.channels) { - this.channels[eventname].unsubscribe(f); - } -} - -module.exports = InAppBrowser.open; +}; +//Export the original open so it can be used if needed +module.exports._orig = window.open; }); @@ -3136,7 +3153,8 @@ module.exports = LocalFileSystem; // file: lib/common/plugin/Media.js define("cordova/plugin/Media", function(require, exports, module) { -var utils = require('cordova/utils'), +var argscheck = require('cordova/argscheck'), + utils = require('cordova/utils'), exec = require('cordova/exec'); var mediaObjects = {}; @@ -3154,25 +3172,7 @@ var mediaObjects = {}; * statusCallback(int statusCode) - OPTIONAL */ var Media = function(src, successCallback, errorCallback, statusCallback) { - - // successCallback optional - if (successCallback && (typeof successCallback !== "function")) { - console.log("Media Error: successCallback is not a function"); - return; - } - - // errorCallback optional - if (errorCallback && (typeof errorCallback !== "function")) { - console.log("Media Error: errorCallback is not a function"); - return; - } - - // statusCallback optional - if (statusCallback && (typeof statusCallback !== "function")) { - console.log("Media Error: statusCallback is not a function"); - return; - } - + argscheck.checkArgs('SFFF', 'Media', arguments); this.id = utils.createUUID(); mediaObjects[this.id] = this; this.src = src; @@ -3316,12 +3316,12 @@ Media.onStatus = function(id, msgType, value) { media._position = Number(value); break; default : - console && console.error && console.error("Unhandled Media.onStatus :: " + msgType); + console.error && console.error("Unhandled Media.onStatus :: " + msgType); break; } } else { - console && console.error && console.error("Received Media.onStatus callback for unknown media :: " + id); + console.error && console.error("Received Media.onStatus callback for unknown media :: " + id); } }; @@ -4323,7 +4323,7 @@ Device.prototype.getDeviceInfo = function(success, fail, args) { me.platform = os_vendor + " " + os_name; me.version = os_version; me.uuid = uuid; - me.cordova = "2.3.0"; + me.cordova = "2.4.0rc1"; success(me); } }; @@ -4914,12 +4914,52 @@ var exec = require('cordova/exec'); */ module.exports = function(successCallback, errorCallback, message, forceAsync) { var action = forceAsync ? 'echoAsync' : 'echo'; + if (!forceAsync && message.constructor == ArrayBuffer) { + action = 'echoArrayBuffer'; + } exec(successCallback, errorCallback, "Echo", action, [message]); }; }); +// file: lib/common/plugin/file/symbols.js +define("cordova/plugin/file/symbols", function(require, exports, module) { + + +var modulemapper = require('cordova/modulemapper'), + symbolshelper = require('cordova/plugin/file/symbolshelper'); + +symbolshelper(modulemapper.defaults); + +}); + +// file: lib/common/plugin/file/symbolshelper.js +define("cordova/plugin/file/symbolshelper", function(require, exports, module) { + +module.exports = function(exportFunc) { + exportFunc('cordova/plugin/DirectoryEntry', 'DirectoryEntry'); + exportFunc('cordova/plugin/DirectoryReader', 'DirectoryReader'); + exportFunc('cordova/plugin/Entry', 'Entry'); + exportFunc('cordova/plugin/File', 'File'); + exportFunc('cordova/plugin/FileEntry', 'FileEntry'); + exportFunc('cordova/plugin/FileError', 'FileError'); + exportFunc('cordova/plugin/FileReader', 'FileReader'); + exportFunc('cordova/plugin/FileSystem', 'FileSystem'); + exportFunc('cordova/plugin/FileTransfer', 'FileTransfer'); + exportFunc('cordova/plugin/FileTransferError', 'FileTransferError'); + exportFunc('cordova/plugin/FileUploadOptions', 'FileUploadOptions'); + exportFunc('cordova/plugin/FileUploadResult', 'FileUploadResult'); + exportFunc('cordova/plugin/FileWriter', 'FileWriter'); + exportFunc('cordova/plugin/Flags', 'Flags'); + exportFunc('cordova/plugin/LocalFileSystem', 'LocalFileSystem'); + exportFunc('cordova/plugin/Metadata', 'Metadata'); + exportFunc('cordova/plugin/requestFileSystem', 'requestFileSystem'); + exportFunc('cordova/plugin/resolveLocalFileSystemURI', 'resolveLocalFileSystemURI'); +}; + +}); + // file: lib/common/plugin/geolocation.js define("cordova/plugin/geolocation", function(require, exports, module) { @@ -5973,16 +6013,31 @@ define("cordova/utils", function(require, exports, module) { var utils = exports; /** - * Defines a property getter for obj[key]. + * Defines a property getter / setter for obj[key]. */ -utils.defineGetter = function(obj, key, func) { +utils.defineGetterSetter = function(obj, key, getFunc, opt_setFunc) { if (Object.defineProperty) { - Object.defineProperty(obj, key, { get: func }); + var desc = { + get: getFunc, + configurable: true + }; + if (opt_setFunc) { + desc.set = opt_setFunc; + } + Object.defineProperty(obj, key, desc); } else { - obj.__defineGetter__(key, func); + obj.__defineGetter__(key, getFunc); + if (opt_setFunc) { + obj.__defineSetter__(key, opt_setFunc); + } } }; +/** + * Defines a property getter for obj[key]. + */ +utils.defineGetter = utils.defineGetterSetter; + utils.arrayIndexOf = function(a, item) { if (a.indexOf) { return a.indexOf(item); @@ -6007,18 +6062,22 @@ utils.arrayRemove = function(a, item) { return index != -1; }; +utils.typeName = function(val) { + return Object.prototype.toString.call(val).slice(8, -1); +}; + /** * Returns an indication of whether the argument is an array or not */ utils.isArray = function(a) { - return Object.prototype.toString.call(a) == '[object Array]'; + return utils.typeName(a) == 'Array'; }; /** * Returns an indication of whether the argument is a Date or not */ utils.isDate = function(d) { - return Object.prototype.toString.call(d) == '[object Date]'; + return utils.typeName(d) == 'Date'; }; /** @@ -6203,7 +6262,7 @@ window.cordova = require('cordova'); // 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 (context.navigator) { - function CordovaNavigator() {} + var CordovaNavigator = function() {}; CordovaNavigator.prototype = context.navigator; context.navigator = new CordovaNavigator(); } http://git-wip-us.apache.org/repos/asf/cordova-bada-wac/blob/400e92db/VERSION ---------------------------------------------------------------------- diff --git a/VERSION b/VERSION index 276cbf9..2eca156 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.3.0 +2.4.0rc1