Index: content/public/android/javatests/src/org/chromium/content/browser/JavaBridgeCoercionTest.java |
diff --git a/content/public/android/javatests/src/org/chromium/content/browser/JavaBridgeCoercionTest.java b/content/public/android/javatests/src/org/chromium/content/browser/JavaBridgeCoercionTest.java |
deleted file mode 100644 |
index 3afe250e214688565ff44b288ba4b39e97d9caea..0000000000000000000000000000000000000000 |
--- a/content/public/android/javatests/src/org/chromium/content/browser/JavaBridgeCoercionTest.java |
+++ /dev/null |
@@ -1,665 +0,0 @@ |
-// Copyright 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-package org.chromium.content.browser; |
- |
-import android.test.suitebuilder.annotation.SmallTest; |
- |
-import org.chromium.base.test.util.Feature; |
- |
-/** |
- * Part of the test suite for the Java Bridge. This class tests that |
- * we correctly convert JavaScript values to Java values when passing them to |
- * the methods of injected Java objects. |
- * |
- * The conversions should follow |
- * http://jdk6.java.net/plugin2/liveconnect/#JS_JAVA_CONVERSIONS. Places in |
- * which the implementation differs from the spec are marked with |
- * LIVECONNECT_COMPLIANCE. |
- * FIXME: Consider making our implementation more compliant, if it will not |
- * break backwards-compatibility. See b/4408210. |
- */ |
-public class JavaBridgeCoercionTest extends JavaBridgeTestBase { |
- private class TestObject extends Controller { |
- private Object objectInstance; |
- private CustomType customTypeInstance; |
- private CustomType2 customType2Instance; |
- |
- private boolean mBooleanValue; |
- private byte mByteValue; |
- private char mCharValue; |
- private short mShortValue; |
- private int mIntValue; |
- private long mLongValue; |
- private float mFloatValue; |
- private double mDoubleValue; |
- private String mStringValue; |
- private Object mObjectValue; |
- private CustomType mCustomTypeValue; |
- |
- public TestObject() { |
- objectInstance = new Object(); |
- customTypeInstance = new CustomType(); |
- customType2Instance = new CustomType2(); |
- } |
- |
- public Object getObjectInstance() { |
- return objectInstance; |
- } |
- public CustomType getCustomTypeInstance() { |
- return customTypeInstance; |
- } |
- public CustomType2 getCustomType2Instance() { |
- return customType2Instance; |
- } |
- |
- public synchronized void setBooleanValue(boolean x) { |
- mBooleanValue = x; |
- notifyResultIsReady(); |
- } |
- public synchronized void setByteValue(byte x) { |
- mByteValue = x; |
- notifyResultIsReady(); |
- } |
- public synchronized void setCharValue(char x) { |
- mCharValue = x; |
- notifyResultIsReady(); |
- } |
- public synchronized void setShortValue(short x) { |
- mShortValue = x; |
- notifyResultIsReady(); |
- } |
- public synchronized void setIntValue(int x) { |
- mIntValue = x; |
- notifyResultIsReady(); |
- } |
- public synchronized void setLongValue(long x) { |
- mLongValue = x; |
- notifyResultIsReady(); |
- } |
- public synchronized void setFloatValue(float x) { |
- mFloatValue = x; |
- notifyResultIsReady(); |
- } |
- public synchronized void setDoubleValue(double x) { |
- mDoubleValue = x; |
- notifyResultIsReady(); |
- } |
- public synchronized void setStringValue(String x) { |
- mStringValue = x; |
- notifyResultIsReady(); |
- } |
- public synchronized void setObjectValue(Object x) { |
- mObjectValue = x; |
- notifyResultIsReady(); |
- } |
- public synchronized void setCustomTypeValue(CustomType x) { |
- mCustomTypeValue = x; |
- notifyResultIsReady(); |
- } |
- |
- public synchronized boolean waitForBooleanValue() { |
- waitForResult(); |
- return mBooleanValue; |
- } |
- public synchronized byte waitForByteValue() { |
- waitForResult(); |
- return mByteValue; |
- } |
- public synchronized char waitForCharValue() { |
- waitForResult(); |
- return mCharValue; |
- } |
- public synchronized short waitForShortValue() { |
- waitForResult(); |
- return mShortValue; |
- } |
- public synchronized int waitForIntValue() { |
- waitForResult(); |
- return mIntValue; |
- } |
- public synchronized long waitForLongValue() { |
- waitForResult(); |
- return mLongValue; |
- } |
- public synchronized float waitForFloatValue() { |
- waitForResult(); |
- return mFloatValue; |
- } |
- public synchronized double waitForDoubleValue() { |
- waitForResult(); |
- return mDoubleValue; |
- } |
- public synchronized String waitForStringValue() { |
- waitForResult(); |
- return mStringValue; |
- } |
- public synchronized Object waitForObjectValue() { |
- waitForResult(); |
- return mObjectValue; |
- } |
- public synchronized CustomType waitForCustomTypeValue() { |
- waitForResult(); |
- return mCustomTypeValue; |
- } |
- } |
- |
- // Two custom types used when testing passing objects. |
- private static class CustomType { |
- } |
- private static class CustomType2 { |
- } |
- |
- private TestObject mTestObject; |
- |
- @Override |
- protected void setUp() throws Exception { |
- super.setUp(); |
- mTestObject = new TestObject(); |
- setUpContentView(mTestObject, "testObject"); |
- } |
- |
- // Test passing a 32-bit integer JavaScript number to a method of an |
- // injected object. Note that JavaScript may choose to represent these |
- // values as either 32-bit integers or doubles, though this should not |
- // affect the result. |
- @SmallTest |
- @Feature({"AndroidWebView", "Android-JavaBridge"}) |
- public void testPassNumberInt32() throws Throwable { |
- executeJavaScript("testObject.setByteValue(42);"); |
- assertEquals(42, mTestObject.waitForByteValue()); |
- executeJavaScript("testObject.setByteValue(" + Byte.MAX_VALUE + " + 42);"); |
- assertEquals(Byte.MIN_VALUE + 42 - 1, mTestObject.waitForByteValue()); |
- |
- // LIVECONNECT_COMPLIANCE: Should convert to numeric char value. |
- executeJavaScript("testObject.setCharValue(42);"); |
- assertEquals('\u0000', mTestObject.waitForCharValue()); |
- |
- executeJavaScript("testObject.setShortValue(42);"); |
- assertEquals(42, mTestObject.waitForShortValue()); |
- executeJavaScript("testObject.setShortValue(" + Short.MAX_VALUE + " + 42);"); |
- assertEquals(Short.MIN_VALUE + 42 - 1, mTestObject.waitForShortValue()); |
- |
- executeJavaScript("testObject.setIntValue(42);"); |
- assertEquals(42, mTestObject.waitForIntValue()); |
- |
- executeJavaScript("testObject.setLongValue(42);"); |
- assertEquals(42L, mTestObject.waitForLongValue()); |
- |
- executeJavaScript("testObject.setFloatValue(42);"); |
- assertEquals(42.0f, mTestObject.waitForFloatValue()); |
- |
- executeJavaScript("testObject.setDoubleValue(42);"); |
- assertEquals(42.0, mTestObject.waitForDoubleValue()); |
- |
- // LIVECONNECT_COMPLIANCE: Should create an instance of java.lang.Number. |
- executeJavaScript("testObject.setObjectValue(42);"); |
- assertNull(mTestObject.waitForObjectValue()); |
- |
- // The spec allows the JS engine flexibility in how to format the number. |
- executeJavaScript("testObject.setStringValue(42);"); |
- String str = mTestObject.waitForStringValue(); |
- assertTrue("42".equals(str) || "42.0".equals(str)); |
- |
- executeJavaScript("testObject.setBooleanValue(0);"); |
- assertFalse(mTestObject.waitForBooleanValue()); |
- // LIVECONNECT_COMPLIANCE: Should be true; |
- executeJavaScript("testObject.setBooleanValue(42);"); |
- assertFalse(mTestObject.waitForBooleanValue()); |
- |
- // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. |
- executeJavaScript("testObject.setCustomTypeValue(42);"); |
- assertNull(mTestObject.waitForCustomTypeValue()); |
- } |
- |
- // Test passing a floating-point JavaScript number to a method of an |
- // injected object. JavaScript represents these values as doubles. |
- @SmallTest |
- @Feature({"AndroidWebView", "Android-JavaBridge"}) |
- public void testPassNumberDouble() throws Throwable { |
- executeJavaScript("testObject.setByteValue(42.1);"); |
- assertEquals(42, mTestObject.waitForByteValue()); |
- executeJavaScript("testObject.setByteValue(" + Byte.MAX_VALUE + " + 42.1);"); |
- assertEquals(Byte.MIN_VALUE + 42 - 1, mTestObject.waitForByteValue()); |
- executeJavaScript("testObject.setByteValue(" + Byte.MIN_VALUE + " - 42.1);"); |
- assertEquals(Byte.MAX_VALUE - 42 + 1, mTestObject.waitForByteValue()); |
- executeJavaScript("testObject.setByteValue(" + Integer.MAX_VALUE + " + 42.1);"); |
- assertEquals(-1, mTestObject.waitForByteValue()); |
- executeJavaScript("testObject.setByteValue(" + Integer.MIN_VALUE + " - 42.1);"); |
- assertEquals(0, mTestObject.waitForByteValue()); |
- |
- // LIVECONNECT_COMPLIANCE: Should convert to numeric char value. |
- executeJavaScript("testObject.setCharValue(42.1);"); |
- assertEquals('\u0000', mTestObject.waitForCharValue()); |
- |
- executeJavaScript("testObject.setShortValue(42.1);"); |
- assertEquals(42, mTestObject.waitForShortValue()); |
- executeJavaScript("testObject.setShortValue(" + Short.MAX_VALUE + " + 42.1);"); |
- assertEquals(Short.MIN_VALUE + 42 - 1, mTestObject.waitForShortValue()); |
- executeJavaScript("testObject.setShortValue(" + Short.MIN_VALUE + " - 42.1);"); |
- assertEquals(Short.MAX_VALUE - 42 + 1, mTestObject.waitForShortValue()); |
- executeJavaScript("testObject.setShortValue(" + Integer.MAX_VALUE + " + 42.1);"); |
- assertEquals(-1, mTestObject.waitForShortValue()); |
- executeJavaScript("testObject.setShortValue(" + Integer.MIN_VALUE + " - 42.1);"); |
- assertEquals(0, mTestObject.waitForShortValue()); |
- |
- executeJavaScript("testObject.setIntValue(42.1);"); |
- assertEquals(42, mTestObject.waitForIntValue()); |
- executeJavaScript("testObject.setIntValue(" + Integer.MAX_VALUE + " + 42.1);"); |
- assertEquals(Integer.MAX_VALUE, mTestObject.waitForIntValue()); |
- executeJavaScript("testObject.setIntValue(" + Integer.MIN_VALUE + " - 42.1);"); |
- assertEquals(Integer.MIN_VALUE, mTestObject.waitForIntValue()); |
- |
- executeJavaScript("testObject.setLongValue(42.1);"); |
- assertEquals(42L, mTestObject.waitForLongValue()); |
- executeJavaScript("testObject.setLongValue(" + Long.MAX_VALUE + " + 42.1);"); |
- assertEquals(Long.MAX_VALUE, mTestObject.waitForLongValue()); |
- executeJavaScript("testObject.setLongValue(" + Long.MIN_VALUE + " - 42.1);"); |
- assertEquals(Long.MIN_VALUE, mTestObject.waitForLongValue()); |
- |
- executeJavaScript("testObject.setFloatValue(42.1);"); |
- assertEquals(42.1f, mTestObject.waitForFloatValue()); |
- |
- executeJavaScript("testObject.setDoubleValue(42.1);"); |
- assertEquals(42.1, mTestObject.waitForDoubleValue()); |
- |
- // LIVECONNECT_COMPLIANCE: Should create an instance of java.lang.Number. |
- executeJavaScript("testObject.setObjectValue(42.1);"); |
- assertNull(mTestObject.waitForObjectValue()); |
- |
- executeJavaScript("testObject.setStringValue(42.1);"); |
- assertEquals("42.1", mTestObject.waitForStringValue()); |
- |
- executeJavaScript("testObject.setBooleanValue(0.0);"); |
- assertFalse(mTestObject.waitForBooleanValue()); |
- // LIVECONNECT_COMPLIANCE: Should be true. |
- executeJavaScript("testObject.setBooleanValue(42.1);"); |
- assertFalse(mTestObject.waitForBooleanValue()); |
- |
- // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. |
- executeJavaScript("testObject.setCustomTypeValue(42.1);"); |
- assertNull(mTestObject.waitForCustomTypeValue()); |
- } |
- |
- // Test passing JavaScript NaN to a method of an injected object. |
- @SmallTest |
- @Feature({"AndroidWebView", "Android-JavaBridge"}) |
- public void testPassNumberNaN() throws Throwable { |
- executeJavaScript("testObject.setByteValue(Number.NaN);"); |
- assertEquals(0, mTestObject.waitForByteValue()); |
- |
- executeJavaScript("testObject.setCharValue(Number.NaN);"); |
- assertEquals('\u0000', mTestObject.waitForCharValue()); |
- |
- executeJavaScript("testObject.setShortValue(Number.NaN);"); |
- assertEquals(0, mTestObject.waitForShortValue()); |
- |
- executeJavaScript("testObject.setIntValue(Number.NaN);"); |
- assertEquals(0, mTestObject.waitForIntValue()); |
- |
- executeJavaScript("testObject.setLongValue(Number.NaN);"); |
- assertEquals(0L, mTestObject.waitForLongValue()); |
- |
- executeJavaScript("testObject.setFloatValue(Number.NaN);"); |
- assertEquals(Float.NaN, mTestObject.waitForFloatValue()); |
- |
- executeJavaScript("testObject.setDoubleValue(Number.NaN);"); |
- assertEquals(Double.NaN, mTestObject.waitForDoubleValue()); |
- |
- // LIVECONNECT_COMPLIANCE: Should create an instance of java.lang.Number. |
- executeJavaScript("testObject.setObjectValue(Number.NaN);"); |
- assertNull(mTestObject.waitForObjectValue()); |
- |
- executeJavaScript("testObject.setStringValue(Number.NaN);"); |
- assertEquals("NaN", mTestObject.waitForStringValue()); |
- |
- executeJavaScript("testObject.setBooleanValue(Number.NaN);"); |
- assertFalse(mTestObject.waitForBooleanValue()); |
- |
- // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. |
- executeJavaScript("testObject.setCustomTypeValue(Number.NaN);"); |
- assertNull(mTestObject.waitForCustomTypeValue()); |
- } |
- |
- // Test passing JavaScript infinity to a method of an injected object. |
- @SmallTest |
- @Feature({"AndroidWebView", "Android-JavaBridge"}) |
- public void testPassNumberInfinity() throws Throwable { |
- executeJavaScript("testObject.setByteValue(Infinity);"); |
- assertEquals(-1, mTestObject.waitForByteValue()); |
- |
- // LIVECONNECT_COMPLIANCE: Should convert to maximum numeric char value. |
- executeJavaScript("testObject.setCharValue(Infinity);"); |
- assertEquals('\u0000', mTestObject.waitForCharValue()); |
- |
- executeJavaScript("testObject.setShortValue(Infinity);"); |
- assertEquals(-1, mTestObject.waitForShortValue()); |
- |
- executeJavaScript("testObject.setIntValue(Infinity);"); |
- assertEquals(Integer.MAX_VALUE, mTestObject.waitForIntValue()); |
- |
- executeJavaScript("testObject.setLongValue(Infinity);"); |
- assertEquals(Long.MAX_VALUE, mTestObject.waitForLongValue()); |
- |
- executeJavaScript("testObject.setFloatValue(Infinity);"); |
- assertEquals(Float.POSITIVE_INFINITY, mTestObject.waitForFloatValue()); |
- |
- executeJavaScript("testObject.setDoubleValue(Infinity);"); |
- assertEquals(Double.POSITIVE_INFINITY, mTestObject.waitForDoubleValue()); |
- |
- // LIVECONNECT_COMPLIANCE: Should create an instance of java.lang.Number. |
- executeJavaScript("testObject.setObjectValue(Infinity);"); |
- assertNull(mTestObject.waitForObjectValue()); |
- |
- executeJavaScript("testObject.setStringValue(Infinity);"); |
- assertEquals("Inf", mTestObject.waitForStringValue()); |
- |
- executeJavaScript("testObject.setBooleanValue(Infinity);"); |
- assertFalse(mTestObject.waitForBooleanValue()); |
- |
- // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. |
- executeJavaScript("testObject.setCustomTypeValue(Infinity);"); |
- assertNull(mTestObject.waitForCustomTypeValue()); |
- } |
- |
- // Test passing a JavaScript boolean to a method of an injected object. |
- @SmallTest |
- @Feature({"AndroidWebView", "Android-JavaBridge"}) |
- public void testPassBoolean() throws Throwable { |
- executeJavaScript("testObject.setBooleanValue(true);"); |
- assertTrue(mTestObject.waitForBooleanValue()); |
- executeJavaScript("testObject.setBooleanValue(false);"); |
- assertFalse(mTestObject.waitForBooleanValue()); |
- |
- // LIVECONNECT_COMPLIANCE: Should create an instance of java.lang.Boolean. |
- executeJavaScript("testObject.setObjectValue(true);"); |
- assertNull(mTestObject.waitForObjectValue()); |
- |
- executeJavaScript("testObject.setStringValue(false);"); |
- assertEquals("false", mTestObject.waitForStringValue()); |
- executeJavaScript("testObject.setStringValue(true);"); |
- assertEquals("true", mTestObject.waitForStringValue()); |
- |
- // LIVECONNECT_COMPLIANCE: Should be 1. |
- executeJavaScript("testObject.setByteValue(true);"); |
- assertEquals(0, mTestObject.waitForByteValue()); |
- executeJavaScript("testObject.setByteValue(false);"); |
- assertEquals(0, mTestObject.waitForByteValue()); |
- |
- // LIVECONNECT_COMPLIANCE: Should convert to numeric char value 1. |
- executeJavaScript("testObject.setCharValue(true);"); |
- assertEquals('\u0000', mTestObject.waitForCharValue()); |
- executeJavaScript("testObject.setCharValue(false);"); |
- assertEquals('\u0000', mTestObject.waitForCharValue()); |
- |
- // LIVECONNECT_COMPLIANCE: Should be 1. |
- executeJavaScript("testObject.setShortValue(true);"); |
- assertEquals(0, mTestObject.waitForShortValue()); |
- executeJavaScript("testObject.setShortValue(false);"); |
- assertEquals(0, mTestObject.waitForShortValue()); |
- |
- // LIVECONNECT_COMPLIANCE: Should be 1. |
- executeJavaScript("testObject.setIntValue(true);"); |
- assertEquals(0, mTestObject.waitForIntValue()); |
- executeJavaScript("testObject.setIntValue(false);"); |
- assertEquals(0, mTestObject.waitForIntValue()); |
- |
- // LIVECONNECT_COMPLIANCE: Should be 1. |
- executeJavaScript("testObject.setLongValue(true);"); |
- assertEquals(0L, mTestObject.waitForLongValue()); |
- executeJavaScript("testObject.setLongValue(false);"); |
- assertEquals(0L, mTestObject.waitForLongValue()); |
- |
- // LIVECONNECT_COMPLIANCE: Should be 1.0. |
- executeJavaScript("testObject.setFloatValue(true);"); |
- assertEquals(0.0f, mTestObject.waitForFloatValue()); |
- executeJavaScript("testObject.setFloatValue(false);"); |
- assertEquals(0.0f, mTestObject.waitForFloatValue()); |
- |
- // LIVECONNECT_COMPLIANCE: Should be 1.0. |
- executeJavaScript("testObject.setDoubleValue(true);"); |
- assertEquals(0.0, mTestObject.waitForDoubleValue()); |
- executeJavaScript("testObject.setDoubleValue(false);"); |
- assertEquals(0.0, mTestObject.waitForDoubleValue()); |
- |
- // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. |
- executeJavaScript("testObject.setCustomTypeValue(true);"); |
- assertNull(mTestObject.waitForCustomTypeValue()); |
- } |
- |
- // Test passing a JavaScript string to a method of an injected object. |
- @SmallTest |
- @Feature({"AndroidWebView", "Android-JavaBridge"}) |
- public void testPassString() throws Throwable { |
- executeJavaScript("testObject.setStringValue(\"+042.10\");"); |
- assertEquals("+042.10", mTestObject.waitForStringValue()); |
- |
- // Make sure that we distinguish between the empty string and NULL. |
- executeJavaScript("testObject.setStringValue(\"\");"); |
- assertEquals("", mTestObject.waitForStringValue()); |
- |
- // LIVECONNECT_COMPLIANCE: Should create an instance of java.lang.String. |
- executeJavaScript("testObject.setObjectValue(\"+042.10\");"); |
- assertNull(mTestObject.waitForObjectValue()); |
- |
- // LIVECONNECT_COMPLIANCE: Should use valueOf() of appropriate type. |
- executeJavaScript("testObject.setByteValue(\"+042.10\");"); |
- assertEquals(0, mTestObject.waitForByteValue()); |
- |
- // LIVECONNECT_COMPLIANCE: Should use valueOf() of appropriate type. |
- executeJavaScript("testObject.setShortValue(\"+042.10\");"); |
- assertEquals(0, mTestObject.waitForShortValue()); |
- |
- // LIVECONNECT_COMPLIANCE: Should use valueOf() of appropriate type. |
- executeJavaScript("testObject.setIntValue(\"+042.10\");"); |
- assertEquals(0, mTestObject.waitForIntValue()); |
- |
- // LIVECONNECT_COMPLIANCE: Should use valueOf() of appropriate type. |
- executeJavaScript("testObject.setLongValue(\"+042.10\");"); |
- assertEquals(0L, mTestObject.waitForLongValue()); |
- |
- // LIVECONNECT_COMPLIANCE: Should use valueOf() of appropriate type. |
- executeJavaScript("testObject.setFloatValue(\"+042.10\");"); |
- assertEquals(0.0f, mTestObject.waitForFloatValue()); |
- |
- // LIVECONNECT_COMPLIANCE: Should use valueOf() of appropriate type. |
- executeJavaScript("testObject.setDoubleValue(\"+042.10\");"); |
- assertEquals(0.0, mTestObject.waitForDoubleValue()); |
- |
- // LIVECONNECT_COMPLIANCE: Should decode and convert to numeric char value. |
- executeJavaScript("testObject.setCharValue(\"+042.10\");"); |
- assertEquals('\u0000', mTestObject.waitForCharValue()); |
- |
- // LIVECONNECT_COMPLIANCE: Non-empty string should convert to true. |
- executeJavaScript("testObject.setBooleanValue(\"+042.10\");"); |
- assertFalse(mTestObject.waitForBooleanValue()); |
- |
- // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. |
- executeJavaScript("testObject.setCustomTypeValue(\"+042.10\");"); |
- assertNull(mTestObject.waitForCustomTypeValue()); |
- } |
- |
- // Test passing a JavaScript object to a method of an injected object. |
- @SmallTest |
- @Feature({"AndroidWebView", "Android-JavaBridge"}) |
- public void testPassJavaScriptObject() throws Throwable { |
- // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. |
- executeJavaScript("testObject.setObjectValue({foo: 42});"); |
- assertNull(mTestObject.waitForObjectValue()); |
- |
- // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. |
- executeJavaScript("testObject.setCustomTypeValue({foo: 42});"); |
- assertNull(mTestObject.waitForCustomTypeValue()); |
- |
- // LIVECONNECT_COMPLIANCE: Should call toString() on object. |
- executeJavaScript("testObject.setStringValue({foo: 42});"); |
- assertEquals("undefined", mTestObject.waitForStringValue()); |
- |
- // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. |
- executeJavaScript("testObject.setByteValue({foo: 42});"); |
- assertEquals(0, mTestObject.waitForByteValue()); |
- |
- // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. |
- executeJavaScript("testObject.setCharValue({foo: 42});"); |
- assertEquals('\u0000', mTestObject.waitForCharValue()); |
- |
- // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. |
- executeJavaScript("testObject.setShortValue({foo: 42});"); |
- assertEquals(0, mTestObject.waitForShortValue()); |
- |
- // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. |
- executeJavaScript("testObject.setIntValue({foo: 42});"); |
- assertEquals(0, mTestObject.waitForIntValue()); |
- |
- // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. |
- executeJavaScript("testObject.setLongValue({foo: 42});"); |
- assertEquals(0L, mTestObject.waitForLongValue()); |
- |
- // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. |
- executeJavaScript("testObject.setFloatValue({foo: 42});"); |
- assertEquals(0.0f, mTestObject.waitForFloatValue()); |
- |
- // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. |
- executeJavaScript("testObject.setDoubleValue({foo: 42});"); |
- assertEquals(0.0, mTestObject.waitForDoubleValue()); |
- |
- // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. |
- executeJavaScript("testObject.setBooleanValue({foo: 42});"); |
- assertFalse(mTestObject.waitForBooleanValue()); |
- } |
- |
- // Test passing a Java object to a method of an injected object. Note that |
- // this test requires being able to return objects from the methods of |
- // injected objects. This is tested elsewhere. |
- @SmallTest |
- @Feature({"AndroidWebView", "Android-JavaBridge"}) |
- public void testPassJavaObject() throws Throwable { |
- executeJavaScript("testObject.setObjectValue(testObject.getObjectInstance());"); |
- assertTrue(mTestObject.getObjectInstance() == mTestObject.waitForObjectValue()); |
- executeJavaScript("testObject.setObjectValue(testObject.getCustomTypeInstance());"); |
- assertTrue(mTestObject.getCustomTypeInstance() == mTestObject.waitForObjectValue()); |
- |
- executeJavaScript("testObject.setCustomTypeValue(testObject.getObjectInstance());"); |
- assertTrue(mTestObject.getObjectInstance() == mTestObject.waitForCustomTypeValue()); |
- executeJavaScript("testObject.setCustomTypeValue(testObject.getCustomTypeInstance());"); |
- assertTrue(mTestObject.getCustomTypeInstance() == mTestObject.waitForCustomTypeValue()); |
- // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception, as the types are unrelated. |
- executeJavaScript("testObject.setCustomTypeValue(testObject.getCustomType2Instance());"); |
- assertTrue(mTestObject.getCustomType2Instance() == |
- (Object)mTestObject.waitForCustomTypeValue()); |
- |
- // LIVECONNECT_COMPLIANCE: Should call toString() on object. |
- executeJavaScript("testObject.setStringValue(testObject.getObjectInstance());"); |
- assertEquals("undefined", mTestObject.waitForStringValue()); |
- |
- // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. |
- executeJavaScript("testObject.setByteValue(testObject.getObjectInstance());"); |
- assertEquals(0, mTestObject.waitForByteValue()); |
- |
- // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. |
- executeJavaScript("testObject.setCharValue(testObject.getObjectInstance());"); |
- assertEquals('\u0000', mTestObject.waitForCharValue()); |
- |
- // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. |
- executeJavaScript("testObject.setShortValue(testObject.getObjectInstance());"); |
- assertEquals(0, mTestObject.waitForShortValue()); |
- |
- // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. |
- executeJavaScript("testObject.setIntValue(testObject.getObjectInstance());"); |
- assertEquals(0, mTestObject.waitForIntValue()); |
- |
- // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. |
- executeJavaScript("testObject.setLongValue(testObject.getObjectInstance());"); |
- assertEquals(0L, mTestObject.waitForLongValue()); |
- |
- // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. |
- executeJavaScript("testObject.setFloatValue(testObject.getObjectInstance());"); |
- assertEquals(0.0f, mTestObject.waitForFloatValue()); |
- |
- // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. |
- executeJavaScript("testObject.setDoubleValue(testObject.getObjectInstance());"); |
- assertEquals(0.0, mTestObject.waitForDoubleValue()); |
- |
- // LIVECONNECT_COMPLIANCE: Should raise a JavaScript exception. |
- executeJavaScript("testObject.setBooleanValue(testObject.getObjectInstance());"); |
- assertFalse(mTestObject.waitForBooleanValue()); |
- } |
- |
- // Test passing JavaScript null to a method of an injected object. |
- @SmallTest |
- @Feature({"AndroidWebView", "Android-JavaBridge"}) |
- public void testPassNull() throws Throwable { |
- executeJavaScript("testObject.setObjectValue(null);"); |
- assertNull(mTestObject.waitForObjectValue()); |
- |
- executeJavaScript("testObject.setCustomTypeValue(null);"); |
- assertNull(mTestObject.waitForCustomTypeValue()); |
- |
- executeJavaScript("testObject.setStringValue(null);"); |
- assertNull(mTestObject.waitForStringValue()); |
- |
- executeJavaScript("testObject.setByteValue(null);"); |
- assertEquals(0, mTestObject.waitForByteValue()); |
- |
- executeJavaScript("testObject.setCharValue(null);"); |
- assertEquals('\u0000', mTestObject.waitForCharValue()); |
- |
- executeJavaScript("testObject.setShortValue(null);"); |
- assertEquals(0, mTestObject.waitForShortValue()); |
- |
- executeJavaScript("testObject.setIntValue(null);"); |
- assertEquals(0, mTestObject.waitForIntValue()); |
- |
- executeJavaScript("testObject.setLongValue(null);"); |
- assertEquals(0L, mTestObject.waitForLongValue()); |
- |
- executeJavaScript("testObject.setFloatValue(null);"); |
- assertEquals(0.0f, mTestObject.waitForFloatValue()); |
- |
- executeJavaScript("testObject.setDoubleValue(null);"); |
- assertEquals(0.0, mTestObject.waitForDoubleValue()); |
- |
- executeJavaScript("testObject.setBooleanValue(null);"); |
- assertFalse(mTestObject.waitForBooleanValue()); |
- } |
- |
- // Test passing JavaScript undefined to a method of an injected object. |
- @SmallTest |
- @Feature({"AndroidWebView", "Android-JavaBridge"}) |
- public void testPassUndefined() throws Throwable { |
- executeJavaScript("testObject.setObjectValue(undefined);"); |
- assertNull(mTestObject.waitForObjectValue()); |
- |
- executeJavaScript("testObject.setCustomTypeValue(undefined);"); |
- assertNull(mTestObject.waitForCustomTypeValue()); |
- |
- // LIVECONNECT_COMPLIANCE: Should be NULL. |
- executeJavaScript("testObject.setStringValue(undefined);"); |
- assertEquals("undefined", mTestObject.waitForStringValue()); |
- |
- executeJavaScript("testObject.setByteValue(undefined);"); |
- assertEquals(0, mTestObject.waitForByteValue()); |
- |
- executeJavaScript("testObject.setCharValue(undefined);"); |
- assertEquals('\u0000', mTestObject.waitForCharValue()); |
- |
- executeJavaScript("testObject.setShortValue(undefined);"); |
- assertEquals(0, mTestObject.waitForShortValue()); |
- |
- executeJavaScript("testObject.setIntValue(undefined);"); |
- assertEquals(0, mTestObject.waitForIntValue()); |
- |
- executeJavaScript("testObject.setLongValue(undefined);"); |
- assertEquals(0L, mTestObject.waitForLongValue()); |
- |
- executeJavaScript("testObject.setFloatValue(undefined);"); |
- assertEquals(0.0f, mTestObject.waitForFloatValue()); |
- |
- executeJavaScript("testObject.setDoubleValue(undefined);"); |
- assertEquals(0.0, mTestObject.waitForDoubleValue()); |
- |
- executeJavaScript("testObject.setBooleanValue(undefined);"); |
- assertFalse(mTestObject.waitForBooleanValue()); |
- } |
-} |