http://git-wip-us.apache.org/repos/asf/incubator-cordova-tizen/blob/aeb33add/framework/cordova.tizen.js ---------------------------------------------------------------------- diff --git a/framework/cordova.tizen.js b/framework/cordova.tizen.js index 3be5eb3..2fd0701 100644 --- a/framework/cordova.tizen.js +++ b/framework/cordova.tizen.js @@ -1,6 +1,6 @@ -// commit 7dd17b00544742d14ecdeff2148a66480680f12b +// commit a290eef8cb6740922a865cdd5d7aa50cc5135ec4 -// File generated at :: Fri Jul 27 2012 11:40:36 GMT+0200 (CEST) +// File generated at :: Fri Aug 24 2012 16:52:04 GMT-0700 (PDT) /* Licensed to the Apache Software Foundation (ASF) under one @@ -29,6 +29,10 @@ var require, (function () { var modules = {}; + // Stack of moduleIds currently being built. + var requireStack = []; + // Map of module ID -> index into requireStack of modules currently being built. + var inProgressModules = {}; function build(module) { var factory = module.factory; @@ -41,8 +45,21 @@ var require, require = function (id) { if (!modules[id]) { throw "module " + id + " not found"; + } else if (id in inProgressModules) { + var cycle = requireStack.slice(inProgressModules[id]).join('->') + '->' + id; + throw "Cycle in require graph: " + cycle; } - return modules[id].factory ? build(modules[id]) : modules[id].exports; + if (modules[id].factory) { + try { + inProgressModules[id] = requireStack.length; + requireStack.push(id); + return build(modules[id]); + } finally { + delete inProgressModules[id]; + requireStack.pop(); + } + } + return modules[id].exports; }; define = function (id, factory) { @@ -67,6 +84,7 @@ if (typeof module === "object" && typeof require === "function") { module.exports.require = require; module.exports.define = define; } + // file: lib/cordova.js define("cordova", function(require, exports, module) { var channel = require('cordova/channel'); @@ -207,10 +225,6 @@ var cordova = { window.dispatchEvent(evt); } }, - // TODO: this is Android only; think about how to do this better - shuttingDown:false, - UsePolling:false, - // END TODO // TODO: iOS only // This queue holds the currently executing command and all pending @@ -404,7 +418,8 @@ module.exports = { // file: lib/common/channel.js define("cordova/channel", function(require, exports, module) { -var utils = require('cordova/utils'); +var utils = require('cordova/utils'), + nextGuid = 1; /** * Custom pub-sub "channel" that can have functions subscribed to it @@ -456,7 +471,6 @@ var Channel = function(type, opts) { this.type = type; this.handlers = {}; this.numHandlers = 0; - this.guid = 1; this.fired = false; this.enabled = true; this.events = { @@ -549,19 +563,19 @@ Channel.prototype.subscribe = function(f, c, g) { g = g || func.observer_guid || f.observer_guid; if (!g) { - // first time we've seen this subscriber - g = this.guid++; - } - else { - // subscriber already handled; dont set it twice - return g; + // first time any channel has seen this subscriber + g = nextGuid++; } func.observer_guid = g; f.observer_guid = g; - this.handlers[g] = func; - this.numHandlers++; - if (this.events.onSubscribe) this.events.onSubscribe.call(this); - if (this.fired) func.call(this); + + // Don't add the same handler more than once. + if (!this.handlers[g]) { + this.handlers[g] = func; + this.numHandlers++; + if (this.events.onSubscribe) this.events.onSubscribe.call(this); + if (this.fired) func.apply(this, this.fireArgs); + } return g; }; @@ -575,15 +589,14 @@ Channel.prototype.subscribeOnce = function(f, c) { var g = null; var _this = this; - var m = function() { - f.apply(c || null, arguments); - _this.unsubscribe(g); - }; if (this.fired) { - if (typeof c == "object") { f = utils.close(c, f); } - f.apply(this, this.fireArgs); + f.apply(c || null, this.fireArgs); } else { - g = this.subscribe(m); + g = this.subscribe(function() { + _this.unsubscribe(g); + f.apply(c || null, arguments); + }); + f.observer_guid = g; } return g; }; @@ -599,7 +612,6 @@ Channel.prototype.unsubscribe = function(g) { var handler = this.handlers[g]; if (handler) { if (handler.observer_guid) handler.observer_guid=null; - this.handlers[g] = null; delete this.handlers[g]; this.numHandlers--; if (this.events.onUnsubscribe) this.events.onUnsubscribe.call(this); @@ -613,14 +625,17 @@ Channel.prototype.fire = function(e) { if (this.enabled) { var fail = false; this.fired = true; + this.fireArgs = arguments; + // Copy the values first so that it is safe to modify it from within + // callbacks. + var toCall = []; for (var item in this.handlers) { - var handler = this.handlers[item]; - if (typeof handler == 'function') { - var rv = (handler.apply(this, arguments)===false); - fail = fail || rv; - } + toCall.push(this.handlers[item]); + } + for (var i = 0; i < toCall.length; ++i) { + var rv = (toCall[i].apply(this, arguments)===false); + fail = fail || rv; } - this.fireArgs = arguments; return !fail; } return true; @@ -880,7 +895,7 @@ define("cordova/exec", function(require, exports, module) { * Execute a cordova command. It is up to the native side whether this action * is synchronous or asynchronous. The native side can return: * Synchronous: PluginResult object as a JSON string - * Asynchrounous: Empty string "" + * Asynchronous: Empty string "" * If async, the native side will cordova.callbackSuccess or cordova.callbackError, * depending upon the result of the action. * @@ -2457,10 +2472,12 @@ FileTransfer.prototype.upload = function(filePath, server, successCallback, erro var mimeType = null; var params = null; var chunkedMode = true; + var headers = null; if (options) { fileKey = options.fileKey; fileName = options.fileName; mimeType = options.mimeType; + headers = options.headers; if (options.chunkedMode !== null || typeof options.chunkedMode != "undefined") { chunkedMode = options.chunkedMode; } @@ -2477,7 +2494,7 @@ FileTransfer.prototype.upload = function(filePath, server, successCallback, erro errorCallback(error); }; - exec(successCallback, fail, 'FileTransfer', 'upload', [filePath, server, fileKey, fileName, mimeType, params, trustAllHosts, chunkedMode]); + exec(successCallback, fail, 'FileTransfer', 'upload', [filePath, server, fileKey, fileName, mimeType, params, trustAllHosts, chunkedMode, headers]); }; /** @@ -2547,15 +2564,19 @@ define("cordova/plugin/FileUploadOptions", function(require, exports, module) { * @param fileName {String} Filename to be used by the server. Defaults to image.jpg. * @param mimeType {String} Mimetype of the uploaded file. Defaults to image/jpeg. * @param params {Object} Object with key: value params to send to the server. + * @param headers {Object} Keys are header names, values are header values. Multiple + * headers of the same name are not supported. */ -var FileUploadOptions = function(fileKey, fileName, mimeType, params) { +var FileUploadOptions = function(fileKey, fileName, mimeType, params, headers) { this.fileKey = fileKey || null; this.fileName = fileName || null; this.mimeType = mimeType || null; this.params = params || null; + this.headers = headers || null; }; module.exports = FileUploadOptions; + }); // file: lib/common/plugin/FileUploadResult.js @@ -2743,7 +2764,7 @@ FileWriter.prototype.seek = function(offset) { if (offset < 0) { this.position = Math.max(offset + this.length, 0); } - // Offset is bigger then file size so set position + // Offset is bigger than file size so set position // to the end of the file. else if (offset > this.length) { this.position = this.length; @@ -2950,7 +2971,6 @@ Media.prototype.stop = function() { var me = this; exec(function() { me._position = 0; - me.successCallback(); }, this.errorCallback, "Media", "stopPlayingAudio", [this.id]); }; @@ -2996,14 +3016,14 @@ Media.prototype.getCurrentPosition = function(success, fail) { * Start recording audio file. */ Media.prototype.startRecord = function() { - exec(this.successCallback, this.errorCallback, "Media", "startRecordingAudio", [this.id, this.src]); + exec(null, this.errorCallback, "Media", "startRecordingAudio", [this.id, this.src]); }; /** * Stop recording audio file. */ Media.prototype.stopRecord = function() { - exec(this.successCallback, this.errorCallback, "Media", "stopRecordingAudio", [this.id]); + exec(null, this.errorCallback, "Media", "stopRecordingAudio", [this.id]); }; /** @@ -3032,14 +3052,14 @@ Media.onStatus = function(id, msg, value) { var media = mediaObjects[id]; // If state update if (msg === Media.MEDIA_STATE) { + if (media.statusCallback) { + media.statusCallback(value); + } if (value === Media.MEDIA_STOPPED) { if (media.successCallback) { media.successCallback(); } } - if (media.statusCallback) { - media.statusCallback(value); - } } else if (msg === Media.MEDIA_DURATION) { media._duration = value; @@ -3113,28 +3133,6 @@ MediaFile.prototype.getFormatData = function(successCallback, errorCallback) { } }; -// TODO: can we axe this? -/** - * Casts a PluginResult message property (array of objects) to an array of MediaFile objects - * (used in Objective-C and Android) - * - * @param {PluginResult} pluginResult - */ -MediaFile.cast = function(pluginResult) { - var mediaFiles = []; - for (var i=0; i<pluginResult.message.length; i++) { - var mediaFile = new MediaFile(); - mediaFile.name = pluginResult.message[i].name; - mediaFile.fullPath = pluginResult.message[i].fullPath; - mediaFile.type = pluginResult.message[i].type; - mediaFile.lastModifiedDate = pluginResult.message[i].lastModifiedDate; - mediaFile.size = pluginResult.message[i].size; - mediaFiles.push(mediaFile); - } - pluginResult.message = mediaFiles; - return pluginResult; -}; - module.exports = MediaFile; }); @@ -3393,7 +3391,7 @@ var accelerometer = { if (running) { // If we're already running then immediately invoke the success callback - // but only if we have retreived a value, sample code does not check for null ... + // but only if we have retrieved a value, sample code does not check for null ... if(accel) { successCallback(accel); } @@ -3911,7 +3909,7 @@ var contacts = { * This function creates a new contact, but it does not persist the contact * to device storage. To persist the contact to device storage, invoke * contact.save(). - * @param properties an object who's properties will be examined to create a new Contact + * @param properties an object whose properties will be examined to create a new Contact * @returns new Contact object */ create:function(properties) { @@ -3998,6 +3996,25 @@ module.exports = new Device(); }); +// file: lib/common/plugin/echo.js +define("cordova/plugin/echo", function(require, exports, module) { +var exec = require('cordova/exec'); + +/** + * Sends the given message through exec() to the Echo plugink, which sends it back to the successCallback. + * @param successCallback invoked with a FileSystem object + * @param errorCallback invoked if error occurs retrieving file system + * @param message The string to be echoed. + * @param forceAsync Whether to force an async return value (for testing native->js bridge). + */ +module.exports = function(successCallback, errorCallback, message, forceAsync) { + var action = forceAsync ? 'echoAsync' : 'echo'; + exec(successCallback, errorCallback, "Echo", action, [message]); +}; + + +}); + // file: lib/common/plugin/geolocation.js define("cordova/plugin/geolocation", function(require, exports, module) { var utils = require('cordova/utils'), @@ -4106,7 +4123,7 @@ var geolocation = { } else if (options.timeout === 0) { fail({ code:PositionError.TIMEOUT, - message:"timeout value in PositionOptions set to 0 and no cached Position object available, or cached Position object's age exceed's provided PositionOptions' maximumAge parameter." + message:"timeout value in PositionOptions set to 0 and no cached Position object available, or cached Position object's age exceeds provided PositionOptions' maximumAge parameter." }); // Otherwise we have to call into native to retrieve a position. } else { @@ -4270,7 +4287,7 @@ CurrentLevel = LevelsMap.WARN; * * The value used determines which messages get printed. The logging * values above are in order, and only messages logged at the logging - * level or above will actually be displayed to the user. Eg, the + * level or above will actually be displayed to the user. E.g., the * default level is WARN, so only messages logged with LOG, ERROR, or * WARN will be displayed; INFO and DEBUG messages will be ignored. */ @@ -5782,7 +5799,7 @@ function Device() { this.version = null; this.uuid = null; this.name = null; - this.cordova = "2.0.0"; + this.cordova = "2.1.0rc1"; this.platform = "Tizen"; var me = this; @@ -6628,7 +6645,7 @@ module.exports = { navigator.vibrate(milliseconds); } else { - console.log ("cordova/plugin/tizen/Notification, vibrate API does not exists"); + console.log ("cordova/plugin/tizen/Notification, vibrate API does not exist"); } },
http://git-wip-us.apache.org/repos/asf/incubator-cordova-tizen/blob/aeb33add/framework/index.html ---------------------------------------------------------------------- diff --git a/framework/index.html b/framework/index.html index 5dff21e..64d4e5d 100644 --- a/framework/index.html +++ b/framework/index.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <script src="cordova-1.7.0.js"></script> + <script src="cordova-2.1.0.js"></script> <link rel="stylesheet" type="text/css" href="tizen.css" /> </head>