http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/ae8bc77e/test/assets/www/phonegap.js ---------------------------------------------------------------------- diff --git a/test/assets/www/phonegap.js b/test/assets/www/phonegap.js new file mode 100755 index 0000000..8931af9 --- /dev/null +++ b/test/assets/www/phonegap.js @@ -0,0 +1,11 @@ +document.write('<script type="text/javascript" charset="utf-8" src="../cordova-1.4.1.js"></script>'); +document.write('<script type="text/javascript" charset="utf-8" src="cordova-1.4.1.js"></script>'); + +function backHome() { + if (device.platform.toLowerCase() == 'android') { + navigator.app.backHistory(); + } + else { + document.location = "../index.html"; + } +}
http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/ae8bc77e/test/assets/www/sql/index.html ---------------------------------------------------------------------- diff --git a/test/assets/www/sql/index.html b/test/assets/www/sql/index.html new file mode 100755 index 0000000..c9e1a53 --- /dev/null +++ b/test/assets/www/sql/index.html @@ -0,0 +1,132 @@ +<!DOCTYPE HTML> +<html> + <head> + <meta name="viewport" content="width=device-width,height=device-height,user-scalable=no,maximum-scale=1.0,initial-scale=1.0" /> + <meta http-equiv="Content-type" content="text/html; charset=utf-8"> <!-- ISO-8859-1 --> + <title>PhoneGap</title> + <link rel="stylesheet" href="../master.css" type="text/css" media="screen" title="no title" charset="utf-8"> + <script type="text/javascript" charset="utf-8" src="../phonegap.js"></script> + + +<script type="text/javascript" charset="utf-8"> + + var deviceReady = false; + + //------------------------------------------------------------------------- + // HTML5 Database + //------------------------------------------------------------------------- + var db; + var callDatabase = function() { + db = openDatabase("mydb", "1.0", "PhoneGap Demo", 20000); + if (db === null) { + databaseOutput("Database could not be opened."); + return; + } + databaseOutput("Database opened."); + db.transaction(function (tx) { + tx.executeSql('DROP TABLE IF EXISTS DEMO'); + tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)', [], + function(tx,results) { console.log("Created table"); }, + function(tx,err) { alert("Error creating table: "+err.message); }); + tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")', [], + function(tx,results) { console.log("Insert row1 success"); }, + function(tx,err) { alert("Error adding 1st row: "+err.message); }); + tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")', [], + function(tx,results) { console.log("Insert row2 success"); }, + function(tx,err) { alert("Error adding 2nd row: "+err.message); }); + databaseOutput("Data written to DEMO table."); + console.log("Data written to DEMO table."); + + tx.executeSql('SELECT * FROM DEMO', [], function (tx, results) { + var len = results.rows.length; + var text = "DEMO table: " + len + " rows found.<br>"; + text = text + "<table border='1'><tr><td>Row</td><td>Data</td></tr>"; + for (var i=0; i<len; i++){ + text = text + "<tr><td>" + i + "</td><td>" + results.rows.item(i).id + ", " + results.rows.item(i).data + "</td></tr>"; + } + text = text + "</table>"; + databaseOutput(text); + }, function(tx, err) { + alert("Error processing SELECT * SQL: "+err.message); + }); + tx.executeSql('SELECT ID FROM DEMO', [], function (tx, results) { + var len = results.rows.length; + var text = "DEMO table: " + len + " rows found.<br>"; + text = text + "<table border='1'><tr><td>Row</td><td>Data</td></tr>"; + for (var i=0; i<len; i++){ + text = text + "<tr><td>" + i + "</td><td>" + results.rows.item(i).id + "</td></tr>"; + } + text = text + "</table>"; + databaseOutput(text); + }, function(tx, err) { + alert("Error processing SELECT ID SQL: "+err.message); + }); + + }, + function(err) { + console.log("Transaction failed: " + err.message); + }); + + + }; + + var readDatabase = function() { + if (!db) { + db = openDatabase("mydb", "1.0", "PhoneGap Demo", 20000); + if (db === null) { + databaseOutput("Database could not be opened."); + return; + } + } + db.transaction(function (tx) { + tx.executeSql('SELECT * FROM DEMO WHERE id=2', [], function (tx, results) { + var len = results.rows.length; + var text = "DEMO table: " + len + " rows found.<br>"; + text = text + "<table border='1'><tr><td>Row</td><td>Data</td></tr>"; + for (var i=0; i<len; i++){ + text = text + "<tr><td>" + i + "</td><td>" + results.rows.item(i).id + ", " + results.rows.item(i).data + "</td></tr>"; + } + text = text + "</table>"; + databaseOutput(text); + }, function(tx, err) { + alert("Error processing SELECT * WHERE id=2 SQL: "+err.message); + }); + }); + } + + var databaseOutput = function(s) { + var el = document.getElementById("database_results"); + el.innerHTML = el.innerHTML + s + "<br>"; + }; + + /** + * Function called when page has finished loading. + */ + function init() { + document.addEventListener("deviceready", function() { + deviceReady = true; + console.log("Device="+device.platform+" "+device.version); + }, false); + window.setTimeout(function() { + if (!deviceReady) { + alert("Error: PhoneGap did not initialize. Demo will not run correctly."); + } + },1000); + } + +</script> + + </head> + <body onload="init();" id="stage" class="theme"> + + <h1>HTML5 Database</h1> + <div id="info"> + <b>Results:</b><br> + <span id="database_results"></span> + </div> + <h2>Action</h2> + <a href="javascript:" class="btn large" onclick="callDatabase();">Create, Add, Read Database</a> + <a href="javascript:" class="btn large" onclick="readDatabase();">Read Database</a> + <h2> </h2><a href="javascript:" class="backBtn" onclick="backHome();">Back</a> + </body> +</html> http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/ae8bc77e/test/assets/www/storage/index.html ---------------------------------------------------------------------- diff --git a/test/assets/www/storage/index.html b/test/assets/www/storage/index.html new file mode 100755 index 0000000..ab0ccaa --- /dev/null +++ b/test/assets/www/storage/index.html @@ -0,0 +1,50 @@ +<!DOCTYPE HTML> +<html> + <head> + <meta name="viewport" content="width=device-width,height=device-height,user-scalable=no,maximum-scale=1.0,initial-scale=1.0" /> + <meta http-equiv="Content-type" content="text/html; charset=utf-8"> <!-- ISO-8859-1 --> + <title>PhoneGap</title> + <link rel="stylesheet" href="../master.css" type="text/css" media="screen" title="no title" charset="utf-8"> + <script type="text/javascript" charset="utf-8" src="../phonegap.js"></script> + + +<script type="text/javascript" charset="utf-8"> + + var deviceReady = false; + + /** + * Function called when page has finished loading. + */ + function init() { + document.addEventListener("deviceready", function() { + deviceReady = true; + console.log("Device="+device.platform+" "+device.version); + }, false); + window.setTimeout(function() { + if (!deviceReady) { + alert("Error: PhoneGap did not initialize. Demo will not run correctly."); + } + },1000); + } + +</script> + + </head> + <body onload="init();" id="stage" class="theme"> + + <h1>Local Storage</h1> + <div id="info"> + You have run this app <span id="count">an untold number of</span> time(s). + </div> + + <script> + if (!localStorage.pageLoadCount) { + localStorage.pageLoadCount = 0; + } + localStorage.pageLoadCount = parseInt(localStorage.pageLoadCount) + 1; + document.getElementById('count').textContent = localStorage.pageLoadCount; + </script> + + <h2> </h2><a href="javascript:" class="backBtn" onclick="backHome();">Back</a> + </body> +</html> http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/ae8bc77e/test/assets/www/whitelist/index.html ---------------------------------------------------------------------- diff --git a/test/assets/www/whitelist/index.html b/test/assets/www/whitelist/index.html new file mode 100644 index 0000000..ac60e01 --- /dev/null +++ b/test/assets/www/whitelist/index.html @@ -0,0 +1,35 @@ +<!DOCTYPE HTML> +<html> + <head> + <meta name="viewport" content="width=device-width,height=device-height,user-scalable=no,initial-scale=1.0" /> + <meta http-equiv="Content-type" content="text/html; charset=utf-8"> + <title>PhoneGap</title> + <link rel="stylesheet" href="master.css" type="text/css" media="screen" title="no title" charset="utf-8"> + <script type="text/javascript" charset="utf-8" src="phonegap.js"></script> + <script type="text/javascript" charset="utf-8" src="main.js"></script> + + </head> + <body onload="init();" id="stage" class="theme"> + <h1>PhoneGap Tests</h1> + <div id="info"> + <h4>Platform: <span id="platform"> </span></h4> + <h4>Version: <span id="version"> </span></h4> + <h4>UUID: <span id="uuid"> </span></h4> + <h4>Name: <span id="name"> </span></h4> + <h4>Width: <span id="width"> </span>, Height: <span id="height"> + </span>, Color Depth: <span id="colorDepth"></span></h4> + </div> + <a href="autotest/index.html" class="btn large">Automatic Test</a> + <a href="accelerometer/index.html" class="btn large">Accelerometer</a> + <a href="audio/index.html" class="btn large">Audio Play/Record</a> + <a href="camera/index.html" class="btn large">Camera</a> + <a href="compass/index.html" class="btn large">Compass</a> + <a href="contacts/index.html" class="btn large">Contacts</a> + <a href="events/index.html" class="btn large">Events</a> + <a href="location/index.html" class="btn large">Location</a> + <a href="misc/index.html" class="btn large">Misc Content</a> + <a href="notification/index.html" class="btn large">Notification</a> + <a href="sql/index.html" class="btn large">Web SQL</a> + <a href="storage/index.html" class="btn large">Local Storage</a> + </body> +</html> http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/ae8bc77e/test/libs/android.jar ---------------------------------------------------------------------- diff --git a/test/libs/android.jar b/test/libs/android.jar new file mode 100644 index 0000000..8854842 Binary files /dev/null and b/test/libs/android.jar differ http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/ae8bc77e/test/libs/android_library.jar ---------------------------------------------------------------------- diff --git a/test/libs/android_library.jar b/test/libs/android_library.jar new file mode 100644 index 0000000..53029ee Binary files /dev/null and b/test/libs/android_library.jar differ http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/ae8bc77e/test/libs/android_webdriver_library.jar ---------------------------------------------------------------------- diff --git a/test/libs/android_webdriver_library.jar b/test/libs/android_webdriver_library.jar new file mode 100644 index 0000000..d38a630 Binary files /dev/null and b/test/libs/android_webdriver_library.jar differ http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/ae8bc77e/test/libs/base.jar ---------------------------------------------------------------------- diff --git a/test/libs/base.jar b/test/libs/base.jar new file mode 100644 index 0000000..bc2d933 Binary files /dev/null and b/test/libs/base.jar differ http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/ae8bc77e/test/libs/commons-codec-1.3.jar ---------------------------------------------------------------------- diff --git a/test/libs/commons-codec-1.3.jar b/test/libs/commons-codec-1.3.jar new file mode 100644 index 0000000..957b675 Binary files /dev/null and b/test/libs/commons-codec-1.3.jar differ http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/ae8bc77e/test/libs/cordova-1.4.1.jar ---------------------------------------------------------------------- diff --git a/test/libs/cordova-1.4.1.jar b/test/libs/cordova-1.4.1.jar new file mode 100644 index 0000000..927470c Binary files /dev/null and b/test/libs/cordova-1.4.1.jar differ http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/ae8bc77e/test/libs/guava-10.0.1.jar ---------------------------------------------------------------------- diff --git a/test/libs/guava-10.0.1.jar b/test/libs/guava-10.0.1.jar new file mode 100644 index 0000000..d107c0f Binary files /dev/null and b/test/libs/guava-10.0.1.jar differ http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/ae8bc77e/test/libs/junit-4.10.jar ---------------------------------------------------------------------- diff --git a/test/libs/junit-4.10.jar b/test/libs/junit-4.10.jar new file mode 100644 index 0000000..bf5c0b9 Binary files /dev/null and b/test/libs/junit-4.10.jar differ http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/ae8bc77e/test/libs/logging.jar ---------------------------------------------------------------------- diff --git a/test/libs/logging.jar b/test/libs/logging.jar new file mode 100644 index 0000000..e708029 Binary files /dev/null and b/test/libs/logging.jar differ http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/ae8bc77e/test/proguard.cfg ---------------------------------------------------------------------- diff --git a/test/proguard.cfg b/test/proguard.cfg new file mode 100644 index 0000000..b1cdf17 --- /dev/null +++ b/test/proguard.cfg @@ -0,0 +1,40 @@ +-optimizationpasses 5 +-dontusemixedcaseclassnames +-dontskipnonpubliclibraryclasses +-dontpreverify +-verbose +-optimizations !code/simplification/arithmetic,!field/*,!class/merging/* + +-keep public class * extends android.app.Activity +-keep public class * extends android.app.Application +-keep public class * extends android.app.Service +-keep public class * extends android.content.BroadcastReceiver +-keep public class * extends android.content.ContentProvider +-keep public class * extends android.app.backup.BackupAgentHelper +-keep public class * extends android.preference.Preference +-keep public class com.android.vending.licensing.ILicensingService + +-keepclasseswithmembernames class * { + native <methods>; +} + +-keepclasseswithmembers class * { + public <init>(android.content.Context, android.util.AttributeSet); +} + +-keepclasseswithmembers class * { + public <init>(android.content.Context, android.util.AttributeSet, int); +} + +-keepclassmembers class * extends android.app.Activity { + public void *(android.view.View); +} + +-keepclassmembers enum * { + public static **[] values(); + public static ** valueOf(java.lang.String); +} + +-keep class * implements android.os.Parcelable { + public static final android.os.Parcelable$Creator *; +} http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/ae8bc77e/test/project.properties ---------------------------------------------------------------------- diff --git a/test/project.properties b/test/project.properties new file mode 100644 index 0000000..730e911 --- /dev/null +++ b/test/project.properties @@ -0,0 +1,11 @@ +# This file is automatically generated by Android Tools. +# Do not modify this file -- YOUR CHANGES WILL BE ERASED! +# +# This file must be checked in Version Control Systems. +# +# To customize properties used by the Ant build system use, +# "ant.properties", and override values to adapt the script to your +# project structure. + +# Project target. +target=android-14 http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/ae8bc77e/test/res/drawable-hdpi/ic_launcher.png ---------------------------------------------------------------------- diff --git a/test/res/drawable-hdpi/ic_launcher.png b/test/res/drawable-hdpi/ic_launcher.png new file mode 100644 index 0000000..8074c4c Binary files /dev/null and b/test/res/drawable-hdpi/ic_launcher.png differ http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/ae8bc77e/test/res/drawable-ldpi/ic_launcher.png ---------------------------------------------------------------------- diff --git a/test/res/drawable-ldpi/ic_launcher.png b/test/res/drawable-ldpi/ic_launcher.png new file mode 100644 index 0000000..1095584 Binary files /dev/null and b/test/res/drawable-ldpi/ic_launcher.png differ http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/ae8bc77e/test/res/drawable-mdpi/ic_launcher.png ---------------------------------------------------------------------- diff --git a/test/res/drawable-mdpi/ic_launcher.png b/test/res/drawable-mdpi/ic_launcher.png new file mode 100644 index 0000000..a07c69f Binary files /dev/null and b/test/res/drawable-mdpi/ic_launcher.png differ http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/ae8bc77e/test/res/layout/main.xml ---------------------------------------------------------------------- diff --git a/test/res/layout/main.xml b/test/res/layout/main.xml new file mode 100644 index 0000000..2b020ba --- /dev/null +++ b/test/res/layout/main.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="fill_parent" + android:layout_height="fill_parent" + android:orientation="vertical" > + + <com.phonegap.CordovaWebView + android:id="@+id/phoneGapView" + android:layout_width="fill_parent" + android:layout_height="fill_parent" /> + + +</LinearLayout> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/ae8bc77e/test/res/values/strings.xml ---------------------------------------------------------------------- diff --git a/test/res/values/strings.xml b/test/res/values/strings.xml new file mode 100644 index 0000000..27c3286 --- /dev/null +++ b/test/res/values/strings.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + + <string name="hello">Hello World!</string> + <string name="app_name">CordovaTestTest</string> + +</resources> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/ae8bc77e/test/res/xml/phonegap.xml ---------------------------------------------------------------------- diff --git a/test/res/xml/phonegap.xml b/test/res/xml/phonegap.xml new file mode 100644 index 0000000..97f31ea --- /dev/null +++ b/test/res/xml/phonegap.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8"?> +<phonegap> + <access origin="http://127.0.0.1*"/> + <log level="DEBUG"/> +</phonegap> http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/ae8bc77e/test/res/xml/plugins.xml ---------------------------------------------------------------------- diff --git a/test/res/xml/plugins.xml b/test/res/xml/plugins.xml new file mode 100644 index 0000000..4d84f59 --- /dev/null +++ b/test/res/xml/plugins.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<plugins> + <plugin name="App" value="com.phonegap.App"/> + <plugin name="Geolocation" value="com.phonegap.GeoBroker"/> + <plugin name="Device" value="com.phonegap.Device"/> + <plugin name="Accelerometer" value="com.phonegap.AccelListener"/> + <plugin name="Compass" value="com.phonegap.CompassListener"/> + <plugin name="Media" value="com.phonegap.AudioHandler"/> + <plugin name="Camera" value="com.phonegap.CameraLauncher"/> + <plugin name="Contacts" value="com.phonegap.ContactManager"/> + <plugin name="File" value="com.phonegap.FileUtils"/> + <plugin name="Network Status" value="com.phonegap.NetworkManager"/> + <plugin name="Notification" value="com.phonegap.Notification"/> + <plugin name="Storage" value="com.phonegap.Storage"/> + <plugin name="Temperature" value="com.phonegap.TempListener"/> + <plugin name="FileTransfer" value="com.phonegap.FileTransfer"/> + <plugin name="Capture" value="com.phonegap.Capture"/> + <plugin name="Battery" value="com.phonegap.BatteryListener"/> + <plugin name="Keyboard" value="com.phonegap.KeyboardHandler" /> +</plugins> http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/ae8bc77e/test/src/org/apache/cordova/test/CordovaActivityTest.java ---------------------------------------------------------------------- diff --git a/test/src/org/apache/cordova/test/CordovaActivityTest.java b/test/src/org/apache/cordova/test/CordovaActivityTest.java new file mode 100644 index 0000000..96e4b00 --- /dev/null +++ b/test/src/org/apache/cordova/test/CordovaActivityTest.java @@ -0,0 +1,55 @@ +package org.apache.cordova.test; + +import org.apache.cordova.CordovaWebView; +import com.phonegap.api.PluginManager; + +import android.test.ActivityInstrumentationTestCase2; +import android.widget.FrameLayout; +import android.widget.LinearLayout; + +public class CordovaActivityTest extends ActivityInstrumentationTestCase2<PhoneGapActivity> { + + private PhoneGapActivity testActivity; + private FrameLayout containerView; + private LinearLayout innerContainer; + private CordovaWebView testView; + + public CordovaActivityTest() + { + super("com.phonegap.test.activities",PhoneGapActivity.class); + } + + protected void setUp() throws Exception { + super.setUp(); + testActivity = this.getActivity(); + containerView = (FrameLayout) testActivity.findViewById(android.R.id.content); + innerContainer = (LinearLayout) containerView.getChildAt(0); + testView = (CordovaWebView) innerContainer.getChildAt(0); + + } + + public void testPreconditions(){ + assertNotNull(innerContainer); + assertNotNull(testView); + } + + + public void testForCordovaView() { + String className = testView.getClass().getSimpleName(); + assertTrue(className.equals("CordovaWebView")); + } + + public void testForLinearLayout() { + String className = innerContainer.getClass().getSimpleName(); + assertTrue(className.equals("LinearLayoutSoftKeyboardDetect")); + } + + public void testForPluginManager() { + CordovaWebView v = (CordovaWebView) testView; + PluginManager p = v.getPluginManager(); + assertNotNull(p); + String className = p.getClass().getSimpleName(); + assertTrue(className.equals("PluginManager")); + } + +} http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/ae8bc77e/test/src/org/apache/cordova/test/CordovaDriverAction.java ---------------------------------------------------------------------- diff --git a/test/src/org/apache/cordova/test/CordovaDriverAction.java b/test/src/org/apache/cordova/test/CordovaDriverAction.java new file mode 100644 index 0000000..bfb8c0d --- /dev/null +++ b/test/src/org/apache/cordova/test/CordovaDriverAction.java @@ -0,0 +1,13 @@ +package org.apache.cordova.test; + +import android.app.Activity; +import android.os.Bundle; + + +public class CordovaDriverAction extends Activity { + /** Called when the activity is first created. */ + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + } +} http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/ae8bc77e/test/src/org/apache/cordova/test/CordovaSplashTest.java ---------------------------------------------------------------------- diff --git a/test/src/org/apache/cordova/test/CordovaSplashTest.java b/test/src/org/apache/cordova/test/CordovaSplashTest.java new file mode 100644 index 0000000..307f966 --- /dev/null +++ b/test/src/org/apache/cordova/test/CordovaSplashTest.java @@ -0,0 +1,54 @@ +package org.apache.cordova.test; + +import org.apache.cordova.CordovaWebView; +import com.phonegap.api.PluginManager; + +import android.test.ActivityInstrumentationTestCase2; +import android.widget.FrameLayout; +import android.widget.LinearLayout; + +public class CordovaSplashTest extends ActivityInstrumentationTestCase2<PhoneGapSplash> { + + private PhoneGapSplash testActivity; + private FrameLayout containerView; + private LinearLayout innerContainer; + private CordovaWebView testView; + + public CordovaSplashTest() + { + super("com.phonegap.test.activities",PhoneGapSplash.class); + } + + protected void setUp() throws Exception{ + super.setUp(); + testActivity = this.getActivity(); + containerView = (FrameLayout) testActivity.findViewById(android.R.id.content); + innerContainer = (LinearLayout) containerView.getChildAt(0); + testView = (CordovaWebView) innerContainer.getChildAt(0); + + } + + public void testPreconditions(){ + assertNotNull(innerContainer); + assertNotNull(testView); + } + + + public void testForCordovaView() { + String className = testView.getClass().getSimpleName(); + assertTrue(className.equals("CordovaWebView")); + } + + public void testForPluginManager() { + CordovaWebView v = (CordovaWebView) testView; + PluginManager p = v.getPluginManager(); + assertNotNull(p); + String className = p.getClass().getSimpleName(); + assertTrue(className.equals("PluginManager")); + } + + public void testBackButton() { + CordovaWebView v = (CordovaWebView) testView; + assertFalse(v.checkBackKey()); + } +} http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/ae8bc77e/test/src/org/apache/cordova/test/CordovaTest.java ---------------------------------------------------------------------- diff --git a/test/src/org/apache/cordova/test/CordovaTest.java b/test/src/org/apache/cordova/test/CordovaTest.java new file mode 100644 index 0000000..8d290f4 --- /dev/null +++ b/test/src/org/apache/cordova/test/CordovaTest.java @@ -0,0 +1,90 @@ +package org.apache.cordova.test; + +import org.apache.cordova.CordovaWebView; +import com.phonegap.api.PluginManager; + +import android.test.ActivityInstrumentationTestCase2; +import android.view.View; + +public class CordovaTest extends + ActivityInstrumentationTestCase2<PhoneGapViewTestActivity> { + + private static final long TIMEOUT = 1000; + private PhoneGapViewTestActivity testActivity; + private View testView; + private String rString; + + public CordovaTest() { + super("com.phonegap.test.activities", PhoneGapViewTestActivity.class); + } + + protected void setUp() throws Exception { + super.setUp(); + testActivity = this.getActivity(); + testView = testActivity.findViewById(R.id.phoneGapView); + } + + public void testPreconditions() { + assertNotNull(testView); + } + + public void testForCordovaView() { + String className = testView.getClass().getSimpleName(); + assertTrue(className.equals("CordovaWebView")); + } + + public void testForPluginManager() { + CordovaWebView v = (CordovaWebView) testView; + PluginManager p = v.getPluginManager(); + assertNotNull(p); + String className = p.getClass().getSimpleName(); + assertTrue(className.equals("PluginManager")); + } + + public void testBackButton() { + CordovaWebView v = (CordovaWebView) testView; + assertFalse(v.checkBackKey()); + } + + public void testLoadUrl() { + CordovaWebView v = (CordovaWebView) testView; + v.loadUrlIntoView("file:///android_asset/www/index.html"); + sleep(); + String url = v.getUrl(); + boolean result = url.equals("file:///android_asset/www/index.html"); + assertTrue(result); + int visible = v.getVisibility(); + assertTrue(visible == View.VISIBLE); + } + + public void testBackHistoryFalse() { + CordovaWebView v = (CordovaWebView) testView; + // Move back in the history + boolean test = v.backHistory(); + assertFalse(test); + } + + // Make sure that we can go back + public void testBackHistoryTrue() { + this.testLoadUrl(); + CordovaWebView v = (CordovaWebView) testView; + v.loadUrlIntoView("file:///android_asset/www/compass/index.html"); + sleep(); + String url = v.getUrl(); + assertTrue(url.equals("file:///android_asset/www/compass/index.html")); + // Move back in the history + boolean test = v.backHistory(); + assertTrue(test); + sleep(); + url = v.getUrl(); + assertTrue(url.equals("file:///android_asset/www/index.html")); + } + + private void sleep() { + try { + Thread.sleep(TIMEOUT); + } catch (InterruptedException e) { + fail("Unexpected Timeout"); + } + } +} http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/ae8bc77e/test/src/org/apache/cordova/test/CordovaViewFactory.java ---------------------------------------------------------------------- diff --git a/test/src/org/apache/cordova/test/CordovaViewFactory.java b/test/src/org/apache/cordova/test/CordovaViewFactory.java new file mode 100644 index 0000000..4e2e6a5 --- /dev/null +++ b/test/src/org/apache/cordova/test/CordovaViewFactory.java @@ -0,0 +1,17 @@ +package org.apache.cordova.test; + +import org.openqa.selenium.android.library.WebViewFactory; + +import org.apache.cordova.CordovaWebView; + +import android.app.Activity; +import android.webkit.WebView; + +public class CordovaViewFactory implements WebViewFactory { + + public WebView createNewView(Activity arg0) { + // TODO Auto-generated method stub + return new CordovaWebView(arg0); + } + +} http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/ae8bc77e/test/src/org/apache/cordova/test/GapClientTest.java ---------------------------------------------------------------------- diff --git a/test/src/org/apache/cordova/test/GapClientTest.java b/test/src/org/apache/cordova/test/GapClientTest.java new file mode 100644 index 0000000..d826ae7 --- /dev/null +++ b/test/src/org/apache/cordova/test/GapClientTest.java @@ -0,0 +1,71 @@ +package org.apache.cordova.test; + +import org.apache.cordova.CordovaWebView; +import org.apache.cordova.CordovaChromeClient; +import org.apache.cordova.api.PluginManager; + +import android.content.Context; +import android.content.res.AssetManager; +import android.content.res.Resources; +import android.test.ActivityInstrumentationTestCase2; +import android.view.View; +import android.widget.FrameLayout; +import android.widget.LinearLayout; + +public class GapClientTest extends ActivityInstrumentationTestCase2<PhoneGapViewTestActivity> { + + private PhoneGapViewTestActivity testActivity; + private FrameLayout containerView; + private LinearLayout innerContainer; + private View testView; + private String rString; + private CordovaChromeClient appCode; + + public GapClientTest() { + super("com.phonegap.test.activities",PhoneGapViewTestActivity.class); + } + + protected void setUp() throws Exception{ + super.setUp(); + testActivity = this.getActivity(); + containerView = (FrameLayout) testActivity.findViewById(android.R.id.content); + innerContainer = (LinearLayout) containerView.getChildAt(0); + testView = innerContainer.getChildAt(0); + appCode = ((CordovaWebView) testView).getGapClient(); + + } + + public void testPreconditions(){ + assertNotNull(innerContainer); + assertNotNull(testView); + } + + public void testForCordovaView() { + String className = testView.getClass().getSimpleName(); + assertTrue(className.equals("CordovaWebView")); + } + + public void testGetResources() { + Resources ls = testActivity.getResources(); + Resources rs = appCode.getResources(); + assertTrue(ls.equals(rs)); + } + + public void testGetPackageName() { + String ls = testActivity.getPackageName(); + String rs = appCode.getPackageName(); + assertTrue(ls.equals(rs)); + } + + public void testGetAssets() { + AssetManager ls = testActivity.getAssets(); + AssetManager rs = testActivity.getAssets(); + assertTrue(ls.equals(rs)); + } + + public void testGetBaseContext() { + Context ls = testActivity.getBaseContext(); + Context rs = testActivity.getBaseContext(); + assertTrue(ls.equals(rs)); + } +} http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/ae8bc77e/test/src/org/apache/cordova/test/JailActivity.java ---------------------------------------------------------------------- diff --git a/test/src/org/apache/cordova/test/JailActivity.java b/test/src/org/apache/cordova/test/JailActivity.java new file mode 100644 index 0000000..77a8527 --- /dev/null +++ b/test/src/org/apache/cordova/test/JailActivity.java @@ -0,0 +1,19 @@ +package org.apache.cordova.test; + +import org.apache.cordova.DroidGap; + +import android.app.Activity; +import android.os.Bundle; + +public class JailActivity extends DroidGap { + /** Called when the activity is first created. */ + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + if(!super.areAssetsInJail()) + { + super.moveAssetsToJail(); + } + super.loadJailedFile("www/index.html"); + } +} http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/ae8bc77e/test/src/org/apache/cordova/test/JailTest.java ---------------------------------------------------------------------- diff --git a/test/src/org/apache/cordova/test/JailTest.java b/test/src/org/apache/cordova/test/JailTest.java new file mode 100644 index 0000000..027c8f6 --- /dev/null +++ b/test/src/org/apache/cordova/test/JailTest.java @@ -0,0 +1,62 @@ +package org.apache.cordova.test; + +import org.apache.cordova.CordovaWebView; +import org.apache.cordova.api.PluginManager; + +import android.test.ActivityInstrumentationTestCase2; +import android.widget.FrameLayout; +import android.widget.LinearLayout; + +public class JailTest extends ActivityInstrumentationTestCase2<JailActivity> { + + private JailActivity testActivity; + private FrameLayout containerView; + private LinearLayout innerContainer; + private CordovaWebView testView; + private static final long TIMEOUT = 2000; + + public JailTest() + { + super("com.phonegap.test.activities",JailActivity.class); + } + + protected void setUp() throws Exception { + super.setUp(); + testActivity = this.getActivity(); + containerView = (FrameLayout) testActivity.findViewById(android.R.id.content); + innerContainer = (LinearLayout) containerView.getChildAt(0); + testView = (CordovaWebView) innerContainer.getChildAt(0); + + } + + public void testPreconditions(){ + assertNotNull(innerContainer); + assertNotNull(testView); + } + + + public void testForCordovaView() { + String className = testView.getClass().getSimpleName(); + assertTrue(className.equals("CordovaWebView")); + } + + public void testForJailedItems() { + sleep(); + String url = testView.getUrl(); + assertTrue(url.contains("file:///data/data/")); + } + + public void testForJailCheck() { + sleep(); + assertTrue(testActivity.areAssetsInJail()); + } + + private void sleep() { + try { + Thread.sleep(TIMEOUT); + } catch (InterruptedException e) { + fail("Unexpected Timeout"); + } + } + +} http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/ae8bc77e/test/src/org/apache/cordova/test/PhoneGapActivity.java ---------------------------------------------------------------------- diff --git a/test/src/org/apache/cordova/test/PhoneGapActivity.java b/test/src/org/apache/cordova/test/PhoneGapActivity.java new file mode 100644 index 0000000..d15bdb1 --- /dev/null +++ b/test/src/org/apache/cordova/test/PhoneGapActivity.java @@ -0,0 +1,15 @@ +package org.apache.cordova.test; + +import org.apache.cordova.DroidGap; + +import android.app.Activity; +import android.os.Bundle; + +public class PhoneGapActivity extends DroidGap { + /** Called when the activity is first created. */ + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + super.loadUrl("file:///android_asset/index.html"); + } +} http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/ae8bc77e/test/src/org/apache/cordova/test/PhoneGapSplash.java ---------------------------------------------------------------------- diff --git a/test/src/org/apache/cordova/test/PhoneGapSplash.java b/test/src/org/apache/cordova/test/PhoneGapSplash.java new file mode 100644 index 0000000..59417e3 --- /dev/null +++ b/test/src/org/apache/cordova/test/PhoneGapSplash.java @@ -0,0 +1,26 @@ +package org.apache.cordova.test; + +import org.apache.cordova.CordovaWebView; + +import android.app.Activity; +import android.os.Bundle; + +public class PhoneGapSplash extends Activity { + CordovaWebView phoneGap; + /** Called when the activity is first created. */ + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.main); + + phoneGap = (CordovaWebView) findViewById(R.id.phoneGapView); + phoneGap.init(); + phoneGap.loadUrl("file:///android_asset/index.html", 5000); + } + + public void onDestroy() + { + super.onDestroy(); + phoneGap.onDestroy(); + } +} http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/ae8bc77e/test/src/org/apache/cordova/test/PhoneGapViewTestActivity.java ---------------------------------------------------------------------- diff --git a/test/src/org/apache/cordova/test/PhoneGapViewTestActivity.java b/test/src/org/apache/cordova/test/PhoneGapViewTestActivity.java new file mode 100644 index 0000000..10d4b36 --- /dev/null +++ b/test/src/org/apache/cordova/test/PhoneGapViewTestActivity.java @@ -0,0 +1,29 @@ +package org.apache.cordova.test; + +import org.apache.cordova.CordovaWebView; + +import android.app.Activity; +import android.os.Bundle; + +public class PhoneGapViewTestActivity extends Activity { + + CordovaWebView phoneGap; + /** Called when the activity is first created. */ + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.main); + + phoneGap = (CordovaWebView) findViewById(R.id.phoneGapView); + phoneGap.init(); + + phoneGap.loadUrl("file:///android_asset/index.html"); + + } + + public void onDestroy() + { + super.onDestroy(); + phoneGap.onDestroy(); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/ae8bc77e/test/src/org/apache/cordova/test/PluginManagerTest.java ---------------------------------------------------------------------- diff --git a/test/src/org/apache/cordova/test/PluginManagerTest.java b/test/src/org/apache/cordova/test/PluginManagerTest.java new file mode 100644 index 0000000..3c36f27 --- /dev/null +++ b/test/src/org/apache/cordova/test/PluginManagerTest.java @@ -0,0 +1,48 @@ +package org.apache.cordova.test; + +import org.apache.cordova.CordovaWebView; +import com.phonegap.api.PluginManager; + +import android.test.ActivityInstrumentationTestCase2; +import android.view.View; +import android.widget.FrameLayout; +import android.widget.LinearLayout; + +public class PluginManagerTest extends ActivityInstrumentationTestCase2<PhoneGapViewTestActivity> { + + private PhoneGapViewTestActivity testActivity; + private FrameLayout containerView; + private LinearLayout innerContainer; + private View testView; + private String rString; + private PluginManager pMan; + + public PluginManagerTest() { + super("com.phonegap.test.activities",PhoneGapViewTestActivity.class); + } + + protected void setUp() throws Exception{ + super.setUp(); + testActivity = this.getActivity(); + containerView = (FrameLayout) testActivity.findViewById(android.R.id.content); + innerContainer = (LinearLayout) containerView.getChildAt(0); + testView = innerContainer.getChildAt(0); + + } + + public void testPreconditions(){ + assertNotNull(innerContainer); + assertNotNull(testView); + } + + + public void testForPluginManager() { + CordovaWebView v = (CordovaWebView) testView; + pMan = v.getPluginManager(); + assertNotNull(pMan); + String className = pMan.getClass().getSimpleName(); + assertTrue(className.equals("PluginManager")); + } + + +} http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/ae8bc77e/test/src/org/apache/cordova/test/WebDriverTest.java ---------------------------------------------------------------------- diff --git a/test/src/org/apache/cordova/test/WebDriverTest.java b/test/src/org/apache/cordova/test/WebDriverTest.java new file mode 100644 index 0000000..68cf285 --- /dev/null +++ b/test/src/org/apache/cordova/test/WebDriverTest.java @@ -0,0 +1,64 @@ +package org.apache.cordova.test; + +import org.apache.cordova.CordovaWebViewClient; +import org.apache.cordova.CordovaWebView; +import org.apache.cordova.CordovaChromeClient; + +import org.apache.cordova.test.CordovaViewFactory; +import org.openqa.selenium.By; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.android.library.AndroidWebDriver; + +import android.test.ActivityInstrumentationTestCase2; + +public class WebDriverTest extends ActivityInstrumentationTestCase2<CordovaDriverAction> { + + private static final long TIMEOUT = 5000; + private CordovaDriverAction testActivity; + private CordovaWebView testView; + private CordovaViewFactory viewFactory; + private CordovaChromeClient appCode; + private CordovaWebViewClient viewHandler; + private AndroidWebDriver testDriver; + + public WebDriverTest() { + super("com.phonegap.test.activities",CordovaDriverAction.class); + } + + protected void setUp() throws Exception{ + super.setUp(); + testActivity = this.getActivity(); + viewFactory = new CordovaViewFactory(); + appCode = new CordovaChromeClient(testActivity); + viewHandler = new CordovaWebViewClient(testActivity); + testDriver = new AndroidWebDriver(testActivity, viewFactory, viewHandler, appCode); + testView = (CordovaWebView) testDriver.getWebView(); + viewHandler.setCordovaView(testView); + appCode.testInit(testView); + } + + public void testPreconditions(){ + assertNotNull(testView); + } + + public void testWebLoad() { + testDriver.get("file:///android_asset/www/index.html"); + sleep(); + String url = testView.getUrl(); + //Check the sanity! + boolean result = url.equals("file:///android_asset/www/index.html"); + assertTrue(result); + WebElement platformSpan = testDriver.findElement(By.id("platform")); + String text = platformSpan.getText(); + assertTrue(text.equals("Android")); + } + + + private void sleep() { + try { + Thread.sleep(TIMEOUT); + } catch (InterruptedException e) { + fail("Unexpected Timeout"); + } + } +}
