Merge "Fix CtsTelephonyTestCases:PhoneNumberUtilsTest--testCallMethods fails due to PhoneNumberUtils MIN_MATCH set to 11 for China region ship" into froyo
diff --git a/tests/appsecurity-tests/src/com/android/cts/appsecurity/AppSecurityTests.java b/tests/appsecurity-tests/src/com/android/cts/appsecurity/AppSecurityTests.java
index f528ee1..e34e3e8 100644
--- a/tests/appsecurity-tests/src/com/android/cts/appsecurity/AppSecurityTests.java
+++ b/tests/appsecurity-tests/src/com/android/cts/appsecurity/AppSecurityTests.java
@@ -22,6 +22,7 @@
import junit.framework.Test;
import com.android.ddmlib.Log;
+import com.android.ddmlib.Log.LogLevel;
import com.android.ddmlib.testrunner.ITestRunListener;
import com.android.ddmlib.testrunner.RemoteAndroidTestRunner;
import com.android.ddmlib.testrunner.TestIdentifier;
@@ -48,6 +49,12 @@
// testAppFailAccessPrivateData constants
private static final String APP_WITH_DATA_APK = "CtsAppWithData.apk";
private static final String APP_WITH_DATA_PKG = "com.android.cts.appwithdata";
+ private static final String APP_WITH_DATA_CLASS =
+ "com.android.cts.appwithdata.CreatePrivateDataTest";
+ private static final String APP_WITH_DATA_CREATE_METHOD =
+ "testCreatePrivateData";
+ private static final String APP_WITH_DATA_CHECK_NOEXIST_METHOD =
+ "testEnsurePrivateDataNotExist";
private static final String APP_ACCESS_DATA_APK = "CtsAppAccessData.apk";
private static final String APP_ACCESS_DATA_PKG = "com.android.cts.appaccessdata";
@@ -138,7 +145,8 @@
false);
assertNull("failed to install app with data", installResult);
// run appwithdata's tests to create private data
- assertTrue("failed to create app's private data", runDeviceTests(APP_WITH_DATA_PKG));
+ assertTrue("failed to create app's private data", runDeviceTests(APP_WITH_DATA_PKG,
+ APP_WITH_DATA_CLASS, APP_WITH_DATA_CREATE_METHOD));
installResult = getDevice().installPackage(getTestAppFilePath(APP_ACCESS_DATA_APK),
false);
@@ -153,6 +161,37 @@
}
/**
+ * Test that uninstall of an app removes its private data.
+ */
+ public void testUninstallRemovesData() throws IOException {
+ Log.i(LOG_TAG, "Uninstalling app, verifying data is removed.");
+ try {
+ // cleanup test app that might be installed from previous partial test run
+ getDevice().uninstallPackage(APP_WITH_DATA_PKG);
+
+ String installResult = getDevice().installPackage(getTestAppFilePath(APP_WITH_DATA_APK),
+ false);
+ assertNull("failed to install app with data", installResult);
+ // run appwithdata's tests to create private data
+ assertTrue("failed to create app's private data", runDeviceTests(APP_WITH_DATA_PKG,
+ APP_WITH_DATA_CLASS, APP_WITH_DATA_CREATE_METHOD));
+
+ getDevice().uninstallPackage(APP_WITH_DATA_PKG);
+
+ installResult = getDevice().installPackage(getTestAppFilePath(APP_WITH_DATA_APK),
+ false);
+ assertNull("failed to install app with data second time", installResult);
+ // run appwithdata's 'check if file exists' test
+ assertTrue("app's private data still exists after install", runDeviceTests(
+ APP_WITH_DATA_PKG, APP_WITH_DATA_CLASS, APP_WITH_DATA_CHECK_NOEXIST_METHOD));
+
+ }
+ finally {
+ getDevice().uninstallPackage(APP_WITH_DATA_PKG);
+ }
+ }
+
+ /**
* Test that an app cannot instrument another app that is signed with different certificate.
*/
public void testInstrumentationDiffCert() throws IOException {
@@ -227,7 +266,17 @@
* @return <code>true</code> if all tests passed.
*/
private boolean runDeviceTests(String pkgName) {
- CollectingTestRunListener listener = doRunTests(pkgName);
+ return runDeviceTests(pkgName, null, null);
+ }
+
+ /**
+ * Helper method that will the specified packages tests on device.
+ *
+ * @param pkgName Android application package for tests
+ * @return <code>true</code> if all tests passed.
+ */
+ private boolean runDeviceTests(String pkgName, String testClassName, String testMethodName) {
+ CollectingTestRunListener listener = doRunTests(pkgName, testClassName, testMethodName);
return listener.didAllTestsPass();
}
@@ -236,8 +285,12 @@
* @param pkgName Android application package for tests
* @return the {@link CollectingTestRunListener}
*/
- private CollectingTestRunListener doRunTests(String pkgName) {
+ private CollectingTestRunListener doRunTests(String pkgName, String testClassName,
+ String testMethodName) {
RemoteAndroidTestRunner testRunner = new RemoteAndroidTestRunner(pkgName, getDevice());
+ if (testClassName != null && testMethodName != null) {
+ testRunner.setMethodName(testClassName, testMethodName);
+ }
CollectingTestRunListener listener = new CollectingTestRunListener();
testRunner.run(listener);
return listener;
@@ -254,7 +307,8 @@
public void testFailed(TestFailure status, TestIdentifier test,
String trace) {
- Log.w(LOG_TAG, String.format("%s#%s failed: %s", test.getClassName(),
+ Log.logAndDisplay(LogLevel.WARN, LOG_TAG, String.format("%s#%s failed: %s",
+ test.getClassName(),
test.getTestName(), trace));
mAllTestsPassed = false;
}
@@ -264,7 +318,8 @@
}
public void testRunFailed(String errorMessage) {
- Log.w(LOG_TAG, String.format("test run failed: %s", errorMessage));
+ Log.logAndDisplay(LogLevel.WARN, LOG_TAG, String.format("test run failed: %s",
+ errorMessage));
mAllTestsPassed = false;
mTestRunErrorMessage = errorMessage;
}
diff --git a/tests/appsecurity-tests/test-apps/AppWithData/src/com/android/cts/appwithdata/CreatePrivateDataTest.java b/tests/appsecurity-tests/test-apps/AppWithData/src/com/android/cts/appwithdata/CreatePrivateDataTest.java
index de8cb78..d77a872 100644
--- a/tests/appsecurity-tests/test-apps/AppWithData/src/com/android/cts/appwithdata/CreatePrivateDataTest.java
+++ b/tests/appsecurity-tests/test-apps/AppWithData/src/com/android/cts/appwithdata/CreatePrivateDataTest.java
@@ -44,5 +44,14 @@
Context.MODE_PRIVATE);
outputStream.write("file contents".getBytes());
outputStream.close();
+ assertTrue(getContext().getFileStreamPath(PRIVATE_FILE_NAME).exists());
+ }
+
+ /**
+ * Check to ensure the private file created in testCreatePrivateData does not exist.
+ * Used to check that uninstall of an app deletes the app's data.
+ */
+ public void testEnsurePrivateDataNotExist() throws IOException {
+ assertFalse(getContext().getFileStreamPath(PRIVATE_FILE_NAME).exists());
}
}
diff --git a/tests/src/android/view/cts/WindowStubActivity.java b/tests/src/android/view/cts/WindowStubActivity.java
old mode 100644
new mode 100755
index 24a971f..502c947
--- a/tests/src/android/view/cts/WindowStubActivity.java
+++ b/tests/src/android/view/cts/WindowStubActivity.java
@@ -39,8 +39,8 @@
@Override
public boolean onCreateOptionsMenu(Menu menu) {
- menu.add(Menu.NONE, Menu.NONE, Menu.NONE, "Quit").setAlphabeticShortcut('q');
- menu.add(Menu.NONE, Menu.NONE, Menu.NONE, "Action").setAlphabeticShortcut('a');
+ menu.add(Menu.NONE, Menu.NONE, Menu.NONE, "Quit").setShortcut('1', 'q');
+ menu.add(Menu.NONE, Menu.NONE, Menu.NONE, "Action").setShortcut('2', 'a');
mIsOnCreateOptionsMenuCalled = true;
return super.onCreateOptionsMenu(menu);
}
diff --git a/tests/tests/app/src/android/app/cts/DialogTest.java b/tests/tests/app/src/android/app/cts/DialogTest.java
index 4d02896..28c2c20 100644
--- a/tests/tests/app/src/android/app/cts/DialogTest.java
+++ b/tests/tests/app/src/android/app/cts/DialogTest.java
@@ -36,6 +36,7 @@
import android.os.Looper;
import android.os.Message;
import android.test.ActivityInstrumentationTestCase2;
+import android.view.animation.cts.DelayedCheck;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.MenuItem;
@@ -60,6 +61,7 @@
private static final float MOTION_X = -20.0f;
private static final float MOTION_Y = -20.0f;
private static final String STUB_ACTIVITY_PACKAGE = "com.android.cts.stub";
+ private static final long TEST_TIMEOUT = 1000L;
/**
* please refer to Dialog
@@ -698,7 +700,12 @@
});
mInstrumentation.waitForIdleSync();
- assertTrue(d.isOnWindowFocusChangedCalled);
+ // Wait until TestDialog#OnWindowFocusChanged() is called
+ new DelayedCheck(TEST_TIMEOUT) {
+ protected boolean check() {
+ return d.isOnWindowFocusChangedCalled;
+ }
+ }.run();
}
@TestTargets({
diff --git a/tests/tests/app/src/android/app/cts/InstrumentationTest.java b/tests/tests/app/src/android/app/cts/InstrumentationTest.java
index 5ce33a0..fce9972 100644
--- a/tests/tests/app/src/android/app/cts/InstrumentationTest.java
+++ b/tests/tests/app/src/android/app/cts/InstrumentationTest.java
@@ -71,8 +71,8 @@
final long eventTime = SystemClock.uptimeMillis();
// use coordinates for MotionEvent that do not include the status bar
// TODO: is there a more deterministic way to get these values
- final long x = 50;
- final long y = 50;
+ final long x = 55;
+ final long y = 55;
final int metaState = 0;
mMotionEvent = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_DOWN, x, y,
metaState);
diff --git a/tests/tests/content/src/android/content/cts/AvailableIntentsTest.java b/tests/tests/content/src/android/content/cts/AvailableIntentsTest.java
index b08e953..bd8c260 100644
--- a/tests/tests/content/src/android/content/cts/AvailableIntentsTest.java
+++ b/tests/tests/content/src/android/content/cts/AvailableIntentsTest.java
@@ -147,9 +147,12 @@
args = {java.lang.String.class, android.net.Uri.class}
)
public void testDialPhoneNumber() {
- Uri uri = Uri.parse("tel:(212)5551212");
- Intent intent = new Intent(Intent.ACTION_DIAL, uri);
- assertCanBeHandled(intent);
+ PackageManager packageManager = mContext.getPackageManager();
+ if (packageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+ Uri uri = Uri.parse("tel:(212)5551212");
+ Intent intent = new Intent(Intent.ACTION_DIAL, uri);
+ assertCanBeHandled(intent);
+ }
}
/**
@@ -161,8 +164,11 @@
args = {java.lang.String.class, android.net.Uri.class}
)
public void testDialVoicemail() {
- Uri uri = Uri.parse("voicemail:");
- Intent intent = new Intent(Intent.ACTION_DIAL, uri);
- assertCanBeHandled(intent);
+ PackageManager packageManager = mContext.getPackageManager();
+ if (packageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+ Uri uri = Uri.parse("voicemail:");
+ Intent intent = new Intent(Intent.ACTION_DIAL, uri);
+ assertCanBeHandled(intent);
+ }
}
}
diff --git a/tests/tests/content/src/android/content/cts/ContentResolverSyncTestCase.java b/tests/tests/content/src/android/content/cts/ContentResolverSyncTestCase.java
index 032f10a..ecad3e4 100644
--- a/tests/tests/content/src/android/content/cts/ContentResolverSyncTestCase.java
+++ b/tests/tests/content/src/android/content/cts/ContentResolverSyncTestCase.java
@@ -211,12 +211,13 @@
/**
* Test if we can set and get the MasterSyncAutomatically switch
*/
- public void testGetAndSetMasterSyncAutomatically() {
+ public void testGetAndSetMasterSyncAutomatically() throws Exception {
ContentResolver.setMasterSyncAutomatically(true);
assertEquals(true, ContentResolver.getMasterSyncAutomatically());
ContentResolver.setMasterSyncAutomatically(false);
assertEquals(false, ContentResolver.getMasterSyncAutomatically());
+ Thread.sleep(3000);
}
/**
diff --git a/tests/tests/dpi/src/android/dpi/cts/ConfigurationTest.java b/tests/tests/dpi/src/android/dpi/cts/ConfigurationTest.java
index f038c4b..069cf80 100644
--- a/tests/tests/dpi/src/android/dpi/cts/ConfigurationTest.java
+++ b/tests/tests/dpi/src/android/dpi/cts/ConfigurationTest.java
@@ -179,6 +179,7 @@
* HVGA | medium (141-190) | normal
* WVGA | high (191-250) | normal
* FWVGA | high (191-250) | normal
+ * QHD | high (191-250) | normal
* WSVGA | high (191-250) | large
* VGA | medium (141-190) | large
@@ -192,7 +193,7 @@
// QVGA | low (100-140) | small
new ScreenConfiguration(240, 320, Density.LOW, Configuration.SCREENLAYOUT_SIZE_SMALL),
// WQVGA | low (100-140) | normal
- new ScreenConfiguration(240, 320, Density.LOW, Configuration.SCREENLAYOUT_SIZE_SMALL, true),
+ new ScreenConfiguration(240, 400, Density.LOW, Configuration.SCREENLAYOUT_SIZE_NORMAL),
// HVGA | medium (141-190) | normal
new ScreenConfiguration(480, 320, Density.MEDIUM, Configuration.SCREENLAYOUT_SIZE_NORMAL),
new ScreenConfiguration(640, 240, Density.MEDIUM, Configuration.SCREENLAYOUT_SIZE_NORMAL),
@@ -200,6 +201,8 @@
new ScreenConfiguration(640, 480, Density.HIGH, Configuration.SCREENLAYOUT_SIZE_NORMAL, true),
// FWVGA | high (191-250) | normal
new ScreenConfiguration(864, 480, Density.HIGH, Configuration.SCREENLAYOUT_SIZE_NORMAL),
+ // QHD | high (191-250) | normal
+ new ScreenConfiguration(960, 540, Density.HIGH, Configuration.SCREENLAYOUT_SIZE_NORMAL),
// WSVGA | high (191-250) | large
new ScreenConfiguration(1024, 600, Density.HIGH, Configuration.SCREENLAYOUT_SIZE_LARGE),
diff --git a/tests/tests/graphics/src/android/opengl/cts/OpenGlEsVersionTest.java b/tests/tests/graphics/src/android/opengl/cts/OpenGlEsVersionTest.java
index f1acd87..3ebc567 100644
--- a/tests/tests/graphics/src/android/opengl/cts/OpenGlEsVersionTest.java
+++ b/tests/tests/graphics/src/android/opengl/cts/OpenGlEsVersionTest.java
@@ -83,33 +83,42 @@
EGLDisplay display = egl.eglGetDisplay(EGL10.EGL_DEFAULT_DISPLAY);
int[] numConfigs = new int[1];
- if (egl.eglGetConfigs(display, null, 0, numConfigs)) {
- EGLConfig[] configs = new EGLConfig[numConfigs[0]];
- if (egl.eglGetConfigs(display, configs, numConfigs[0], numConfigs)) {
- int[] value = new int[1];
- for (int i = 0; i < numConfigs[0]; i++) {
- if (egl.eglGetConfigAttrib(display, configs[i],
- EGL10.EGL_RENDERABLE_TYPE, value)) {
- if ((value[0] & EGL_OPENGL_ES2_BIT) == EGL_OPENGL_ES2_BIT) {
- return 2;
+ if (egl.eglInitialize(display, null)) {
+ try {
+ if (egl.eglGetConfigs(display, null, 0, numConfigs)) {
+ EGLConfig[] configs = new EGLConfig[numConfigs[0]];
+ if (egl.eglGetConfigs(display, configs, numConfigs[0], numConfigs)) {
+ int[] value = new int[1];
+ for (int i = 0; i < numConfigs[0]; i++) {
+ if (egl.eglGetConfigAttrib(display, configs[i],
+ EGL10.EGL_RENDERABLE_TYPE, value)) {
+ if ((value[0] & EGL_OPENGL_ES2_BIT) == EGL_OPENGL_ES2_BIT) {
+ return 2;
+ }
+ } else {
+ Log.w(TAG, "Getting config attribute with "
+ + "EGL10#eglGetConfigAttrib failed "
+ + "(" + i + "/" + numConfigs[0] + "): "
+ + egl.eglGetError());
+ }
}
+ return 1;
} else {
- Log.w(TAG, "Getting config attribute with "
- + "EGL10#eglGetConfigAttrib failed "
- + "(" + i + "/" + numConfigs[0] + "): "
+ Log.e(TAG, "Getting configs with EGL10#eglGetConfigs failed: "
+ egl.eglGetError());
+ return -1;
}
+ } else {
+ Log.e(TAG, "Getting number of configs with EGL10#eglGetConfigs failed: "
+ + egl.eglGetError());
+ return -2;
}
- return 1;
- } else {
- Log.e(TAG, "Getting configs with EGL10#eglGetConfigs failed: "
- + egl.eglGetError());
- return -1;
- }
+ } finally {
+ egl.eglTerminate(display);
+ }
} else {
- Log.e(TAG, "Getting number of configs with EGL10#eglGetConfigs failed: "
- + egl.eglGetError());
- return -2;
+ Log.e(TAG, "Couldn't initialize EGL.");
+ return -3;
}
}
diff --git a/tests/tests/media/src/android/media/cts/AudioManagerTest.java b/tests/tests/media/src/android/media/cts/AudioManagerTest.java
index 3de8a51..cfa9293 100644
--- a/tests/tests/media/src/android/media/cts/AudioManagerTest.java
+++ b/tests/tests/media/src/android/media/cts/AudioManagerTest.java
@@ -575,7 +575,8 @@
mAudioManager.setStreamVolume(streams[i], 1, FLAG_SHOW_UI);
mAudioManager.adjustStreamVolume(streams[i], ADJUST_LOWER, FLAG_ALLOW_RINGER_MODES);
// lowering the volume should have changed the ringer mode
- assertEquals(RINGER_MODE_VIBRATE, mAudioManager.getRingerMode());
+ assertTrue(mAudioManager.getRingerMode() == RINGER_MODE_VIBRATE ||
+ mAudioManager.getRingerMode() == RINGER_MODE_SILENT);
mAudioManager.adjustStreamVolume(streams[i], ADJUST_LOWER, FLAG_ALLOW_RINGER_MODES);
// adjusting the volume to zero should result in either silent or vibrate mode
assertTrue(mAudioManager.getRingerMode() == RINGER_MODE_VIBRATE ||
diff --git a/tests/tests/media/src/android/media/cts/AudioTrackTest.java b/tests/tests/media/src/android/media/cts/AudioTrackTest.java
index 12cfcad..0316ef9 100644
--- a/tests/tests/media/src/android/media/cts/AudioTrackTest.java
+++ b/tests/tests/media/src/android/media/cts/AudioTrackTest.java
@@ -29,7 +29,7 @@
@TestTargetClass(AudioTrack.class)
public class AudioTrackTest extends AndroidTestCase {
private String TAG = "AudioTrackTest";
- private final long WAIT_MSEC = 100;
+ private final long WAIT_MSEC = 200;
private final int OFFSET_DEFAULT = 0;
private final int OFFSET_NEGATIVE = -10;
@@ -394,8 +394,8 @@
// -------- initialization --------------
int minBuffSize = AudioTrack.getMinBufferSize(TEST_SR, TEST_CONF, TEST_FORMAT);
AudioTrack track = new AudioTrack(TEST_STREAM_TYPE, TEST_SR, TEST_CONF, TEST_FORMAT,
- minBuffSize, TEST_MODE);
- byte data[] = new byte[minBuffSize / 2];
+ 2 * minBuffSize, TEST_MODE);
+ byte data[] = new byte[minBuffSize];
// -------- test --------------
assertTrue(TEST_NAME, track.getState() == AudioTrack.STATE_INITIALIZED);
track.write(data, OFFSET_DEFAULT, data.length);
@@ -453,8 +453,8 @@
// -------- initialization --------------
int minBuffSize = AudioTrack.getMinBufferSize(TEST_SR, TEST_CONF, TEST_FORMAT);
AudioTrack track = new AudioTrack(TEST_STREAM_TYPE, TEST_SR, TEST_CONF, TEST_FORMAT,
- minBuffSize, TEST_MODE);
- byte data[] = new byte[minBuffSize / 2];
+ 2 * minBuffSize, TEST_MODE);
+ byte data[] = new byte[minBuffSize];
// -------- test --------------
assertTrue(TEST_NAME, track.getState() == AudioTrack.STATE_INITIALIZED);
track.write(data, OFFSET_DEFAULT, data.length);
@@ -519,8 +519,8 @@
// -------- initialization --------------
int minBuffSize = AudioTrack.getMinBufferSize(TEST_SR, TEST_CONF, TEST_FORMAT);
AudioTrack track = new AudioTrack(TEST_STREAM_TYPE, TEST_SR, TEST_CONF, TEST_FORMAT,
- minBuffSize, TEST_MODE);
- byte data[] = new byte[minBuffSize / 2];
+ 2 * minBuffSize, TEST_MODE);
+ byte data[] = new byte[minBuffSize];
// -------- test --------------
assertTrue(TEST_NAME, track.getState() == AudioTrack.STATE_INITIALIZED);
track.write(data, OFFSET_DEFAULT, data.length);
@@ -586,8 +586,8 @@
// -------- initialization --------------
int minBuffSize = AudioTrack.getMinBufferSize(TEST_SR, TEST_CONF, TEST_FORMAT);
AudioTrack track = new AudioTrack(TEST_STREAM_TYPE, TEST_SR, TEST_CONF, TEST_FORMAT,
- minBuffSize, TEST_MODE);
- byte data[] = new byte[minBuffSize / 2];
+ 2 * minBuffSize, TEST_MODE);
+ byte data[] = new byte[minBuffSize];
// -------- test --------------
assertTrue(TEST_NAME, track.getState() == AudioTrack.STATE_INITIALIZED);
track.write(data, OFFSET_DEFAULT, data.length);
@@ -661,8 +661,8 @@
// -------- initialization --------------
int minBuffSize = AudioTrack.getMinBufferSize(TEST_SR, TEST_CONF, TEST_FORMAT);
AudioTrack track = new AudioTrack(TEST_STREAM_TYPE, TEST_SR, TEST_CONF, TEST_FORMAT,
- minBuffSize, TEST_MODE);
- byte data[] = new byte[minBuffSize / 2];
+ 2 * minBuffSize, TEST_MODE);
+ byte data[] = new byte[minBuffSize];
// -------- test --------------
track.write(data, OFFSET_DEFAULT, data.length);
track.write(data, OFFSET_DEFAULT, data.length);
@@ -728,8 +728,8 @@
// -------- initialization --------------
int minBuffSize = AudioTrack.getMinBufferSize(TEST_SR, TEST_CONF, TEST_FORMAT);
AudioTrack track = new AudioTrack(TEST_STREAM_TYPE, TEST_SR, TEST_CONF, TEST_FORMAT,
- minBuffSize, TEST_MODE);
- byte data[] = new byte[minBuffSize / 2];
+ 2 * minBuffSize, TEST_MODE);
+ byte data[] = new byte[minBuffSize];
// -------- test --------------
track.write(data, OFFSET_DEFAULT, data.length);
track.write(data, OFFSET_DEFAULT, data.length);
@@ -790,8 +790,8 @@
// -------- initialization --------------
int minBuffSize = AudioTrack.getMinBufferSize(TEST_SR, TEST_CONF, TEST_FORMAT);
AudioTrack track = new AudioTrack(TEST_STREAM_TYPE, TEST_SR, TEST_CONF, TEST_FORMAT,
- minBuffSize, TEST_MODE);
- byte data[] = new byte[minBuffSize / 2];
+ 2 * minBuffSize, TEST_MODE);
+ byte data[] = new byte[minBuffSize];
// -------- test --------------
track.write(data, OFFSET_DEFAULT, data.length);
@@ -848,8 +848,8 @@
// -------- initialization --------------
int minBuffSize = AudioTrack.getMinBufferSize(TEST_SR, TEST_CONF, TEST_FORMAT);
AudioTrack track = new AudioTrack(TEST_STREAM_TYPE, TEST_SR, TEST_CONF, TEST_FORMAT,
- minBuffSize, TEST_MODE);
- byte data[] = new byte[minBuffSize / 2];
+ 2 * minBuffSize, TEST_MODE);
+ byte data[] = new byte[minBuffSize];
// -------- test --------------
track.write(data, OFFSET_DEFAULT, data.length);
track.write(data, OFFSET_DEFAULT, data.length);
@@ -964,8 +964,8 @@
// -------- initialization --------------
int minBuffSize = AudioTrack.getMinBufferSize(TEST_SR, TEST_CONF, TEST_FORMAT);
AudioTrack track = new AudioTrack(TEST_STREAM_TYPE, TEST_SR, TEST_CONF, TEST_FORMAT,
- minBuffSize, TEST_MODE);
- byte data[] = new byte[minBuffSize / 2];
+ 2 * minBuffSize, TEST_MODE);
+ byte data[] = new byte[minBuffSize];
int outputSR = AudioTrack.getNativeOutputSampleRate(TEST_STREAM_TYPE);
// -------- test --------------
track.write(data, OFFSET_DEFAULT, data.length);
@@ -1028,8 +1028,8 @@
// -------- initialization --------------
int minBuffSize = AudioTrack.getMinBufferSize(TEST_SR, TEST_CONF, TEST_FORMAT);
AudioTrack track = new AudioTrack(TEST_STREAM_TYPE, TEST_SR, TEST_CONF, TEST_FORMAT,
- minBuffSize, TEST_MODE);
- byte data[] = new byte[minBuffSize / 2];
+ 2 * minBuffSize, TEST_MODE);
+ byte data[] = new byte[minBuffSize];
// -------- test --------------
track.write(data, OFFSET_DEFAULT, data.length);
track.write(data, OFFSET_DEFAULT, data.length);
@@ -2620,4 +2620,4 @@
}
}
-}
\ No newline at end of file
+}
diff --git a/tests/tests/media/src/android/media/cts/MediaRecorderTest.java b/tests/tests/media/src/android/media/cts/MediaRecorderTest.java
index e5dc1ff..78c8ed9 100644
--- a/tests/tests/media/src/android/media/cts/MediaRecorderTest.java
+++ b/tests/tests/media/src/android/media/cts/MediaRecorderTest.java
@@ -37,6 +37,7 @@
public class MediaRecorderTest extends ActivityInstrumentationTestCase2<MediaStubActivity> {
private final String OUTPUT_PATH;
+ private final String OUTPUT_PATH2;
private static final int RECORD_TIME = 3000;
private static final int VIDEO_WIDTH = 320;
private static final int VIDEO_HEIGHT = 240;
@@ -46,6 +47,7 @@
private boolean mOnInfoCalled;
private boolean mOnErrorCalled;
private File mOutFile;
+ private File mOutFile2;
private Camera mCamera;
/*
@@ -61,11 +63,14 @@
super("com.android.cts.stub", MediaStubActivity.class);
OUTPUT_PATH = new File(Environment.getExternalStorageDirectory(),
"record.out").getAbsolutePath();
+ OUTPUT_PATH2 = new File(Environment.getExternalStorageDirectory(),
+ "record2.out").getAbsolutePath();
}
@Override
protected void setUp() throws Exception {
mOutFile = new File(OUTPUT_PATH);
+ mOutFile2 = new File(OUTPUT_PATH2);
mMediaRecorder.reset();
mMediaRecorder.setOutputFile(OUTPUT_PATH);
mMediaRecorder.setOnInfoListener(new OnInfoListener() {
@@ -87,6 +92,9 @@
if (mOutFile != null && mOutFile.exists()) {
mOutFile.delete();
}
+ if (mOutFile2 != null && mOutFile2.exists()) {
+ mOutFile2.delete();
+ }
if (mCamera != null) {
mCamera.release();
}
@@ -250,15 +258,16 @@
public void testRecorderVideo() throws Exception {
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
+ mMediaRecorder.setOutputFile(OUTPUT_PATH2);
mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT);
mMediaRecorder.setPreviewDisplay(getActivity().getSurfaceHolder().getSurface());
mMediaRecorder.setVideoFrameRate(FRAME_RATE);
mMediaRecorder.setVideoSize(VIDEO_WIDTH, VIDEO_HEIGHT);
- FileOutputStream fos = new FileOutputStream(OUTPUT_PATH);
+ FileOutputStream fos = new FileOutputStream(OUTPUT_PATH2);
FileDescriptor fd = fos.getFD();
mMediaRecorder.setOutputFile(fd);
long maxFileSize = MAX_FILE_SIZE * 10;
- recordMedia(maxFileSize);
+ recordMedia(maxFileSize, mOutFile2);
}
@TestTargets({
@@ -317,8 +326,9 @@
mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
assertEquals(0, mMediaRecorder.getMaxAmplitude());
mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
+ mMediaRecorder.setOutputFile(OUTPUT_PATH);
mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
- recordMedia(MAX_FILE_SIZE);
+ recordMedia(MAX_FILE_SIZE, mOutFile);
}
@TestTargets({
@@ -431,22 +441,21 @@
mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
- recordMedia(MAX_FILE_SIZE);
+ recordMedia(MAX_FILE_SIZE, mOutFile);
// TODO: how can we trigger a recording error?
assertFalse(mOnErrorCalled);
}
- private void recordMedia(long maxFileSize) throws Exception {
+ private void recordMedia(long maxFileSize, File outFile) throws Exception {
mMediaRecorder.setMaxFileSize(maxFileSize);
mMediaRecorder.prepare();
mMediaRecorder.start();
Thread.sleep(RECORD_TIME);
mMediaRecorder.stop();
- assertTrue(mOutFile.exists());
+ assertTrue(outFile.exists());
// The max file size is always guaranteed.
// We just make sure that the margin is not too big
- assertTrue(mOutFile.length() < 1.1 * maxFileSize);
- assertTrue(mOutFile.length() > 0);
+ assertTrue(outFile.length() < 1.1 * maxFileSize);
+ assertTrue(outFile.length() > 0);
}
-
}
diff --git a/tests/tests/net/src/android/net/cts/ConnectivityManagerTest.java b/tests/tests/net/src/android/net/cts/ConnectivityManagerTest.java
index edcea9a..3b85e9f 100644
--- a/tests/tests/net/src/android/net/cts/ConnectivityManagerTest.java
+++ b/tests/tests/net/src/android/net/cts/ConnectivityManagerTest.java
@@ -22,20 +22,35 @@
import dalvik.annotation.TestTargets;
import dalvik.annotation.ToBeFixed;
+import android.content.BroadcastReceiver;
import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.pm.PackageManager;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.NetworkInfo.DetailedState;
import android.net.NetworkInfo.State;
+import android.net.wifi.WifiManager;
import android.test.AndroidTestCase;
+import android.util.Log;
+
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
@TestTargetClass(ConnectivityManager.class)
public class ConnectivityManagerTest extends AndroidTestCase {
+ private static final String TAG = ConnectivityManagerTest.class.getSimpleName();
+
+ private static final String FEATURE_ENABLE_HIPRI = "enableHIPRI";
+
public static final int TYPE_MOBILE = ConnectivityManager.TYPE_MOBILE;
public static final int TYPE_WIFI = ConnectivityManager.TYPE_WIFI;
private static final int HOST_ADDRESS = 0x7f000001;// represent ip 127.0.0.1
private ConnectivityManager mCm;
+ private WifiManager mWifiManager;
+ private PackageManager mPackageManager;
// must include both mobile data + wifi
private static final int MIN_NUM_NETWORK_TYPES = 2;
@@ -43,6 +58,8 @@
protected void setUp() throws Exception {
super.setUp();
mCm = (ConnectivityManager) getContext().getSystemService(Context.CONNECTIVITY_SERVICE);
+ mWifiManager = (WifiManager) getContext().getSystemService(Context.WIFI_SERVICE);
+ mPackageManager = getContext().getPackageManager();
}
@TestTargetNew(
@@ -204,8 +221,8 @@
NetworkInfo[] ni = mCm.getAllNetworkInfo();
for (NetworkInfo n : ni) {
- // make sure network is up
- if (n.isConnected()) {
+ // make sure network is up (except WIFI due to always fail)
+ if (n.isConnected() && (n.getType() != TYPE_WIFI)) {
assertTrue(mCm.requestRouteToHost(n.getType(), HOST_ADDRESS));
}
}
@@ -235,4 +252,91 @@
public void testTest() {
mCm.getBackgroundDataSetting();
}
+
+ /** Test that hipri can be brought up when Wifi is enabled. */
+ public void testStartUsingNetworkFeature_enableHipri() throws Exception {
+ if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)
+ || !mPackageManager.hasSystemFeature(PackageManager.FEATURE_WIFI)) {
+ // This test requires a mobile data connection and WiFi.
+ return;
+ }
+
+ boolean isWifiConnected = mWifiManager.isWifiEnabled()
+ && mWifiManager.getConnectionInfo().getSSID() != null;
+
+ try {
+ // Make sure WiFi is connected to an access point.
+ if (!isWifiConnected) {
+ connectToWifi();
+ }
+
+ // Register a receiver that will capture the connectivity change for hipri.
+ ConnectivityActionReceiver receiver =
+ new ConnectivityActionReceiver(ConnectivityManager.TYPE_MOBILE_HIPRI);
+ IntentFilter filter = new IntentFilter();
+ filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
+ mContext.registerReceiver(receiver, filter);
+
+ // Try to start using the hipri feature...
+ int result = mCm.startUsingNetworkFeature(ConnectivityManager.TYPE_MOBILE,
+ FEATURE_ENABLE_HIPRI);
+ assertTrue("Couldn't start using the HIPRI feature.", result != -1);
+
+ // Check that the ConnectivityManager reported that it connected using hipri...
+ assertTrue("Couldn't connect using hipri...", receiver.waitForConnection());
+
+ assertTrue("Couldn't requestRouteToHost using HIPRI.",
+ mCm.requestRouteToHost(ConnectivityManager.TYPE_MOBILE_HIPRI, HOST_ADDRESS));
+
+ } catch (InterruptedException e) {
+ fail("Broadcast receiver waiting for ConnectivityManager interrupted.");
+ } finally {
+ mCm.stopUsingNetworkFeature(ConnectivityManager.TYPE_MOBILE,
+ FEATURE_ENABLE_HIPRI);
+ if (!isWifiConnected) {
+ mWifiManager.setWifiEnabled(false);
+ }
+ }
+ }
+
+ private void connectToWifi() throws InterruptedException {
+ ConnectivityActionReceiver receiver =
+ new ConnectivityActionReceiver(ConnectivityManager.TYPE_WIFI);
+ IntentFilter filter = new IntentFilter();
+ filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
+ mContext.registerReceiver(receiver, filter);
+
+ assertTrue(mWifiManager.setWifiEnabled(true));
+ assertTrue("Wifi must be configured to connect to an access point for this test.",
+ receiver.waitForConnection());
+
+ mContext.unregisterReceiver(receiver);
+ }
+
+ /** Receiver that captures the last connectivity change's network type and state. */
+ private class ConnectivityActionReceiver extends BroadcastReceiver {
+
+ private final CountDownLatch mReceiveLatch = new CountDownLatch(1);
+
+ private final int mNetworkType;
+
+ ConnectivityActionReceiver(int networkType) {
+ mNetworkType = networkType;
+ }
+
+ public void onReceive(Context context, Intent intent) {
+ NetworkInfo networkInfo = intent.getExtras()
+ .getParcelable(ConnectivityManager.EXTRA_NETWORK_INFO);
+ int networkType = networkInfo.getType();
+ State networkState = networkInfo.getState();
+ Log.i(TAG, "Network type: " + networkType + " state: " + networkState);
+ if (networkType == mNetworkType && networkInfo.getState() == State.CONNECTED) {
+ mReceiveLatch.countDown();
+ }
+ }
+
+ public boolean waitForConnection() throws InterruptedException {
+ return mReceiveLatch.await(10, TimeUnit.SECONDS);
+ }
+ }
}
diff --git a/tests/tests/net/src/android/net/wifi/cts/WifiInfoTest.java b/tests/tests/net/src/android/net/wifi/cts/WifiInfoTest.java
index 42243c8..d6d7d8e 100644
--- a/tests/tests/net/src/android/net/wifi/cts/WifiInfoTest.java
+++ b/tests/tests/net/src/android/net/wifi/cts/WifiInfoTest.java
@@ -20,7 +20,6 @@
import dalvik.annotation.TestTargetClass;
import dalvik.annotation.TestTargetNew;
import dalvik.annotation.TestTargets;
-import dalvik.annotation.ToBeFixed;
import android.content.BroadcastReceiver;
import android.content.Context;
@@ -168,8 +167,6 @@
args = {}
)
})
- @ToBeFixed(bug="1871573", explanation="android.net.wifi.WifiInfo#getNetworkId() return -1 when"
- + " there is wifi connection")
public void testWifiInfoProperties() throws Exception {
// this test case should in Wifi environment
WifiInfo wifiInfo = mWifiManager.getConnectionInfo();
@@ -187,8 +184,7 @@
wifiInfo.getMacAddress();
setWifiEnabled(false);
Thread.sleep(DURATION);
- wifiInfo = mWifiManager.getConnectionInfo();
- assertEquals(-1, wifiInfo.getNetworkId());
+ assertEquals(WifiManager.WIFI_STATE_DISABLED, mWifiManager.getWifiState());
}
}
diff --git a/tests/tests/os/src/android/os/cts/BuildVersionTest.java b/tests/tests/os/src/android/os/cts/BuildVersionTest.java
index 61e1837..bbea5b7 100644
--- a/tests/tests/os/src/android/os/cts/BuildVersionTest.java
+++ b/tests/tests/os/src/android/os/cts/BuildVersionTest.java
@@ -21,19 +21,28 @@
import android.os.Build;
import android.util.Log;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
import junit.framework.TestCase;
@TestTargetClass(Build.VERSION.class)
public class BuildVersionTest extends TestCase {
private static final String LOG_TAG = "BuildVersionTest";
- private static final String EXPECTED_RELEASE = "2.2.1";
- private static final String EXPECTED_SDK = "8";
+ private static final Set<String> EXPECTED_RELEASES =
+ new HashSet<String>(Arrays.asList("2.2", "2.2.1", "2.2.2"));
+ private static final int EXPECTED_SDK = 8;
public void testReleaseVersion() {
// Applications may rely on the exact release version
- assertEquals(EXPECTED_RELEASE, Build.VERSION.RELEASE);
- assertEquals(EXPECTED_SDK, Build.VERSION.SDK);
+ assertTrue("Your Build.VERSION.RELEASE of " + Build.VERSION.RELEASE
+ + " was not one of the following: " + EXPECTED_RELEASES,
+ EXPECTED_RELEASES.contains(Build.VERSION.RELEASE));
+
+ assertEquals("" + EXPECTED_SDK, Build.VERSION.SDK);
+ assertEquals(EXPECTED_SDK, Build.VERSION.SDK_INT);
}
/**
diff --git a/tests/tests/permission/src/android/permission/cts/NoActivityRelatedPermissionTest.java b/tests/tests/permission/src/android/permission/cts/NoActivityRelatedPermissionTest.java
index 39da4b6..2d11883 100644
--- a/tests/tests/permission/src/android/permission/cts/NoActivityRelatedPermissionTest.java
+++ b/tests/tests/permission/src/android/permission/cts/NoActivityRelatedPermissionTest.java
@@ -16,19 +16,14 @@
package android.permission.cts;
-import dalvik.annotation.BrokenTest;
import dalvik.annotation.TestTargetClass;
import android.app.Activity;
import android.app.ActivityManager;
-import android.app.AlertDialog;
import android.content.Context;
import android.test.ActivityInstrumentationTestCase2;
import android.test.UiThreadTest;
import android.test.suitebuilder.annotation.MediumTest;
-import android.test.suitebuilder.annotation.Suppress;
-import android.view.WindowManager;
-import android.view.WindowManager.BadTokenException;
/**
* Verify the Activity related operations require specific permissions.
@@ -50,47 +45,6 @@
}
/**
- * Verify that adding window of different types in Window Manager requires permissions.
- * <p>Requires Permission:
- * {@link android.Manifest.permission#SYSTEM_ALERT_WINDOW}.
- */
- @UiThreadTest
- @MediumTest
- @Suppress
- @BrokenTest("This test passes, but crashes the UI thread later on. See issues 1909470, 1910487")
- public void testSystemAlertWindow() {
- final int[] types = new int[] {
- WindowManager.LayoutParams.TYPE_PHONE,
- WindowManager.LayoutParams.TYPE_PRIORITY_PHONE,
- WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
- WindowManager.LayoutParams.TYPE_SYSTEM_ERROR,
- WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
- };
-
- AlertDialog dialog = (AlertDialog) (mActivity.getDialog());
- // Use normal window type will success
- dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_APPLICATION);
- dialog.show();
-
- // Test special window types which need to be check SYSTEM_ALERT_WINDOW
- // permission.
- for (int i = 0; i < types.length; i++) {
- dialog = (AlertDialog) (mActivity.getDialog());
- dialog.getWindow().setType(types[i]);
- try {
- dialog.show();
- // This throws an exception as expected, but only after already adding
- // a new view to the view hierarchy. This later results in a NullPointerException
- // when the activity gets destroyed. Since that crashes the UI thread and causes
- // test runs to abort, this test is currently excluded.
- fail("Add dialog to Window Manager did not throw BadTokenException as expected");
- } catch (BadTokenException e) {
- // Expected
- }
- }
- }
-
- /**
* Verify that setting Activity's persistent attribute requires permissions.
* <p>Requires Permission:
* {@link android.Manifest.permission#PERSISTENT_ACTIVITY}.
diff --git a/tests/tests/permission/src/android/permission/cts/NoCallPermissionTest.java b/tests/tests/permission/src/android/permission/cts/NoCallPermissionTest.java
index 6e86967..88d5f1c 100644
--- a/tests/tests/permission/src/android/permission/cts/NoCallPermissionTest.java
+++ b/tests/tests/permission/src/android/permission/cts/NoCallPermissionTest.java
@@ -17,6 +17,7 @@
package android.permission.cts;
import android.content.Intent;
+import android.content.pm.PackageManager;
import android.net.Uri;
import android.test.AndroidTestCase;
import android.test.suitebuilder.annotation.SmallTest;
@@ -33,14 +34,17 @@
*/
@SmallTest
public void testActionCall() {
- Uri uri = Uri.parse("tel:123456");
- Intent intent = new Intent(Intent.ACTION_CALL, uri);
- intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- try {
- mContext.startActivity(intent);
- fail("startActivity(Intent.ACTION_CALL) did not throw SecurityException as expected");
- } catch (SecurityException e) {
- // expected
+ PackageManager packageManager = getContext().getPackageManager();
+ if (packageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+ Uri uri = Uri.parse("tel:123456");
+ Intent intent = new Intent(Intent.ACTION_CALL, uri);
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ try {
+ mContext.startActivity(intent);
+ fail("startActivity(Intent.ACTION_CALL) did not throw SecurityException as expected");
+ } catch (SecurityException e) {
+ // expected
+ }
}
}
@@ -51,17 +55,20 @@
*/
@SmallTest
public void testCallVoicemail() {
- try {
- //Intent intent = new Intent(Intent.ACTION_CALL_PRIVILEGED,
- Intent intent = new Intent("android.intent.action.CALL_PRIVILEGED",
- Uri.fromParts("voicemail", "", null));
- intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- mContext.startActivity(intent);
- fail("startActivity(Intent.ACTION_CALL_PRIVILEGED) did not throw SecurityException as expected");
- } catch (SecurityException e) {
- // expected
+ PackageManager packageManager = getContext().getPackageManager();
+ if (packageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+ try {
+ //Intent intent = new Intent(Intent.ACTION_CALL_PRIVILEGED,
+ Intent intent = new Intent("android.intent.action.CALL_PRIVILEGED",
+ Uri.fromParts("voicemail", "", null));
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ mContext.startActivity(intent);
+ fail("startActivity(Intent.ACTION_CALL_PRIVILEGED) did not throw SecurityException as expected");
+ } catch (SecurityException e) {
+ // expected
+ }
}
- }
+ }
/**
* Verify that Intent.ACTION_CALL_PRIVILEGED requires permissions.
@@ -70,14 +77,19 @@
*/
@SmallTest
public void testCall911() {
- //Intent intent = new Intent(Intent.ACTION_CALL_PRIVILEGED, Uri.parse("tel:911"));
- Intent intent = new Intent("android.intent.action.CALL_PRIVILEGED", Uri.parse("tel:911"));
- intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- try {
- mContext.startActivity(intent);
- fail("startActivity(Intent.ACTION_CALL_PRIVILEGED) did not throw SecurityException as expected");
- } catch (SecurityException e) {
- // expected
+ PackageManager packageManager = getContext().getPackageManager();
+ if (packageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+ //Intent intent = new Intent(Intent.ACTION_CALL_PRIVILEGED, Uri.parse("tel:911"));
+ Intent intent = new Intent("android.intent.action.CALL_PRIVILEGED",
+ Uri.parse("tel:911"));
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ try {
+ mContext.startActivity(intent);
+ fail("startActivity(Intent.ACTION_CALL_PRIVILEGED) did not throw " +
+ "SecurityException as expected");
+ } catch (SecurityException e) {
+ // expected
+ }
}
}
diff --git a/tests/tests/permission2/src/android/permission2/cts/NoReceiveSmsPermissionTest.java b/tests/tests/permission2/src/android/permission2/cts/NoReceiveSmsPermissionTest.java
index 7b14db7..f34e380 100755
--- a/tests/tests/permission2/src/android/permission2/cts/NoReceiveSmsPermissionTest.java
+++ b/tests/tests/permission2/src/android/permission2/cts/NoReceiveSmsPermissionTest.java
@@ -22,6 +22,7 @@
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
+import android.content.pm.PackageManager;
import android.telephony.SmsManager;
import android.telephony.TelephonyManager;
import android.test.AndroidTestCase;
@@ -51,6 +52,11 @@
* Note: this test requires that the device under test reports a valid phone number
*/
public void testReceiveTextMessage() {
+ PackageManager packageManager = mContext.getPackageManager();
+ if (!packageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+ return;
+ }
+
// register our test receiver to receive SMSs. This won't throw a SecurityException,
// so test needs to wait to determine if it actual receives an SMS
// admittedly, this is a weak verification
diff --git a/tests/tests/telephony/src/android/telephony/cts/SmsManagerTest.java b/tests/tests/telephony/src/android/telephony/cts/SmsManagerTest.java
index 3f75f94..c201fb7 100644
--- a/tests/tests/telephony/src/android/telephony/cts/SmsManagerTest.java
+++ b/tests/tests/telephony/src/android/telephony/cts/SmsManagerTest.java
@@ -16,20 +16,24 @@
package android.telephony.cts;
-import java.util.ArrayList;
+import dalvik.annotation.TestLevel;
+import dalvik.annotation.TestTargetClass;
+import dalvik.annotation.TestTargetNew;
+import dalvik.annotation.TestTargets;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
-import android.telephony.TelephonyManager;
+import android.content.pm.PackageManager;
import android.telephony.SmsManager;
+import android.telephony.TelephonyManager;
import android.test.AndroidTestCase;
-import dalvik.annotation.TestLevel;
-import dalvik.annotation.TestTargetClass;
-import dalvik.annotation.TestTargetNew;
-import dalvik.annotation.TestTargets;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
/**
* Tests for {@link android.telephony.SmsManager}.
@@ -50,6 +54,18 @@
private static final String SMS_SEND_ACTION = "CTS_SMS_SEND_ACTION";
private static final String SMS_DELIVERY_ACTION = "CTS_SMS_DELIVERY_ACTION";
+ // List of network operators that doesn't support Data(binary) SMS message
+ private static final List<String> UNSUPPORT_DATA_SMS_MESSAGES =
+ Arrays.asList(
+ "44010" // NTT DOCOMO
+ );
+
+ // List of network operators that doesn't support Maltipart SMS message
+ private static final List<String> UNSUPPORT_MULTIPART_SMS_MESSAGES =
+ Arrays.asList(
+ "44010" // NTT DOCOMO
+ );
+
private TelephonyManager mTelephonyManager;
private String mDestAddr;
private String mText;
@@ -104,6 +120,12 @@
)
})
public void testSendMessages() throws InterruptedException {
+ PackageManager packageManager = mContext.getPackageManager();
+ if (!packageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+ return;
+ }
+
+ String mccmnc = mTelephonyManager.getSimOperator();
mSendIntent = new Intent(SMS_SEND_ACTION);
mDeliveryIntent = new Intent(SMS_DELIVERY_ACTION);
@@ -129,27 +151,37 @@
}
// send data sms
- byte[] data = mText.getBytes();
- short port = 19989;
+ if (!UNSUPPORT_DATA_SMS_MESSAGES.contains(mccmnc)) {
+ byte[] data = mText.getBytes();
+ short port = 19989;
- init();
- sendDataMessage(mDestAddr, port, data, mSentIntent, mDeliveredIntent);
- mSendReceiver.waitForCalls(1, TIME_OUT);
- mDeliveryReceiver.waitForCalls(1, TIME_OUT);
+ init();
+ sendDataMessage(mDestAddr, port, data, mSentIntent, mDeliveredIntent);
+ mSendReceiver.waitForCalls(1, TIME_OUT);
+ mDeliveryReceiver.waitForCalls(1, TIME_OUT);
+ } else {
+ // This GSM network doesn't support Data(binary) SMS message.
+ // Skip the test.
+ }
// send multi parts text sms
- init();
- ArrayList<String> parts = divideMessage(LONG_TEXT);
- int numParts = parts.size();
- ArrayList<PendingIntent> sentIntents = new ArrayList<PendingIntent>();
- ArrayList<PendingIntent> deliveryIntents = new ArrayList<PendingIntent>();
- for (int i = 0; i < numParts; i++) {
- sentIntents.add(PendingIntent.getBroadcast(getContext(), 0, mSendIntent, 0));
- deliveryIntents.add(PendingIntent.getBroadcast(getContext(), 0, mDeliveryIntent, 0));
+ if (!UNSUPPORT_MULTIPART_SMS_MESSAGES.contains(mccmnc)) {
+ init();
+ ArrayList<String> parts = divideMessage(LONG_TEXT);
+ int numParts = parts.size();
+ ArrayList<PendingIntent> sentIntents = new ArrayList<PendingIntent>();
+ ArrayList<PendingIntent> deliveryIntents = new ArrayList<PendingIntent>();
+ for (int i = 0; i < numParts; i++) {
+ sentIntents.add(PendingIntent.getBroadcast(getContext(), 0, mSendIntent, 0));
+ deliveryIntents.add(PendingIntent.getBroadcast(getContext(), 0, mDeliveryIntent, 0));
+ }
+ sendMultiPartTextMessage(mDestAddr, parts, sentIntents, deliveryIntents);
+ mSendReceiver.waitForCalls(numParts, TIME_OUT);
+ mDeliveryReceiver.waitForCalls(numParts, TIME_OUT);
+ } else {
+ // This GSM network doesn't support Multipart SMS message.
+ // Skip the test.
}
- sendMultiPartTextMessage(mDestAddr, parts, sentIntents, deliveryIntents);
- mSendReceiver.waitForCalls(numParts, TIME_OUT);
- mDeliveryReceiver.waitForCalls(numParts, TIME_OUT);
}
private void init() {
diff --git a/tests/tests/text/src/android/text/method/cts/MultiTapKeyListenerTest.java b/tests/tests/text/src/android/text/method/cts/MultiTapKeyListenerTest.java
old mode 100644
new mode 100755
index 175047e..d9bf6d9
--- a/tests/tests/text/src/android/text/method/cts/MultiTapKeyListenerTest.java
+++ b/tests/tests/text/src/android/text/method/cts/MultiTapKeyListenerTest.java
@@ -176,8 +176,7 @@
callOnKeyDown(keyListener, KeyEvent.KEYCODE_1, 1);
assertEquals("Hi.", mTextView.getText().toString());
- callOnKeyDown(keyListener, KeyEvent.KEYCODE_POUND, 1);
- assertEquals("Hi. ", mTextView.getText().toString());
+ addSpace();
callOnKeyDown(keyListener, KeyEvent.KEYCODE_2, 2);
assertEquals("Hi. B", mTextView.getText().toString());
@@ -201,8 +200,7 @@
callOnKeyDown(keyListener, KeyEvent.KEYCODE_4, 3);
assertEquals("Hi", mTextView.getText().toString());
- callOnKeyDown(keyListener, KeyEvent.KEYCODE_POUND, 1);
- assertEquals("Hi ", mTextView.getText().toString());
+ addSpace();
callOnKeyDown(keyListener, KeyEvent.KEYCODE_2, 2);
assertEquals("Hi B", mTextView.getText().toString());
@@ -245,6 +243,15 @@
}
}
+ private void addSpace() {
+ mActivity.runOnUiThread(new Runnable() {
+ public void run() {
+ mTextView.append(" ");
+ }
+ });
+ mInstrumentation.waitForIdleSync();
+ }
+
@TestTargetNew(
level = TestLevel.COMPLETE,
method = "getInstance",
diff --git a/tests/tests/text/src/android/text/method/cts/PasswordTransformationMethodTest.java b/tests/tests/text/src/android/text/method/cts/PasswordTransformationMethodTest.java
old mode 100644
new mode 100755
index 6058cdd..ed7be70
--- a/tests/tests/text/src/android/text/method/cts/PasswordTransformationMethodTest.java
+++ b/tests/tests/text/src/android/text/method/cts/PasswordTransformationMethodTest.java
@@ -28,6 +28,7 @@
import android.test.ActivityInstrumentationTestCase2;
import android.text.Editable;
import android.text.method.PasswordTransformationMethod;
+import android.view.KeyCharacterMap;
import android.view.View;
import android.view.animation.cts.DelayedCheck;
import android.widget.Button;
@@ -145,7 +146,16 @@
});
mMethod.reset();
- sendKeys("H E 2*L O");
+ // 12-key support
+ KeyCharacterMap keymap
+ = KeyCharacterMap.load(KeyCharacterMap.BUILT_IN_KEYBOARD);
+ if (keymap.getKeyboardType() == KeyCharacterMap.NUMERIC) {
+ // "HELLO" in case of 12-key(NUMERIC) keyboard
+ sendKeys("6*4 6*3 7*5 DPAD_RIGHT 7*5 7*6 DPAD_RIGHT");
+ }
+ else {
+ sendKeys("H E 2*L O");
+ }
assertTrue(mMethod.hasCalledBeforeTextChanged());
assertTrue(mMethod.hasCalledOnTextChanged());
assertTrue(mMethod.hasCalledAfterTextChanged());
diff --git a/tests/tests/view/src/android/view/cts/VelocityTrackerTest.java b/tests/tests/view/src/android/view/cts/VelocityTrackerTest.java
index 3ba3a9b..35254b6 100644
--- a/tests/tests/view/src/android/view/cts/VelocityTrackerTest.java
+++ b/tests/tests/view/src/android/view/cts/VelocityTrackerTest.java
@@ -96,10 +96,10 @@
VelocityTracker vt = VelocityTracker.obtain();
assertNotNull(vt);
- MotionEvent me = MotionEvent.obtain(0L, 1, 1, .0f, .0f, 0);
+ MotionEvent me = MotionEvent.obtain(0L, 10, 1, .0f, .0f, 0);
vt.clear();
- me.addBatch(2L, 2, 2, .0f, .0f, 0);
+ me.addBatch(20L, 20, 20, .0f, .0f, 0);
vt.addMovement(me);
vt.computeCurrentVelocity(1);
XVelocity = 2.0f;
@@ -112,7 +112,7 @@
assertEquals(XVelocity, vt.getXVelocity(), ERROR_TOLERANCE);
assertEquals(YVelocity, vt.getYVelocity(), ERROR_TOLERANCE);
- for (int i = 3; i < 10; i++) {
+ for (int i = 30; i < 100; i += 10) {
me.addBatch((long)i, (float)i, (float)i, .0f, .0f, 0);
}
vt.clear();
@@ -124,7 +124,7 @@
assertEquals(YVelocity, vt.getYVelocity(), ERROR_TOLERANCE);
vt.clear();
- me.addBatch(10L, 10, 10, .0f, .0f, 0);
+ me.addBatch(100L, 100, 100, .0f, .0f, 0);
vt.addMovement(me);
vt.computeCurrentVelocity(1);
XVelocity = 1.1562872f;
diff --git a/tests/tests/view/src/android/view/cts/ViewTest.java b/tests/tests/view/src/android/view/cts/ViewTest.java
index 77624e8..74a5f8c 100644
--- a/tests/tests/view/src/android/view/cts/ViewTest.java
+++ b/tests/tests/view/src/android/view/cts/ViewTest.java
@@ -571,6 +571,7 @@
runTestOnUiThread(new Runnable() {
public void run() {
view.requestLayout();
+ view.invalidate();
}
});
getInstrumentation().waitForIdleSync();
@@ -2276,8 +2277,14 @@
assertFalse(view.hasWindowFocus());
// mAttachInfo is not null
- view = mActivity.findViewById(R.id.fit_windows);
- assertTrue(view.hasWindowFocus());
+ final View view2 = mActivity.findViewById(R.id.fit_windows);
+ // Wait until the window has been focused.
+ new DelayedCheck(TIMEOUT_DELTA) {
+ @Override
+ protected boolean check() {
+ return view2.hasWindowFocus();
+ }
+ }.run();
}
@TestTargetNew(
@@ -3946,6 +3953,7 @@
fitWindowsView.requestFocus();
}
});
+ getInstrumentation().waitForIdleSync();
assertTrue(mockView.isFocusableInTouchMode());
assertFalse(fitWindowsView.isFocusableInTouchMode());
assertTrue(mockView.isFocusable());
@@ -3963,12 +3971,14 @@
mockView.requestFocus();
}
});
+ getInstrumentation().waitForIdleSync();
assertTrue(mockView.isFocused());
runTestOnUiThread(new Runnable() {
public void run() {
fitWindowsView.requestFocus();
}
});
+ getInstrumentation().waitForIdleSync();
assertFalse(fitWindowsView.isFocused());
assertTrue(mockView.isInTouchMode());
assertTrue(fitWindowsView.isInTouchMode());
@@ -3982,6 +3992,7 @@
fitWindowsView.requestFocus();
}
});
+ getInstrumentation().waitForIdleSync();
assertFalse(mockView.isFocused());
assertTrue(fitWindowsView.isFocused());
assertFalse(mockView.isInTouchMode());
@@ -4438,6 +4449,14 @@
viewGroup.addView(editText);
editText.requestFocus();
+
+ new DelayedCheck(TIMEOUT_DELTA) {
+ @Override
+ protected boolean check() {
+ return editText.isFocused();
+ }
+ }.run();
+
imm.showSoftInput(editText, 0);
assertTrue(editText.hasCalledOnCreateInputConnection());
assertTrue(editText.hasCalledOnCheckIsTextEditor());
diff --git a/tests/tests/view/src/android/view/cts/WindowTest.java b/tests/tests/view/src/android/view/cts/WindowTest.java
old mode 100644
new mode 100755
index 527f444..c851a19
--- a/tests/tests/view/src/android/view/cts/WindowTest.java
+++ b/tests/tests/view/src/android/view/cts/WindowTest.java
@@ -39,6 +39,7 @@
import android.util.DisplayMetrics;
import android.view.accessibility.AccessibilityEvent;
import android.view.Gravity;
+import android.view.KeyCharacterMap;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.Menu;
@@ -578,10 +579,19 @@
}
});
mInstrumentation.waitForIdleSync();
- assertTrue(mWindow.isShortcutKey(KeyEvent.KEYCODE_Q, new KeyEvent(KeyEvent.ACTION_DOWN,
- KeyEvent.KEYCODE_Q)));
- assertFalse(mWindow.isShortcutKey(KeyEvent.KEYCODE_F, new KeyEvent(KeyEvent.ACTION_DOWN,
- KeyEvent.KEYCODE_F)));
+ KeyCharacterMap keymap
+ = KeyCharacterMap.load(KeyCharacterMap.BUILT_IN_KEYBOARD);
+ if (keymap.getKeyboardType() == KeyCharacterMap.NUMERIC) {
+ assertTrue(mWindow.isShortcutKey(KeyEvent.KEYCODE_1, new KeyEvent(KeyEvent.ACTION_DOWN,
+ KeyEvent.KEYCODE_1)));
+ assertFalse(mWindow.isShortcutKey(KeyEvent.KEYCODE_5, new KeyEvent(KeyEvent.ACTION_DOWN,
+ KeyEvent.KEYCODE_5)));
+ } else {
+ assertTrue(mWindow.isShortcutKey(KeyEvent.KEYCODE_Q, new KeyEvent(KeyEvent.ACTION_DOWN,
+ KeyEvent.KEYCODE_Q)));
+ assertFalse(mWindow.isShortcutKey(KeyEvent.KEYCODE_F, new KeyEvent(KeyEvent.ACTION_DOWN,
+ KeyEvent.KEYCODE_F)));
+ }
}
@TestTargets({
diff --git a/tests/tests/view/src/android/view/inputmethod/cts/BaseInputConnectionTest.java b/tests/tests/view/src/android/view/inputmethod/cts/BaseInputConnectionTest.java
old mode 100644
new mode 100755
index f5f2286..1ec2003
--- a/tests/tests/view/src/android/view/inputmethod/cts/BaseInputConnectionTest.java
+++ b/tests/tests/view/src/android/view/inputmethod/cts/BaseInputConnectionTest.java
@@ -31,6 +31,7 @@
import android.text.Spannable;
import android.text.SpannableString;
import android.text.TextUtils;
+import android.view.KeyCharacterMap;
import android.view.KeyEvent;
import android.view.View;
import android.view.Window;
@@ -325,7 +326,17 @@
args = {KeyEvent.class}
)
public void testSendKeyEvent() {
- mConnection.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_Q));
+ // 12-key support
+ KeyCharacterMap keymap
+ = KeyCharacterMap.load(KeyCharacterMap.BUILT_IN_KEYBOARD);
+ if (keymap.getKeyboardType() == KeyCharacterMap.NUMERIC) {
+ // 'Q' in case of 12-key(NUMERIC) keyboard
+ mConnection.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_7));
+ mConnection.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_7));
+ }
+ else {
+ mConnection.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_Q));
+ }
new DelayedCheck() {
@Override
protected boolean check() {
diff --git a/tests/tests/webkit/src/android/webkit/cts/CacheManagerTest.java b/tests/tests/webkit/src/android/webkit/cts/CacheManagerTest.java
index 3e9a073..5a62c9b 100644
--- a/tests/tests/webkit/src/android/webkit/cts/CacheManagerTest.java
+++ b/tests/tests/webkit/src/android/webkit/cts/CacheManagerTest.java
@@ -32,6 +32,7 @@
@TestTargetClass(android.webkit.CacheManager.class)
public class CacheManagerTest extends ActivityInstrumentationTestCase2<WebViewStubActivity> {
+ private static final long CACHEMANAGER_INIT_TIMEOUT = 5000l;
private static final long NETWORK_OPERATION_DELAY = 10000l;
private WebView mWebView;
@@ -96,6 +97,14 @@
mWebServer = new CtsTestServer(getActivity());
final String url = mWebServer.getAssetUrl(TestHtmlConstants.EMBEDDED_IMG_URL);
+ // Wait for CacheManager#init() finish.
+ new DelayedCheck(CACHEMANAGER_INIT_TIMEOUT) {
+ @Override
+ protected boolean check() {
+ return CacheManager.getCacheFileBaseDir() != null;
+ }
+ }.run();
+
mWebView.clearCache(true);
new DelayedCheck(NETWORK_OPERATION_DELAY) {
@Override
diff --git a/tests/tests/webkit/src/android/webkit/cts/WebChromeClientTest.java b/tests/tests/webkit/src/android/webkit/cts/WebChromeClientTest.java
index b95f9c2..795ed61 100644
--- a/tests/tests/webkit/src/android/webkit/cts/WebChromeClientTest.java
+++ b/tests/tests/webkit/src/android/webkit/cts/WebChromeClientTest.java
@@ -126,7 +126,7 @@
WebIconDatabase mIconDb = WebIconDatabase.getInstance();
String dbPath = getActivity().getFilesDir().toString() + "/icons";
mIconDb.open(dbPath);
- Thread.sleep(250);
+ Thread.sleep(3000);
mIconDb.removeAllIcons();
assertFalse(webChromeClient.hadOnReceivedIcon());
diff --git a/tests/tests/webkit/src/android/webkit/cts/WebViewClientTest.java b/tests/tests/webkit/src/android/webkit/cts/WebViewClientTest.java
index 49d68c6..0de14e7 100644
--- a/tests/tests/webkit/src/android/webkit/cts/WebViewClientTest.java
+++ b/tests/tests/webkit/src/android/webkit/cts/WebViewClientTest.java
@@ -31,7 +31,8 @@
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
-
+import android.webkit.WebChromeClient;
+
@TestTargetClass(android.webkit.WebViewClient.class)
public class WebViewClientTest extends ActivityInstrumentationTestCase2<WebViewStubActivity> {
private static final long TEST_TIMEOUT = 5000;
@@ -47,6 +48,7 @@
protected void setUp() throws Exception {
super.setUp();
mWebView = getActivity().getWebView();
+ mWebView.setWebChromeClient(new WebChromeClient());
}
@Override
diff --git a/tests/tests/widget/src/android/widget/cts/AdapterViewTest.java b/tests/tests/widget/src/android/widget/cts/AdapterViewTest.java
old mode 100644
new mode 100755
index 97a5753..12815b2
--- a/tests/tests/widget/src/android/widget/cts/AdapterViewTest.java
+++ b/tests/tests/widget/src/android/widget/cts/AdapterViewTest.java
@@ -310,8 +310,9 @@
setArrayAdapter(mAdapterView);
// LastVisiblePosition should be adapter's getCount - 1,by mocking method
- // TODO: the +50 is a gross hack
- mAdapterView.layout(0, 0, LAYOUT_WIDTH, LAYOUT_HEIGHT+50);
+ float density = mActivity.getResources().getDisplayMetrics().density;
+ int bottom = (int) (LAYOUT_HEIGHT * density);
+ mAdapterView.layout(0, 0, LAYOUT_WIDTH, bottom);
assertEquals(FRUIT.length - 1, mAdapterView.getLastVisiblePosition());
}
diff --git a/tests/tests/widget/src/android/widget/cts/AutoCompleteTextViewTest.java b/tests/tests/widget/src/android/widget/cts/AutoCompleteTextViewTest.java
old mode 100644
new mode 100755
index a8c9ae0..40e1c74
--- a/tests/tests/widget/src/android/widget/cts/AutoCompleteTextViewTest.java
+++ b/tests/tests/widget/src/android/widget/cts/AutoCompleteTextViewTest.java
@@ -29,6 +29,7 @@
import android.test.UiThreadTest;
import android.util.AttributeSet;
import android.util.Xml;
+import android.view.KeyCharacterMap;
import android.view.KeyEvent;
import android.view.View;
import android.view.ViewGroup;
@@ -64,6 +65,7 @@
/** The m instrumentation. */
private Instrumentation mInstrumentation;
private AutoCompleteTextView mAutoCompleteTextView;
+ private boolean mNumeric = false;
ArrayAdapter<String> mAdapter;
private final String[] WORDS = new String[] { "testOne", "testTwo", "testThree", "testFour" };
boolean isOnFilterComplete = false;
@@ -95,6 +97,11 @@
.findViewById(R.id.autocompletetv_edit);
mAdapter = new ArrayAdapter<String>(mActivity,
android.R.layout.simple_dropdown_item_1line, WORDS);
+ KeyCharacterMap keymap
+ = KeyCharacterMap.load(KeyCharacterMap.BUILT_IN_KEYBOARD);
+ if (keymap.getKeyboardType() == KeyCharacterMap.NUMERIC) {
+ mNumeric = true;
+ }
}
@TestTargets({
@@ -501,7 +508,13 @@
inflatePopup();
assertTrue(mAutoCompleteTextView.isPopupShowing());
- String testString = "tes";
+ String testString = "";
+ if (mNumeric) {
+ // "tes" in case of 12-key(NUMERIC) keyboard
+ testString = "8337777";
+ } else {
+ testString = "tes";
+ }
// Test the filter if the input string is not long enough to threshold
runTestOnUiThread(new Runnable() {
public void run() {
@@ -517,7 +530,12 @@
inflatePopup();
assertTrue(mAutoCompleteTextView.isPopupShowing());
- testString = "that";
+ if (mNumeric) {
+ // "that" in case of 12-key(NUMERIC) keyboard
+ testString = "84428";
+ } else {
+ testString = "that";
+ }
mInstrumentation.sendStringSync(testString);
assertFalse(mAutoCompleteTextView.isPopupShowing());
@@ -529,7 +547,12 @@
mAutoCompleteTextView.setText("");
}
});
- mInstrumentation.sendStringSync("test");
+ if (mNumeric) {
+ // "test" in case of 12-key(NUMERIC) keyboard
+ mInstrumentation.sendStringSync("83377778");
+ } else {
+ mInstrumentation.sendStringSync("test");
+ }
assertTrue(mAutoCompleteTextView.hasFocus());
assertTrue(mAutoCompleteTextView.hasWindowFocus());
// give some time for UI to settle
@@ -594,10 +617,18 @@
// performFiltering will be indirectly invoked by onKeyDown
assertNull(filter.getResult());
- mInstrumentation.sendStringSync(STRING_TEST);
- // give some time for UI to settle
- Thread.sleep(100);
- assertEquals(STRING_TEST, filter.getResult());
+ // 12-key support
+ if (mNumeric) {
+ // "numeric" in case of 12-key(NUMERIC) keyboard
+ mInstrumentation.sendStringSync("6688633777444222");
+ Thread.sleep(100);
+ assertEquals("numeric", filter.getResult());
+ } else {
+ mInstrumentation.sendStringSync(STRING_TEST);
+ // give some time for UI to settle
+ Thread.sleep(100);
+ assertEquals(STRING_TEST, filter.getResult());
+ }
}
@TestTargets({
diff --git a/tests/tests/widget/src/android/widget/cts/DialerFilterTest.java b/tests/tests/widget/src/android/widget/cts/DialerFilterTest.java
old mode 100644
new mode 100755
index 0b436b2..661d257
--- a/tests/tests/widget/src/android/widget/cts/DialerFilterTest.java
+++ b/tests/tests/widget/src/android/widget/cts/DialerFilterTest.java
@@ -37,6 +37,7 @@
import android.util.AttributeSet;
import android.util.Log;
import android.util.Xml;
+import android.view.KeyCharacterMap;
import android.view.KeyEvent;
import android.widget.DialerFilter;
import android.widget.EditText;
@@ -129,7 +130,16 @@
});
mInstrumentation.waitForIdleSync();
- mInstrumentation.sendStringSync("adg");
+ // 12-key support
+ KeyCharacterMap keymap
+ = KeyCharacterMap.load(KeyCharacterMap.BUILT_IN_KEYBOARD);
+ if (keymap.getKeyboardType() == KeyCharacterMap.NUMERIC) {
+ // "adg" in case of 12-key(NUMERIC) keyboard
+ mInstrumentation.sendStringSync("234");
+ }
+ else {
+ mInstrumentation.sendStringSync("adg");
+ }
assertEquals("ADG", mDialerFilter.getLetters().toString());
assertEquals("", mDialerFilter.getDigits().toString());
@@ -141,7 +151,14 @@
});
mInstrumentation.waitForIdleSync();
- mInstrumentation.sendStringSync("adg");
+ // 12-key support
+ if (keymap.getKeyboardType() == KeyCharacterMap.NUMERIC) {
+ // "adg" in case of 12-key(NUMERIC) keyboard
+ mInstrumentation.sendStringSync("234");
+ }
+ else {
+ mInstrumentation.sendStringSync("adg");
+ }
assertEquals("ADG", mDialerFilter.getLetters().toString());
// A, D, K may map to numbers on some keyboards. Don't test.
diff --git a/tools/dx-tests/Android.mk b/tools/dx-tests/Android.mk
index 9dee47d..9bdef58 100644
--- a/tools/dx-tests/Android.mk
+++ b/tools/dx-tests/Android.mk
@@ -38,7 +38,7 @@
@echo "Copy: $(PRIVATE_MODULE) ($@)"
$(copy-file-to-new-target)
$(hide) chmod 755 $@
- @$(PRIVATE_CURRENT_MODULE_SCRIPT) "$(PRIVATE_BASE)" "$(HOST_JAVAC)" "$(PRIVATE_INTERMEDIATES)" "$(HOST_OUT_JAVA_LIBRARIES)/dx.jar:$(HOST_OUT_JAVA_LIBRARIES)/cfassembler.jar"
+ @$(PRIVATE_CURRENT_MODULE_SCRIPT) "$(PRIVATE_BASE)" "$(HOST_JAVAC)" "$(PRIVATE_INTERMEDIATES)" "$(HOST_OUT_JAVA_LIBRARIES)/dx.jar:$(HOST_OUT_JAVA_LIBRARIES)/cfassembler.jar" "$(HOST_OUT)"
# cfassembler host module
#============================================================
diff --git a/tools/dx-tests/etc/compileall b/tools/dx-tests/etc/compileall
index 42b198e..cb95b4e 100755
--- a/tools/dx-tests/etc/compileall
+++ b/tools/dx-tests/etc/compileall
@@ -54,6 +54,7 @@
javac=$2
tmpdir=$3 # ANDROID_BUILD_TOP/$3
dxjarpath=$4
+outdir=$5
project_src=$project_home/src
project_lib=$project_home/lib
project_data=$project_home/data
@@ -103,7 +104,7 @@
javac -d $javac_out -classpath $project_lib/junit.jar:$javac_out -sourcepath $mainfilesdir \@$mainfileslist
# now copy relevant data from intermediates dir to its final destination
-fdest=$ANDROID_BUILD_TOP/out/target/common/cts/dxconverter
+fdest=$outdir/cts/dxconverter
mkdir -p $fdest/data
acp -r $javac_out $fdest/
acp $mainfilesdir/data/scriptdata $fdest/data/scriptdata
diff --git a/tools/dx-tests/etc/starttests b/tools/dx-tests/etc/starttests
index e43a00a..afa55a8 100755
--- a/tools/dx-tests/etc/starttests
+++ b/tools/dx-tests/etc/starttests
@@ -74,7 +74,7 @@
debug_opts="-Xcheck:jni"
exe=$base/system/bin/dalvikvm
bpath=$framework/core.jar
-BASEDIR=$ANDROID_BUILD_TOP/out/target/common/cts/dxconverter
+BASEDIR=$progdir/../cts/dxconverter
echo "--------------------------------------------------"
echo "DX Converter Test Suite"
diff --git a/tools/host/src/com/android/cts/Version.java b/tools/host/src/com/android/cts/Version.java
index c1b5d39..4fd2529 100644
--- a/tools/host/src/com/android/cts/Version.java
+++ b/tools/host/src/com/android/cts/Version.java
@@ -18,7 +18,7 @@
public class Version {
// The CTS version string
- private static final String version = "2.2_r4";
+ private static final String version = "2.2_r5";
private Version() {
// no instances allowed
diff --git a/tools/utils/CollectAllTests.java b/tools/utils/CollectAllTests.java
index 7628ba2..539cf8d 100644
--- a/tools/utils/CollectAllTests.java
+++ b/tools/utils/CollectAllTests.java
@@ -302,6 +302,11 @@
return getAnnotation(testClass, testName, SUPPRESSED_TEST) != null;
}
+ private boolean hasSideEffects(final Class<? extends TestCase> testClass,
+ final String testName) {
+ return getAnnotation(testClass, testName, SIDE_EFFECT) != null;
+ }
+
private String getAnnotation(final Class<? extends TestCase> testClass,
final String testName, final String annotationName) {
try {
@@ -349,6 +354,9 @@
} else if (isSuppressed(test.getClass(), testName)) {
System.out.println("ignoring suppressed test: " + test);
return;
+ } else if (hasSideEffects(test.getClass(), testName)) {
+ System.out.println("ignoring test with side effects: " + test);
+ return;
}
if (!testName.startsWith("test")) {
diff --git a/tools/utils/DescriptionGenerator.java b/tools/utils/DescriptionGenerator.java
index 99be6dc..2d58543 100644
--- a/tools/utils/DescriptionGenerator.java
+++ b/tools/utils/DescriptionGenerator.java
@@ -65,6 +65,7 @@
static final String HOST_CONTROLLER = "dalvik.annotation.HostController";
static final String KNOWN_FAILURE = "dalvik.annotation.KnownFailure";
static final String BROKEN_TEST = "dalvik.annotation.BrokenTest";
+ static final String SIDE_EFFECT = "dalvik.annotation.SideEffect";
static final String SUPPRESSED_TEST = "android.test.suitebuilder.annotation.Suppress";
static final String JUNIT_TEST_CASE_CLASS_NAME = "junit.framework.testcase";
diff --git a/tools/utils/startcts b/tools/utils/startcts
index af9d503..dc1e930 100755
--- a/tools/utils/startcts
+++ b/tools/utils/startcts
@@ -46,26 +46,35 @@
fi;
}
+checkPath() {
+ if ! type -P $1 &> /dev/null; then
+ echo "Unable to find $1 in path."
+ exit
+ fi;
+}
+
checkDir ${CTS_ROOT} "Error: Cannot locate CTS in \"${CTS_DIR}\". Please check your configuration in $0"
-checkDir ${SDK_ROOT} "Error: Cannot locate SDK installation in \"${SDK_ROOT}\". Please check your configuration in $0"
+checkDir ${SDK_ROOT} "Error: Cannot locate SDK installation in \"${SDK_ROOT}\". Please check your configuration in $0"
DDM_LIB=${SDK_ROOT}/tools/lib/ddmlib.jar
CTS_LIB=${CTS_ROOT}/tools/cts.jar
JUNIT_LIB=${CTS_ROOT}/tools/junit.jar
HOSTTEST_LIB=${CTS_ROOT}/tools/hosttestlib.jar
CTS_TEST_ANNOTATIONS_HOST_LIB=${CTS_ROOT}/tools/CtsTestAnnotationsHostLib.jar
-ADB_PATH=${SDK_ROOT}/tools
-ADB_EXE=${ADB_PATH}/adb
checkFile ${DDM_LIB}
checkFile ${CTS_LIB}
checkFile ${JUNIT_LIB}
checkFile ${HOSTTEST_LIB}
-checkFile ${ADB_EXE}
JARS=${CTS_LIB}:${DDM_LIB}:${JUNIT_LIB}:${HOSTTEST_LIB}:${CTS_TEST_ANNOTATIONS_HOST_LIB}
-PATH=${ADB_PATH}:${PATH}
+# Check both tools and platform-tools for ADB.
+if [ -n "${SDK_ROOT}" ]; then
+ PATH=${SDK_ROOT}/platform-tools:${SDK_ROOT}/tools:${PATH}
+fi
+
+checkPath adb
# options for the JVM
JAVA_OPTS="-Xmx512M"