Merge "Don't test reconfiguration for Vorbis" into jb-mr2-dev
diff --git a/apps/CtsVerifier/Android.mk b/apps/CtsVerifier/Android.mk
index c14728e..3b1674e 100644
--- a/apps/CtsVerifier/Android.mk
+++ b/apps/CtsVerifier/Android.mk
@@ -25,7 +25,8 @@
LOCAL_PACKAGE_NAME := CtsVerifier
-LOCAL_JNI_SHARED_LIBRARIES := libctsverifier_jni libcameraanalyzer
+LOCAL_JNI_SHARED_LIBRARIES := libctsverifier_jni \
+ #libcameraanalyzer # Needed for the disabled CameraAnalyzer tests
LOCAL_PROGUARD_FLAG_FILES := proguard.flags
diff --git a/apps/CtsVerifier/AndroidManifest.xml b/apps/CtsVerifier/AndroidManifest.xml
index e75fcbb..88c5069 100644
--- a/apps/CtsVerifier/AndroidManifest.xml
+++ b/apps/CtsVerifier/AndroidManifest.xml
@@ -302,7 +302,7 @@
<meta-data android:name="test_required_features" android:value="android.hardware.camera.any"/>
</activity>
-<!-- Experimental
+<!-- Experimental. If re-enabling, libcameraanalyzer must be included in the build
<activity android:name=".camera.analyzer.CameraAnalyzerActivity"
android:label="@string/camera_analyzer"
android:screenOrientation="landscape">
diff --git a/tests/AndroidManifest.xml b/tests/AndroidManifest.xml
index f9df338..636a945 100644
--- a/tests/AndroidManifest.xml
+++ b/tests/AndroidManifest.xml
@@ -569,7 +569,8 @@
<activity android:name="android.hardware.cts.CameraStubActivity"
android:label="CameraStubActivity"
- android:screenOrientation="landscape">
+ android:screenOrientation="landscape"
+ android:configChanges="keyboardHidden|orientation|screenSize">
</activity>
<activity android:name="android.view.inputmethod.cts.InputMethodStubActivity"
diff --git a/tests/src/android/opengl/cts/CompressedTextureSurfaceView.java b/tests/src/android/opengl/cts/CompressedTextureSurfaceView.java
index 15ce524..d0c8ed4 100644
--- a/tests/src/android/opengl/cts/CompressedTextureSurfaceView.java
+++ b/tests/src/android/opengl/cts/CompressedTextureSurfaceView.java
@@ -180,7 +180,7 @@
checkGlError("glEnableVertexAttribArray maPositionHandle");
mTriangleVertices.position(TRIANGLE_VERTICES_DATA_UV_OFFSET);
- GLES20.glVertexAttribPointer(maTextureHandle, 3, GLES20.GL_FLOAT, false,
+ GLES20.glVertexAttribPointer(maTextureHandle, 2, GLES20.GL_FLOAT, false,
TRIANGLE_VERTICES_DATA_STRIDE_BYTES, mTriangleVertices);
checkGlError("glVertexAttribPointer maTextureHandle");
GLES20.glEnableVertexAttribArray(maTextureHandle);
diff --git a/tests/tests/app/src/android/app/cts/AlertDialogTest.java b/tests/tests/app/src/android/app/cts/AlertDialogTest.java
index d2edbeb..aefcf01 100644
--- a/tests/tests/app/src/android/app/cts/AlertDialogTest.java
+++ b/tests/tests/app/src/android/app/cts/AlertDialogTest.java
@@ -23,6 +23,7 @@
import android.content.DialogInterface;
import android.content.DialogInterface.OnCancelListener;
import android.content.DialogInterface.OnClickListener;
+import android.cts.util.PollingCheck;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.Message;
@@ -55,6 +56,12 @@
protected void startDialogActivity(int dialogNumber) {
mActivity = DialogStubActivity.startDialogActivity(this, dialogNumber);
+ new PollingCheck() {
+ @Override
+ protected boolean check() {
+ return mActivity.getDialog().isShowing();
+ }
+ }.run();
}
public void testAlertDialog() throws Throwable {
diff --git a/tests/tests/app/src/android/app/cts/AlertDialog_BuilderTest.java b/tests/tests/app/src/android/app/cts/AlertDialog_BuilderTest.java
index 4c40a62..74f85bb 100644
--- a/tests/tests/app/src/android/app/cts/AlertDialog_BuilderTest.java
+++ b/tests/tests/app/src/android/app/cts/AlertDialog_BuilderTest.java
@@ -18,6 +18,7 @@
import java.util.ArrayList;
+import android.app.Activity;
import android.app.AlertDialog;
import android.app.Instrumentation;
import android.app.AlertDialog.Builder;
@@ -29,6 +30,7 @@
import android.content.DialogInterface.OnClickListener;
import android.content.DialogInterface.OnKeyListener;
import android.content.DialogInterface.OnMultiChoiceClickListener;
+import android.cts.util.PollingCheck;
import android.database.Cursor;
import android.database.CursorWrapper;
import android.graphics.drawable.Drawable;
@@ -108,6 +110,13 @@
mBuilder = null;
mInstrumentation = getInstrumentation();
mContext = getActivity();
+ final Activity activity = getActivity();
+ new PollingCheck() {
+ @Override
+ protected boolean check() {
+ return activity.hasWindowFocus();
+ }
+ }.run();
mButton = null;
mView = null;
mListView = null;
diff --git a/tests/tests/hardware/src/android/hardware/cts/CameraGLTest.java b/tests/tests/hardware/src/android/hardware/cts/CameraGLTest.java
index dd84675..9d7dacb 100644
--- a/tests/tests/hardware/src/android/hardware/cts/CameraGLTest.java
+++ b/tests/tests/hardware/src/android/hardware/cts/CameraGLTest.java
@@ -685,7 +685,7 @@
checkGlError("glEnableVertexAttribArray maPositionHandle");
mTriangleVertices.position(TRIANGLE_VERTICES_DATA_UV_OFFSET);
- GLES20.glVertexAttribPointer(maTextureHandle, 3, GLES20.GL_FLOAT, false,
+ GLES20.glVertexAttribPointer(maTextureHandle, 2, GLES20.GL_FLOAT, false,
TRIANGLE_VERTICES_DATA_STRIDE_BYTES, mTriangleVertices);
checkGlError("glVertexAttribPointer maTextureHandle");
GLES20.glEnableVertexAttribArray(maTextureHandle);
diff --git a/tests/tests/media/src/android/media/cts/DecodeEditEncodeTest.java b/tests/tests/media/src/android/media/cts/DecodeEditEncodeTest.java
index c0c21d1..be2dc54 100644
--- a/tests/tests/media/src/android/media/cts/DecodeEditEncodeTest.java
+++ b/tests/tests/media/src/android/media/cts/DecodeEditEncodeTest.java
@@ -802,7 +802,7 @@
* mLargestColorDelta.
*/
boolean isColorClose(int actual, int expected) {
- final int MAX_DELTA = 7;
+ final int MAX_DELTA = 8;
int delta = Math.abs(actual - expected);
if (delta > mLargestColorDelta) {
mLargestColorDelta = delta;
diff --git a/tests/tests/media/src/android/media/cts/EncodeDecodeTest.java b/tests/tests/media/src/android/media/cts/EncodeDecodeTest.java
index ddcd4b9..d788102 100644
--- a/tests/tests/media/src/android/media/cts/EncodeDecodeTest.java
+++ b/tests/tests/media/src/android/media/cts/EncodeDecodeTest.java
@@ -1117,7 +1117,7 @@
* mLargestColorDelta.
*/
boolean isColorClose(int actual, int expected) {
- final int MAX_DELTA = 7;
+ final int MAX_DELTA = 8;
int delta = Math.abs(actual - expected);
if (delta > mLargestColorDelta) {
mLargestColorDelta = delta;
diff --git a/tests/tests/media/src/android/media/cts/InputSurface.java b/tests/tests/media/src/android/media/cts/InputSurface.java
index a916b8f..8d5c133 100644
--- a/tests/tests/media/src/android/media/cts/InputSurface.java
+++ b/tests/tests/media/src/android/media/cts/InputSurface.java
@@ -118,7 +118,7 @@
* Surface that was passed to our constructor.
*/
public void release() {
- if (EGL14.eglGetCurrentContext() == mEGLContext) {
+ if (EGL14.eglGetCurrentContext().equals(mEGLContext)) {
// Clear the current context and surface to ensure they are discarded immediately.
EGL14.eglMakeCurrent(mEGLDisplay, EGL14.EGL_NO_SURFACE, EGL14.EGL_NO_SURFACE,
EGL14.EGL_NO_CONTEXT);
diff --git a/tests/tests/media/src/android/media/cts/OutputSurface.java b/tests/tests/media/src/android/media/cts/OutputSurface.java
index 8494796..5274627 100644
--- a/tests/tests/media/src/android/media/cts/OutputSurface.java
+++ b/tests/tests/media/src/android/media/cts/OutputSurface.java
@@ -183,7 +183,7 @@
*/
public void release() {
if (mEGL != null) {
- if (mEGL.eglGetCurrentContext() == mEGLContext) {
+ if (mEGL.eglGetCurrentContext().equals(mEGLContext)) {
// Clear the current context and surface to ensure they are discarded immediately.
mEGL.eglMakeCurrent(mEGLDisplay, EGL10.EGL_NO_SURFACE, EGL10.EGL_NO_SURFACE,
EGL10.EGL_NO_CONTEXT);
diff --git a/tests/tests/media/src/android/media/cts/TextureRender.java b/tests/tests/media/src/android/media/cts/TextureRender.java
index 1ed568a..eb4236c 100644
--- a/tests/tests/media/src/android/media/cts/TextureRender.java
+++ b/tests/tests/media/src/android/media/cts/TextureRender.java
@@ -115,7 +115,7 @@
checkGlError("glEnableVertexAttribArray maPositionHandle");
mTriangleVertices.position(TRIANGLE_VERTICES_DATA_UV_OFFSET);
- GLES20.glVertexAttribPointer(maTextureHandle, 3, GLES20.GL_FLOAT, false,
+ GLES20.glVertexAttribPointer(maTextureHandle, 2, GLES20.GL_FLOAT, false,
TRIANGLE_VERTICES_DATA_STRIDE_BYTES, mTriangleVertices);
checkGlError("glVertexAttribPointer maTextureHandle");
GLES20.glEnableVertexAttribArray(maTextureHandle);
diff --git a/tests/tests/mediastress/src/android/mediastress/cts/SurfaceTextureRenderer.java b/tests/tests/mediastress/src/android/mediastress/cts/SurfaceTextureRenderer.java
index 4c2af8b..80beab9 100644
--- a/tests/tests/mediastress/src/android/mediastress/cts/SurfaceTextureRenderer.java
+++ b/tests/tests/mediastress/src/android/mediastress/cts/SurfaceTextureRenderer.java
@@ -127,7 +127,7 @@
checkGlError("glEnableVertexAttribArray maPositionHandle");
mVertices.position(VERTICES_DATA_UV_OFFSET);
- GLES20.glVertexAttribPointer(maTextureHandle, 3, GLES20.GL_FLOAT, false,
+ GLES20.glVertexAttribPointer(maTextureHandle, 2, GLES20.GL_FLOAT, false,
VERTICES_DATA_STRIDE_BYTES, mVertices);
checkGlError("glVertexAttribPointer maTextureHandle");
GLES20.glEnableVertexAttribArray(maTextureHandle);
diff --git a/tests/tests/openglperf/src/android/openglperf/cts/GlVboPerfTest.java b/tests/tests/openglperf/src/android/openglperf/cts/GlVboPerfTest.java
index 2e9e10b..ecf198e 100644
--- a/tests/tests/openglperf/src/android/openglperf/cts/GlVboPerfTest.java
+++ b/tests/tests/openglperf/src/android/openglperf/cts/GlVboPerfTest.java
@@ -26,8 +26,8 @@
private static final String TAG = "GlVboPerfTest";
private static final int NUM_FRAMES_TO_RENDER = 100;
private static final long RENDERING_TIMEOUT = 5 * 60;
- // 10% of fps_no_vbo is allowed to compensate variations in measurement
- private static final float FPS_COMPARISON_MARGIN = 0.1f;
+ // 30% of fps_no_vbo is allowed to compensate variations in measurement
+ private static final float FPS_COMPARISON_MARGIN = 0.3f;
// the worst case should be above 70% of the best case
private static final float FPS_MIN_MAX_COMPARISON_PERCENTILE = 0.7f;
diff --git a/tests/tests/os/src/android/os/cts/LooperTest.java b/tests/tests/os/src/android/os/cts/LooperTest.java
index 326caa3..6631599 100644
--- a/tests/tests/os/src/android/os/cts/LooperTest.java
+++ b/tests/tests/os/src/android/os/cts/LooperTest.java
@@ -46,16 +46,23 @@
assertNotNull(looper);
}
- public void testLoop() {
- MockRunnable run = new MockRunnable();
+ public void testLoop() throws Throwable {
+ Thread t = new Thread(new Runnable() {
+ public void run() {
+ Looper.prepare();
- Handler handler = new Handler();
- Message msg = Message.obtain(handler, run);
- handler.sendMessageAtTime(msg, 0);
- assertFalse(run.runCalled);
- Looper.loop();
+ MockRunnable run = new MockRunnable();
- assertTrue(run.runCalled);
+ Handler handler = new Handler();
+ Message msg = Message.obtain(handler, run);
+ handler.sendMessageAtTime(msg, 0);
+ assertFalse(run.runCalled);
+ Looper.loop();
+ assertTrue(run.runCalled);
+ }
+ });
+ t.start();
+ t.join();
}
public void testMyLooper() throws Throwable {
diff --git a/tests/tests/permission/src/android/permission/cts/FileSystemPermissionTest.java b/tests/tests/permission/src/android/permission/cts/FileSystemPermissionTest.java
index 3a3e672..4d9882a 100644
--- a/tests/tests/permission/src/android/permission/cts/FileSystemPermissionTest.java
+++ b/tests/tests/permission/src/android/permission/cts/FileSystemPermissionTest.java
@@ -31,6 +31,7 @@
import java.io.FileReader;
import java.io.IOException;
import java.util.Arrays;
+import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -625,39 +626,47 @@
}
public void testSystemMountedRO() throws IOException {
- assertSystemMountedROIn("/proc/self/mounts");
- }
-
- public void testSystemMountedRO_init() throws IOException {
- assertSystemMountedROIn("/proc/1/mounts");
+ ParsedMounts pm = new ParsedMounts("/proc/self/mounts");
+ String mountPoint = pm.findMountPointContaining(new File("/system"));
+ assertTrue(mountPoint + " is not mounted read-only", pm.isMountReadOnly(mountPoint));
}
/**
- * Scan through {@code filename}, looking for the /system line. If the line
- * has "ro" in the 4th column, then we know the filesystem is mounted read-only.
+ * Test that the /system directory, as mounted by init, is mounted read-only.
+ * Different processes can have different mount namespaces, so init
+ * may be in a different mount namespace than Zygote spawned processes.
+ *
+ * This test assumes that init's filesystem layout is roughly identical
+ * to Zygote's filesystem layout. If this assumption ever changes, we should
+ * delete this test.
*/
- private static void assertSystemMountedROIn(String filename) throws IOException {
- BufferedReader br = new BufferedReader(new FileReader(filename));
- String line;
- boolean foundSystem = false;
- while((line = br.readLine()) != null) {
- String[] fields = line.split(" ");
- String mountPoint = fields[1];
- if ("/system".equals(mountPoint)) {
- foundSystem = true;
- String all_options = fields[3];
- boolean foundRo = false;
- String[] options = all_options.split(",");
- for (String option : options) {
- if ("ro".equals(option)) {
- foundRo = true;
- break;
- }
- }
- assertTrue(mountPoint + " is not mounted read-only", foundRo);
- }
- }
- assertTrue("Cannot find /system partition", foundSystem);
+ public void testSystemMountedRO_init() throws IOException {
+ ParsedMounts pm = new ParsedMounts("/proc/1/mounts");
+ String mountPoint = pm.findMountPointContaining(new File("/system"));
+ assertTrue(mountPoint + " is not mounted read-only", pm.isMountReadOnly(mountPoint));
+ }
+
+ public void testRootMountedRO() throws IOException {
+ ParsedMounts pm = new ParsedMounts("/proc/self/mounts");
+ String mountPoint = pm.findMountPointContaining(new File("/"));
+ assertTrue("The root directory \"" + mountPoint + "\" is not mounted read-only",
+ pm.isMountReadOnly(mountPoint));
+ }
+
+ /**
+ * Test that the root directory, as mounted by init, is mounted read-only.
+ * Different processes can have different mount namespaces, so init
+ * may be in a different mount namespace than Zygote spawned processes.
+ *
+ * This test assumes that init's filesystem layout is roughly identical
+ * to Zygote's filesystem layout. If this assumption ever changes, we should
+ * delete this test.
+ */
+ public void testRootMountedRO_init() throws IOException {
+ ParsedMounts pm = new ParsedMounts("/proc/1/mounts");
+ String mountPoint = pm.findMountPointContaining(new File("/"));
+ assertTrue("The root directory \"" + mountPoint + "\" is not mounted read-only",
+ pm.isMountReadOnly(mountPoint));
}
public void testAllBlockDevicesAreSecure() throws Exception {
@@ -674,12 +683,14 @@
new File("/dev/binder"),
new File("/dev/full"),
new File("/dev/genlock"), // b/9035217
+ new File("/dev/hw_random"), // b/9191279
new File("/dev/ion"),
new File("/dev/kgsl-3d0"), // b/9035217
new File("/dev/log/events"), // b/9035217
new File("/dev/log/main"), // b/9035217
new File("/dev/log/radio"), // b/9035217
new File("/dev/log/system"), // b/9035217
+ new File("/dev/mali0"), // b/9106968
new File("/dev/msm_rotator"), // b/9035217
new File("/dev/null"),
new File("/dev/nvhost-ctrl"), // b/9088251
@@ -687,7 +698,9 @@
new File("/dev/nvhost-gr3d"), // b/9088251
new File("/dev/nvmap"), // b/9088251
new File("/dev/ptmx"), // b/9088251
+ new File("/dev/pvrsrvkm"), // b/9108170
new File("/dev/random"),
+ new File("/dev/tiler"), // b/9108170
new File("/dev/tty"),
new File("/dev/urandom"),
new File("/dev/xt_qtaguid"), // b/9088251
@@ -800,4 +813,49 @@
private static boolean isSymbolicLink(File f) throws IOException {
return !f.getAbsolutePath().equals(f.getCanonicalPath());
}
+
+ private static class ParsedMounts {
+ private HashMap<String, Boolean> mFileReadOnlyMap = new HashMap<String, Boolean>();
+
+ private ParsedMounts(String filename) throws IOException {
+ BufferedReader br = new BufferedReader(new FileReader(filename));
+ try {
+ String line;
+ while ((line = br.readLine()) != null) {
+ String[] fields = line.split(" ");
+ String mountPoint = fields[1];
+ String all_options = fields[3];
+ String[] options = all_options.split(",");
+ boolean foundRo = false;
+ for (String option : options) {
+ if ("ro".equals(option)) {
+ foundRo = true;
+ break;
+ }
+ }
+ mFileReadOnlyMap.put(mountPoint, foundRo);
+ }
+ } finally {
+ br.close();
+ }
+ }
+
+ private boolean isMountReadOnly(String s) {
+ return mFileReadOnlyMap.get(s).booleanValue();
+ }
+
+ private String findMountPointContaining(File f) throws IOException {
+ while (f != null) {
+ f = f.getCanonicalFile();
+ String path = f.getPath();
+ if (mFileReadOnlyMap.containsKey(path)) {
+ return path;
+ }
+ f = f.getParentFile();
+ }
+ // This should NEVER be reached, as we'll eventually hit the
+ // root directory.
+ throw new AssertionError("Unable to find mount point");
+ }
+ }
}
diff --git a/tests/tests/webkit/src/android/webkit/cts/WebViewClientTest.java b/tests/tests/webkit/src/android/webkit/cts/WebViewClientTest.java
index ccc6444..3353d50 100644
--- a/tests/tests/webkit/src/android/webkit/cts/WebViewClientTest.java
+++ b/tests/tests/webkit/src/android/webkit/cts/WebViewClientTest.java
@@ -42,7 +42,7 @@
protected void setUp() throws Exception {
super.setUp();
final WebViewStubActivity activity = getActivity();
- new PollingCheck() {
+ new PollingCheck(TEST_TIMEOUT) {
@Override
protected boolean check() {
return activity.hasWindowFocus();
diff --git a/tests/tests/widget/src/android/widget/cts/GridViewTest.java b/tests/tests/widget/src/android/widget/cts/GridViewTest.java
index 2467861..1dd4764 100755
--- a/tests/tests/widget/src/android/widget/cts/GridViewTest.java
+++ b/tests/tests/widget/src/android/widget/cts/GridViewTest.java
@@ -24,6 +24,7 @@
import android.app.Activity;
import android.app.Instrumentation;
import android.content.Context;
+import android.cts.util.PollingCheck;
import android.database.DataSetObservable;
import android.database.DataSetObserver;
import android.graphics.Rect;
@@ -68,6 +69,12 @@
super.setUp();
mGridView = null;
mActivity = getActivity();
+ new PollingCheck() {
+ @Override
+ protected boolean check() {
+ return mActivity.hasWindowFocus();
+ }
+ }.run();
mInstrumentation = getInstrumentation();
}
diff --git a/tools/utils/buildCts.py b/tools/utils/buildCts.py
index ad14471..e77f50c 100755
--- a/tools/utils/buildCts.py
+++ b/tools/utils/buildCts.py
@@ -108,6 +108,12 @@
plan = tools.TestPlan(packages)
plan.Exclude('android\.performance.*')
+ plan.Exclude('android\.media\.cts\.StreamingMediaPlayerTest.*')
+ # Test plan to not include media streaming tests
+ self.__WritePlan(plan, 'CTS-No-Media-Stream')
+
+ plan = tools.TestPlan(packages)
+ plan.Exclude('android\.performance.*')
self.__WritePlan(plan, 'SDK')
plan.Exclude(r'android\.tests\.sigtest')