diff options
Diffstat (limited to 'tests/src')
-rw-r--r-- | tests/src/com/android/browser/JNIBindingsTest.java | 288 | ||||
-rw-r--r-- | tests/src/com/android/browser/JNIBindingsTestApp.java | 274 |
2 files changed, 0 insertions, 562 deletions
diff --git a/tests/src/com/android/browser/JNIBindingsTest.java b/tests/src/com/android/browser/JNIBindingsTest.java deleted file mode 100644 index ae694c9..0000000 --- a/tests/src/com/android/browser/JNIBindingsTest.java +++ /dev/null @@ -1,288 +0,0 @@ -/* - * Copyright (C) 2010 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.browser; - -import android.test.AndroidTestCase; -import android.util.Log; - -import java.util.Arrays; - -import junit.framework.AssertionFailedError; - -public class JNIBindingsTest extends AndroidTestCase { - - private final static String LOGTAG = "JNIBindingsTest"; - private JNIBindingsTestApp mTestApp; - - public int mInt = 123; - public String mString = "Hello World"; - - public JNIBindingsTest(JNIBindingsTestApp testApp) { - mTestApp = testApp; - } - - public void notifyComplete() { - Log.v(LOGTAG, "Completing the test."); - mTestApp.notifyComplete(); - } - - public void printAssertionFailed(AssertionFailedError e) { - Log.e(LOGTAG, ""); - Log.e(LOGTAG, "*** ASSERTION FAILED: " + e.getMessage()); - Log.e(LOGTAG, "*** Stack trace:"); - StackTraceElement[] trace = e.getStackTrace(); - for(StackTraceElement elem : trace) { - Log.e(LOGTAG, "***\t" + elem.toString()); - } - Log.e(LOGTAG, ""); - } - - public boolean testPrimitiveTypes(byte byteParam, char charParam, double doubleParam, - float floatParam, int intParam, long longParam, short shortParam, - boolean booleanParam) { - byte expectedByteParam = 100; - char expectedCharParam = 'c'; - double expectedDoubleParam = 123.34567890; - float expectedFloatParam = 456.789f; - int expectedIntParam = 1234567; - long expectedLongParam = 1234567890L; - short expectedShortParam = 6000; - boolean expectedBooleanParam = true; - - try { - assertEquals(expectedByteParam, byteParam); - - // EMULATE_JSC_BINDINGS: JSC does not pass chars correctly - // assertEquals(expectedCharParam, charParam); - - assertEquals(expectedDoubleParam, doubleParam); - assertEquals(expectedFloatParam, floatParam); - assertEquals(expectedIntParam, intParam); - assertEquals(expectedLongParam, longParam); - assertEquals(expectedShortParam, shortParam); - assertEquals(expectedBooleanParam, booleanParam); - } catch (AssertionFailedError e) { - printAssertionFailed(e); - return false; - } - return true; - } - - public boolean testObjectTypes(String stringParam, String emptyString, String nullString, - Object objectParam, Object emptyObject) { - String expectedString = "Foo"; - String expectedEmptyString = ""; - - try { - assertNotNull(stringParam); - assertNotNull(emptyString); - assertEquals(expectedString, stringParam); - assertEquals(expectedEmptyString, emptyString); - assertNull(nullString); - assertNull(objectParam); - assertNull(emptyObject); - } catch (AssertionFailedError e) { - printAssertionFailed(e); - return false; - } - return true; - } - - public boolean testArray(byte[] byteArray, char[] charArray, double[] doubleArray, - float[] floatArray, int[] intArray, long[] longArray, short[] shortArray, - boolean[] booleanArray) { - byte[] expectedByteArray = { 1,2,3}; - char[] expectedCharArray = {'d', 'o', 'g'}; - double[] expectedDoubleArray = {1.2,2.3,3.4}; - float[] expectedFloatArray = {4.5F,5.6F,6.7F}; - int[] expectedIntArray = {1,2,3}; - long[] expectedLongArray = {4L,5L,6L}; - short[] expectedShortArray = {7,8,9}; - boolean[] expectedBooleanArray = {true, false}; - - try { - assertNotNull(byteArray); - assertNotNull(charArray); - assertNotNull(doubleArray); - assertNotNull(floatArray); - assertNotNull(intArray); - assertNotNull(longArray); - assertNotNull(shortArray); - assertNotNull(booleanArray); - assertEquals(Arrays.toString(expectedByteArray), Arrays.toString(byteArray)); - assertEquals(Arrays.toString(expectedCharArray), Arrays.toString(charArray)); - assertEquals(Arrays.toString(expectedDoubleArray), Arrays.toString(doubleArray)); - assertEquals(Arrays.toString(expectedFloatArray), Arrays.toString(floatArray)); - assertEquals(Arrays.toString(expectedIntArray), Arrays.toString(intArray)); - assertEquals(Arrays.toString(expectedLongArray), Arrays.toString(longArray)); - assertEquals(Arrays.toString(expectedShortArray), Arrays.toString(shortArray)); - assertEquals(Arrays.toString(expectedBooleanArray), Arrays.toString(booleanArray)); - } catch (AssertionFailedError e) { - printAssertionFailed(e); - return false; - } - return true; - } - - public boolean testObjectArray(String[] stringArray, Object[] emptyArray, - Object[] objectArray) { - String[] expectedStringArray = {"Hello", "World", "!"}; - String expectedStringArrayClassName = "[Ljava.lang.String;"; - Object[] expectedObjectArray = {}; - - try { - assertNotNull(stringArray); - - // EMULATE_JSC_BINDINGS JSC pass null for object arrays that are not strings. - // Should be an empty array? - assertNull(emptyArray); - assertNull(objectArray); - - assertEquals(Arrays.toString(expectedStringArray), Arrays.toString(stringArray)); - assertEquals(expectedStringArrayClassName, stringArray.getClass().getName()); - - // EMULATE_JSC_BINDINGS - // assertEquals(Arrays.toString(expectedObjectArray), Arrays.toString(emptyArray)); - // assertEquals(expectedObjectArrayClassName, emptyArray.getClass().getName()); - // assertEquals(Arrays.toString(expectedObjectArray), Arrays.toString(objectArray)); - // assertEquals(expectedStringObjectClassName, objectArray.getClass().getName()); - - } catch (AssertionFailedError e) { - printAssertionFailed(e); - return false; - } - return true; - } - - public boolean testObjectMembers(boolean boolParam, byte byteParam, char charParam, - double doubleParam, float floatParam, int intParam, long longParam, short shortParam, - String stringParam, int[] intArrayParam, String[] stringArrayParam, - Object objectParam) { - boolean expectedBoolParam = true; - byte expectedByteParam = 101; - char expectedCharParam = 'd'; - double expectedDoubleParam = 123.456; - float expectedFloatParam = 456.789F; - int expectedIntParam = 102; - long expectedLongParam = 103L; - short expectedShortParam = 104; - String expectedStringParam = "Hello World"; - int[] expectedIntArray = {1,2,3}; - String[] expectedStringArrayParam = {"foo", "bar", "baz"}; - String expectedStringArrayClassName = "[Ljava.lang.String;"; - - try { - assertEquals(expectedBoolParam, boolParam); - assertEquals(expectedByteParam, byteParam); - - // EMULATE_JSC_BINDINGS: JSC does not pass chars correctly. (chars are strings in JS) - // assertEquals(expectedCharParam, charParam); - - assertEquals(expectedDoubleParam, doubleParam); - assertEquals(expectedFloatParam, floatParam); - assertEquals(expectedIntParam, intParam); - assertEquals(expectedLongParam, longParam); - assertEquals(expectedShortParam, shortParam); - assertEquals(expectedStringParam, stringParam); - assertEquals(Arrays.toString(expectedIntArray), Arrays.toString(intArrayParam)); - assertEquals(Arrays.toString(expectedStringArrayParam), - Arrays.toString(stringArrayParam)); - assertEquals(expectedStringArrayClassName, stringArrayParam.getClass().getName()); - assertNull(objectParam); - } catch (AssertionFailedError e) { - printAssertionFailed(e); - return false; - } - return true; - } - - public boolean testJSPrimitivesToStringsInJava(String intParam, String nullParam, - String doubleParam, String booleanParam, String charParam, - String undefinedParam) { - String expectedIntParam = "123"; - String expectedDoubleParam = "456.789"; - String expectedBooleanParam = "true"; - String expectedCharParam = "d"; - - // EMULATE_JSC_BINDINGS JSC passes "undefined" for undefined types. Should be null? - String expectedUndefinedParam = "undefined"; - - try { - assertNotNull(intParam); - assertNull(nullParam); - assertNotNull(doubleParam); - assertNotNull(booleanParam); - assertNotNull(charParam); - - // EMULATE_JSC_BINDINGS JSC passes "undefined" for undefined types. - assertNotNull(undefinedParam); - - assertEquals(expectedIntParam, intParam); - assertEquals(expectedDoubleParam, doubleParam); - assertEquals(expectedBooleanParam, booleanParam); - assertEquals(expectedCharParam, charParam); - - // EMULATE_JSC_BINDINGS JSC passes "undefined" for undefined types. - assertEquals(expectedUndefinedParam, undefinedParam); - - } catch (AssertionFailedError e) { - printAssertionFailed(e); - return false; - } - return true; - } - - public boolean testParameterTypeMismatch(String[] stringArrayParam) { - // The JS test will pass a string, not an array to this test. - try { - assertNull(stringArrayParam); - } catch (AssertionFailedError e) { - printAssertionFailed(e); - return false; - } - - return true; - } - - public boolean returnBool() { return true; } - public byte returnByte() { return 1; } - public char returnChar() { return 'b'; } - public double returnDouble() { return 123.456; } - public float returnFloat() { return 456.789F; } - public int returnInt() { return 123; } - public long returnLong() { return 1234L; } - public short returnShort() { return 12345; } - public String returnString() { return "Hello World!"; } - public String returnNullString() { return null; } - - public class TestObject { - public int x = 123; - public String s = "Hello World!"; - - public boolean aMethod() { return true; } - public String anotherMethod() { return "Hello World"; } - } - - public TestObject returnObject() { return new TestObject(); } - - public int[] returnArray() { - int[] array = {1,2,3,4,5}; - return array; - } - - public void returnVoid() { } -} diff --git a/tests/src/com/android/browser/JNIBindingsTestApp.java b/tests/src/com/android/browser/JNIBindingsTestApp.java deleted file mode 100644 index 5d1fd0d..0000000 --- a/tests/src/com/android/browser/JNIBindingsTestApp.java +++ /dev/null @@ -1,274 +0,0 @@ -/* - * Copyright (C) 2010 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.browser; - -import android.app.Instrumentation; -import android.net.http.SslError; -import android.os.Handler; -import android.os.Looper; -import android.os.Message; -import android.test.ActivityInstrumentationTestCase2; -import android.util.Log; -import android.webkit.ClientCertRequestHandler; -import android.webkit.JsPromptResult; -import android.webkit.JsResult; -import android.webkit.SslErrorHandler; -import android.webkit.WebView; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; - -/** - * Adds a JavaScript interface to the webview and calls functions on it to verify variables - * are passed from JS to Java correctly. - * To run this test, execute: - * adb shell am instrument -w -e class com.android.browser.JNIBindingsTestApp#testJNIBindings \ - * com.android.browser.tests/android.test.InstrumentationTestRunner - */ -public class JNIBindingsTestApp extends ActivityInstrumentationTestCase2<BrowserActivity> { - - private final static String TAG = "JNIBindingsTest"; - - private static final String SDCARD_BINDINGS_TEST_HTML = "/sdcard/bindings_test.html"; - - private static final int MSG_WEBKIT_DATA_READY = 101; - - private BrowserActivity mActivity = null; - private Controller mController = null; - private Instrumentation mInst = null; - - private boolean mTestDone = false; - private String mWebKitResult; - - private String mExpectedWebKitResult = "Running JNI Bindings test...\n" + - "testPrimitiveTypes passed!\n" + - "testObjectTypes passed!\n" + - "testArray passed!\n" + - "testObjectArray passed!\n" + - "testObjectMembers passed!\n" + - "testJSPrimitivesToStringsInJava passed!\n" + - "testJavaReturnTypes passed!\n" + - "getIfaceProperties passed!\n" + - "testParameterTypeMismatch passed!\n"; - - - private class GetWebKitDataThread extends Thread { - private JNIBindingsTestApp mTestApp; - private WebView mWebView; - private Handler mHandler; - - GetWebKitDataThread(JNIBindingsTestApp testApp, WebView webView) { - mTestApp = testApp; - mWebView = webView; - } - - @Override - public void run() { - Looper.prepare(); - mHandler = new Handler() { - @Override - public void handleMessage(Message msg) { - switch (msg.what) { - case MSG_WEBKIT_DATA_READY: { - mTestApp.setWebKitResult((String)msg.obj); - Looper.myLooper().quit(); - } - default: super.handleMessage(msg); break; - } - } - }; - mWebView.documentAsText(mHandler.obtainMessage(MSG_WEBKIT_DATA_READY, 1, 0)); - Looper.loop(); - } - } - - public synchronized void setWebKitResult(String result) { - mWebKitResult = result; - notify(); - } - - public JNIBindingsTestApp() { - super(BrowserActivity.class); - } - - @Override - protected void setUp() throws Exception { - super.setUp(); - - mActivity = getActivity(); - mController = mActivity.getController(); - mInst = getInstrumentation(); - mInst.waitForIdleSync(); - - extractAsset(); - } - - @Override - protected void tearDown() throws Exception { - removeAsset(); - super.tearDown(); - } - - protected void extractAsset() throws IOException { - InputStream in = getInstrumentation().getContext().getAssets().open("bindings_test.html"); - OutputStream out = new FileOutputStream(SDCARD_BINDINGS_TEST_HTML); - - byte[] buf = new byte[2048]; - int len; - - while ((len = in.read(buf)) >= 0 ) { - out.write(buf, 0, len); - } - out.close(); - in.close(); - } - - protected void removeAsset(){ - File fileToDelete = new File(SDCARD_BINDINGS_TEST_HTML); - fileToDelete.delete(); - } - - /** - * Gets the browser ready for testing by starting the application - * and wrapping the WebView's helper clients. - */ - void setUpBrowser() { - Tab tab = mController.getTabControl().getCurrentTab(); - WebView webView = tab.getWebView(); - webView.addJavascriptInterface(new JNIBindingsTest(this), "JNIBindingsTest"); - - webView.setWebChromeClient(new TestWebChromeClient(webView.getWebChromeClient()) { - - /** - * Dismisses and logs Javascript alerts. - */ - @Override - public boolean onJsAlert(WebView view, String url, String message, - JsResult result) { - String logMsg = String.format("JS Alert '%s' received from %s", message, url); - Log.w(TAG, logMsg); - result.confirm(); - - return true; - } - - /** - * Confirms and logs Javascript alerts. - */ - @Override - public boolean onJsConfirm(WebView view, String url, String message, - JsResult result) { - String logMsg = String.format("JS Confirmation '%s' received from %s", - message, url); - Log.w(TAG, logMsg); - result.confirm(); - - return true; - } - - /** - * Confirms and logs Javascript alerts, providing the default value. - */ - @Override - public boolean onJsPrompt(WebView view, String url, String message, - String defaultValue, JsPromptResult result) { - String logMsg = String.format("JS Prompt '%s' received from %s; " + - "Giving default value '%s'", message, url, defaultValue); - Log.w(TAG, logMsg); - result.confirm(defaultValue); - - return true; - } - }); - - webView.setWebViewClient(new TestWebViewClient(webView.getWebViewClient()) { - - /** - * Bypasses and logs errors. - */ - @Override - public void onReceivedError(WebView view, int errorCode, - String description, String failingUrl) { - String message = String.format("Error '%s' (%d) loading url: %s", - description, errorCode, failingUrl); - Log.w(TAG, message); - } - - /** - * Ignores and logs SSL errors. - */ - @Override - public void onReceivedSslError(WebView view, SslErrorHandler handler, - SslError error) { - Log.w(TAG, "SSL error: " + error); - handler.proceed(); - } - - /** - * Ignores and logs SSL client certificate requests. - */ - @Override - public void onReceivedClientCertRequest(WebView view, ClientCertRequestHandler handler, - String host_and_port) { - Log.w(TAG, "SSL client certificate request: " + host_and_port); - handler.cancel(); - } - - }); - } - - public synchronized void notifyComplete() { - mTestDone = true; - notify(); - } - - public void testJNIBindings() { - setUpBrowser(); - - Tab tab = mController.getTabControl().getCurrentTab(); - WebView webView = tab.getWebView(); - webView.loadUrl("file://" + SDCARD_BINDINGS_TEST_HTML); - synchronized(this) { - while(!mTestDone) { - try { - wait(); - } catch (InterruptedException e) {} - } - } - - // Now the tests are complete grab the DOM content and compare to the reference. - GetWebKitDataThread getWKData = new GetWebKitDataThread(this, webView); - mWebKitResult = null; - getWKData.start(); - - synchronized(this) { - while(mWebKitResult == null) { - try { - wait(); - } catch (InterruptedException e) {} - } - } - - Log.v(TAG, "WebKit result:"); - Log.v(TAG, mWebKitResult); - assertEquals("Bindings test failed! See logcat for more details!", mExpectedWebKitResult, - mWebKitResult); - } -} |