You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by bo...@apache.org on 2015/02/11 23:28:58 UTC

[2/2] android commit: Reverting the refactor. I'd rather have 4 failures due to timing than tests completely disappear

Reverting the refactor.  I'd rather have 4 failures due to timing than tests completely disappear


Project: http://git-wip-us.apache.org/repos/asf/cordova-android/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-android/commit/39092777
Tree: http://git-wip-us.apache.org/repos/asf/cordova-android/tree/39092777
Diff: http://git-wip-us.apache.org/repos/asf/cordova-android/diff/39092777

Branch: refs/heads/master
Commit: 390927772ea93fae497089d7db4b66775f9a39b3
Parents: 1721571
Author: Joe Bowser <bo...@apache.org>
Authored: Wed Feb 11 14:28:50 2015 -0800
Committer: Joe Bowser <bo...@apache.org>
Committed: Wed Feb 11 14:28:50 2015 -0800

----------------------------------------------------------------------
 test/AndroidManifest.xml                        | 182 ++++++++++++
 test/README.md                                  |   4 +-
 .../cordova/test/BackButtonMultiPageTest.java   | 194 -------------
 .../test/BaseCordovaIntegrationTest.java        |  55 ----
 .../cordova/test/CordovaActivityTest.java       |  45 ---
 .../cordova/test/CordovaResourceApiTest.java    | 258 -----------------
 .../org/apache/cordova/test/ErrorUrlTest.java   |  42 ---
 .../apache/cordova/test/HtmlNotFoundTest.java   |  41 ---
 .../src/org/apache/cordova/test/IFrameTest.java | 107 -------
 .../apache/cordova/test/InflateLayoutTest.java  |  56 ----
 .../test/junit/BackButtonMultiPageTest.java     | 278 ++++++++++++++++++
 .../cordova/test/junit/CordovaActivityTest.java |  79 ++++++
 .../test/junit/CordovaResourceApiTest.java      | 281 +++++++++++++++++++
 .../apache/cordova/test/junit/CordovaTest.java  | 116 ++++++++
 .../apache/cordova/test/junit/ErrorUrlTest.java |  82 ++++++
 .../apache/cordova/test/junit/FixWebView.java   |  43 +++
 .../cordova/test/junit/HtmlNotFoundTest.java    |  80 ++++++
 .../apache/cordova/test/junit/IFrameTest.java   | 128 +++++++++
 .../test/junit/IntentUriOverrideTest.java       |  94 +++++++
 .../cordova/test/junit/LifecycleTest.java       |  34 +++
 .../cordova/test/junit/PluginManagerTest.java   |  70 +++++
 .../cordova/test/junit/SplashscreenTest.java    |  49 ++++
 .../org/apache/cordova/test/junit/XhrTest.java  |  34 +++
 test/assets/www/error.html                      |   8 +
 test/assets/www/index.html                      |  36 +--
 test/assets/www/main.js                         | 133 +++++++++
 test/assets/www/splashscreen/index.html         |  38 +++
 test/res/drawable/sandy.jpg                     | Bin 0 -> 48450 bytes
 test/res/xml/config.xml                         |   3 +
 .../apache/cordova/pluginApi/pluginStub.java    |  39 +++
 .../org/apache/cordova/test/ActivityPlugin.java |  60 ++--
 .../cordova/test/BaseTestCordovaActivity.java   |  50 ----
 .../cordova/test/CordovaDriverAction.java       |  78 +++++
 .../test/CordovaWebViewTestActivity.java        |  87 ++++--
 .../apache/cordova/test/MainTestActivity.java   |  24 +-
 .../apache/cordova/test/SabotagedActivity.java  |  92 ++++++
 .../cordova/test/backbuttonmultipage.java       |  30 ++
 .../src/org/apache/cordova/test/background.java |  33 +++
 .../apache/cordova/test/backgroundcolor.java    |  37 +++
 test/src/org/apache/cordova/test/errorurl.java  |  33 +++
 .../src/org/apache/cordova/test/fullscreen.java |  39 +++
 .../org/apache/cordova/test/htmlnotfound.java   |  31 ++
 test/src/org/apache/cordova/test/iframe.java    |  30 ++
 .../cordova/test/junit/GapClientTest.java       |  66 +++++
 test/src/org/apache/cordova/test/lifecycle.java |  30 ++
 test/src/org/apache/cordova/test/loading.java   |  31 ++
 test/src/org/apache/cordova/test/menus.java     |   2 +-
 .../org/apache/cordova/test/splashscreen.java   |  35 +++
 test/src/org/apache/cordova/test/tests.java     |  32 +++
 test/src/org/apache/cordova/test/timeout.java   |  34 +++
 test/src/org/apache/cordova/test/whitelist.java |  51 ++++
 test/src/org/apache/cordova/test/xhr.java       |  30 ++
 52 files changed, 2603 insertions(+), 941 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-android/blob/39092777/test/AndroidManifest.xml
----------------------------------------------------------------------
diff --git a/test/AndroidManifest.xml b/test/AndroidManifest.xml
index 7ceaf2e..e058a42 100755
--- a/test/AndroidManifest.xml
+++ b/test/AndroidManifest.xml
@@ -69,19 +69,201 @@
             android:windowSoftInputMode="adjustPan"
             android:label="@string/app_name" 
             android:configChanges="orientation|keyboardHidden"
+            android:name="org.apache.cordova.test.background" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.SAMPLE_CODE" />
+            </intent-filter>
+        </activity>
+        <activity
+            android:windowSoftInputMode="adjustPan"
+            android:label="@string/app_name" 
+            android:configChanges="orientation|keyboardHidden"
+            android:name="org.apache.cordova.test.backgroundcolor" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.SAMPLE_CODE" />
+            </intent-filter>
+        </activity>
+        <activity
+            android:windowSoftInputMode="adjustPan"
+            android:label="@string/app_name" 
+            android:configChanges="orientation|keyboardHidden"
+            android:name="org.apache.cordova.test.basicauth" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.SAMPLE_CODE" />
+            </intent-filter>
+        </activity>
+        <activity
+            android:windowSoftInputMode="adjustPan"
+            android:label="@string/app_name" 
+            android:configChanges="orientation|keyboardHidden"
             android:name="org.apache.cordova.test.MainTestActivity" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.SAMPLE_CODE" />
+            </intent-filter>
+        </activity>
+        <activity
+            android:windowSoftInputMode="adjustPan"
+            android:label="@string/app_name" 
+            android:configChanges="orientation|keyboardHidden"
+            android:name="org.apache.cordova.test.CordovaDriverAction" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.SAMPLE_CODE" />
+            </intent-filter>
+        </activity>
+        <activity
+            android:windowSoftInputMode="adjustPan"
+            android:label="@string/app_name" 
+            android:configChanges="orientation|keyboardHidden"
+            android:name="org.apache.cordova.test.errorurl" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.SAMPLE_CODE" />
+            </intent-filter>
+        </activity>
+        <activity
+            android:windowSoftInputMode="adjustPan"
+            android:label="@string/app_name" 
+            android:configChanges="orientation|keyboardHidden"
+            android:name="org.apache.cordova.test.fullscreen" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.SAMPLE_CODE" />
+            </intent-filter>
+        </activity>
+        <activity
+            android:windowSoftInputMode="adjustPan"
+            android:label="@string/app_name" 
+            android:configChanges="orientation|keyboardHidden"
+            android:name="org.apache.cordova.test.htmlnotfound" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.SAMPLE_CODE" />
+            </intent-filter>
+        </activity>
+        <activity
+            android:windowSoftInputMode="adjustPan"
+            android:label="@string/app_name" 
+            android:configChanges="orientation|keyboardHidden"
+            android:name="org.apache.cordova.test.iframe" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.SAMPLE_CODE" />
+            </intent-filter>
+        </activity>
+        <activity
+            android:windowSoftInputMode="adjustPan"
+            android:label="@string/app_name" 
+            android:configChanges="orientation|keyboardHidden"
+            android:name="org.apache.cordova.test.lifecycle" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.SAMPLE_CODE" />
+            </intent-filter>
+        </activity>
+        <activity
+            android:windowSoftInputMode="adjustPan"
+            android:label="@string/app_name" 
+            android:configChanges="orientation|keyboardHidden"
+            android:name="org.apache.cordova.test.loading" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.SAMPLE_CODE" />
+            </intent-filter>
         </activity>
         <activity
             android:windowSoftInputMode="adjustPan"
             android:label="@string/app_name" 
             android:configChanges="orientation|keyboardHidden"
             android:name="org.apache.cordova.test.menus" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.SAMPLE_CODE" />
+            </intent-filter>
+        </activity>
+        <activity
+            android:windowSoftInputMode="adjustPan"
+            android:label="@string/app_name" 
+            android:configChanges="orientation|keyboardHidden"
+            android:name="org.apache.cordova.test.splashscreen" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.SAMPLE_CODE" />
+            </intent-filter>
+        </activity>
+        <activity
+            android:windowSoftInputMode="adjustPan"
+            android:label="@string/app_name" 
+            android:configChanges="orientation|keyboardHidden"
+            android:name="org.apache.cordova.test.tests" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.SAMPLE_CODE" />
+            </intent-filter>
+        </activity>
+        <activity
+            android:windowSoftInputMode="adjustPan"
+            android:label="@string/app_name" 
+            android:configChanges="orientation|keyboardHidden"
+            android:name="org.apache.cordova.test.timeout" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.SAMPLE_CODE" />
+            </intent-filter>
         </activity>
         <activity
             android:windowSoftInputMode="adjustPan"
             android:label="@string/app_name" 
             android:configChanges="orientation|keyboardHidden"
             android:name="org.apache.cordova.test.userwebview" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.SAMPLE_CODE" />
+            </intent-filter>
+        </activity>
+        <activity
+            android:windowSoftInputMode="adjustPan"
+            android:label="@string/app_name" 
+            android:configChanges="orientation|keyboardHidden"
+            android:name="org.apache.cordova.test.whitelist" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.SAMPLE_CODE" />
+            </intent-filter>
+        </activity>
+        <activity
+            android:windowSoftInputMode="adjustPan"
+            android:label="@string/app_name" 
+            android:configChanges="orientation|keyboardHidden"
+            android:name="org.apache.cordova.test.xhr" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.SAMPLE_CODE" />
+            </intent-filter>
+        </activity>
+        <activity
+            android:windowSoftInputMode="adjustPan"
+            android:label="@string/app_name" 
+            android:configChanges="orientation|keyboardHidden"
+            android:name="org.apache.cordova.test.backbuttonmultipage" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.SAMPLE_CODE" />
+            </intent-filter>
+        </activity>
+           <activity
+            android:windowSoftInputMode="adjustPan"
+            android:label="@string/app_name" 
+            android:configChanges="orientation|keyboardHidden"
+            android:name="org.apache.cordova.test.SabotagedActivity" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.SAMPLE_CODE" />
+            </intent-filter>
         </activity>
     </application>
 </manifest> 

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/39092777/test/README.md
----------------------------------------------------------------------
diff --git a/test/README.md b/test/README.md
index 24b10c1..700cee2 100755
--- a/test/README.md
+++ b/test/README.md
@@ -45,9 +45,9 @@ Copy it from a freshly created project:
 
 Robotium has to be installed for the onScrollChanged tests to work correctly.  It can be
 found at https://code.google.com/p/robotium/ and the jar should be put in the
-'androidTest/libs' directory'.
+'androidTests/libs' directory'.
 
-    mkdir -p androidTest/libs && curl 'http://dl.bintray.com/robotium/generic/robotium-solo-5.2.1.jar' > androidTest/libs/robotium-solo-5.2.1.jar
+    mkdir -p androidTests/libs && curl 'http://dl.bintray.com/robotium/generic/robotium-solo-5.2.1.jar' > androidTests/libs/robotium-solo-5.2.1.jar
 
 ## Running
 

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/39092777/test/androidTest/src/org/apache/cordova/test/BackButtonMultiPageTest.java
----------------------------------------------------------------------
diff --git a/test/androidTest/src/org/apache/cordova/test/BackButtonMultiPageTest.java b/test/androidTest/src/org/apache/cordova/test/BackButtonMultiPageTest.java
deleted file mode 100644
index 7dddec6..0000000
--- a/test/androidTest/src/org/apache/cordova/test/BackButtonMultiPageTest.java
+++ /dev/null
@@ -1,194 +0,0 @@
-package org.apache.cordova.test;
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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.
- *
-*/
-
-
-import android.view.KeyEvent;
-import android.view.inputmethod.BaseInputConnection;
-
-public class BackButtonMultiPageTest extends BaseCordovaIntegrationTest {
-  private static final String START_URL = "file:///android_asset/www/backbuttonmultipage/index.html";
-
-  @Override
-  public void setUp() throws Exception {
-      super.setUp();
-      setUpWithStartUrl(START_URL);
-  }
-
-  public void testViaHref() throws Throwable {
-      assertEquals(START_URL, testActivity.onPageFinishedUrl.take());
-      runTestOnUiThread(new Runnable() {
-          public void run()
-          {
-              cordovaWebView.sendJavascript("window.location = 'sample2.html';");
-          }
-      });
-      assertEquals("file:///android_asset/www/backbuttonmultipage/sample2.html", testActivity.onPageFinishedUrl.take());
-      runTestOnUiThread(new Runnable() {
-          public void run()
-          {
-              cordovaWebView.sendJavascript("window.location = 'sample3.html';");          }
-      });
-
-      assertEquals("file:///android_asset/www/backbuttonmultipage/sample3.html", testActivity.onPageFinishedUrl.take());
-      runTestOnUiThread(new Runnable() {
-          public void run()
-          {
-              assertTrue(cordovaWebView.backHistory());
-          }
-      });
-      assertEquals("file:///android_asset/www/backbuttonmultipage/sample2.html", testActivity.onPageFinishedUrl.take());
-      runTestOnUiThread(new Runnable() {
-          public void run()
-          {
-              assertTrue(cordovaWebView.backHistory());
-          }
-      });
-      assertEquals(START_URL, testActivity.onPageFinishedUrl.take());
-      runTestOnUiThread(new Runnable() {
-          public void run()
-          {
-              assertFalse(cordovaWebView.backHistory());
-          }
-      });
-  }
-  
-  public void testViaLoadUrl() throws Throwable {
-      assertEquals(START_URL, testActivity.onPageFinishedUrl.take());
-      runTestOnUiThread(new Runnable() {
-          public void run()
-          {
-              cordovaWebView.loadUrl("file:///android_asset/www/backbuttonmultipage/sample2.html");
-          }
-      });
-      assertEquals("file:///android_asset/www/backbuttonmultipage/sample2.html", testActivity.onPageFinishedUrl.take());
-      runTestOnUiThread(new Runnable() {
-          public void run()
-          {
-              cordovaWebView.loadUrl("file:///android_asset/www/backbuttonmultipage/sample3.html");
-          }
-      });
-      assertEquals("file:///android_asset/www/backbuttonmultipage/sample3.html", testActivity.onPageFinishedUrl.take());
-      runTestOnUiThread(new Runnable() {
-          public void run()
-          {
-              assertTrue(cordovaWebView.backHistory());
-          }
-      });
-      assertEquals("file:///android_asset/www/backbuttonmultipage/sample2.html", testActivity.onPageFinishedUrl.take());
-      runTestOnUiThread(new Runnable() {
-          public void run()
-          {
-              assertTrue(cordovaWebView.backHistory());
-          }
-      });
-      assertEquals("file:///android_asset/www/backbuttonmultipage/index.html", testActivity.onPageFinishedUrl.take());
-      runTestOnUiThread(new Runnable() {
-          public void run()
-          {
-              assertFalse(cordovaWebView.backHistory());
-          }
-      });
-  }
-
-  public void testViaBackButtonOnView() throws Throwable {
-      assertEquals(START_URL, testActivity.onPageFinishedUrl.take());
-      runTestOnUiThread(new Runnable() {
-          public void run() {
-              cordovaWebView.loadUrl("file:///android_asset/www/backbuttonmultipage/sample2.html");
-          }
-      });
-      assertEquals("file:///android_asset/www/backbuttonmultipage/sample2.html", testActivity.onPageFinishedUrl.take());
-      runTestOnUiThread(new Runnable() {
-          public void run() {
-              cordovaWebView.loadUrl("file:///android_asset/www/backbuttonmultipage/sample3.html");
-          }
-      });
-      assertEquals("file:///android_asset/www/backbuttonmultipage/sample3.html", testActivity.onPageFinishedUrl.take());
-      runTestOnUiThread(new Runnable() {
-          public void run()
-          {
-              String url = cordovaWebView.getUrl();
-              assertTrue(url.endsWith("sample3.html"));
-              BaseInputConnection viewConnection = new BaseInputConnection(cordovaWebView.getView(), true);
-              KeyEvent backDown = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK);
-              KeyEvent backUp = new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_BACK);
-              viewConnection.sendKeyEvent(backDown);
-              viewConnection.sendKeyEvent(backUp);
-          }
-      });
-      assertEquals("file:///android_asset/www/backbuttonmultipage/sample2.html", testActivity.onPageFinishedUrl.take());
-      runTestOnUiThread(new Runnable() {
-          public void run()
-          {
-              String url = cordovaWebView.getUrl();
-              assertTrue(url.endsWith("sample2.html"));
-              BaseInputConnection viewConnection = new BaseInputConnection(cordovaWebView.getView(), true);
-              KeyEvent backDown = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK);
-              KeyEvent backUp = new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_BACK);
-              viewConnection.sendKeyEvent(backDown);
-              viewConnection.sendKeyEvent(backUp);
-          }
-      });
-      assertEquals("file:///android_asset/www/backbuttonmultipage/index.html", testActivity.onPageFinishedUrl.take());
-  }
-  
-  public void testViaBackButtonOnLayout() throws Throwable {
-      assertEquals(START_URL, testActivity.onPageFinishedUrl.take());
-      runTestOnUiThread(new Runnable() {
-          public void run() {
-              cordovaWebView.loadUrl("file:///android_asset/www/backbuttonmultipage/sample2.html");
-          }
-      });
-      assertEquals("file:///android_asset/www/backbuttonmultipage/sample2.html", testActivity.onPageFinishedUrl.take());
-      runTestOnUiThread(new Runnable() {
-          public void run() {
-              cordovaWebView.loadUrl("file:///android_asset/www/backbuttonmultipage/sample3.html");
-          }
-      });
-      assertEquals("file:///android_asset/www/backbuttonmultipage/sample3.html", testActivity.onPageFinishedUrl.take());
-      runTestOnUiThread(new Runnable() {
-          public void run() {
-              String url = cordovaWebView.getUrl();
-              assertTrue(url.endsWith("sample3.html"));
-              BaseInputConnection viewConnection = new BaseInputConnection(containerView, true);
-              KeyEvent backDown = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK);
-              KeyEvent backUp = new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_BACK);
-              viewConnection.sendKeyEvent(backDown);
-              viewConnection.sendKeyEvent(backUp);
-          }
-      });
-      assertEquals("file:///android_asset/www/backbuttonmultipage/sample2.html", testActivity.onPageFinishedUrl.take());
-      runTestOnUiThread(new Runnable() {
-          public void run() {
-              String url = cordovaWebView.getUrl();
-              assertTrue(url.endsWith("sample2.html"));
-              BaseInputConnection viewConnection = new BaseInputConnection(containerView, true);
-              KeyEvent backDown = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK);
-              KeyEvent backUp = new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_BACK);
-              viewConnection.sendKeyEvent(backDown);
-              viewConnection.sendKeyEvent(backUp);
-          }
-      });
-      assertEquals("file:///android_asset/www/backbuttonmultipage/index.html", testActivity.onPageFinishedUrl.take());
-  }
-}
-

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/39092777/test/androidTest/src/org/apache/cordova/test/BaseCordovaIntegrationTest.java
----------------------------------------------------------------------
diff --git a/test/androidTest/src/org/apache/cordova/test/BaseCordovaIntegrationTest.java b/test/androidTest/src/org/apache/cordova/test/BaseCordovaIntegrationTest.java
deleted file mode 100644
index ff76930..0000000
--- a/test/androidTest/src/org/apache/cordova/test/BaseCordovaIntegrationTest.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package org.apache.cordova.test;
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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.
- *
-*/
-
-
-import android.content.Intent;
-import android.test.ActivityInstrumentationTestCase2;
-import android.widget.FrameLayout;
-
-import org.apache.cordova.CordovaWebView;
-
-public class BaseCordovaIntegrationTest extends ActivityInstrumentationTestCase2<MainTestActivity> {
-    protected MainTestActivity testActivity;
-    protected FrameLayout containerView;
-    protected CordovaWebView cordovaWebView;
-
-
-    public BaseCordovaIntegrationTest() {
-    super(MainTestActivity.class);
-  }
-
-    protected void setUpWithStartUrl(String url) {
-        setUpWithStartUrl(url, null, null);
-    }
-    protected void setUpWithStartUrl(String url, String prefKey, String prefValue) {
-        Intent intent = new Intent(getInstrumentation().getContext(), MainTestActivity.class);
-        intent.putExtra("testStartUrl", url);
-        if (prefKey != null) {
-            intent.putExtra(prefKey, prefValue);
-        }
-        setActivityIntent(intent);
-        testActivity = getActivity();
-        containerView = (FrameLayout) testActivity.findViewById(android.R.id.content);
-        cordovaWebView = testActivity.getCordovaWebView();
-    }
-}
-

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/39092777/test/androidTest/src/org/apache/cordova/test/CordovaActivityTest.java
----------------------------------------------------------------------
diff --git a/test/androidTest/src/org/apache/cordova/test/CordovaActivityTest.java b/test/androidTest/src/org/apache/cordova/test/CordovaActivityTest.java
deleted file mode 100644
index 5fb3847..0000000
--- a/test/androidTest/src/org/apache/cordova/test/CordovaActivityTest.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
-       Licensed to the Apache Software Foundation (ASF) under one
-       or more contributor license agreements.  See the NOTICE file
-       distributed with this work for additional information
-       regarding copyright ownership.  The ASF licenses this file
-       to you 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 org.apache.cordova.test;
-
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.LinearLayout;
-
-import org.apache.cordova.AndroidWebView;
-
-public class CordovaActivityTest extends BaseCordovaIntegrationTest {
-    private ViewGroup innerContainer;
-    private View testView;
-
-    protected void setUp() throws Exception {
-        super.setUp();
-        setUpWithStartUrl(null);
-        innerContainer = (ViewGroup)containerView.getChildAt(0);
-        testView = innerContainer.getChildAt(0);
-    }
-
-    public void testBasicLoad() throws Exception {
-        assertTrue(testView instanceof AndroidWebView);
-        assertTrue(innerContainer instanceof LinearLayout);
-        String onPageFinishedUrl = testActivity.onPageFinishedUrl.take();
-        assertEquals(MainTestActivity.START_URL, onPageFinishedUrl);
-    }
-}

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/39092777/test/androidTest/src/org/apache/cordova/test/CordovaResourceApiTest.java
----------------------------------------------------------------------
diff --git a/test/androidTest/src/org/apache/cordova/test/CordovaResourceApiTest.java b/test/androidTest/src/org/apache/cordova/test/CordovaResourceApiTest.java
deleted file mode 100644
index 73aa066..0000000
--- a/test/androidTest/src/org/apache/cordova/test/CordovaResourceApiTest.java
+++ /dev/null
@@ -1,258 +0,0 @@
-
-package org.apache.cordova.test;
-
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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.
- *
- */
-
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.net.Uri;
-import android.os.Environment;
-import android.provider.MediaStore;
-
-import org.apache.cordova.CallbackContext;
-import org.apache.cordova.CordovaPlugin;
-import org.apache.cordova.CordovaResourceApi;
-import org.apache.cordova.CordovaResourceApi.OpenForReadResult;
-import org.apache.cordova.PluginEntry;
-import org.json.JSONArray;
-import org.json.JSONException;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.util.Scanner;
-
-public class CordovaResourceApiTest extends BaseCordovaIntegrationTest {
-    CordovaResourceApi resourceApi;
-    String execPayload;
-    Integer execStatus;
-
-    protected void setUp() throws Exception {
-        super.setUp();
-        setUpWithStartUrl(null);
-        resourceApi = cordovaWebView.getResourceApi();
-        resourceApi.setThreadCheckingEnabled(false);
-        cordovaWebView.getPluginManager().addService(new PluginEntry("CordovaResourceApiTestPlugin1", new CordovaPlugin() {
-            @Override
-            public Uri remapUri(Uri uri) {
-                if (uri.getQuery() != null && uri.getQuery().contains("pluginRewrite")) {
-                    return cordovaWebView.getResourceApi().remapUri(
-                            Uri.parse("data:text/plain;charset=utf-8,pass"));
-                }
-                return null;
-            }
-            public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
-                synchronized (CordovaResourceApiTest.this) {
-                    execPayload = args.getString(0);
-                    execStatus = args.getInt(1);
-                    CordovaResourceApiTest.this.notify();
-                }
-                return true;
-            }
-        }));
-    }
-
-    private Uri createTestImageContentUri() {
-        Bitmap imageBitmap = BitmapFactory.decodeResource(testActivity.getResources(), R.drawable.icon);
-        String stored = MediaStore.Images.Media.insertImage(testActivity.getContentResolver(),
-                imageBitmap, "app-icon", "desc");
-        return Uri.parse(stored);
-    }
-
-    private void performApiTest(Uri uri, String expectedMimeType, File expectedLocalFile,
-            boolean expectRead, boolean expectWrite) throws IOException {
-        uri = resourceApi.remapUri(uri);
-        assertEquals(expectedLocalFile, resourceApi.mapUriToFile(uri));
-        
-        try {
-            OpenForReadResult readResult = resourceApi.openForRead(uri);
-            String mimeType2 = resourceApi.getMimeType(uri);
-            assertEquals("openForRead mime-type", expectedMimeType, readResult.mimeType);
-            assertEquals("getMimeType mime-type", expectedMimeType, mimeType2);
-            readResult.inputStream.read();
-            if (!expectRead) {
-                fail("Expected getInputStream to throw.");
-            }
-        } catch (IOException e) {
-            if (expectRead) {
-                throw e;
-            }
-        }
-        try {
-            OutputStream outStream = resourceApi.openOutputStream(uri);
-            outStream.write(123);
-            if (!expectWrite) {
-                fail("Expected getOutputStream to throw.");
-            }
-            outStream.close();
-        } catch (IOException e) {
-            if (expectWrite) {
-                throw e;
-            }
-        }
-    }
-
-    public void testJavaApis() throws IOException {
-        // testValidContentUri
-        {
-            Uri contentUri = createTestImageContentUri();
-            File localFile = resourceApi.mapUriToFile(contentUri);
-            assertNotNull(localFile);
-            performApiTest(contentUri, "image/jpeg", localFile, true, true);
-        }
-        // testInvalidContentUri
-        {
-            Uri contentUri = Uri.parse("content://media/external/images/media/999999999");
-            performApiTest(contentUri, null, null, false, false);
-        }
-        // testValidAssetUri
-        {
-            Uri assetUri = Uri.parse("file:///android_asset/www/index.html?foo#bar"); // Also check for stripping off ? and # correctly.
-            performApiTest(assetUri, "text/html", null, true, false);
-        }
-        // testInvalidAssetUri
-        {
-            Uri assetUri = Uri.parse("file:///android_asset/www/missing.html");
-            performApiTest(assetUri, "text/html", null, false, false);
-        }
-        // testFileUriToExistingFile
-        {
-            File f = File.createTempFile("te s t", ".txt"); // Also check for dealing with spaces.
-            try {
-                Uri fileUri = Uri.parse(f.toURI().toString() + "?foo#bar"); // Also check for stripping off ? and # correctly.
-                performApiTest(fileUri, "text/plain", f, true, true);
-            } finally {
-                f.delete();
-            }
-        }
-        // testFileUriToMissingFile
-        {
-            File f = new File(Environment.getExternalStorageDirectory() + "/somefilethatdoesntexist");
-            Uri fileUri = Uri.parse(f.toURI().toString());
-            try {
-                performApiTest(fileUri, null, f, false, true);
-            } finally {
-                f.delete();
-            }
-        }
-        // testFileUriToMissingFileWithMissingParent
-        {
-            File f = new File(Environment.getExternalStorageDirectory() + "/somedirthatismissing" + System.currentTimeMillis() + "/somefilethatdoesntexist");
-            Uri fileUri = Uri.parse(f.toURI().toString());
-            performApiTest(fileUri, null, f, false, true);
-        }
-        // testUnrecognizedUri
-        {
-            Uri uri = Uri.parse("somescheme://foo");
-            performApiTest(uri, null, null, false, false);
-        }
-        // testRelativeUri
-        {
-            try {
-                resourceApi.openForRead(Uri.parse("/foo"));
-                fail("Should have thrown for relative URI 1.");
-            } catch (Throwable t) {
-            }
-            try {
-                resourceApi.openForRead(Uri.parse("//foo/bar"));
-                fail("Should have thrown for relative URI 2.");
-            } catch (Throwable t) {
-            }
-            try {
-                resourceApi.openForRead(Uri.parse("foo.png"));
-                fail("Should have thrown for relative URI 3.");
-            } catch (Throwable t) {
-            }
-        }
-        // testPluginOverride
-        {
-            Uri uri = Uri.parse("plugin-uri://foohost/android_asset/www/index.html?pluginRewrite=yes");
-            performApiTest(uri, "text/plain", null, true, false);
-        }
-        // testMainThreadUsage
-        {
-            Uri assetUri = Uri.parse("file:///android_asset/www/index.html");
-            resourceApi.setThreadCheckingEnabled(true);
-            try {
-                resourceApi.openForRead(assetUri);
-                fail("Should have thrown for main thread check.");
-            } catch (Throwable t) {
-            }
-        }
-        // testDataUriPlain
-        {
-            Uri uri = Uri.parse("data:text/plain;charset=utf-8,pa%20ss");
-            OpenForReadResult readResult = resourceApi.openForRead(uri);
-            assertEquals("text/plain", readResult.mimeType);
-            String data = new Scanner(readResult.inputStream, "UTF-8").useDelimiter("\\A").next();
-            assertEquals("pa ss", data);
-        }
-        // testDataUriBase64
-        {
-            Uri uri = Uri.parse("data:text/js;charset=utf-8;base64,cGFzcw==");
-            OpenForReadResult readResult = resourceApi.openForRead(uri);
-            assertEquals("text/js", readResult.mimeType);
-            String data = new Scanner(readResult.inputStream, "UTF-8").useDelimiter("\\A").next();
-            assertEquals("pass", data);
-        }
-    }
-    
-    public void testWebViewRequestIntercept() throws Throwable
-    {
-        testActivity.onPageFinishedUrl.take();
-        execPayload = null;
-        execStatus = null;
-        cordovaWebView.sendJavascript(
-                "var x = new XMLHttpRequest;\n" +
-                        "x.open('GET', 'file:///foo?pluginRewrite=1', false);\n" +
-                        "x.send();\n" +
-                        "cordova.require('cordova/exec')(null,null,'CordovaResourceApiTestPlugin1', 'foo', [x.responseText, x.status])");
-        try {
-            synchronized (this) {
-                this.wait(2000);
-            }
-        } catch (InterruptedException e) {
-        }
-        assertEquals("pass", execPayload);
-        assertEquals(execStatus.intValue(), 200);
-    }
-    
-    public void testWebViewWhiteListRejection() throws Throwable
-    {
-        testActivity.onPageFinishedUrl.take();
-        execPayload = null;
-        execStatus = null;
-        cordovaWebView.sendJavascript(
-            "var x = new XMLHttpRequest;\n" +
-            "x.open('GET', 'http://foo/bar', false);\n" + 
-            "x.send();\n" + 
-            "cordova.require('cordova/exec')(null,null,'CordovaResourceApiTestPlugin1', 'foo', [x.responseText, x.status])");
-        try {
-            synchronized (this) {
-                this.wait(2000);
-            }
-        } catch (InterruptedException e) {
-        }
-        assertEquals("", execPayload);
-        assertEquals(execStatus.intValue(), 404);
-    }    
-}

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/39092777/test/androidTest/src/org/apache/cordova/test/ErrorUrlTest.java
----------------------------------------------------------------------
diff --git a/test/androidTest/src/org/apache/cordova/test/ErrorUrlTest.java b/test/androidTest/src/org/apache/cordova/test/ErrorUrlTest.java
deleted file mode 100644
index fc6ce8c..0000000
--- a/test/androidTest/src/org/apache/cordova/test/ErrorUrlTest.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package org.apache.cordova.test;
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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.
- *
-*/
-
-
-public class ErrorUrlTest extends BaseCordovaIntegrationTest {
-    private static final String START_URL = "file:///android_asset/www/htmlnotfound/index.html";
-    private static final String ERROR_URL = "file:///android_asset/www/htmlnotfound/error.html";
-
-    protected void setUp() throws Exception {
-        super.setUp();
-        setUpWithStartUrl(START_URL, "testErrorUrl", ERROR_URL);
-    }
-
-    public void testUrl() throws Throwable {
-        assertEquals(START_URL, testActivity.onPageFinishedUrl.take());
-        assertEquals(ERROR_URL, testActivity.onPageFinishedUrl.take());
-        runTestOnUiThread(new Runnable() {
-            public void run() {
-                assertEquals(ERROR_URL, testActivity.getCordovaWebView().getUrl());
-            }
-        });
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/39092777/test/androidTest/src/org/apache/cordova/test/HtmlNotFoundTest.java
----------------------------------------------------------------------
diff --git a/test/androidTest/src/org/apache/cordova/test/HtmlNotFoundTest.java b/test/androidTest/src/org/apache/cordova/test/HtmlNotFoundTest.java
deleted file mode 100644
index 36fc3bd..0000000
--- a/test/androidTest/src/org/apache/cordova/test/HtmlNotFoundTest.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package org.apache.cordova.test;
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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.
- *
-*/
-
-
-public class HtmlNotFoundTest extends BaseCordovaIntegrationTest {
-  private static final String START_URL = "file:///android_asset/www/htmlnotfound/index.html";
-
-  protected void setUp() throws Exception {
-    super.setUp();
-    setUpWithStartUrl(START_URL);
-  }
-  public void testUrl() throws Throwable
-  {
-      assertEquals(START_URL, testActivity.onPageFinishedUrl.take());
-      // TODO: Should this be null? Or some other way to indicate it didn't actually load?
-      runTestOnUiThread(new Runnable() {
-          public void run() {
-              assertEquals(START_URL, testActivity.getCordovaWebView().getUrl());
-          }
-      });
-  }
-}

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/39092777/test/androidTest/src/org/apache/cordova/test/IFrameTest.java
----------------------------------------------------------------------
diff --git a/test/androidTest/src/org/apache/cordova/test/IFrameTest.java b/test/androidTest/src/org/apache/cordova/test/IFrameTest.java
deleted file mode 100644
index 48dae38..0000000
--- a/test/androidTest/src/org/apache/cordova/test/IFrameTest.java
+++ /dev/null
@@ -1,107 +0,0 @@
-package org.apache.cordova.test;
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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.
- *
-*/
-
-
-import android.test.TouchUtils;
-
-import org.apache.cordova.test.util.Purity;
-
-public class IFrameTest extends BaseCordovaIntegrationTest {
-    private static final String START_URL = "file:///android_asset/www/iframe/index.html";
-
-    private TouchUtils touch;
-    private Purity touchTool;
-    
-    protected void setUp() throws Exception {
-      super.setUp();
-      setUpWithStartUrl(START_URL);
-      touch = new TouchUtils();
-      touchTool = new Purity(testActivity, getInstrumentation());
-    }
-  
-  
-    public void testIframeDest() throws Throwable {
-        assertEquals(START_URL, testActivity.onPageFinishedUrl.take());
-        runTestOnUiThread(new Runnable() {
-            public void run()
-            {
-                cordovaWebView.sendJavascript("loadUrl('http://maps.google.com/maps?output=embed');");
-            }
-        });
-        sleep(3000);
-        runTestOnUiThread(new Runnable() {
-            public void run()
-            {
-                cordovaWebView.sendJavascript("loadUrl('index2.html')");
-            }
-        });
-        sleep(1000);
-        runTestOnUiThread(new Runnable() {
-            public void run()
-            {
-                String url = cordovaWebView.getUrl();
-                assertTrue(url.endsWith("index.html"));
-            }
-        });
-    }
-    
-    public void testIframeHistory() throws Throwable
-    {
-        runTestOnUiThread(new Runnable() {
-            public void run()
-            {
-                cordovaWebView.sendJavascript("loadUrl('http://maps.google.com/maps?output=embed');");
-            }
-        });
-        sleep(3000);
-        runTestOnUiThread(new Runnable() {
-            public void run()
-            {
-                cordovaWebView.sendJavascript("loadUrl('index2.html')");
-            }
-        });
-        sleep(1000);
-        runTestOnUiThread(new Runnable() {
-            public void run()
-            {
-                String url = cordovaWebView.getUrl();
-                cordovaWebView.backHistory();
-            }
-        });
-        sleep(1000);
-        runTestOnUiThread(new Runnable() {
-            public void run()
-            {
-                String url = cordovaWebView.getUrl();
-                assertTrue(url.endsWith("index.html"));
-            }
-        });
-    }
-    
-    private void sleep(int timeout) {
-        try {
-          Thread.sleep(timeout);
-        } catch (InterruptedException e) {
-          fail("Unexpected Timeout");
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/39092777/test/androidTest/src/org/apache/cordova/test/InflateLayoutTest.java
----------------------------------------------------------------------
diff --git a/test/androidTest/src/org/apache/cordova/test/InflateLayoutTest.java b/test/androidTest/src/org/apache/cordova/test/InflateLayoutTest.java
deleted file mode 100644
index 3899cf1..0000000
--- a/test/androidTest/src/org/apache/cordova/test/InflateLayoutTest.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
-       Licensed to the Apache Software Foundation (ASF) under one
-       or more contributor license agreements.  See the NOTICE file
-       distributed with this work for additional information
-       regarding copyright ownership.  The ASF licenses this file
-       to you 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 org.apache.cordova.test;
-
-import android.test.ActivityInstrumentationTestCase2;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.FrameLayout;
-import android.widget.LinearLayout;
-
-import org.apache.cordova.AndroidWebView;
-
-public class InflateLayoutTest extends ActivityInstrumentationTestCase2<CordovaWebViewTestActivity> {
-
-    private CordovaWebViewTestActivity testActivity;
-    private ViewGroup innerContainer;
-    private View testView;
-
-    @SuppressWarnings("deprecation")
-    public InflateLayoutTest()
-    {
-        super("org.apache.cordova.test",CordovaWebViewTestActivity.class);
-    }
-    
-    protected void setUp() throws Exception {
-        super.setUp();
-        testActivity = this.getActivity();
-        FrameLayout containerView = (FrameLayout) testActivity.findViewById(android.R.id.content);
-        innerContainer = (ViewGroup)containerView.getChildAt(0);
-        testView = innerContainer.getChildAt(0);
-    }
-
-    public void testBasicLoad() throws Exception {
-        assertTrue(testView instanceof AndroidWebView);
-        assertTrue(innerContainer instanceof LinearLayout);
-        String onPageFinishedUrl = testActivity.onPageFinishedUrl.take();
-        assertEquals(CordovaWebViewTestActivity.START_URL, onPageFinishedUrl);
-    }
-}

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/39092777/test/androidTest/src/org/apache/cordova/test/junit/BackButtonMultiPageTest.java
----------------------------------------------------------------------
diff --git a/test/androidTest/src/org/apache/cordova/test/junit/BackButtonMultiPageTest.java b/test/androidTest/src/org/apache/cordova/test/junit/BackButtonMultiPageTest.java
new file mode 100644
index 0000000..cc90538
--- /dev/null
+++ b/test/androidTest/src/org/apache/cordova/test/junit/BackButtonMultiPageTest.java
@@ -0,0 +1,278 @@
+package org.apache.cordova.test.junit;
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ *
+*/
+
+
+import org.apache.cordova.CordovaWebView;
+import org.apache.cordova.test.backbuttonmultipage;
+
+import android.test.ActivityInstrumentationTestCase2;
+import android.test.UiThreadTest;
+import android.view.KeyEvent;
+import android.view.View;
+import android.view.inputmethod.BaseInputConnection;
+import android.widget.FrameLayout;
+import android.widget.LinearLayout;
+
+public class BackButtonMultiPageTest extends ActivityInstrumentationTestCase2<backbuttonmultipage> {
+
+  private int TIMEOUT = 2000;
+  backbuttonmultipage testActivity;
+  private FrameLayout containerView;
+  private LinearLayout innerContainer;
+  private CordovaWebView testView;
+  
+
+  public BackButtonMultiPageTest() {
+    super(backbuttonmultipage.class);
+  }
+
+  @Override
+  public void setUp() {
+      testActivity = getActivity();
+      containerView = (FrameLayout) testActivity.findViewById(android.R.id.content);
+      innerContainer = (LinearLayout) containerView.getChildAt(0);
+      testView = (CordovaWebView) innerContainer.getChildAt(0);
+  }
+
+  void loadTestPage() {
+     testView.loadUrl("file:///android_asset/www/backbuttonmultipage/index.html");
+     sleep();
+  }
+
+  @UiThreadTest
+  public void testPreconditions(){
+      loadTestPage();
+      assertNotNull(innerContainer);
+      assertNotNull(testView);
+      String url = testView.getUrl();
+      assertTrue(url.endsWith("index.html"));
+  }
+  
+  public void testViaHref() throws Throwable {
+      runTestOnUiThread(new Runnable() {
+          public void run()
+          {
+              loadTestPage();
+              testView.sendJavascript("window.location = 'sample2.html';");
+          }
+      });
+      sleep();
+      runTestOnUiThread(new Runnable() {
+          public void run()
+          {
+              String url = testView.getUrl();
+              assertEquals("file:///android_asset/www/backbuttonmultipage/sample2.html", url);
+              testView.sendJavascript("window.location = 'sample3.html';");          }
+      });
+     
+      sleep();
+      runTestOnUiThread(new Runnable() {
+          public void run()
+          {
+              String url = testView.getUrl();
+              assertEquals("file:///android_asset/www/backbuttonmultipage/sample3.html", url);
+              assertTrue(testView.backHistory());
+          }
+      });
+      sleep();
+      runTestOnUiThread(new Runnable() {
+          public void run()
+          {
+              String url = testView.getUrl();
+              assertEquals("file:///android_asset/www/backbuttonmultipage/sample2.html", url);
+              assertTrue(testView.backHistory());
+          }
+      });
+      sleep();
+      runTestOnUiThread(new Runnable() {
+          public void run()
+          {
+              String url = testView.getUrl();
+              assertEquals("file:///android_asset/www/backbuttonmultipage/index.html", url);
+          }
+      });
+  }
+  
+  public void testViaLoadUrl() throws Throwable {
+      runTestOnUiThread(new Runnable() {
+          public void run()
+          {
+              loadTestPage();
+              testView.loadUrl("file:///android_asset/www/backbuttonmultipage/sample2.html");
+          }
+      });
+      sleep();
+      runTestOnUiThread(new Runnable() {
+          public void run()
+          {
+              String url = testView.getUrl();
+              assertTrue(url.endsWith("sample2.html"));
+              testView.loadUrl("file:///android_asset/www/backbuttonmultipage/sample3.html");
+          }
+      });
+      sleep();
+      runTestOnUiThread(new Runnable() {
+          public void run()
+          {
+              String url = testView.getUrl();
+              assertTrue(url.endsWith("sample3.html"));
+              testView.backHistory();
+          }
+      });
+      sleep();
+      runTestOnUiThread(new Runnable() {
+          public void run()
+          {
+              String url = testView.getUrl();
+              assertTrue(url.endsWith("sample2.html"));
+              testView.backHistory();
+          }
+      });
+      sleep();
+      runTestOnUiThread(new Runnable() {
+          public void run()
+          {
+              String url = testView.getUrl();
+              assertTrue(url.endsWith("index.html"));
+              testView.backHistory();
+          }
+      });
+  }
+
+  public void testViaBackButtonOnView() throws Throwable {
+      runTestOnUiThread(new Runnable() {
+          public void run()
+          {
+              loadTestPage();
+              testView.loadUrl("file:///android_asset/www/backbuttonmultipage/sample2.html");
+          }
+      });
+      sleep();
+      runTestOnUiThread(new Runnable() {
+          public void run()
+          {
+              String url = testView.getUrl();
+              assertTrue(url.endsWith("sample2.html"));
+              testView.loadUrl("file:///android_asset/www/backbuttonmultipage/sample3.html");
+          }
+      });
+      sleep();
+      runTestOnUiThread(new Runnable() {
+          public void run()
+          {
+              String url = testView.getUrl();
+              assertTrue(url.endsWith("sample3.html"));
+              BaseInputConnection viewConnection = new BaseInputConnection((View) testView, true);
+              KeyEvent backDown = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK);
+              KeyEvent backUp = new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_BACK);
+              viewConnection.sendKeyEvent(backDown);
+              viewConnection.sendKeyEvent(backUp);
+          }
+      });
+      sleep();
+      runTestOnUiThread(new Runnable() {
+          public void run()
+          {
+              String url = testView.getUrl();
+              assertTrue(url.endsWith("sample2.html"));
+              BaseInputConnection viewConnection = new BaseInputConnection((View) testView, true);
+              KeyEvent backDown = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK);
+              KeyEvent backUp = new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_BACK);
+              viewConnection.sendKeyEvent(backDown);
+              viewConnection.sendKeyEvent(backUp);
+          }
+      });
+      sleep();
+      runTestOnUiThread(new Runnable() {
+          public void run()
+          {
+              String url = testView.getUrl();
+              assertTrue(url.endsWith("index.html"));
+          }
+      });
+      
+  }
+  
+  public void testViaBackButtonOnLayout() throws Throwable {
+      runTestOnUiThread(new Runnable() {
+          public void run()
+          {
+              loadTestPage();
+              testView.loadUrl("file:///android_asset/www/backbuttonmultipage/sample2.html");
+          }
+      });
+      sleep();
+      runTestOnUiThread(new Runnable() {
+          public void run()
+          {
+              String url = testView.getUrl();
+              assertTrue(url.endsWith("sample2.html"));
+              testView.loadUrl("file:///android_asset/www/backbuttonmultipage/sample3.html");
+          }
+      });
+      sleep();
+      runTestOnUiThread(new Runnable() {
+          public void run()
+          {
+              String url = testView.getUrl();
+              assertTrue(url.endsWith("sample3.html"));
+              BaseInputConnection viewConnection = new BaseInputConnection(containerView, true);
+              KeyEvent backDown = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK);
+              KeyEvent backUp = new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_BACK);
+              viewConnection.sendKeyEvent(backDown);
+              viewConnection.sendKeyEvent(backUp);
+          }
+      });
+      sleep();
+      runTestOnUiThread(new Runnable() {
+          public void run()
+          {
+              String url = testView.getUrl();
+              assertTrue(url.endsWith("sample2.html"));
+              BaseInputConnection viewConnection = new BaseInputConnection(containerView, true);
+              KeyEvent backDown = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK);
+              KeyEvent backUp = new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_BACK);
+              viewConnection.sendKeyEvent(backDown);
+              viewConnection.sendKeyEvent(backUp);
+          }
+      });
+      sleep();
+      runTestOnUiThread(new Runnable() {
+          public void run()
+          {
+              String url = testView.getUrl();
+              assertTrue(url.endsWith("index.html"));
+          }
+      });
+      
+  }
+
+  private void sleep() {
+      try {
+          Thread.sleep(TIMEOUT);
+      } catch (InterruptedException e) {
+          fail("Unexpected Timeout");
+      }
+  }
+
+}
+

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/39092777/test/androidTest/src/org/apache/cordova/test/junit/CordovaActivityTest.java
----------------------------------------------------------------------
diff --git a/test/androidTest/src/org/apache/cordova/test/junit/CordovaActivityTest.java b/test/androidTest/src/org/apache/cordova/test/junit/CordovaActivityTest.java
new file mode 100644
index 0000000..965e3d2
--- /dev/null
+++ b/test/androidTest/src/org/apache/cordova/test/junit/CordovaActivityTest.java
@@ -0,0 +1,79 @@
+/*
+       Licensed to the Apache Software Foundation (ASF) under one
+       or more contributor license agreements.  See the NOTICE file
+       distributed with this work for additional information
+       regarding copyright ownership.  The ASF licenses this file
+       to you 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 org.apache.cordova.test.junit;
+
+import org.apache.cordova.CordovaWebView;
+import org.apache.cordova.PluginManager;
+import org.apache.cordova.test.MainTestActivity;
+
+import android.app.Instrumentation;
+import android.test.ActivityInstrumentationTestCase2;
+import android.widget.FrameLayout;
+import android.widget.LinearLayout;
+
+public class CordovaActivityTest extends ActivityInstrumentationTestCase2<MainTestActivity> {
+
+    private MainTestActivity testActivity;
+    private FrameLayout containerView;
+    private LinearLayout innerContainer;
+    private CordovaWebView testView;
+    private Instrumentation mInstr;
+    private int TIMEOUT = 1000;
+    
+    @SuppressWarnings("deprecation")
+    public CordovaActivityTest()
+    {
+        super("org.apache.cordova.test",MainTestActivity.class);
+    }
+    
+    protected void setUp() throws Exception {
+        super.setUp();
+        mInstr = this.getInstrumentation();
+        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 testForAndroidWebView() {
+        String className = testView.getClass().getSimpleName();
+        assertTrue(className.equals("AndroidWebView"));
+    }
+    
+    public void testForLinearLayout() {
+        String className = innerContainer.getClass().getSimpleName();
+        assertTrue(className.equals("LinearLayout"));
+    }
+
+    private void sleep() {
+        try {
+          Thread.sleep(TIMEOUT);
+        } catch (InterruptedException e) {
+          fail("Unexpected Timeout");
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/39092777/test/androidTest/src/org/apache/cordova/test/junit/CordovaResourceApiTest.java
----------------------------------------------------------------------
diff --git a/test/androidTest/src/org/apache/cordova/test/junit/CordovaResourceApiTest.java b/test/androidTest/src/org/apache/cordova/test/junit/CordovaResourceApiTest.java
new file mode 100644
index 0000000..a8a5370
--- /dev/null
+++ b/test/androidTest/src/org/apache/cordova/test/junit/CordovaResourceApiTest.java
@@ -0,0 +1,281 @@
+
+package org.apache.cordova.test.junit;
+
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ *
+ */
+
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.net.Uri;
+import android.os.Environment;
+import android.provider.MediaStore;
+import android.test.ActivityInstrumentationTestCase2;
+
+import org.apache.cordova.CallbackContext;
+import org.apache.cordova.CordovaPlugin;
+import org.apache.cordova.CordovaResourceApi;
+import org.apache.cordova.CordovaResourceApi.OpenForReadResult;
+import org.apache.cordova.CordovaWebView;
+import org.apache.cordova.PluginEntry;
+import org.apache.cordova.test.CordovaWebViewTestActivity;
+import org.apache.cordova.test.R;
+import org.json.JSONArray;
+import org.json.JSONException;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.Scanner;
+
+public class CordovaResourceApiTest extends ActivityInstrumentationTestCase2<CordovaWebViewTestActivity> {
+
+    public CordovaResourceApiTest()
+    {
+        super(CordovaWebViewTestActivity.class);
+    }
+
+    CordovaWebView cordovaWebView;
+    CordovaResourceApi resourceApi;
+
+    private CordovaWebViewTestActivity activity;
+    String execPayload;
+    Integer execStatus;
+
+    protected void setUp() throws Exception {
+        super.setUp();
+        activity = this.getActivity();
+        cordovaWebView = activity.cordovaWebView;
+        resourceApi = cordovaWebView.getResourceApi();
+        resourceApi.setThreadCheckingEnabled(false);
+        cordovaWebView.getPluginManager().addService(new PluginEntry("CordovaResourceApiTestPlugin1", new CordovaPlugin() {
+            @Override
+            public Uri remapUri(Uri uri) {
+                if (uri.getQuery() != null && uri.getQuery().contains("pluginRewrite")) {
+                    return cordovaWebView.getResourceApi().remapUri(
+                            Uri.parse("data:text/plain;charset=utf-8,pass"));
+                }
+                return null;
+            }
+            public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
+                synchronized (CordovaResourceApiTest.this) {
+                    execPayload = args.getString(0);
+                    execStatus = args.getInt(1);
+                    CordovaResourceApiTest.this.notify();
+                }
+                return true;
+            }
+        }));
+    }
+
+    private Uri createTestImageContentUri() {
+        Bitmap imageBitmap = BitmapFactory.decodeResource(activity.getResources(), R.drawable.icon);
+        String stored = MediaStore.Images.Media.insertImage(activity.getContentResolver(),
+                imageBitmap, "app-icon", "desc");
+        return Uri.parse(stored);
+    }
+
+    private void performApiTest(Uri uri, String expectedMimeType, File expectedLocalFile,
+            boolean expectRead, boolean expectWrite) throws IOException {
+        uri = resourceApi.remapUri(uri);
+        assertEquals(expectedLocalFile, resourceApi.mapUriToFile(uri));
+        
+        try {
+            OpenForReadResult readResult = resourceApi.openForRead(uri);
+            String mimeType2 = resourceApi.getMimeType(uri);
+            assertEquals("openForRead mime-type", expectedMimeType, readResult.mimeType);
+            assertEquals("getMimeType mime-type", expectedMimeType, mimeType2);
+            readResult.inputStream.read();
+            if (!expectRead) {
+                fail("Expected getInputStream to throw.");
+            }
+        } catch (IOException e) {
+            if (expectRead) {
+                throw e;
+            }
+        }
+        try {
+            OutputStream outStream = resourceApi.openOutputStream(uri);
+            outStream.write(123);
+            if (!expectWrite) {
+                fail("Expected getOutputStream to throw.");
+            }
+            outStream.close();
+        } catch (IOException e) {
+            if (expectWrite) {
+                throw e;
+            }
+        }
+    }
+
+    public void testValidContentUri() throws IOException
+    {
+        Uri contentUri = createTestImageContentUri();
+        File localFile = resourceApi.mapUriToFile(contentUri);
+        assertNotNull(localFile);
+        performApiTest(contentUri, "image/jpeg", localFile, true, true);
+    }
+
+    public void testInvalidContentUri() throws IOException
+    {
+        Uri contentUri = Uri.parse("content://media/external/images/media/999999999");
+        performApiTest(contentUri, null, null, false, false);
+    }
+
+    public void testValidAssetUri() throws IOException
+    {
+        Uri assetUri = Uri.parse("file:///android_asset/www/index.html?foo#bar"); // Also check for stripping off ? and # correctly.
+        performApiTest(assetUri, "text/html", null, true, false);
+    }
+
+    public void testInvalidAssetUri() throws IOException
+    {
+        Uri assetUri = Uri.parse("file:///android_asset/www/missing.html");
+        performApiTest(assetUri, "text/html", null, false, false);
+    }
+
+    public void testFileUriToExistingFile() throws IOException
+    {
+        File f = File.createTempFile("te s t", ".txt"); // Also check for dealing with spaces.
+        try {
+            Uri fileUri = Uri.parse(f.toURI().toString() + "?foo#bar"); // Also check for stripping off ? and # correctly.
+            performApiTest(fileUri, "text/plain", f, true, true);
+        } finally {
+            f.delete();
+        }
+    }
+
+    public void testFileUriToMissingFile() throws IOException
+    {
+        File f = new File(Environment.getExternalStorageDirectory() + "/somefilethatdoesntexist");
+        Uri fileUri = Uri.parse(f.toURI().toString());
+        try {
+            performApiTest(fileUri, null, f, false, true);
+        } finally {
+            f.delete();
+        }
+    }
+    
+    public void testFileUriToMissingFileWithMissingParent() throws IOException
+    {
+        File f = new File(Environment.getExternalStorageDirectory() + "/somedirthatismissing" + System.currentTimeMillis() + "/somefilethatdoesntexist");
+        Uri fileUri = Uri.parse(f.toURI().toString());
+        performApiTest(fileUri, null, f, false, true);
+    }
+
+    public void testUnrecognizedUri() throws IOException
+    {
+        Uri uri = Uri.parse("somescheme://foo");
+        performApiTest(uri, null, null, false, false);
+    }
+
+    public void testRelativeUri()
+    {
+        try {
+            resourceApi.openForRead(Uri.parse("/foo"));
+            fail("Should have thrown for relative URI 1.");
+        } catch (Throwable t) {
+        }
+        try {
+            resourceApi.openForRead(Uri.parse("//foo/bar"));
+            fail("Should have thrown for relative URI 2.");
+        } catch (Throwable t) {
+        }
+        try {
+            resourceApi.openForRead(Uri.parse("foo.png"));
+            fail("Should have thrown for relative URI 3.");
+        } catch (Throwable t) {
+        }
+    }
+    
+    public void testPluginOverride() throws IOException
+    {
+        Uri uri = Uri.parse("plugin-uri://foohost/android_asset/www/index.html?pluginRewrite=yes");
+        performApiTest(uri, "text/plain", null, true, false);
+    }
+
+    public void testMainThreadUsage() throws IOException
+    {
+        Uri assetUri = Uri.parse("file:///android_asset/www/index.html");
+        resourceApi.setThreadCheckingEnabled(true);
+        try {
+            resourceApi.openForRead(assetUri);
+            fail("Should have thrown for main thread check.");
+        } catch (Throwable t) {
+        }
+    }
+    
+    
+    public void testDataUriPlain() throws IOException
+    {
+        Uri uri = Uri.parse("data:text/plain;charset=utf-8,pa%20ss");
+        OpenForReadResult readResult = resourceApi.openForRead(uri);
+        assertEquals("text/plain", readResult.mimeType);
+        String data = new Scanner(readResult.inputStream, "UTF-8").useDelimiter("\\A").next();
+        assertEquals("pa ss", data);
+    }
+    
+    public void testDataUriBase64() throws IOException
+    {
+        Uri uri = Uri.parse("data:text/js;charset=utf-8;base64,cGFzcw==");
+        OpenForReadResult readResult = resourceApi.openForRead(uri);
+        assertEquals("text/js", readResult.mimeType);
+        String data = new Scanner(readResult.inputStream, "UTF-8").useDelimiter("\\A").next();
+        assertEquals("pass", data);
+    }
+    
+    public void testWebViewRequestIntercept() throws IOException
+    {
+        cordovaWebView.sendJavascript(
+            "var x = new XMLHttpRequest;\n" +
+            "x.open('GET', 'file://foo?pluginRewrite=1', false);\n" + 
+            "x.send();\n" + 
+            "cordova.require('cordova/exec')(null,null,'CordovaResourceApiTestPlugin1', 'foo', [x.responseText, x.status])");
+        execPayload = null;
+        execStatus = null;
+        try {
+            synchronized (this) {
+                this.wait(2000);
+            }
+        } catch (InterruptedException e) {
+        }
+        assertEquals("pass", execPayload);
+        assertEquals(execStatus.intValue(), 200);
+    }
+    
+    public void testWebViewWhiteListRejection() throws IOException
+    {
+        cordovaWebView.sendJavascript(
+            "var x = new XMLHttpRequest;\n" +
+            "x.open('GET', 'http://foo/bar', false);\n" + 
+            "x.send();\n" + 
+            "cordova.require('cordova/exec')(null,null,'CordovaResourceApiTestPlugin1', 'foo', [x.responseText, x.status])");
+        execPayload = null;
+        execStatus = null;
+        try {
+            synchronized (this) {
+                this.wait(2000);
+            }
+        } catch (InterruptedException e) {
+        }
+        assertEquals("", execPayload);
+        assertEquals(execStatus.intValue(), 404);
+    }    
+}

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/39092777/test/androidTest/src/org/apache/cordova/test/junit/CordovaTest.java
----------------------------------------------------------------------
diff --git a/test/androidTest/src/org/apache/cordova/test/junit/CordovaTest.java b/test/androidTest/src/org/apache/cordova/test/junit/CordovaTest.java
new file mode 100644
index 0000000..2e09611
--- /dev/null
+++ b/test/androidTest/src/org/apache/cordova/test/junit/CordovaTest.java
@@ -0,0 +1,116 @@
+/*
+       Licensed to the Apache Software Foundation (ASF) under one
+       or more contributor license agreements.  See the NOTICE file
+       distributed with this work for additional information
+       regarding copyright ownership.  The ASF licenses this file
+       to you 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 org.apache.cordova.test.junit;
+
+import org.apache.cordova.CordovaWebView;
+import org.apache.cordova.PluginManager;
+import org.apache.cordova.test.CordovaWebViewTestActivity;
+import org.apache.cordova.test.R;
+
+import android.app.Instrumentation;
+import android.test.ActivityInstrumentationTestCase2;
+import android.view.View;
+
+public class CordovaTest extends
+    ActivityInstrumentationTestCase2<CordovaWebViewTestActivity> {
+
+  private static final long TIMEOUT = 1000;
+  private CordovaWebViewTestActivity testActivity;
+  private View testView;
+  private String rString;
+
+  public CordovaTest() {
+    super("org.apache.cordova.test.activities", CordovaWebViewTestActivity.class);
+  }
+
+  protected void setUp() throws Exception {
+    super.setUp();
+    testActivity = this.getActivity();
+    testView = testActivity.findViewById(R.id.cordovaWebView);
+  }
+
+  public void testPreconditions() {
+    assertNotNull(testView);
+  }
+
+  public void testForAndroidWebView() {
+    //Sleep for no reason!!!!
+    sleep();        
+    String className = testView.getClass().getSimpleName();
+    assertTrue(className.equals("AndroidWebView"));
+  }
+
+  /*
+  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/cordova-android/blob/39092777/test/androidTest/src/org/apache/cordova/test/junit/ErrorUrlTest.java
----------------------------------------------------------------------
diff --git a/test/androidTest/src/org/apache/cordova/test/junit/ErrorUrlTest.java b/test/androidTest/src/org/apache/cordova/test/junit/ErrorUrlTest.java
new file mode 100644
index 0000000..de12bc4
--- /dev/null
+++ b/test/androidTest/src/org/apache/cordova/test/junit/ErrorUrlTest.java
@@ -0,0 +1,82 @@
+package org.apache.cordova.test.junit;
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ *
+*/
+
+
+import org.apache.cordova.CordovaWebView;
+import org.apache.cordova.test.errorurl;
+
+import android.test.ActivityInstrumentationTestCase2;
+import android.widget.FrameLayout;
+import android.widget.LinearLayout;
+
+public class ErrorUrlTest extends ActivityInstrumentationTestCase2<errorurl> {
+
+  private int TIMEOUT = 1000;
+  errorurl testActivity;
+  private FrameLayout containerView;
+  private LinearLayout innerContainer;
+  private CordovaWebView testView;
+  
+  public ErrorUrlTest() {
+    super("org.apache.cordova.test",errorurl.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 testUrl() throws Throwable
+  {
+    sleep();
+    runTestOnUiThread(new Runnable() {
+        public void run()
+        {
+            String good_url = "file:///android_asset/www/htmlnotfound/error.html";
+            String url = testView.getUrl();
+            assertNotNull(url);
+            assertEquals(good_url, url);
+         
+        }
+    });
+  }
+  
+
+  private void sleep() {
+      try {
+          Thread.sleep(TIMEOUT);
+      } catch (InterruptedException e) {
+          fail("Unexpected Timeout");
+      }
+  }
+
+  
+}

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/39092777/test/androidTest/src/org/apache/cordova/test/junit/FixWebView.java
----------------------------------------------------------------------
diff --git a/test/androidTest/src/org/apache/cordova/test/junit/FixWebView.java b/test/androidTest/src/org/apache/cordova/test/junit/FixWebView.java
new file mode 100755
index 0000000..3b73e29
--- /dev/null
+++ b/test/androidTest/src/org/apache/cordova/test/junit/FixWebView.java
@@ -0,0 +1,43 @@
+/*
+       Licensed to the Apache Software Foundation (ASF) under one
+       or more contributor license agreements.  See the NOTICE file
+       distributed with this work for additional information
+       regarding copyright ownership.  The ASF licenses this file
+       to you 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 org.apache.cordova.test.junit;
+
+import android.content.Context;
+import android.webkit.WebView;
+
+public class FixWebView extends WebView {
+
+    public FixWebView(Context context) {
+        super(context);
+    }
+
+    @Override
+    public void pauseTimers() {
+        // Do nothing
+    }
+
+    /**
+     * This method is with different signature in order to stop the timers while move application to background
+     * @param realPause
+     */
+    public void pauseTimers(@SuppressWarnings("unused") boolean realPause) {
+        super.pauseTimers();
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/39092777/test/androidTest/src/org/apache/cordova/test/junit/HtmlNotFoundTest.java
----------------------------------------------------------------------
diff --git a/test/androidTest/src/org/apache/cordova/test/junit/HtmlNotFoundTest.java b/test/androidTest/src/org/apache/cordova/test/junit/HtmlNotFoundTest.java
new file mode 100644
index 0000000..abc4802
--- /dev/null
+++ b/test/androidTest/src/org/apache/cordova/test/junit/HtmlNotFoundTest.java
@@ -0,0 +1,80 @@
+package org.apache.cordova.test.junit;
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ *
+*/
+
+
+import org.apache.cordova.CordovaWebView;
+import org.apache.cordova.test.htmlnotfound;
+
+import android.test.ActivityInstrumentationTestCase2;
+import android.widget.FrameLayout;
+import android.widget.LinearLayout;
+
+public class HtmlNotFoundTest extends ActivityInstrumentationTestCase2<htmlnotfound> {
+
+  private int TIMEOUT = 1000;
+  private htmlnotfound testActivity;
+  private FrameLayout containerView;
+  private LinearLayout innerContainer;
+  private CordovaWebView testView;
+
+  public HtmlNotFoundTest() {
+    super("org.apache.cordova.test",htmlnotfound.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 testUrl() throws Throwable
+  {
+      sleep();
+      runTestOnUiThread(new Runnable() {
+          public void run()
+          {
+              String good_url = "file:///android_asset/www/htmlnotfound/error.html";
+              String url = testView.getUrl();
+              assertNotNull(url);
+              assertFalse(url.equals(good_url));
+          }
+      });
+
+  }
+
+  private void sleep() {
+      try {
+        Thread.sleep(TIMEOUT);
+      } catch (InterruptedException e) {
+        fail("Unexpected Timeout");
+      }
+    }
+
+}


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org