gecko/mobile/android/base/tests/testJavascriptBridge.java

82 lines
2.5 KiB
Java

package org.mozilla.gecko.tests;
import static org.mozilla.gecko.tests.helpers.AssertionHelper.*;
import org.mozilla.gecko.tests.helpers.*;
import org.json.JSONException;
import org.json.JSONObject;
/**
* Tests the proper operation of JavascriptBridge and JavaBridge,
* which are used by tests for communication between Java and JS.
*/
public class testJavascriptBridge extends UITest {
private static final String TEST_JS = "testJavascriptBridge.js";
private JavascriptBridge js;
private boolean syncCallReceived;
@Override
public void setUp() throws Exception {
super.setUp();
js = new JavascriptBridge(this);
}
@Override
public void tearDown() throws Exception {
js.disconnect();
super.tearDown();
}
public void testJavascriptBridge() {
GeckoHelper.blockForReady();
NavigationHelper.enterAndLoadUrl(StringHelper.getHarnessUrlForJavascript(TEST_JS));
js.syncCall("check_js_int_arg", 1);
}
public void checkJavaIntArg(final int int2) {
// Async call from JS
fAssertEquals("Integer argument matches", 2, int2);
js.syncCall("check_js_double_arg", 3.0D);
}
public void checkJavaDoubleArg(final double double4) {
// Async call from JS
fAssertEquals("Double argument matches", 4.0, double4);
js.syncCall("check_js_boolean_arg", false);
}
public void checkJavaBooleanArg(final boolean booltrue) {
// Async call from JS
fAssertEquals("Boolean argument matches", true, booltrue);
js.syncCall("check_js_string_arg", "foo");
}
public void checkJavaStringArg(final String stringbar) throws JSONException {
// Async call from JS
fAssertEquals("String argument matches", "bar", stringbar);
final JSONObject obj = new JSONObject();
obj.put("caller", "java");
js.syncCall("check_js_object_arg", (JSONObject) obj);
}
public void checkJavaObjectArg(final JSONObject obj) throws JSONException {
// Async call from JS
fAssertEquals("Object argument matches", "js", obj.getString("caller"));
js.syncCall("check_js_sync_call");
}
public void doJSSyncCall() {
// Sync call from JS
syncCallReceived = true;
js.asyncCall("respond_to_js_sync_call");
}
public void checkJSSyncCallReceived() {
fAssertTrue("Received sync call before end of test", syncCallReceived);
// End of test
}
}