From 45a7b90c6c1d22291261ccd58e8e3e159a1a1ca6 Mon Sep 17 00:00:00 2001 From: KIHARA Hideto Date: Tue, 2 Jan 2018 12:41:17 +0900 Subject: [PATCH] CB-12218: (android) Fix consistency of null result message Fix problem that JavaScript receives ""(empty string) instead of null if plugin sends null result from new thread. --- .../org/apache/cordova/NativeToJsMessageQueue.java | 3 +++ .../unittests/NativeToJsMessageQueueTest.java | 13 +++++++++++++ 2 files changed, 16 insertions(+) diff --git a/framework/src/org/apache/cordova/NativeToJsMessageQueue.java b/framework/src/org/apache/cordova/NativeToJsMessageQueue.java index a8f59fad..d17b1c43 100755 --- a/framework/src/org/apache/cordova/NativeToJsMessageQueue.java +++ b/framework/src/org/apache/cordova/NativeToJsMessageQueue.java @@ -511,6 +511,9 @@ public class NativeToJsMessageQueue { .append(pluginResult.getMessage()) .append("')"); break; + case PluginResult.MESSAGE_TYPE_NULL: + sb.append("null"); + break; default: sb.append(pluginResult.getMessage()); } diff --git a/test/app/src/test/java/org/apache/cordova/unittests/NativeToJsMessageQueueTest.java b/test/app/src/test/java/org/apache/cordova/unittests/NativeToJsMessageQueueTest.java index e5278949..dc7bb672 100644 --- a/test/app/src/test/java/org/apache/cordova/unittests/NativeToJsMessageQueueTest.java +++ b/test/app/src/test/java/org/apache/cordova/unittests/NativeToJsMessageQueueTest.java @@ -161,4 +161,17 @@ public class NativeToJsMessageQueueTest { assertEquals(result, "cordova.callbackFromNative('37',true,1,[0,1,2,3,4],false);"); } + @Test + public void testNullPopAndEncodeAsJs() + { + NativeToJsMessageQueue queue = new NativeToJsMessageQueue(); + queue.addBridgeMode(new NativeToJsMessageQueue.NoOpBridgeMode()); + queue.setBridgeMode(0); + + PluginResult result = new PluginResult(PluginResult.Status.OK, (String)null); + queue.addPluginResult(result, TEST_CALLBACK_ID); + assertFalse(queue.isEmpty()); + String resultString = queue.popAndEncodeAsJs(); + assertEquals(resultString, "cordova.callbackFromNative('" + TEST_CALLBACK_ID + "',true,1,[null],false);"); + } }