Update the JNI bindings unit test in light of b/2540502

Change-Id: I166331ce198fba188df5365695a20588870374c4
diff --git a/tests/assets/bindings_test.html b/tests/assets/bindings_test.html
index 93dbff1..c20ccec 100755
--- a/tests/assets/bindings_test.html
+++ b/tests/assets/bindings_test.html
@@ -163,6 +163,10 @@
   return true;
 }
 
+function testParameterTypeMismatch() {
+  return JNIBindingsTest.testParameterTypeMismatch("dog");
+}
+
 function appendLog(msg) {
   var log = document.getElementById("status");
   log.innerHTML += "<br/>" + msg;
@@ -221,6 +225,12 @@
     appendLog("getIfaceProperties failed!");
   }
 
+  if (testParameterTypeMismatch()) {
+    appendLog("testParameterTypeMismatch passed!");
+  } else {
+    appendLog("testParameterTypeMismatch failed!");
+  }
+
   JNIBindingsTest.testComplete();
 }
 </script>
diff --git a/tests/src/com/android/browser/JNIBindingsTest.java b/tests/src/com/android/browser/JNIBindingsTest.java
index d2220f6..bfa3ac1 100644
--- a/tests/src/com/android/browser/JNIBindingsTest.java
+++ b/tests/src/com/android/browser/JNIBindingsTest.java
@@ -139,6 +139,7 @@
     public boolean testObjectArray(String[] stringArray, Object[] emptyArray,
             Object[] objectArray) {
         String[] expectedStringArray = {"Hello", "World", "!"};
+        String expectedStringArrayClassName = "[Ljava.lang.String;";
         Object[] expectedObjectArray = {};
 
         try {
@@ -150,10 +151,13 @@
             assertNull(objectArray);
 
             assertEquals(Arrays.toString(expectedStringArray), Arrays.toString(stringArray));
+            assertEquals(expectedStringArrayClassName, stringArray.getClass().getName());
 
             // EMULATE_JSC_BINDINGS
             // assertEquals(Arrays.toString(expectedObjectArray), Arrays.toString(emptyArray));
+            // assertEquals(expectedObjectArrayClassName, emptyArray.getClass().getName());
             // assertEquals(Arrays.toString(expectedObjectArray), Arrays.toString(objectArray));
+            // assertEquals(expectedStringObjectClassName, objectArray.getClass().getName());
 
         } catch (AssertionFailedError e) {
             printAssertionFailed(e);
@@ -177,6 +181,7 @@
         String expectedStringParam = "Hello World";
         int[] expectedIntArray = {1,2,3};
         String[] expectedStringArrayParam = {"foo", "bar", "baz"};
+        String expectedStringArrayClassName = "[Ljava.lang.String;";
 
         try {
             assertEquals(expectedBoolParam, boolParam);
@@ -194,6 +199,7 @@
             assertEquals(Arrays.toString(expectedIntArray), Arrays.toString(intArrayParam));
             assertEquals(Arrays.toString(expectedStringArrayParam),
                     Arrays.toString(stringArrayParam));
+            assertEquals(expectedStringArrayClassName, stringArrayParam.getClass().getName());
             assertNull(objectParam);
         } catch (AssertionFailedError e) {
             printAssertionFailed(e);
@@ -238,6 +244,18 @@
         return true;
     }
 
+    public boolean testParameterTypeMismatch(String[] stringArrayParam) {
+        // The JS test will pass a string, not an array to this test.
+        try {
+            assertNull(stringArrayParam);
+        } catch (AssertionFailedError e) {
+            printAssertionFailed(e);
+            return false;
+        }
+
+        return true;
+    }
+
     public boolean returnBool() { return true; }
     public byte returnByte() { return 1; }
     public char returnChar() { return 'b'; }
diff --git a/tests/src/com/android/browser/JNIBindingsTestApp.java b/tests/src/com/android/browser/JNIBindingsTestApp.java
index cb38cbc..e01aca2 100644
--- a/tests/src/com/android/browser/JNIBindingsTestApp.java
+++ b/tests/src/com/android/browser/JNIBindingsTestApp.java
@@ -53,7 +53,8 @@
             "testObjectMembers passed!\n" +
             "testJSPrimitivesToStringsInJava passed!\n" +
             "testJavaReturnTypes passed!\n" +
-            "getIfaceProperties passed!\n";
+            "getIfaceProperties passed!\n" +
+            "testParameterTypeMismatch passed!\n";
 
 
     private class GetWebKitDataThread extends Thread {