diff --git a/framework/src/org/apache/cordova/AudioHandler.java b/framework/src/org/apache/cordova/AudioHandler.java index 8acb52c0..1de3cfbe 100755 --- a/framework/src/org/apache/cordova/AudioHandler.java +++ b/framework/src/org/apache/cordova/AudioHandler.java @@ -140,8 +140,9 @@ public class AudioHandler extends Plugin { * * @param id The message id * @param data The message data + * @return Object to stop propagation or null */ - public void onMessage(String id, Object data) { + public Object onMessage(String id, Object data) { // If phone message if (id.equals("telephone")) { @@ -167,6 +168,7 @@ public class AudioHandler extends Plugin { this.pausedForPhone.clear(); } } + return null; } //-------------------------------------------------------------------------- diff --git a/framework/src/org/apache/cordova/DroidGap.java b/framework/src/org/apache/cordova/DroidGap.java index 21164e33..aeca772b 100755 --- a/framework/src/org/apache/cordova/DroidGap.java +++ b/framework/src/org/apache/cordova/DroidGap.java @@ -1050,8 +1050,9 @@ public class DroidGap extends Activity implements CordovaInterface { * * @param id The message id * @param data The message data + * @return Object or null */ - public void onMessage(String id, Object data) { + public Object onMessage(String id, Object data) { LOG.d(TAG, "onMessage(" + id + "," + data + ")"); if ("splashscreen".equals(id)) { if ("hide".equals(data.toString())) { @@ -1079,6 +1080,7 @@ public class DroidGap extends Activity implements CordovaInterface { else if ("exit".equals(id)) { this.endActivity(); } + return null; } } diff --git a/framework/src/org/apache/cordova/api/CordovaInterface.java b/framework/src/org/apache/cordova/api/CordovaInterface.java index c4a1925e..fa6e1f8a 100755 --- a/framework/src/org/apache/cordova/api/CordovaInterface.java +++ b/framework/src/org/apache/cordova/api/CordovaInterface.java @@ -73,7 +73,8 @@ public interface CordovaInterface { * * @param id The message id * @param data The message data + * @return Object or null */ - public void onMessage(String id, Object data); + public Object onMessage(String id, Object data); } diff --git a/framework/src/org/apache/cordova/api/IPlugin.java b/framework/src/org/apache/cordova/api/IPlugin.java index 173a304e..e410ac97 100755 --- a/framework/src/org/apache/cordova/api/IPlugin.java +++ b/framework/src/org/apache/cordova/api/IPlugin.java @@ -94,8 +94,9 @@ public interface IPlugin { * * @param id The message id * @param data The message data + * @return Object to stop propagation or null */ - public void onMessage(String id, Object data); + public Object onMessage(String id, Object data); /** * Called when an activity you launched exits, giving you the requestCode you started it with, diff --git a/framework/src/org/apache/cordova/api/Plugin.java b/framework/src/org/apache/cordova/api/Plugin.java index 2e6d462d..871a964f 100755 --- a/framework/src/org/apache/cordova/api/Plugin.java +++ b/framework/src/org/apache/cordova/api/Plugin.java @@ -107,8 +107,10 @@ public abstract class Plugin implements IPlugin { * * @param id The message id * @param data The message data + * @return Object to stop propagation or null */ - public void onMessage(String id, Object data) { + public Object onMessage(String id, Object data) { + return null; } /** diff --git a/framework/src/org/apache/cordova/api/PluginManager.java b/framework/src/org/apache/cordova/api/PluginManager.java index fa40e078..1714eb83 100755 --- a/framework/src/org/apache/cordova/api/PluginManager.java +++ b/framework/src/org/apache/cordova/api/PluginManager.java @@ -314,14 +314,22 @@ public class PluginManager { * * @param id The message id * @param data The message data + * @return */ - public void postMessage(String id, Object data) { - this.ctx.onMessage(id, data); + public Object postMessage(String id, Object data) { + Object obj = this.ctx.onMessage(id, data); + if (obj != null) { + return obj; + } for (PluginEntry entry : this.entries.values()) { if (entry.plugin != null) { - entry.plugin.onMessage(id, data); + obj = entry.plugin.onMessage(id, data); + if (obj != null) { + return obj; + } } } + return null; } /**