summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteve Block <steveblock@google.com>2011-11-16 06:30:55 -0800
committerAndroid (Google) Code Review <android-gerrit@google.com>2011-11-16 06:30:55 -0800
commit862c2f5275cb6e8baed5c53d3f2742740f8909a8 (patch)
treefc65566a6f27a3b1e7c52fe7299acff09d8885ee
parent45047a11ae85361a40082ba41ee9b8fa19f3e039 (diff)
parent286788c3aaf2092b3f582acd113bdfee5eea8de0 (diff)
downloadframeworks_base-862c2f5275cb6e8baed5c53d3f2742740f8909a8.zip
frameworks_base-862c2f5275cb6e8baed5c53d3f2742740f8909a8.tar.gz
frameworks_base-862c2f5275cb6e8baed5c53d3f2742740f8909a8.tar.bz2
Merge changes I2c304952,Ic04bbd69,Ibbac2268
* changes: Update Java Bridge test for coercing JavaScript String to Java char in an array Add tests for multidimensional arrays in WebView's Java Bridge Fix tests for methods returning arrays in WebView's Java Bridge
-rw-r--r--tests/WebViewTests/src/com/android/webviewtests/JavaBridgeArrayCoercionTest.java4
-rw-r--r--tests/WebViewTests/src/com/android/webviewtests/JavaBridgeArrayTest.java56
2 files changed, 45 insertions, 15 deletions
diff --git a/tests/WebViewTests/src/com/android/webviewtests/JavaBridgeArrayCoercionTest.java b/tests/WebViewTests/src/com/android/webviewtests/JavaBridgeArrayCoercionTest.java
index 5aba764..c2bbdf5 100644
--- a/tests/WebViewTests/src/com/android/webviewtests/JavaBridgeArrayCoercionTest.java
+++ b/tests/WebViewTests/src/com/android/webviewtests/JavaBridgeArrayCoercionTest.java
@@ -411,9 +411,9 @@ public class JavaBridgeArrayCoercionTest extends JavaBridgeTestBase {
executeJavaScript("testObject.setByteArray([\"+042.10\"]);");
assertEquals(0, mTestObject.waitForByteArray()[0]);
- // LIVECONNECT_COMPLIANCE: Should use valueOf() of appropriate type.
+ // LIVECONNECT_COMPLIANCE: Should decode and convert to numeric char value.
executeJavaScript("testObject.setCharArray([\"+042.10\"]);");
- assertEquals('+', mTestObject.waitForCharArray()[0]);
+ assertEquals(0, mTestObject.waitForCharArray()[0]);
// LIVECONNECT_COMPLIANCE: Should use valueOf() of appropriate type.
executeJavaScript("testObject.setShortArray([\"+042.10\"]);");
diff --git a/tests/WebViewTests/src/com/android/webviewtests/JavaBridgeArrayTest.java b/tests/WebViewTests/src/com/android/webviewtests/JavaBridgeArrayTest.java
index 51dd80d..98f2391 100644
--- a/tests/WebViewTests/src/com/android/webviewtests/JavaBridgeArrayTest.java
+++ b/tests/WebViewTests/src/com/android/webviewtests/JavaBridgeArrayTest.java
@@ -39,6 +39,9 @@ public class JavaBridgeArrayTest extends JavaBridgeTestBase {
private String mStringValue;
private int[] mIntArray;
+ private int[][] mIntIntArray;
+
+ private boolean mWasArrayMethodCalled;
public synchronized void setBooleanValue(boolean x) {
mBooleanValue = x;
@@ -70,17 +73,27 @@ public class JavaBridgeArrayTest extends JavaBridgeTestBase {
mIntArray = x;
notifyResultIsReady();
}
+ public synchronized void setIntIntArray(int[][] x) {
+ mIntIntArray = x;
+ notifyResultIsReady();
+ }
public synchronized int[] waitForIntArray() {
waitForResult();
return mIntArray;
}
+ public synchronized int[][] waitForIntIntArray() {
+ waitForResult();
+ return mIntIntArray;
+ }
- public int[] getIntArray() {
+ public synchronized int[] arrayMethod() {
+ mWasArrayMethodCalled = true;
return new int[] {42, 43, 44};
}
- public int[] getEmptyIntArray() {
- return new int[] {};
+
+ public synchronized boolean wasArrayMethodCalled() {
+ return mWasArrayMethodCalled;
}
}
@@ -148,6 +161,13 @@ public class JavaBridgeArrayTest extends JavaBridgeTestBase {
assertEquals(0, result[2]);
}
+ public void testNonNumericLengthProperty() throws Throwable {
+ // LIVECONNECT_COMPLIANCE: This should not count as an array, so we
+ // should raise a JavaScript exception.
+ executeJavaScript("testObject.setIntArray({length: \"foo\"});");
+ assertEquals(0, mTestObject.waitForIntArray().length);
+ }
+
public void testSparseArray() throws Throwable {
executeJavaScript("var x = [42, 43]; x[3] = 45; testObject.setIntArray(x);");
int[] result = mTestObject.waitForIntArray();
@@ -160,18 +180,28 @@ public class JavaBridgeArrayTest extends JavaBridgeTestBase {
// Note that this requires being able to pass a boolean from JavaScript to
// Java.
- public void testReturnArray() throws Throwable {
- // LIVECONNECT_COMPLIANCE: Convert to JavaScript array.
- executeJavaScript("testObject.setBooleanValue(undefined === testObject.getIntArray())");
+ public void testMethodReturningArrayNotCalled() throws Throwable {
+ // We don't invoke methods which return arrays, but note that no
+ // exception is raised.
+ // LIVECONNECT_COMPLIANCE: Should call method and convert result to
+ // JavaScript array.
+ executeJavaScript("testObject.setBooleanValue(undefined === testObject.arrayMethod())");
assertTrue(mTestObject.waitForBooleanValue());
+ assertFalse(mTestObject.wasArrayMethodCalled());
}
- // Note that this requires being able to pass a boolean from JavaScript to
- // Java.
- public void testReturnEmptyArray() throws Throwable {
- // LIVECONNECT_COMPLIANCE: Convert to JavaScript array.
- executeJavaScript(
- "testObject.setBooleanValue(undefined === testObject.getEmptyIntArray())");
- assertTrue(mTestObject.waitForBooleanValue());
+ public void testMultiDimensionalArrayMethod() throws Throwable {
+ // LIVECONNECT_COMPLIANCE: Should handle multi-dimensional arrays.
+ executeJavaScript("testObject.setIntIntArray([ [42, 43], [44, 45] ]);");
+ assertNull(mTestObject.waitForIntIntArray());
+ }
+
+ public void testPassMultiDimensionalArray() throws Throwable {
+ // LIVECONNECT_COMPLIANCE: Should handle multi-dimensional arrays.
+ executeJavaScript("testObject.setIntArray([ [42, 43], [44, 45] ]);");
+ int[] result = mTestObject.waitForIntArray();
+ assertEquals(2, result.length);
+ assertEquals(0, result[0]);
+ assertEquals(0, result[1]);
}
}