| 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 3ce9a2cf1e172caeca2c488ee9f1875f1517a42b..ae58a1d0d22939fec4c3a3a1c2f417795bb50124 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
|
| @@ -4,11 +4,8 @@
|
|
|
| package org.chromium.content.browser;
|
|
|
| -import android.os.Handler;
|
| -import android.os.Looper;
|
| import android.test.suitebuilder.annotation.SmallTest;
|
|
|
| -import org.chromium.base.test.util.DisabledTest;
|
| import org.chromium.base.test.util.Feature;
|
| import org.chromium.content.browser.test.util.TestCallbackHelperContainer;
|
| import org.chromium.content_shell_apk.ContentShellActivity;
|
| @@ -462,19 +459,8 @@ public class JavaBridgeBasicsTest extends JavaBridgeTestBase {
|
| assertEquals(null, object.weakRefForInner.get());
|
| }
|
|
|
| - /*
|
| - * The current Java bridge implementation doesn't reuse JS wrappers when returning
|
| - * the same object from a method. That looks wrong. For example, in the case of DOM,
|
| - * wrappers are reused, which allows JS code to attach custom properties to interface
|
| - * objects and use them regardless of the way the reference has been obtained:
|
| - * via copying a JS reference or by calling the method one more time (assuming that
|
| - * the method is supposed to return a reference to the same object each time).
|
| - * TODO(mnaganov): Fix this in the new implementation.
|
| - *
|
| - * @SmallTest
|
| - * @Feature({"AndroidWebView", "Android-JavaBridge"})
|
| - */
|
| - @DisabledTest
|
| + @SmallTest
|
| + @Feature({"AndroidWebView", "Android-JavaBridge"})
|
| public void testSameReturnedObjectUsesSameWrapper() throws Throwable {
|
| class InnerObject {
|
| }
|
| @@ -853,60 +839,6 @@ public class JavaBridgeBasicsTest extends JavaBridgeTestBase {
|
| public void testAccessToObjectGetClassIsBlocked() throws Throwable {
|
| injectObjectAndReload(new Object(), "testObject");
|
| assertEquals("function", executeJavaScriptAndGetStringResult("typeof testObject.getClass"));
|
| - boolean securityExceptionThrown = false;
|
| - try {
|
| - final String result = executeJavaScriptAndWaitForExceptionSynchronously(
|
| - "typeof testObject.getClass()");
|
| - fail("A call to java.lang.Object.getClass has been allowed, result: '" + result + "'");
|
| - } catch (SecurityException exception) {
|
| - securityExceptionThrown = true;
|
| - }
|
| - assertTrue(securityExceptionThrown);
|
| - }
|
| -
|
| - // Unlike executeJavaScriptAndGetStringResult, this method is sitting on the UI thread
|
| - // until a non-null result is obtained or a Java exception has been thrown. This method is
|
| - // capable of catching Java RuntimeExceptions happening on the UI thread asynchronously.
|
| - private String executeJavaScriptAndWaitForExceptionSynchronously(final String script)
|
| - throws Throwable {
|
| - class ExitLoopException extends RuntimeException {
|
| - }
|
| - mTestController.setStringValue(null);
|
| - runTestOnUiThread(new Runnable() {
|
| - @Override
|
| - public void run() {
|
| - getContentViewCore().loadUrl(new LoadUrlParams("javascript:(function() { " +
|
| - "testController.setStringValue(" + script + ") })()"));
|
| - do {
|
| - final Boolean[] deactivateExitLoopTask = new Boolean[1];
|
| - deactivateExitLoopTask[0] = false;
|
| - // We can't use Loop.quit(), as this is the main looper, so we throw
|
| - // an exception to bail out from the loop.
|
| - new Handler(Looper.myLooper()).post(new Runnable() {
|
| - @Override
|
| - public void run() {
|
| - if (!deactivateExitLoopTask[0]) {
|
| - throw new ExitLoopException();
|
| - }
|
| - }
|
| - });
|
| - try {
|
| - Looper.loop();
|
| - } catch (ExitLoopException e) {
|
| - // Intentionally empty.
|
| - } catch (RuntimeException e) {
|
| - // Prevent the task that throws the ExitLoopException from exploding
|
| - // on the main loop outside of this function.
|
| - deactivateExitLoopTask[0] = true;
|
| - throw e;
|
| - }
|
| - } while (mTestController.getStringValue() == null ||
|
| - // When an exception in an injected method happens, the function returns
|
| - // null. We ignore this and wait until the exception on the browser side
|
| - // will be thrown.
|
| - mTestController.getStringValue().equals("null"));
|
| - }
|
| - });
|
| - return mTestController.getStringValue();
|
| + assertRaisesException("testObject.getClass()");
|
| }
|
| }
|
|
|