| Index: content/public/android/javatests/src/org/chromium/content/browser/JavaBridgeBasicsTest.java
|
| diff --git a/content/public/android/javatests/src/org/chromium/content/browser/JavaBridgeBasicsTest.java b/content/public/android/javatests/src/org/chromium/content/browser/JavaBridgeBasicsTest.java
|
| index 0f8253ba9a1074da6dafcf74b81d7839aafa57c4..56fc999041eaea32ac362c200b182a23d8fc0fc7 100644
|
| --- a/content/public/android/javatests/src/org/chromium/content/browser/JavaBridgeBasicsTest.java
|
| +++ b/content/public/android/javatests/src/org/chromium/content/browser/JavaBridgeBasicsTest.java
|
| @@ -6,7 +6,6 @@ package org.chromium.content.browser;
|
|
|
| import static org.chromium.base.test.util.ScalableTimeout.scaleTimeout;
|
|
|
| -import android.test.FlakyTest;
|
| import android.test.suitebuilder.annotation.SmallTest;
|
|
|
| import junit.framework.Assert;
|
| @@ -180,12 +179,8 @@ public class JavaBridgeBasicsTest extends JavaBridgeTestBase {
|
| assertEquals("object", executeJavaScriptAndGetStringResult("typeof testObject"));
|
| }
|
|
|
| - /**
|
| - * @SmallTest
|
| - * @Feature({"AndroidWebView", "Android-JavaBridge"})
|
| - * http://crbug.com/468679
|
| - */
|
| - @FlakyTest
|
| + @SmallTest
|
| + @Feature({"AndroidWebView", "Android-JavaBridge"})
|
| public void testRemovalNotReflectedUntilReload() throws Throwable {
|
| injectObjectAndReload(new Object() {
|
| public void method() {
|
| @@ -259,6 +254,29 @@ public class JavaBridgeBasicsTest extends JavaBridgeTestBase {
|
| assertRaisesException("testObject.method()");
|
| }
|
|
|
| + @SmallTest
|
| + @Feature({"AndroidWebView", "Android-JavaBridge"})
|
| + public void testCallingAsConstructorRaisesException() throws Throwable {
|
| + assertRaisesException("new testController.setStringValue('foo')");
|
| + }
|
| +
|
| + @SmallTest
|
| + @Feature({"AndroidWebView", "Android-JavaBridge"})
|
| + public void testCallingOnNonInjectedObjectRaisesException() throws Throwable {
|
| + assertRaisesException("testController.setStringValue.call({}, 'foo')");
|
| + }
|
| +
|
| + @SmallTest
|
| + @Feature({"AndroidWebView", "Android-JavaBridge"})
|
| + public void testCallingOnInstanceOfOtherClassRaisesException() throws Throwable {
|
| + injectObjectAndReload(new Object(), "testObject");
|
| + assertEquals("object", executeJavaScriptAndGetStringResult("typeof testObject"));
|
| + assertEquals("object", executeJavaScriptAndGetStringResult("typeof testController"));
|
| + assertEquals("function",
|
| + executeJavaScriptAndGetStringResult("typeof testController.setStringValue"));
|
| + assertRaisesException("testController.setStringValue.call(testObject, 'foo')");
|
| + }
|
| +
|
| // Note that this requires that we can pass a JavaScript string to Java.
|
| @SmallTest
|
| @Feature({"AndroidWebView", "Android-JavaBridge"})
|
| @@ -1005,4 +1023,38 @@ public class JavaBridgeBasicsTest extends JavaBridgeTestBase {
|
| injectObjectAndReload(new Test(42), "testObject");
|
| assertEquals("42", executeJavaScriptAndGetStringResult("testObject.getValue()"));
|
| }
|
| +
|
| + @SmallTest
|
| + @Feature({"AndroidWebView", "Android-JavaBridge"})
|
| + public void testMethodCalledOnAnotherInstance() throws Throwable {
|
| + class TestObject {
|
| + private int mIndex;
|
| + TestObject(int index) {
|
| + mIndex = index;
|
| + }
|
| + public void method() {
|
| + mTestController.setIntValue(mIndex);
|
| + }
|
| + }
|
| + final TestObject testObject1 = new TestObject(1);
|
| + final TestObject testObject2 = new TestObject(2);
|
| + runTestOnUiThread(new Runnable() {
|
| + @Override
|
| + public void run() {
|
| + getContentViewCore().addPossiblyUnsafeJavascriptInterface(
|
| + testObject1, "testObject1", null);
|
| + getContentViewCore().addPossiblyUnsafeJavascriptInterface(
|
| + testObject2, "testObject2", null);
|
| + getContentViewCore().getWebContents().getNavigationController().reload(true);
|
| + }
|
| + });
|
| + executeJavaScript("testObject1.method()");
|
| + assertEquals(1, mTestController.waitForIntValue());
|
| + executeJavaScript("testObject2.method()");
|
| + assertEquals(2, mTestController.waitForIntValue());
|
| + executeJavaScript("testObject1.method.call(testObject2)");
|
| + assertEquals(2, mTestController.waitForIntValue());
|
| + executeJavaScript("testObject2.method.call(testObject1)");
|
| + assertEquals(1, mTestController.waitForIntValue());
|
| + }
|
| }
|
|
|