Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2038)

Unified Diff: content/public/android/javatests/src/org/chromium/content/browser/JavaBridgeCoercionTest.java

Issue 141533006: [Android] Move the java content/ package to content_public/ to start the split. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Small fixes and findbugs line update Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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());
- }
-}

Powered by Google App Engine
This is Rietveld 408576698