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