From 26ee1c4547933955f2719530d7b42ffef0119f20 Mon Sep 17 00:00:00 2001 From: Andrew Grieve Date: Fri, 30 Jan 2015 11:59:30 -0500 Subject: [PATCH] CB-8389 Allow plugins to handle exit and onReceivedError messages before CordovaInterface Also switches to LinkedHashMap for plugins so that activity can insert a plugin and have it be the first one to receive messages --- .../src/org/apache/cordova/PluginManager.java | 20 +++++-------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/framework/src/org/apache/cordova/PluginManager.java b/framework/src/org/apache/cordova/PluginManager.java index 143b33f1..6990efe9 100755 --- a/framework/src/org/apache/cordova/PluginManager.java +++ b/framework/src/org/apache/cordova/PluginManager.java @@ -19,14 +19,8 @@ package org.apache.cordova; import java.util.Collection; -import java.util.HashMap; +import java.util.LinkedHashMap; -import org.apache.cordova.CordovaWebView; -import org.apache.cordova.CallbackContext; -import org.apache.cordova.CordovaInterface; -import org.apache.cordova.CordovaPlugin; -import org.apache.cordova.PluginEntry; -import org.apache.cordova.PluginResult; import org.json.JSONException; import android.content.Intent; @@ -45,8 +39,8 @@ public class PluginManager { private static final int SLOW_EXEC_WARNING_THRESHOLD = Debug.isDebuggerConnected() ? 60 : 16; // List of service entries - private final HashMap pluginMap = new HashMap(); - private final HashMap entryMap = new HashMap(); + private final LinkedHashMap pluginMap = new LinkedHashMap(); + private final LinkedHashMap entryMap = new LinkedHashMap(); private final CordovaInterface ctx; private final CordovaWebView app; @@ -281,19 +275,15 @@ public class PluginManager { * @return Object to stop propagation or null */ public Object postMessage(String id, Object data) { - Object obj = this.ctx.onMessage(id, data); - if (obj != null) { - return obj; - } for (CordovaPlugin plugin : this.pluginMap.values()) { if (plugin != null) { - obj = plugin.onMessage(id, data); + Object obj = plugin.onMessage(id, data); if (obj != null) { return obj; } } } - return null; + return ctx.onMessage(id, data); } /**