From 08a32272d37174b15d9e53cb2c2ca1ff2bfdc5d0 Mon Sep 17 00:00:00 2001 From: Fil Maj Date: Thu, 10 May 2012 16:40:41 -0700 Subject: [PATCH 1/3] [CB-683] Pause and resume events should route through fireDocumentEvent so we get the event object passed into the handler --- framework/src/org/apache/cordova/DroidGap.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/framework/src/org/apache/cordova/DroidGap.java b/framework/src/org/apache/cordova/DroidGap.java index 107eb52a..5e2586d0 100755 --- a/framework/src/org/apache/cordova/DroidGap.java +++ b/framework/src/org/apache/cordova/DroidGap.java @@ -813,7 +813,7 @@ public class DroidGap extends Activity implements CordovaInterface { } // Send pause event to JavaScript - this.appView.loadUrl("javascript:try{cordova.require('cordova/channel').onPause.fire();}catch(e){console.log('exception firing pause event from native');};"); + this.appView.loadUrl("javascript:try{cordova.fireDocumentEvent('pause');}catch(e){console.log('exception firing pause event from native');};"); // Forward to plugins if (this.pluginManager != null) { @@ -858,7 +858,7 @@ public class DroidGap extends Activity implements CordovaInterface { } // Send resume event to JavaScript - this.appView.loadUrl("javascript:try{cordova.require('cordova/channel').onResume.fire();}catch(e){console.log('exception firing resume event from native');};"); + this.appView.loadUrl("javascript:try{cordova.fireDocumentEvent('resume');}catch(e){console.log('exception firing resume event from native');};"); // Forward to plugins if (this.pluginManager != null) { From 6a628f7f2d886f8e1bc146c2beab21d02096e068 Mon Sep 17 00:00:00 2001 From: Fil Maj Date: Thu, 10 May 2012 16:43:08 -0700 Subject: [PATCH 2/3] [CB-683] updating JS for fix for 683 --- framework/assets/js/cordova.android.js | 55 +++++++++++++++----------- framework/project.properties | 2 +- 2 files changed, 33 insertions(+), 24 deletions(-) diff --git a/framework/assets/js/cordova.android.js b/framework/assets/js/cordova.android.js index 402de0c0..7bb06c2f 100644 --- a/framework/assets/js/cordova.android.js +++ b/framework/assets/js/cordova.android.js @@ -1,6 +1,6 @@ -// commit a5f0a62f9a9dc5fd7af95ec3d09b6b17c0b89b44 +// commit facaa38a0bd924aa15c14c372537c00382f1e593 -// File generated at :: Mon May 07 2012 16:20:11 GMT-0700 (PDT) +// File generated at :: Thu May 10 2012 16:39:13 GMT-0700 (PDT) /* Licensed to the Apache Software Foundation (ASF) under one @@ -98,17 +98,7 @@ var documentEventHandlers = {}, document.addEventListener = function(evt, handler, capture) { var e = evt.toLowerCase(); - if (e == 'deviceready') { - channel.onDeviceReady.subscribeOnce(handler); - } else if (e == 'resume') { - channel.onResume.subscribe(handler); - // if subscribing listener after event has already fired, invoke the handler - if (channel.onResume.fired && typeof handler == 'function') { - handler(); - } - } else if (e == 'pause') { - channel.onPause.subscribe(handler); - } else if (typeof documentEventHandlers[e] != 'undefined') { + if (typeof documentEventHandlers[e] != 'undefined') { documentEventHandlers[e].subscribe(handler); } else { m_document_addEventListener.call(document, evt, handler, capture); @@ -126,13 +116,8 @@ window.addEventListener = function(evt, handler, capture) { document.removeEventListener = function(evt, handler, capture) { var e = evt.toLowerCase(); - // Check for pause/resume events first. - if (e == 'resume') { - channel.onResume.unsubscribe(handler); - } else if (e == 'pause') { - channel.onPause.unsubscribe(handler); // If unsubcribing from an event that is handled by a plugin - } else if (typeof documentEventHandlers[e] != "undefined") { + if (typeof documentEventHandlers[e] != "undefined") { documentEventHandlers[e].unsubscribe(handler); } else { m_document_removeEventListener.call(document, evt, handler, capture); @@ -318,6 +303,11 @@ var cordova = { } }; +// Register pause, resume and deviceready channels as events on document. +channel.onPause = cordova.addDocumentEventHandler('pause'); +channel.onResume = cordova.addDocumentEventHandler('resume'); +channel.onDeviceReady = cordova.addDocumentEventHandler('deviceready'); + // Adds deprecation warnings to functions of an object (but only logs a message once) function deprecateFunctions(obj, objLabel) { var newObj = {}; @@ -645,10 +635,13 @@ Channel.prototype.unsubscribe = function(g) { if (g === null || g === undefined) { throw "You must pass _something_ into Channel.unsubscribe"; } if (typeof g == 'function') { g = g.observer_guid; } - this.handlers[g] = null; - delete this.handlers[g]; - this.numHandlers--; - if (this.events.onUnsubscribe) this.events.onUnsubscribe.call(this); + var handler = this.handlers[g]; + if (handler) { + this.handlers[g] = null; + delete this.handlers[g]; + this.numHandlers--; + if (this.events.onUnsubscribe) this.events.onUnsubscribe.call(this); + } }; /** @@ -1145,6 +1138,7 @@ module.exports = { } } }; + }); // file: lib/common/plugin/Acceleration.js @@ -1986,6 +1980,21 @@ Entry.prototype.getMetadata = function(successCallback, errorCallback) { exec(success, fail, "File", "getMetadata", [this.fullPath]); }; +/** + * Set the metadata of the entry. + * + * @param successCallback + * {Function} is called with a Metadata object + * @param errorCallback + * {Function} is called with a FileError + * @param metadataObject + * {Object} keys and values to set + */ +Entry.prototype.setMetadata = function(successCallback, errorCallback, metadataObject) { + + exec(successCallback, errorCallback, "File", "setMetadata", [this.fullPath, metadataObject]); +}; + /** * Move a file or directory to a new location. * diff --git a/framework/project.properties b/framework/project.properties index 247ca66e..276f1305 100644 --- a/framework/project.properties +++ b/framework/project.properties @@ -10,5 +10,5 @@ # Indicates whether an apk should be generated for each density. split.density=false # Project target. -target=android-14 +target=Google Inc.:Google APIs:15 apk-configurations= From eb66eb02cb9b06a2bbc17269a8d98d9ac641a2d2 Mon Sep 17 00:00:00 2001 From: macdonst Date: Fri, 11 May 2012 16:43:00 -0400 Subject: [PATCH 3/3] Switch to using stripFileProtocol in FileUtils.notifyDelete --- framework/src/org/apache/cordova/FileUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/src/org/apache/cordova/FileUtils.java b/framework/src/org/apache/cordova/FileUtils.java index c8a45cb4..c7d02804 100755 --- a/framework/src/org/apache/cordova/FileUtils.java +++ b/framework/src/org/apache/cordova/FileUtils.java @@ -220,7 +220,7 @@ public class FileUtils extends Plugin { * @param filePath the path to check */ private void notifyDelete(String filePath) { - String newFilePath = filePath.substring(7); + String newFilePath = stripFileProtocol(filePath); int result = this.ctx.getContentResolver().delete(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, MediaStore.Images.Media.DATA + " = ?", new String[] {newFilePath});