am 28e88a79: am 1792efc9: am 0f39674f: am 86632c90: am 29d74ad5: Merge "Add missing features of JELLY_BEAN to feature list" into jb-dev
# By Leo Liao
# Via Android Git Automerger (4) and others
* commit '28e88a79851ecabf3388cb3f50c67ecd4fdeaaa9':
Add missing features of JELLY_BEAN to feature list
diff --git a/CtsBuild.mk b/CtsBuild.mk
index 6e57086..d396006 100644
--- a/CtsBuild.mk
+++ b/CtsBuild.mk
@@ -36,10 +36,6 @@
$(foreach lib,$(1),$(HOST_OUT_JAVA_LIBRARIES)/$(lib).jar)
endef
-define cts-get-ui-lib-paths
- $(foreach lib,$(1),$(CTS_TESTCASES_OUT)/$(lib).jar)
-endef
-
define cts-get-native-paths
$(foreach exe,$(1),$(call intermediates-dir-for,EXECUTABLES,$(exe))/$(exe))
endef
diff --git a/CtsTestCaseList.mk b/CtsTestCaseList.mk
index 2b61134..5511ebd 100644
--- a/CtsTestCaseList.mk
+++ b/CtsTestCaseList.mk
@@ -38,7 +38,6 @@
CtsTestStubs \
SignatureTest \
TestDeviceSetup \
- CtsUiAutomatorApp \
$(cts_security_apps_list)
cts_external_packages := \
@@ -116,23 +115,17 @@
NativeMediaTest_SL \
NativeMediaTest_XA
-cts_ui_tests := \
- CtsUiAutomatorTests
-
# All the files that will end up under the repository/testcases
# directory of the final CTS distribution.
CTS_TEST_CASES := $(call cts-get-lib-paths,$(cts_host_libraries)) \
$(call cts-get-package-paths,$(cts_test_packages)) \
- $(call cts-get-native-paths,$(cts_native_exes)) \
- $(call cts-get-ui-lib-paths,$(cts_ui_tests))
+ $(call cts-get-native-paths,$(cts_native_exes))
# All the XMLs that will end up under the repository/testcases
# and that need to be created before making the final CTS distribution.
CTS_TEST_XMLS := $(call cts-get-test-xmls,$(cts_host_libraries)) \
$(call cts-get-test-xmls,$(cts_test_packages)) \
- $(call cts-get-test-xmls,$(cts_native_exes)) \
- $(call cts-get-test-xmls,$(cts_ui_tests))
-
+ $(call cts-get-test-xmls,$(cts_native_exes))
# The following files will be placed in the tools directory of the CTS distribution
CTS_TOOLS_LIST :=
diff --git a/apps/CtsVerifier/jni/cameraanalyzer/com_android_cts_verifier_camera_analyzer_CameraTests.cpp b/apps/CtsVerifier/jni/cameraanalyzer/com_android_cts_verifier_camera_analyzer_CameraTests.cpp
index 83f5c17..ed91233 100644
--- a/apps/CtsVerifier/jni/cameraanalyzer/com_android_cts_verifier_camera_analyzer_CameraTests.cpp
+++ b/apps/CtsVerifier/jni/cameraanalyzer/com_android_cts_verifier_camera_analyzer_CameraTests.cpp
@@ -51,7 +51,7 @@
inputBitmap,
reinterpret_cast<void**>(&inputBuffer));
- if (result != ANDROID_BITMAP_RESUT_SUCCESS) {
+ if (result != ANDROID_BITMAP_RESULT_SUCCESS) {
ALOGE("Unable to lock input bitmap");
}
@@ -106,7 +106,7 @@
long lp = (long)input_testing_image;
result = AndroidBitmap_unlockPixels(env, inputBitmap);
- if (result != ANDROID_BITMAP_RESUT_SUCCESS) {
+ if (result != ANDROID_BITMAP_RESULT_SUCCESS) {
ALOGE("Unable to unlock input bitmap");
}
@@ -200,14 +200,14 @@
outputBitmap,
reinterpret_cast<void**>(&outputBuffer) );
- if (result != ANDROID_BITMAP_RESUT_SUCCESS) {
+ if (result != ANDROID_BITMAP_RESULT_SUCCESS) {
ALOGE("Unable to lock output bitmap");
}
memcpy(outputBuffer, outputImage, outputWidth * outputHeight * 4);
result = AndroidBitmap_unlockPixels(env, outputBitmap);
- if (result != ANDROID_BITMAP_RESUT_SUCCESS) {
+ if (result != ANDROID_BITMAP_RESULT_SUCCESS) {
ALOGE("Unable to unlock output bitmap");
}
diff --git a/build/config.mk b/build/config.mk
index a121dc5..c9fa709 100644
--- a/build/config.mk
+++ b/build/config.mk
@@ -15,4 +15,3 @@
BUILD_CTS_EXECUTABLE := cts/build/test_executable.mk
BUILD_CTS_PACKAGE := cts/build/test_package.mk
BUILD_CTS_HOST_JAVA_LIBRARY := cts/build/test_host_java_library.mk
-BUILD_CTS_UI_JAVA_LIBRARY := cts/build/test_uiautomator.mk
diff --git a/build/test_uiautomator.mk b/build/test_uiautomator.mk
deleted file mode 100644
index 255f70b..0000000
--- a/build/test_uiautomator.mk
+++ /dev/null
@@ -1,49 +0,0 @@
-# Copyright (C) 2012 The Android Open Source Project
-#
-# Licensed 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.
-
-#
-# Builds a uiautomator library and defines a rule to generate the associated test
-# package XML needed by CTS.
-#
-
-include $(BUILD_JAVA_LIBRARY)
-
-cts_library_xml := $(CTS_TESTCASES_OUT)/$(LOCAL_MODULE).xml
-cts_library_jar := $(CTS_TESTCASES_OUT)/$(LOCAL_MODULE).jar
-
-$(cts_library_jar): PRIVATE_MODULE := $(LOCAL_MODULE)
-$(cts_library_jar): $(call intermediates-dir-for,JAVA_LIBRARIES,$(LOCAL_MODULE))/javalib.jar | $(ACP)
- $(hide) mkdir -p $(CTS_TESTCASES_OUT)
- $(hide) $(ACP) -fp $(call intermediates-dir-for,JAVA_LIBRARIES,$(PRIVATE_MODULE))/javalib.jar $@
-
-$(cts_library_xml): PRIVATE_PATH := $(LOCAL_PATH)/src
-$(cts_library_xml): PRIVATE_TEST_APP_PACKAGE := $(LOCAL_CTS_TEST_APP_PACKAGE)
-$(cts_library_xml): PRIVATE_TEST_PACKAGE := $(LOCAL_CTS_TEST_PACKAGE)
-$(cts_library_xml): PRIVATE_TEST_APK := $(LOCAL_CTS_TEST_APK)
-$(cts_library_xml): PRIVATE_LIBRARY := $(LOCAL_MODULE)
-$(cts_library_xml): PRIVATE_JAR_PATH := $(LOCAL_MODULE).jar
-$(cts_library_xml): $(call intermediates-dir-for,JAVA_LIBRARIES,$(LOCAL_MODULE))/javalib.jar $(CTS_EXPECTATIONS) $(CTS_JAVA_TEST_SCANNER_DOCLET) $(CTS_JAVA_TEST_SCANNER) $(CTS_XML_GENERATOR)
- $(hide) echo Generating test description for uiautomator library $(PRIVATE_LIBRARY)
- $(hide) mkdir -p $(CTS_TESTCASES_OUT)
- $(hide) $(CTS_JAVA_TEST_SCANNER) -s $(PRIVATE_PATH) \
- -d $(CTS_JAVA_TEST_SCANNER_DOCLET) | \
- $(CTS_XML_GENERATOR) -t uiAutomator \
- -i $(PRIVATE_TEST_APK) \
- -j $(PRIVATE_JAR_PATH) \
- -a $(PRIVATE_TEST_PACKAGE) \
- -n $(PRIVATE_LIBRARY) \
- -p $(PRIVATE_TEST_PACKAGE) \
- -r $(PRIVATE_TEST_APP_PACKAGE) \
- -e $(CTS_EXPECTATIONS) \
- -o $@
diff --git a/tests/core/ctscore.mk b/tests/core/ctscore.mk
index 27ff881..0961c96 100644
--- a/tests/core/ctscore.mk
+++ b/tests/core/ctscore.mk
@@ -22,4 +22,8 @@
LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
# Don't delete META-INF from the core-tests jar
LOCAL_DONT_DELETE_JAR_META_INF := true
+
+LOCAL_STATIC_JAVA_LIBRARIES := core-tests
+LOCAL_JNI_SHARED_LIBRARIES := libjavacoretests
+
include $(BUILD_PACKAGE)
diff --git a/tests/core/libcore/com/Android.mk b/tests/core/libcore/com/Android.mk
index 02dc3de..6c68f9d 100644
--- a/tests/core/libcore/com/Android.mk
+++ b/tests/core/libcore/com/Android.mk
@@ -20,5 +20,4 @@
include $(CLEAR_VARS)
LOCAL_PACKAGE_NAME := android.core.tests.libcore.package.com
-LOCAL_STATIC_JAVA_LIBRARIES := core-tests
include $(BUILD_CTSCORE_PACKAGE)
diff --git a/tests/core/libcore/dalvik/Android.mk b/tests/core/libcore/dalvik/Android.mk
index 7b77a75..5744fac 100644
--- a/tests/core/libcore/dalvik/Android.mk
+++ b/tests/core/libcore/dalvik/Android.mk
@@ -20,5 +20,4 @@
include $(CLEAR_VARS)
LOCAL_PACKAGE_NAME := android.core.tests.libcore.package.dalvik
-LOCAL_STATIC_JAVA_LIBRARIES := core-tests
include $(BUILD_CTSCORE_PACKAGE)
diff --git a/tests/core/libcore/libcore/Android.mk b/tests/core/libcore/libcore/Android.mk
index 382b386..160b996 100644
--- a/tests/core/libcore/libcore/Android.mk
+++ b/tests/core/libcore/libcore/Android.mk
@@ -20,5 +20,4 @@
include $(CLEAR_VARS)
LOCAL_PACKAGE_NAME := android.core.tests.libcore.package.libcore
-LOCAL_STATIC_JAVA_LIBRARIES := core-tests
include $(BUILD_CTSCORE_PACKAGE)
diff --git a/tests/core/libcore/org/Android.mk b/tests/core/libcore/org/Android.mk
index d7a96b3..adb26d5 100644
--- a/tests/core/libcore/org/Android.mk
+++ b/tests/core/libcore/org/Android.mk
@@ -20,5 +20,4 @@
include $(CLEAR_VARS)
LOCAL_PACKAGE_NAME := android.core.tests.libcore.package.org
-LOCAL_STATIC_JAVA_LIBRARIES := core-tests
include $(BUILD_CTSCORE_PACKAGE)
diff --git a/tests/core/libcore/sun/Android.mk b/tests/core/libcore/sun/Android.mk
index 44d3d70..d2754eb 100644
--- a/tests/core/libcore/sun/Android.mk
+++ b/tests/core/libcore/sun/Android.mk
@@ -20,5 +20,4 @@
include $(CLEAR_VARS)
LOCAL_PACKAGE_NAME := android.core.tests.libcore.package.sun
-LOCAL_STATIC_JAVA_LIBRARIES := core-tests
include $(BUILD_CTSCORE_PACKAGE)
diff --git a/tests/core/libcore/tests/Android.mk b/tests/core/libcore/tests/Android.mk
index bfd235f..0c1024e 100644
--- a/tests/core/libcore/tests/Android.mk
+++ b/tests/core/libcore/tests/Android.mk
@@ -20,5 +20,4 @@
include $(CLEAR_VARS)
LOCAL_PACKAGE_NAME := android.core.tests.libcore.package.tests
-LOCAL_STATIC_JAVA_LIBRARIES := core-tests
include $(BUILD_CTSCORE_PACKAGE)
diff --git a/tests/jni/android_os_cts_CpuFeatures.cpp b/tests/jni/android_os_cts_CpuFeatures.cpp
index 95a0d2f..49d9725 100644
--- a/tests/jni/android_os_cts_CpuFeatures.cpp
+++ b/tests/jni/android_os_cts_CpuFeatures.cpp
@@ -30,11 +30,19 @@
return (cpuFeatures & ANDROID_CPU_ARM_FEATURE_ARMv7) == ANDROID_CPU_ARM_FEATURE_ARMv7;
}
+jboolean android_os_cts_CpuFeatures_isMipsCpu(JNIEnv* env, jobject thiz)
+{
+ AndroidCpuFamily cpuFamily = android_getCpuFamily();
+ return cpuFamily == ANDROID_CPU_FAMILY_MIPS;
+}
+
static JNINativeMethod gMethods[] = {
{ "isArmCpu", "()Z",
(void *) android_os_cts_CpuFeatures_isArmCpu },
{ "isArm7Compatible", "()Z",
(void *) android_os_cts_CpuFeatures_isArm7Compatible },
+ { "isMipsCpu", "()Z",
+ (void *) android_os_cts_CpuFeatures_isMipsCpu },
};
int register_android_os_cts_CpuFeatures(JNIEnv* env)
diff --git a/tests/src/android/os/cts/CpuFeatures.java b/tests/src/android/os/cts/CpuFeatures.java
index f87db6a..7b8fd38 100644
--- a/tests/src/android/os/cts/CpuFeatures.java
+++ b/tests/src/android/os/cts/CpuFeatures.java
@@ -22,6 +22,8 @@
public static final String ARMEABI = "armeabi";
+ public static final String MIPSABI = "mips";
+
static {
System.loadLibrary("cts_jni");
}
@@ -29,4 +31,6 @@
public static native boolean isArmCpu();
public static native boolean isArm7Compatible();
+
+ public static native boolean isMipsCpu();
}
diff --git a/tests/tests/os/src/android/os/cts/NoExecutePermissionTest.java b/tests/tests/os/src/android/os/cts/NoExecutePermissionTest.java
index 6256267..43afb53 100644
--- a/tests/tests/os/src/android/os/cts/NoExecutePermissionTest.java
+++ b/tests/tests/os/src/android/os/cts/NoExecutePermissionTest.java
@@ -75,6 +75,10 @@
// http://code.google.com/p/android/issues/detail?id=17328
return false;
}
+ if (CpuFeatures.isMipsCpu()) {
+ // MIPS processors do not have NX support.
+ return false;
+ }
// TODO: handle other processors. For now, assume those processors
// have NX support.
diff --git a/tests/tests/permission/src/android/permission/cts/FileSystemPermissionTest.java b/tests/tests/permission/src/android/permission/cts/FileSystemPermissionTest.java
index 7ba6133..32fd18d 100644
--- a/tests/tests/permission/src/android/permission/cts/FileSystemPermissionTest.java
+++ b/tests/tests/permission/src/android/permission/cts/FileSystemPermissionTest.java
@@ -193,6 +193,39 @@
assertFileOwnedByGroup(f, "nfc");
}
+ @MediumTest
+ public void testDevQtaguidSane() throws Exception {
+ File f = new File("/dev/xt_qtaguid");
+ assertTrue(f.canRead());
+ assertFalse(f.canWrite());
+ assertFalse(f.canExecute());
+
+ assertFileOwnedBy(f, "root");
+ assertFileOwnedByGroup(f, "root");
+ }
+
+ @MediumTest
+ public void testProcQtaguidCtrlSane() throws Exception {
+ File f = new File("/proc/net/xt_qtaguid/ctrl");
+ assertTrue(f.canRead());
+ assertTrue(f.canWrite());
+ assertFalse(f.canExecute());
+
+ assertFileOwnedBy(f, "root");
+ assertFileOwnedByGroup(f, "net_bw_acct");
+ }
+
+ @MediumTest
+ public void testProcQtaguidStatsSane() throws Exception {
+ File f = new File("/proc/net/xt_qtaguid/stats");
+ assertTrue(f.canRead());
+ assertFalse(f.canWrite());
+ assertFalse(f.canExecute());
+
+ assertFileOwnedBy(f, "root");
+ assertFileOwnedByGroup(f, "net_bw_stats");
+ }
+
/**
* Assert that a file is owned by a specific owner. This is a noop if the
* file does not exist.
diff --git a/tests/tests/security/src/android/security/cts/BannedFilesTest.java b/tests/tests/security/src/android/security/cts/BannedFilesTest.java
index b4deed5..ada9aaf 100644
--- a/tests/tests/security/src/android/security/cts/BannedFilesTest.java
+++ b/tests/tests/security/src/android/security/cts/BannedFilesTest.java
@@ -22,6 +22,18 @@
public class BannedFilesTest extends TestCase {
+ /**
+ * Detect devices vulnerable to the cmdclient privilege escalation bug.
+ *
+ * References:
+ *
+ * http://vulnfactory.org/blog/2012/02/18/xoom-fe-stupid-bugs-and-more-plagiarism/
+ * http://forum.xda-developers.com/showthread.php?t=1213014
+ */
+ public void testNoCmdClient() {
+ assertNotSetugid("/system/bin/cmdclient");
+ }
+
public void testNoSyncAgent() {
assertNotSetugid("/system/bin/sync_agent");
}
diff --git a/tests/tests/text/src/android/text/format/cts/DateUtilsTest.java b/tests/tests/text/src/android/text/format/cts/DateUtilsTest.java
index 420af25..e65561e 100644
--- a/tests/tests/text/src/android/text/format/cts/DateUtilsTest.java
+++ b/tests/tests/text/src/android/text/format/cts/DateUtilsTest.java
@@ -119,19 +119,32 @@
mBaseTime - DAY_DURATION).toString());
}
+ public void test_formatElapsedTime() {
+ if (!LocaleUtils.isCurrentLocale(mContext, Locale.US)) {
+ return;
+ }
+
+ long MINUTES = 60;
+ long HOURS = 60 * MINUTES;
+ test_formatElapsedTime("02:01", 2 * MINUTES + 1);
+ test_formatElapsedTime("3:02:01", 3 * HOURS + 2 * MINUTES + 1);
+ // http://code.google.com/p/android/issues/detail?id=41401
+ test_formatElapsedTime("123:02:01", 123 * HOURS + 2 * MINUTES + 1);
+ }
+
+ private void test_formatElapsedTime(String expected, long elapsedTime) {
+ assertEquals(expected, DateUtils.formatElapsedTime(elapsedTime));
+ StringBuilder sb = new StringBuilder();
+ assertEquals(expected, DateUtils.formatElapsedTime(sb, elapsedTime));
+ assertEquals(expected, sb.toString());
+ }
+
@SuppressWarnings("deprecation")
public void testFormatMethods() {
if (!LocaleUtils.isCurrentLocale(mContext, Locale.US)) {
return;
}
- long elapsedTime = 2 * 60 * 60;
- String expected = "2:00:00";
- assertEquals(expected, DateUtils.formatElapsedTime(elapsedTime));
- StringBuilder sb = new StringBuilder();
- assertEquals(expected, DateUtils.formatElapsedTime(sb, elapsedTime));
- assertEquals(expected, sb.toString());
-
Date date = new Date(109, 0, 19, 3, 30, 15);
long fixedTime = date.getTime();
diff --git a/tests/tests/widget/src/android/widget/cts/HeaderViewListAdapterTest.java b/tests/tests/widget/src/android/widget/cts/HeaderViewListAdapterTest.java
index e583dce..5426ae9 100644
--- a/tests/tests/widget/src/android/widget/cts/HeaderViewListAdapterTest.java
+++ b/tests/tests/widget/src/android/widget/cts/HeaderViewListAdapterTest.java
@@ -81,6 +81,21 @@
HeaderViewFullAdapter fullAdapter = new HeaderViewFullAdapter();
headerViewListAdapter = new HeaderViewListAdapter(null, null, fullAdapter);
assertFalse(headerViewListAdapter.isEmpty());
+
+ ListView lv = new ListView(getContext());
+ ArrayList<ListView.FixedViewInfo> header = new ArrayList<ListView.FixedViewInfo>(4);
+ header.add(lv.new FixedViewInfo());
+ headerViewListAdapter = new HeaderViewListAdapter(header, null, null);
+ assertEquals(1, headerViewListAdapter.getHeadersCount());
+ assertFalse(headerViewListAdapter.isEmpty());
+
+ lv = new ListView(getContext());
+ ArrayList<ListView.FixedViewInfo> footer = new ArrayList<ListView.FixedViewInfo>(4);
+ footer.add(lv.new FixedViewInfo());
+ headerViewListAdapter = new HeaderViewListAdapter(null, footer, null);
+ assertEquals(1, headerViewListAdapter.getFootersCount());
+ assertFalse(headerViewListAdapter.isEmpty());
+
}
public void testRemoveHeader() {
diff --git a/tests/uiautomator/test-apps/Android.mk b/tests/uiautomator/test-apps/Android.mk
deleted file mode 100644
index e790e1e..0000000
--- a/tests/uiautomator/test-apps/Android.mk
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright (C) 2012 The Android Open Source Project
-#
-# Licensed 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.
-
-include $(call all-subdir-makefiles)
diff --git a/tools/cts-java-scanner/src/com/android/cts/javascanner/DocletRunner.java b/tools/cts-java-scanner/src/com/android/cts/javascanner/DocletRunner.java
index 25a4ec1..ba87156 100644
--- a/tools/cts-java-scanner/src/com/android/cts/javascanner/DocletRunner.java
+++ b/tools/cts-java-scanner/src/com/android/cts/javascanner/DocletRunner.java
@@ -72,7 +72,6 @@
// PTS adds PtsAndroidTestCase
sourcePath.add("./cts/suite/pts/deviceTests/ptsutil/src");
sourcePath.add("./cts/libs/util/src");
- sourcePath.add("./frameworks/testing/uiautomator/library/src");
sourcePath.add(sourceDir.toString());
return join(sourcePath, ":");
}
diff --git a/tools/cts-xml-generator/src/com/android/cts/xmlgenerator/CtsXmlGenerator.java b/tools/cts-xml-generator/src/com/android/cts/xmlgenerator/CtsXmlGenerator.java
index c5b253a..ce4fdd7 100644
--- a/tools/cts-xml-generator/src/com/android/cts/xmlgenerator/CtsXmlGenerator.java
+++ b/tools/cts-xml-generator/src/com/android/cts/xmlgenerator/CtsXmlGenerator.java
@@ -49,8 +49,6 @@
String instrumentation = null;
String testType = null;
String jarPath = null;
- String appNameSpace = null;
- String targetNameSpace = null;
for (int i = 0; i < args.length; i++) {
if ("-p".equals(args[i])) {
@@ -70,17 +68,15 @@
"Missing value for expectation store")));
} else if ("-o".equals(args[i])) {
outputPath = getArg(args, ++i, "Missing value for output file");
- } else if ("-a".equals(args[i])) {
- appNameSpace = getArg(args, ++i, "Missing value for app name space");
- } else if ("-r".equals(args[i])) {
- targetNameSpace = getArg(args, ++i, "Missing value for target name space");
} else {
System.err.println("Unsupported flag: " + args[i]);
usage(args);
}
}
+ String appNameSpace = null;
String runner = null;
+ String targetNameSpace = null;
if (manifestFile != null) {
Document manifest = DocumentBuilderFactory.newInstance().newDocumentBuilder()
diff --git a/tools/tradefed-host/.classpath b/tools/tradefed-host/.classpath
index 09dd0ce..275ecf9 100644
--- a/tools/tradefed-host/.classpath
+++ b/tools/tradefed-host/.classpath
@@ -3,10 +3,10 @@
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="res"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/3"/>
+ <classpathentry combineaccessrules="false" kind="src" path="/ddmlib"/>
+ <classpathentry combineaccessrules="false" kind="src" path="/tradefederation"/>
<classpathentry exported="true" kind="var" path="CTS_SRC_ROOT/out/host/common/obj/JAVA_LIBRARIES/ctsdeviceinfolib_intermediates/javalib.jar"/>
<classpathentry exported="true" kind="var" path="CTS_SRC_ROOT/out/host/common/obj/JAVA_LIBRARIES/hosttestlib_intermediates/javalib.jar"/>
- <classpathentry kind="var" path="CTS_SRC_ROOT/prebuilt/common/ddmlib/ddmlib-prebuilt.jar" sourcepath="/SDK_SRC_ROOT"/>
- <classpathentry kind="var" path="CTS_SRC_ROOT/prebuilt/common/tradefed/tradefed-prebuilt.jar" sourcepath="/TRADEFED_ROOT/tools/tradefederation/src"/>
- <classpathentry kind="var" path="CTS_SRC_ROOT/out/host/common/obj/JAVA_LIBRARIES/junit_intermediates/javalib.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/tools/tradefed-host/.gitignore b/tools/tradefed-host/.gitignore
deleted file mode 100644
index ba077a4..0000000
--- a/tools/tradefed-host/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-bin
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/targetprep/SettingsToggler.java b/tools/tradefed-host/src/com/android/cts/tradefed/targetprep/SettingsToggler.java
index 597d866..69d4c8a 100644
--- a/tools/tradefed-host/src/com/android/cts/tradefed/targetprep/SettingsToggler.java
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/targetprep/SettingsToggler.java
@@ -51,7 +51,7 @@
"content update"
+ " --uri content://settings/secure"
+ " --bind value:s:" + value
- + " --where \"name=\\'" + name + "\\'\"");
+ + " --where \"name='" + name + "'\"");
}
public static void updateSecureInt(ITestDevice device, String name, int value)
@@ -60,7 +60,7 @@
"content update"
+ " --uri content://settings/secure"
+ " --bind value:i:" + value
- + " --where \"name=\\'" + name + "\\'\"");
+ + " --where \"name='" + name + "'\"");
}
private static void deleteSecure(ITestDevice device, String name)
@@ -68,6 +68,6 @@
device.executeShellCommand(
"content delete"
+ " --uri content://settings/secure"
- + " --where \"name=\\'" + name + "\\'\"");
+ + " --where \"name='" + name + "'\"");
}
}
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/CtsTest.java b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/CtsTest.java
index db11bce..19ee3b7 100644
--- a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/CtsTest.java
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/CtsTest.java
@@ -400,7 +400,8 @@
// reboot it before running it.
// Also reboot after package which is know to leave pop-up behind
final List<String> rebootAfterList = Arrays.asList(
- "CtsMediaTestCases");
+ "CtsMediaTestCases",
+ "CtsAccessibilityTestCases");
final List<String> rebootBeforeList = Arrays.asList(
"CtsAnimationTestCases",
"CtsGraphicsTestCases",
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/TestPackageDef.java b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/TestPackageDef.java
index 78a72ba..ffbb930 100644
--- a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/TestPackageDef.java
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/TestPackageDef.java
@@ -16,7 +16,6 @@
package com.android.cts.tradefed.testtype;
-import com.android.ddmlib.Log.LogLevel;
import com.android.ddmlib.testrunner.TestIdentifier;
import com.android.tradefed.log.LogUtil.CLog;
import com.android.tradefed.testtype.IRemoteTest;
@@ -49,7 +48,6 @@
"com.android.cts.tradefed.testtype.AccessibilityTestRunner";
public static final String ACCESSIBILITYSERVICE_TEST =
"com.android.cts.tradefed.testtype.AccessibilityServiceTestRunner";
- public static final String UIAUTOMATOR_TEST = "uiAutomator";
private static final String SIGNATURE_TEST_METHOD = "testSignature";
private static final String SIGNATURE_TEST_CLASS = "android.tests.sigtest.SimpleSignatureTest";
@@ -227,9 +225,6 @@
} else if (ACCESSIBILITYSERVICE_TEST.equals(mTestType)) {
AccessibilityServiceTestRunner test = new AccessibilityServiceTestRunner();
return setInstrumentationTest(test, testCaseDir);
- } else if (UIAUTOMATOR_TEST.equals(mTestType)) {
- UiAutomatorJarTest uiautomatorTest = new UiAutomatorJarTest();
- return setUiAutomatorTest(uiautomatorTest);
} else if (mIsSignatureTest) {
// TODO: hardcode the runner/class/method for now, since current package xml points to
// specialized instrumentation. Eventually this special case for signatureTest can be
@@ -290,28 +285,6 @@
}
/**
- * Populates given {@link UiAutomatorJarTest} with data from the package xml.
- *
- * @param uiautomatorTest
- * @return the populated {@link UiAutomatorJarTest} or <code>null</code>
- */
- private IRemoteTest setUiAutomatorTest(UiAutomatorJarTest uiautomatorTest) {
- uiautomatorTest.setInstallArtifacts(getJarPath());
- if (mClassName != null) {
- if (mMethodName != null) {
- CLog.logAndDisplay(LogLevel.WARN, "ui automator tests don't currently support" +
- "running individual methods");
- }
- uiautomatorTest.addClassName(mClassName);
- } else {
- uiautomatorTest.addClassNames(mTestClasses);
- }
- uiautomatorTest.setRunName(getUri());
- uiautomatorTest.setCaptureLogs(false);
- return uiautomatorTest;
- }
-
- /**
* Filter the tests to run based on list of excluded tests, class and method name.
*
* @return the filtered collection of tests
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/UiAutomatorJarTest.java b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/UiAutomatorJarTest.java
deleted file mode 100644
index 83cc6d6..0000000
--- a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/UiAutomatorJarTest.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed 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 com.android.cts.tradefed.testtype;
-
-import com.android.cts.tradefed.build.CtsBuildHelper;
-import com.android.tradefed.build.IBuildInfo;
-import com.android.tradefed.device.DeviceNotAvailableException;
-import com.android.tradefed.log.LogUtil.CLog;
-import com.android.tradefed.result.ITestInvocationListener;
-import com.android.tradefed.testtype.IBuildReceiver;
-import com.android.tradefed.testtype.UiAutomatorTest;
-
-import java.io.FileNotFoundException;
-import java.util.Arrays;
-
-import junit.framework.Assert;
-
-/**
- * A {@link UiAutomatorTest} that will install a uiautomator jar before test
- * execution, and uninstall on execution completion.
- */
-public class UiAutomatorJarTest extends UiAutomatorTest implements IBuildReceiver {
-
- // TODO: expose this in parent
- private static final String SHELL_EXE_BASE = "/data/local/tmp/";
-
- /** the file names of the CTS jar to install */
- private String mTestJarFileName;
-
- private CtsBuildHelper mCtsBuild = null;
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void setBuild(IBuildInfo build) {
- mCtsBuild = CtsBuildHelper.createBuildHelper(build);
- }
-
- /**
- * Setter for CTS build files needed to perform the test.
- *
- * @param testJarName the file name of the jar containing the uiautomator tests
- */
- public void setInstallArtifacts(String testJarName) {
- mTestJarFileName = testJarName;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void run(final ITestInvocationListener listener)
- throws DeviceNotAvailableException {
- Assert.assertNotNull("missing device", getDevice());
- Assert.assertNotNull("missing build", mCtsBuild);
- Assert.assertNotNull("missing jar to install", mTestJarFileName);
-
- installJar();
-
- super.run(listener);
-
- uninstallJar();
- }
-
- private void installJar() throws DeviceNotAvailableException {
- CLog.d("Installing %s on %s", mTestJarFileName, getDevice().getSerialNumber());
- String fullJarPath = String.format("%s%s", SHELL_EXE_BASE, mTestJarFileName);
- try {
- boolean result = getDevice().pushFile(mCtsBuild.getTestApp(mTestJarFileName),
- fullJarPath);
- Assert.assertTrue(String.format("Failed to push file to %s", fullJarPath), result);
- setTestJarPaths(Arrays.asList(fullJarPath));
- } catch (FileNotFoundException e) {
- Assert.fail(String.format("Could not find file %s", mTestJarFileName));
- }
- }
-
- private void uninstallJar() throws DeviceNotAvailableException {
- CLog.d("Uninstalling %s on %s", mTestJarFileName, getDevice().getSerialNumber());
- String fullJarPath = String.format("%s%s", SHELL_EXE_BASE, mTestJarFileName);
- getDevice().executeShellCommand(String.format("rm %s", fullJarPath));
- }
-}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/Test_invoke_interface.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/Test_invoke_interface.java
index 377cc58..ae06cda 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/Test_invoke_interface.java
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/Test_invoke_interface.java
@@ -90,6 +90,29 @@
}
/**
+ * @title dvmInterpFindInterfaceMethod failures were putting NULL Method*s
+ * in the interface cache, leading to a null pointer deference the second
+ * time you made the same bad call, with no exception thrown.
+ * See http://code.google.com/p/android/issues/detail?id=29358 for details.
+ */
+ public void testE4_2() {
+ //@uses dot.junit.opcodes.invoke_interface.d.T_invoke_interface_11
+ //@uses dot.junit.opcodes.invoke_interface.ITest
+ //@uses dot.junit.opcodes.invoke_interface.ITestImpl
+ T_invoke_interface_11 t = new T_invoke_interface_11();
+ try {
+ t.run();
+ fail("expected IncompatibleClassChangeError");
+ } catch (IncompatibleClassChangeError expected) {
+ }
+ try {
+ t.run();
+ fail("expected IncompatibleClassChangeError");
+ } catch (IncompatibleClassChangeError expected) {
+ }
+ }
+
+ /**
* @title Native method can't be linked
*/
public void testE5() {