Merge "Snap for 5238180 from e3b6fdc7f11c220537bb69d032cd95bce68f1ad2 to oreo-mr1-cts-release" into oreo-mr1-cts-release
diff --git a/apps/CtsVerifier/res/values/strings.xml b/apps/CtsVerifier/res/values/strings.xml
index 2b93e87..f2275ef 100755
--- a/apps/CtsVerifier/res/values/strings.xml
+++ b/apps/CtsVerifier/res/values/strings.xml
@@ -1769,6 +1769,7 @@
2. Click on the play button.\n
3. Verify that the captured audio is played.\n
4. Click on the close button.\n
+ If this device does not support audio recording, please skip this test and mark it passing.\n
</string>
<string name="provisioning_byod_dismiss_result_dialog">Close</string>
<string name="provisioning_byod_play">Play</string>
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/audio/USBAudioPeripheralAttributesActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/audio/USBAudioPeripheralAttributesActivity.java
index ef67708..5029160 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/audio/USBAudioPeripheralAttributesActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/audio/USBAudioPeripheralAttributesActivity.java
@@ -70,21 +70,27 @@
if (deviceInfo.getChannelCounts().length == 0) {
sb.append("Output - No Peripheral Channel Counts\n");
} else if (!ListsHelper.isSubset(deviceInfo.getChannelCounts(), attribs.mChannelCounts)) {
- sb.append("Output - Channel Counts Mismatch\n");
+ sb.append("Output - Channel Counts Mismatch" +
+ " d" + ListsHelper.textFormatDecimal(deviceInfo.getChannelCounts()) +
+ " p" + ListsHelper.textFormatDecimal(attribs.mChannelCounts) +"\n");
}
// Encodings
if (deviceInfo.getEncodings().length == 0) {
sb.append("Output - No Peripheral Encodings\n");
} else if (!ListsHelper.isSubset(deviceInfo.getEncodings(), attribs.mEncodings)) {
- sb.append("Output - Encodings Mismatch\n");
+ sb.append("Output - Encodings Mismatch" +
+ " d" + ListsHelper.textFormatHex(deviceInfo.getEncodings()) +
+ " p" + ListsHelper.textFormatHex(attribs.mEncodings) + "\n");
}
// Sample Rates
if (deviceInfo.getSampleRates().length == 0) {
sb.append("Output - No Peripheral Sample Rates\n");
} else if (!ListsHelper.isSubset(deviceInfo.getSampleRates(), attribs.mSampleRates)) {
- sb.append("Output - Sample Rates Mismatch\n");
+ sb.append("Output - Sample Rates Mismatch" +
+ " d" + ListsHelper.textFormatHex(deviceInfo.getSampleRates()) +
+ " p" + ListsHelper.textFormatHex(attribs.mSampleRates) + "\n");
}
// Channel Masks
@@ -95,13 +101,17 @@
// Channel Index Masks
if (!ListsHelper.isSubset(deviceInfo.getChannelIndexMasks(),
attribs.mChannelIndexMasks)) {
- sb.append("Output - Channel Index Masks Mismatch\n");
+ sb.append("Output - Channel Index Masks Mismatch" +
+ " d" + ListsHelper.textFormatHex(deviceInfo.getChannelIndexMasks()) +
+ " p" + ListsHelper.textFormatHex(attribs.mChannelIndexMasks) + "\n");
}
// Channel Position Masks
if (!ListsHelper.isSubset(deviceInfo.getChannelMasks(),
attribs.mChannelPositionMasks)) {
- sb.append("Output - Channel Position Masks Mismatch\n");
+ sb.append("Output - Channel Position Masks Mismatch" +
+ " d" + ListsHelper.textFormatHex(deviceInfo.getChannelMasks()) +
+ " p" + ListsHelper.textFormatHex(attribs.mChannelPositionMasks) + "\n");
}
}
@@ -128,21 +138,27 @@
if (deviceInfo.getChannelCounts().length == 0) {
sb.append("Input - No Peripheral Channel Counts\n");
} else if (!ListsHelper.isSubset(deviceInfo.getChannelCounts(), attribs.mChannelCounts)) {
- sb.append("Input - Channel Counts Mismatch\n");
+ sb.append("Input - Channel Counts Mismatch" +
+ " d" + ListsHelper.textFormatDecimal(deviceInfo.getChannelCounts()) +
+ " p" + ListsHelper.textFormatDecimal(attribs.mChannelCounts) + "\n");
}
// Encodings
if (deviceInfo.getEncodings().length == 0) {
sb.append("Input - No Peripheral Encodings\n");
} else if (!ListsHelper.isSubset(deviceInfo.getEncodings(), attribs.mEncodings)) {
- sb.append("Input - Encodings Mismatch\n");
+ sb.append("Input - Encodings Mismatch" +
+ " d" + ListsHelper.textFormatHex(deviceInfo.getEncodings()) +
+ " p" + ListsHelper.textFormatHex(attribs.mEncodings) + "\n");
}
// Sample Rates
if (deviceInfo.getSampleRates().length == 0) {
sb.append("Input - No Peripheral Sample Rates\n");
} else if (!ListsHelper.isSubset(deviceInfo.getSampleRates(), attribs.mSampleRates)) {
- sb.append("Input - Sample Rates Mismatch\n");
+ sb.append("Input - Sample Rates Mismatch" +
+ " d" + ListsHelper.textFormatDecimal(deviceInfo.getSampleRates()) +
+ " p" + ListsHelper.textFormatDecimal(attribs.mSampleRates) + "\n");
}
// Channel Masks
@@ -152,11 +168,15 @@
} else {
if (!ListsHelper.isSubset(deviceInfo.getChannelIndexMasks(),
attribs.mChannelIndexMasks)) {
- sb.append("Input - Channel Index Masks Mismatch\n");
+ sb.append("Input - Channel Index Masks Mismatch" +
+ " d" + ListsHelper.textFormatHex(deviceInfo.getChannelIndexMasks()) +
+ " p" + ListsHelper.textFormatHex(attribs.mChannelIndexMasks) + "\n");
}
if (!ListsHelper.isSubset(deviceInfo.getChannelMasks(),
attribs.mChannelPositionMasks)) {
- sb.append("Input - Channel Position Masks Mismatch\n");
+ sb.append("Input - Channel Position Masks Mismatch" +
+ " d" + ListsHelper.textFormatHex(deviceInfo.getChannelMasks()) +
+ " p" + ListsHelper.textFormatHex(attribs.mChannelPositionMasks) + "\n");
}
}
if (sb.toString().length() == 0){
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/audio/peripheralprofile/ListsHelper.java b/apps/CtsVerifier/src/com/android/cts/verifier/audio/peripheralprofile/ListsHelper.java
index 97822d0..565826e 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/audio/peripheralprofile/ListsHelper.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/audio/peripheralprofile/ListsHelper.java
@@ -60,4 +60,30 @@
return true;
}
+
+ static public String textFormatHex(int[] list) {
+ StringBuilder sb = new StringBuilder();
+ sb.append("[");
+ for (int index = 0; index < list.length; index++) {
+ sb.append("0x" + Integer.toHexString(list[index]));
+ if (index < list.length-1) {
+ sb.append(", ");
+ }
+ }
+ sb.append("]");
+ return sb.toString();
+ }
+
+ static public String textFormatDecimal(int[] list) {
+ StringBuilder sb = new StringBuilder();
+ sb.append("[");
+ for (int index = 0; index < list.length; index++) {
+ sb.append("0x" + list[index]);
+ if (index < list.length-1) {
+ sb.append(", ");
+ }
+ }
+ sb.append("]");
+ return sb.toString();
+ }
}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/audio/peripheralprofile/ProfileManager.java b/apps/CtsVerifier/src/com/android/cts/verifier/audio/peripheralprofile/ProfileManager.java
index 1b58f40..bbafd8c 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/audio/peripheralprofile/ProfileManager.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/audio/peripheralprofile/ProfileManager.java
@@ -49,31 +49,31 @@
"<ProfileList Version=\"1.0.0\">" +
"<PeripheralProfile ProfileName=\"AudioBox USB 96\" ProfileDescription=\"PreSonus AudioBox USB 96\" ProductName=\"USB-Audio - AudioBox USB 96\">" +
"<OutputDevInfo ChanCounts=\"2\" ChanPosMasks=\"12\" ChanIndexMasks=\"3\" Encodings=\"4\" SampleRates=\"44100,48000,88200,96000\"/>" +
- "<InputDevInfo ChanCounts=\"2\" ChanPosMasks=\"12\" ChanIndexMasks=\"3\" Encodings=\"4\" SampleRates=\"44100,48000,88200,96000\"/>" +
+ "<InputDevInfo ChanCounts=\"2\" ChanPosMasks=\"12\" ChanIndexMasks=\"1,3\" Encodings=\"4\" SampleRates=\"44100,48000,88200,96000\"/>" +
"</PeripheralProfile>" +
- "<PeripheralProfile ProfileName=\"Audio Interface\" ProfileDescription=\"Presonus AudioVox 44VSL\" ProductName=\"USB-Audio - AudioBox 44 VSL\">" +
- "<OutputDevInfo ChanCounts=\"2,4\" ChanPosMasks=\"12\" ChanIndexMasks=\"15\" Encodings=\"4\" SampleRates=\"44100,48000,88200,96000\" />" +
- "<InputDevInfo ChanCounts=\"1,2,4\" ChanPosMasks=\"12,16\" ChanIndexMasks=\"15\" Encodings=\"4\" SampleRates=\"44100,48000,88200,96000\" />" +
+ "<PeripheralProfile ProfileName=\"AudioBox 44VSL\" ProfileDescription=\"Presonus AudioBox 44VSL\" ProductName=\"USB-Audio - AudioBox 44 VSL\">" +
+ "<OutputDevInfo ChanCounts=\"2,3,4\" ChanPosMasks=\"12\" ChanIndexMasks=\"3,7,15\" Encodings=\"4\" SampleRates=\"44100,48000,88200,96000\" />" +
+ "<InputDevInfo ChanCounts=\"1,2,3,4\" ChanPosMasks=\"12,16\" ChanIndexMasks=\"1,3,7,15\" Encodings=\"4\" SampleRates=\"44100,48000,88200,96000\" />" +
"</PeripheralProfile>" +
"<PeripheralProfile ProfileName=\"AudioBox 22VSL\" ProfileDescription=\"Presonus AudioBox 22VSL\" ProductName=\"USB-Audio - AudioBox 22 VSL\">" +
"<OutputDevInfo ChanCounts=\"2\" ChanPosMasks=\"12\" ChanIndexMasks=\"3\" Encodings=\"4\" SampleRates=\"44100,48000,88200,96000\" />" +
- "<InputDevInfo ChanCounts=\"1,2\" ChanPosMasks=\"12,16\" ChanIndexMasks=\"3\" Encodings=\"4\" SampleRates=\"44100,48000,88200,96000\" />" +
+ "<InputDevInfo ChanCounts=\"1,2\" ChanPosMasks=\"12,16\" ChanIndexMasks=\"1,3\" Encodings=\"4\" SampleRates=\"44100,48000,88200,96000\" />" +
"</PeripheralProfile>" +
"<PeripheralProfile ProfileName=\"AudioBox USB\" ProfileDescription=\"Presonus AudioBox USB\" ProductName=\"USB-Audio - AudioBox USB\">" +
"<OutputDevInfo ChanCounts=\"2\" ChanPosMasks=\"12\" ChanIndexMasks=\"3\" Encodings=\"4\" SampleRates=\"44100,48000\" />" +
- "<InputDevInfo ChanCounts=\"1,2\" ChanPosMasks=\"12,16\" ChanIndexMasks=\"3\" Encodings=\"4\" SampleRates=\"44100,48000\" />" +
+ "<InputDevInfo ChanCounts=\"1,2\" ChanPosMasks=\"12,16\" ChanIndexMasks=\"1,3\" Encodings=\"4\" SampleRates=\"44100,48000\" />" +
"</PeripheralProfile>" +
"<PeripheralProfile ProfileName=\"Focusrite 2i4\" ProfileDescription=\"Focusrite Scarlett 2i4\" ProductName=\"USB-Audio - Scarlett 2i4 USB\">" +
"<OutputDevInfo ChanCounts=\"2,3,4\" ChanPosMasks=\"12\" ChanIndexMasks=\"3,7,15\" Encodings=\"4\" SampleRates=\"44100,48000,88200,96000\"/>" +
- "<InputDevInfo ChanCounts=\"1,2\" ChanPosMasks=\"12,16\" ChanIndexMasks=\"3\" Encodings=\"4\" SampleRates=\"44100,48000,88200,96000\"/>" +
+ "<InputDevInfo ChanCounts=\"1,2\" ChanPosMasks=\"12,16\" ChanIndexMasks=\"1,3\" Encodings=\"4\" SampleRates=\"44100,48000,88200,96000\"/>" +
"</PeripheralProfile>" +
"<PeripheralProfile ProfileName=\"Behringer UMC204HD\" ProfileDescription=\"Behringer UMC204HD\" ProductName=\"USB-Audio - UMC204HD 192k\">" +
"<OutputDevInfo ChanCounts=\"2,4\" ChanPosMasks=\"12\" ChanIndexMasks=\"15\" Encodings=\"2,4\" SampleRates=\"44100,48000,88200,96000,176400,192000\"/>" +
- "<InputDevInfo ChanCounts=\"2\" ChanPosMasks=\"12\" ChanIndexMasks=\"3\" Encodings=\"4\" SampleRates=\"44100,48000,88200,96000,176400,192000\"/>" +
+ "<InputDevInfo ChanCounts=\"2\" ChanPosMasks=\"12\" ChanIndexMasks=\"1,3\" Encodings=\"4\" SampleRates=\"44100,48000,88200,96000,176400,192000\"/>" +
"</PeripheralProfile>" +
"<PeripheralProfile ProfileName=\"Roland Rubix24\" ProfileDescription=\"Roland Rubix24\" ProductName=\"USB-Audio - Rubix24\">" +
"<OutputDevInfo ChanCounts=\"2,4\" ChanPosMasks=\"12\" ChanIndexMasks=\"15\" Encodings=\"4\" SampleRates=\"44100,48000,96000,192000\"/>" +
- "<InputDevInfo ChanCounts=\"2\" ChanPosMasks=\"12\" ChanIndexMasks=\"3\" Encodings=\"4\" SampleRates=\"44100,48000,96000,192000\"/>" +
+ "<InputDevInfo ChanCounts=\"2\" ChanPosMasks=\"12\" ChanIndexMasks=\"1,3\" Encodings=\"4\" SampleRates=\"44100,48000,96000,192000\"/>" +
"</PeripheralProfile>" +
"<PeripheralProfile ProfileName=\"Pixel USB-C Dongle + Wired Analog Headset\" ProfileDescription=\"Reference USB Dongle\" ProductName=\"USB-Audio - USB-C to 3.5mm-Headphone Adapte\">" +
"<OutputDevInfo ChanCounts=\"2\" ChanPosMasks=\"12\" ChanIndexMasks=\"3\" Encodings=\"4\" SampleRates=\"48000\" />" +
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/sensors/DeviceSuspendTestActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/sensors/DeviceSuspendTestActivity.java
index f688951..2d2aa94 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/sensors/DeviceSuspendTestActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/sensors/DeviceSuspendTestActivity.java
@@ -197,18 +197,9 @@
}
/**
- * Verify that each continuous sensor is using the correct
- * clock source (CLOCK_BOOTTIME) for timestamps.
+ * Verify that the device is able to suspend
*/
- public String testTimestampClockSource() throws Throwable {
- String string = null;
- boolean error_occurred = false;
- List<Sensor> sensorList = mSensorManager.getSensorList(Sensor.TYPE_ALL);
- if (sensorList == null) {
- throw new SensorTestStateNotSupportedException(
- "Sensors are not available in the system.");
- }
-
+ public void verifyDeviceCanSuspend() throws Throwable {
// Make sure clocks are different (i.e. kernel has suspended at least once)
// so that we can determine if sensors are using correct clocksource timestamp
final int MAX_SLEEP_ATTEMPTS = 10;
@@ -248,6 +239,22 @@
mDeviceSuspendLock.acquire();
}
mAlarmManager.cancel(mPendingIntent);
+ }
+
+ /**
+ * Verify that each continuous sensor is using the correct
+ * clock source (CLOCK_BOOTTIME) for timestamps.
+ */
+ public String testTimestampClockSource() throws Throwable {
+ String string = null;
+ boolean error_occurred = false;
+ List<Sensor> sensorList = mSensorManager.getSensorList(Sensor.TYPE_ALL);
+ if (sensorList == null) {
+ throw new SensorTestStateNotSupportedException(
+ "Sensors are not available in the system.");
+ }
+
+ boolean needToVerifySuspend = true;
for (Sensor sensor : sensorList) {
if (sensor.getReportingMode() != Sensor.REPORTING_MODE_CONTINUOUS) {
@@ -258,6 +265,12 @@
Log.i(TAG, "testTimestampClockSource skipping vendor specific sensor: '" + sensor.getName());
continue;
}
+
+ if (needToVerifySuspend) {
+ verifyDeviceCanSuspend();
+ needToVerifySuspend = false;
+ }
+
try {
string = runVerifySensorTimestampClockbase(sensor, false);
if (string != null) {
diff --git a/apps/VpnApp/api23/Android.mk b/apps/VpnApp/api23/Android.mk
old mode 100644
new mode 100755
index 9f3f2e7..e25cb91
--- a/apps/VpnApp/api23/Android.mk
+++ b/apps/VpnApp/api23/Android.mk
@@ -26,7 +26,8 @@
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/../res
-LOCAL_SDK_VERSION := current
+#LOCAL_SDK_VERSION := current
+LOCAL_PRIVATE_PLATFORM_APIS := true
# tag this module as a cts test artifact
LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
diff --git a/apps/VpnApp/api24/Android.mk b/apps/VpnApp/api24/Android.mk
old mode 100644
new mode 100755
index fc2761c..ec36333
--- a/apps/VpnApp/api24/Android.mk
+++ b/apps/VpnApp/api24/Android.mk
@@ -26,7 +26,8 @@
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/../res
-LOCAL_SDK_VERSION := current
+#LOCAL_SDK_VERSION := current
+LOCAL_PRIVATE_PLATFORM_APIS := true
# tag this module as a cts test artifact
LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
diff --git a/apps/VpnApp/latest/Android.mk b/apps/VpnApp/latest/Android.mk
old mode 100644
new mode 100755
index a8db2d2..0431bef
--- a/apps/VpnApp/latest/Android.mk
+++ b/apps/VpnApp/latest/Android.mk
@@ -26,7 +26,8 @@
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/../res
-LOCAL_SDK_VERSION := current
+#LOCAL_SDK_VERSION := current
+LOCAL_PRIVATE_PLATFORM_APIS := true
# tag this module as a cts test artifact
LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
diff --git a/apps/VpnApp/notalwayson/Android.mk b/apps/VpnApp/notalwayson/Android.mk
old mode 100644
new mode 100755
index cc1bfec..06731f8
--- a/apps/VpnApp/notalwayson/Android.mk
+++ b/apps/VpnApp/notalwayson/Android.mk
@@ -26,7 +26,8 @@
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/../res
-LOCAL_SDK_VERSION := current
+#LOCAL_SDK_VERSION := current
+LOCAL_PRIVATE_PLATFORM_APIS := true
# tag this module as a cts test artifact
LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
diff --git a/apps/VpnApp/src/com/android/cts/vpnfirewall/ReflectorVpnService.java b/apps/VpnApp/src/com/android/cts/vpnfirewall/ReflectorVpnService.java
old mode 100644
new mode 100755
index edd9de6..73afeaf
--- a/apps/VpnApp/src/com/android/cts/vpnfirewall/ReflectorVpnService.java
+++ b/apps/VpnApp/src/com/android/cts/vpnfirewall/ReflectorVpnService.java
@@ -29,6 +29,7 @@
import android.os.UserManager;
import android.text.TextUtils;
import android.util.Log;
+import android.os.SystemProperties;
import java.io.IOException;
import java.net.InetAddress;
@@ -142,6 +143,19 @@
}
}
+ if (allowedArray == null &&
+ (SystemProperties.getInt("persist.adb.tcp.port", -1) > -1
+ || SystemProperties.getInt("service.adb.tcp.port", -1) > -1)) {
+ try {
+ // If adb TCP port opened the test may be running by adb over network.
+ // Add com.android.shell application into blacklist to exclude adb socket
+ // for VPN tests.
+ builder.addDisallowedApplication("com.android.shell");
+ } catch(NameNotFoundException e) {
+ Log.w(TAG, "com.android.shell not found");
+ }
+ }
+
builder.setMtu(MTU);
builder.setBlocking(true);
builder.setSession(TAG);
diff --git a/hostsidetests/appsecurity/src/android/appsecurity/cts/EphemeralTest.java b/hostsidetests/appsecurity/src/android/appsecurity/cts/EphemeralTest.java
index fdd2f06..a833d73 100644
--- a/hostsidetests/appsecurity/src/android/appsecurity/cts/EphemeralTest.java
+++ b/hostsidetests/appsecurity/src/android/appsecurity/cts/EphemeralTest.java
@@ -30,9 +30,12 @@
import java.util.List;
import java.util.Map;
+import com.android.compatibility.common.util.CddTest;
+
/**
* Tests for ephemeral packages.
*/
+@CddTest(requirement="3.15/C-0-1,C-0-2,C-0-3,C-0-4")
public class EphemeralTest extends DeviceTestCase
implements IAbiReceiver, IBuildReceiver {
@@ -130,22 +133,27 @@
super.tearDown();
}
+ @CddTest(requirement="3.15/C-0-2,C-0-3")
public void testNormalQuery() throws Exception {
runDeviceTests(NORMAL_PKG, TEST_CLASS, "testQuery");
}
+ @CddTest(requirement="3.15/C-0-2,C-0-3")
public void testNormalStartNormal() throws Exception {
runDeviceTests(NORMAL_PKG, TEST_CLASS, "testStartNormal");
}
+ @CddTest(requirement="3.15/C-0-2/C-0-3")
public void testNormalStartEphemeral() throws Exception {
runDeviceTests(NORMAL_PKG, TEST_CLASS, "testStartEphemeral");
}
+ @CddTest(requirement="3.15/C-0-2,C-0-3")
public void testEphemeralQuery() throws Exception {
runDeviceTests(EPHEMERAL_1_PKG, TEST_CLASS, "testQuery");
}
+ @CddTest(requirement="3.15/C-0-2,C-0-3")
public void testEphemeralStartNormal() throws Exception {
runDeviceTests(EPHEMERAL_1_PKG, TEST_CLASS, "testStartNormal");
}
@@ -153,41 +161,62 @@
// each connection to an exposed component needs to run in its own test to
// avoid sharing state. once an instant app is exposed to a component, it's
// exposed until the device restarts or the instant app is removed.
+ @CddTest(requirement="3.15/C-0-2,C-0-3")
public void testEphemeralStartExposed01() throws Exception {
runDeviceTests(EPHEMERAL_1_PKG, TEST_CLASS, "testStartExposed01");
}
+
+ @CddTest(requirement="3.15/C-0-2,C-0-3")
public void testEphemeralStartExposed02() throws Exception {
runDeviceTests(EPHEMERAL_1_PKG, TEST_CLASS, "testStartExposed02");
}
+
+ @CddTest(requirement="3.15/C-0-2,C-0-3")
public void testEphemeralStartExposed03() throws Exception {
runDeviceTests(EPHEMERAL_1_PKG, TEST_CLASS, "testStartExposed03");
}
+
+ @CddTest(requirement="3.15/C-0-2,C-0-3")
public void testEphemeralStartExposed04() throws Exception {
runDeviceTests(EPHEMERAL_1_PKG, TEST_CLASS, "testStartExposed04");
}
+
+ @CddTest(requirement="3.15/C-0-2,C-0-3")
public void testEphemeralStartExposed05() throws Exception {
runDeviceTests(EPHEMERAL_1_PKG, TEST_CLASS, "testStartExposed05");
}
+
+ @CddTest(requirement="C-0-2,C-0-3")
public void testEphemeralStartExposed06() throws Exception {
runDeviceTests(EPHEMERAL_1_PKG, TEST_CLASS, "testStartExposed06");
}
+
+ @CddTest(requirement="C-0-2,C-0-3")
public void testEphemeralStartExposed07() throws Exception {
runDeviceTests(EPHEMERAL_1_PKG, TEST_CLASS, "testStartExposed07");
}
+
+ @CddTest(requirement="C-0-2,C-0-3")
public void testEphemeralStartExposed08() throws Exception {
runDeviceTests(EPHEMERAL_1_PKG, TEST_CLASS, "testStartExposed08");
}
+
+ @CddTest(requirement="C-0-2,C-0-3")
public void testEphemeralStartExposed09() throws Exception {
runDeviceTests(EPHEMERAL_1_PKG, TEST_CLASS, "testStartExposed09");
}
+
+ @CddTest(requirement="C-0-2,C-0-3")
public void testEphemeralStartExposed10() throws Exception {
runDeviceTests(EPHEMERAL_1_PKG, TEST_CLASS, "testStartExposed10");
}
+ @CddTest(requirement="3.15/C-0-2,C-0-3")
public void testEphemeralStartEphemeral() throws Exception {
runDeviceTests(EPHEMERAL_1_PKG, TEST_CLASS, "testStartEphemeral");
}
+ @CddTest(requirement="3.15/C-0-3")
public void testExposedSystemActivities() throws Exception {
for (Map<String, String> testArgs : EXPECTED_EXPOSED_INTENTS) {
final boolean exposed = isIntentExposed(testArgs);
@@ -203,6 +232,7 @@
runDeviceTests(EPHEMERAL_1_PKG, TEST_CLASS, "testBuildSerialUnknown");
}
+ @CddTest(requirement="3.15/C-0-4")
public void testPackageInfo() throws Exception {
runDeviceTests(EPHEMERAL_1_PKG, TEST_CLASS, "testPackageInfo");
}
@@ -211,10 +241,12 @@
runDeviceTests(EPHEMERAL_1_PKG, WEBVIEW_TEST_CLASS, "testWebViewLoads");
}
+ @CddTest(requirement="3.15/C-0-1")
public void testInstallPermissionNotGranted() throws Exception {
runDeviceTests(EPHEMERAL_1_PKG, TEST_CLASS, "testInstallPermissionNotGranted");
}
+ @CddTest(requirement="3.15/C-0-1")
public void testInstallPermissionGranted() throws Exception {
runDeviceTests(EPHEMERAL_1_PKG, TEST_CLASS, "testInstallPermissionGranted");
}
diff --git a/hostsidetests/appsecurity/test-apps/UsePermissionDiffCert/src/com/android/cts/usespermissiondiffcertapp/AccessPermissionWithDiffSigTest.java b/hostsidetests/appsecurity/test-apps/UsePermissionDiffCert/src/com/android/cts/usespermissiondiffcertapp/AccessPermissionWithDiffSigTest.java
index 0e56901..f2cbc6c 100644
--- a/hostsidetests/appsecurity/test-apps/UsePermissionDiffCert/src/com/android/cts/usespermissiondiffcertapp/AccessPermissionWithDiffSigTest.java
+++ b/hostsidetests/appsecurity/test-apps/UsePermissionDiffCert/src/com/android/cts/usespermissiondiffcertapp/AccessPermissionWithDiffSigTest.java
@@ -114,6 +114,16 @@
}
}
+ private void assertContentUriAllowed(Uri uri) {
+ assertReadingContentUriAllowed(uri);
+ assertWritingContentUriAllowed(uri);
+ }
+
+ private void assertContentUriNotAllowed(Uri uri, String msg) {
+ assertReadingContentUriNotAllowed(uri, msg);
+ assertWritingContentUriNotAllowed(uri, msg);
+ }
+
private void assertWritingContentUriNotAllowed(Uri uri, String msg) {
final ContentResolver resolver = getContext().getContentResolver();
try {
@@ -1197,6 +1207,26 @@
}
/**
+ * Test that shady {@link Uri} are blocked by {@code path-permission}.
+ */
+ public void testRestrictingProviderMatchingShadyPaths() {
+ assertContentUriAllowed(
+ Uri.parse("content://ctspermissionwithsignaturepathrestricting/"));
+ assertContentUriAllowed(
+ Uri.parse("content://ctspermissionwithsignaturepathrestricting//"));
+ assertContentUriAllowed(
+ Uri.parse("content://ctspermissionwithsignaturepathrestricting///"));
+ assertContentUriNotAllowed(
+ Uri.parse("content://ctspermissionwithsignaturepathrestricting/foo"), null);
+ assertContentUriNotAllowed(
+ Uri.parse("content://ctspermissionwithsignaturepathrestricting//foo"), null);
+ assertContentUriNotAllowed(
+ Uri.parse("content://ctspermissionwithsignaturepathrestricting///foo"), null);
+ assertContentUriNotAllowed(
+ Uri.parse("content://ctspermissionwithsignaturepathrestricting/foo//baz"), null);
+ }
+
+ /**
* Verify that at least one {@code path-permission} rule will grant access,
* even if the caller doesn't hold another matching {@code path-permission}.
*/
diff --git a/hostsidetests/incident/src/com/android/server/cts/BatteryIncidentTest.java b/hostsidetests/incident/src/com/android/server/cts/BatteryIncidentTest.java
index b04b2f3..668c826 100644
--- a/hostsidetests/incident/src/com/android/server/cts/BatteryIncidentTest.java
+++ b/hostsidetests/incident/src/com/android/server/cts/BatteryIncidentTest.java
@@ -48,7 +48,7 @@
assertTrue(scale > 0);
int level = dump.getLevel();
assertTrue(level >= 0 && level <= scale);
- assertTrue(dump.getVoltage() > 0);
+ assertTrue(dump.getVoltage() >= 0);
assertTrue(dump.getTemperature() > 0);
}
diff --git a/hostsidetests/securitybulletin/src/android/security/cts/Poc17_01.java b/hostsidetests/securitybulletin/src/android/security/cts/Poc17_01.java
index 3446507..aba9ed0 100644
--- a/hostsidetests/securitybulletin/src/android/security/cts/Poc17_01.java
+++ b/hostsidetests/securitybulletin/src/android/security/cts/Poc17_01.java
@@ -124,14 +124,4 @@
assertTrue(!result.equals("Vulnerable"));
}
}
-
- /**
- * b/32659848
- */
- @SecurityTest
- public void testPoc32659848() throws Exception {
- String command =
- "echo 18014398509481980 > /sys/kernel/debug/tracing/buffer_size_kb";
- AdbUtils.runCommandLine(command, getDevice());
- }
}
diff --git a/tests/autofillservice/res/layout/login_activity.xml b/tests/autofillservice/res/layout/login_activity.xml
index 5cf0efd..8765882 100644
--- a/tests/autofillservice/res/layout/login_activity.xml
+++ b/tests/autofillservice/res/layout/login_activity.xml
@@ -77,24 +77,28 @@
android:id="@+id/clear"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
+ android:layout_weight="1"
android:text="Clear" />
<Button
android:id="@+id/save"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
+ android:layout_weight="1"
android:text="Save" />
<Button
android:id="@+id/login"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
+ android:layout_weight="1"
android:text="Login" />
<Button
android:id="@+id/cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
+ android:layout_weight="1"
android:text="Cancel" />
</LinearLayout>
@@ -103,4 +107,4 @@
android:layout_width="match_parent"
android:layout_height="wrap_content" />
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/tests/camera/utils/src/android/hardware/camera2/cts/CameraTestUtils.java b/tests/camera/utils/src/android/hardware/camera2/cts/CameraTestUtils.java
index aad5fd8..1679195 100644
--- a/tests/camera/utils/src/android/hardware/camera2/cts/CameraTestUtils.java
+++ b/tests/camera/utils/src/android/hardware/camera2/cts/CameraTestUtils.java
@@ -1566,9 +1566,9 @@
private static void validateRawPrivateData(byte[] rawData, int width, int height,
long ts, String filePath) {
if (VERBOSE) Log.v(TAG, "Validating private raw data");
- // Expect each RAW pixel should occupy at least one byte and no more than 2.5 bytes
+ // Expect each RAW pixel should occupy at least one byte and no more than 30 bytes
int expectedSizeMin = width * height;
- int expectedSizeMax = width * height * 5 / 2;
+ int expectedSizeMax = width * height * 30;
assertTrue("Opaque RAW size " + rawData.length + "out of normal bound [" +
expectedSizeMin + "," + expectedSizeMax + "]",
diff --git a/tests/tests/graphics/src/android/graphics/cts/BitmapFactoryTest.java b/tests/tests/graphics/src/android/graphics/cts/BitmapFactoryTest.java
index 40675853..29ecb64 100644
--- a/tests/tests/graphics/src/android/graphics/cts/BitmapFactoryTest.java
+++ b/tests/tests/graphics/src/android/graphics/cts/BitmapFactoryTest.java
@@ -57,6 +57,9 @@
import java.io.RandomAccessFile;
import java.util.concurrent.CountDownLatch;
+import com.android.compatibility.common.util.CddTest;
+
+@CddTest(requirement="5.1.5/C-0-1,C-0-2,C-0-3,C-0-4,C-0-5")
@SmallTest
@RunWith(AndroidJUnit4.class)
public class BitmapFactoryTest {
diff --git a/tests/tests/location/src/android/location/cts/TestMeasurementUtil.java b/tests/tests/location/src/android/location/cts/TestMeasurementUtil.java
index a89321f..4b63b1a 100644
--- a/tests/tests/location/src/android/location/cts/TestMeasurementUtil.java
+++ b/tests/tests/location/src/android/location/cts/TestMeasurementUtil.java
@@ -371,17 +371,17 @@
softAssert.assertTrue("svid: Space Vehicle ID. Constellation type " +
"= CONSTELLATION_BEIDOU",
timeInNs,
- "1 <= X <= 36",
+ "1 <= X <= 63",
svidValue,
- svid >= 1 && svid <= 36);
+ svid >= 1 && svid <= 63);
break;
case GnssStatus.CONSTELLATION_GALILEO:
softAssert.assertTrue("svid: Space Vehicle ID. Constellation type " +
"= CONSTELLATION_GALILEO",
timeInNs,
- "1 <= X <= 37",
+ "1 <= X <= 36",
String.valueOf(svid),
- svid >= 1 && svid <= 37);
+ svid >= 1 && svid <= 36);
break;
default:
// Explicit fail if did not receive valid constellation type.
diff --git a/tests/tests/security/res/raw/bug_64710074.mp4 b/tests/tests/security/res/raw/bug_64710074.mp4
deleted file mode 100644
index 5544ffe..0000000
--- a/tests/tests/security/res/raw/bug_64710074.mp4
+++ /dev/null
Binary files differ
diff --git a/tests/tests/security/res/raw/bug_65484460.mp4 b/tests/tests/security/res/raw/bug_65484460.mp4
deleted file mode 100644
index 13b37e9..0000000
--- a/tests/tests/security/res/raw/bug_65484460.mp4
+++ /dev/null
Binary files differ
diff --git a/tests/tests/security/src/android/security/cts/StagefrightTest.java b/tests/tests/security/src/android/security/cts/StagefrightTest.java
index 69266c7..1192e30 100644
--- a/tests/tests/security/src/android/security/cts/StagefrightTest.java
+++ b/tests/tests/security/src/android/security/cts/StagefrightTest.java
@@ -75,11 +75,6 @@
***********************************************************/
@SecurityTest
- public void testStagefright_bug_64710074() throws Exception {
- doStagefrightTest(R.raw.bug_64710074);
- }
-
- @SecurityTest
public void testStagefright_cve_2017_0643() throws Exception {
doStagefrightTest(R.raw.cve_2017_0643);
}
@@ -461,11 +456,6 @@
doStagefrightTest(R.raw.bug_37093318, (4 * 60 * 1000));
}
- @SecurityTest
- public void testStagefright_bug_65484460() throws Exception {
- doStagefrightTest(R.raw.bug_65484460);
- }
-
private void doStagefrightTest(final int rid) throws Exception {
doStagefrightTestMediaPlayer(rid);
doStagefrightTestMediaCodec(rid);
diff --git a/tests/tests/webkit/src/android/webkit/cts/TestHtmlConstants.java b/tests/tests/webkit/src/android/webkit/cts/TestHtmlConstants.java
index 2996c76..68d944b 100644
--- a/tests/tests/webkit/src/android/webkit/cts/TestHtmlConstants.java
+++ b/tests/tests/webkit/src/android/webkit/cts/TestHtmlConstants.java
@@ -69,7 +69,6 @@
public static final String STOP_LOADING_URL = "webkit/test_stop_loading.html";
public static final String BLANK_TAG_URL = "webkit/blank_tag.html";
public static final String PAGE_WITH_LINK_URL = "webkit/page_with_link.html";
- public static final String URL_IN_PAGE_WITH_LINK = "http://foo.com/";
// Not a real page, just triggers a 404 response.
public static final String NON_EXISTENT_PAGE_URL = "webkit/generate_404.html";
public static final String BAD_IMAGE_PAGE_URL = "webkit/test_bad_image_url.html";
diff --git a/tests/tests/webkit/src/android/webkit/cts/WebViewClientTest.java b/tests/tests/webkit/src/android/webkit/cts/WebViewClientTest.java
index 3ce66ac..523b90d 100644
--- a/tests/tests/webkit/src/android/webkit/cts/WebViewClientTest.java
+++ b/tests/tests/webkit/src/android/webkit/cts/WebViewClientTest.java
@@ -137,7 +137,6 @@
final WebView childWebView = mOnUiThread.createWebView();
- WebViewOnUiThread childWebViewOnUiThread = new WebViewOnUiThread(this, childWebView);
mOnUiThread.setWebChromeClient(new WebChromeClient() {
@Override
public boolean onCreateWindow(
@@ -153,26 +152,28 @@
return true;
}
});
- {
- final int childCallCount = childWebViewClient.getShouldOverrideUrlLoadingCallCount();
- mOnUiThread.loadUrl(mWebServer.getAssetUrl(TestHtmlConstants.BLANK_TAG_URL));
+ final int childCallCount = childWebViewClient.getShouldOverrideUrlLoadingCallCount();
+ mOnUiThread.loadUrl(mWebServer.getAssetUrl(TestHtmlConstants.BLANK_TAG_URL));
- new PollingCheck(TEST_TIMEOUT) {
- @Override
- protected boolean check() {
- return childWebViewClient.hasOnPageFinishedCalled();
- }
- }.run();
- new PollingCheck(TEST_TIMEOUT) {
- @Override
- protected boolean check() {
- return childWebViewClient.getShouldOverrideUrlLoadingCallCount() > childCallCount;
- }
- }.run();
- assertEquals(mWebServer.getAssetUrl(TestHtmlConstants.PAGE_WITH_LINK_URL),
- childWebViewClient.getLastShouldOverrideUrl());
- }
+ new PollingCheck(TEST_TIMEOUT) {
+ @Override
+ protected boolean check() {
+ return childWebViewClient.hasOnPageFinishedCalled();
+ }
+ }.run();
+ new PollingCheck(TEST_TIMEOUT) {
+ @Override
+ protected boolean check() {
+ return childWebViewClient.getShouldOverrideUrlLoadingCallCount() > childCallCount;
+ }
+ }.run();
+ assertEquals(mWebServer.getAssetUrl(TestHtmlConstants.PAGE_WITH_LINK_URL),
+ childWebViewClient.getLastShouldOverrideUrl());
+ // Now test a navigation within the page
+ //TODO(hush) Enable this portion when b/12804986 is fixed.
+ /*
+ WebViewOnUiThread childWebViewOnUiThread = new WebViewOnUiThread(this, childWebView);
final int childCallCount = childWebViewClient.getShouldOverrideUrlLoadingCallCount();
final int mainCallCount = mainWebViewClient.getShouldOverrideUrlLoadingCallCount();
clickOnLinkUsingJs("link", childWebViewOnUiThread);
@@ -183,8 +184,8 @@
}
}.run();
assertEquals(mainCallCount, mainWebViewClient.getShouldOverrideUrlLoadingCallCount());
- assertEquals(
- TestHtmlConstants.URL_IN_PAGE_WITH_LINK, childWebViewClient.getLastShouldOverrideUrl());
+ assertEquals(TEST_URL, childWebViewClient.getLastShouldOverrideUrl());
+ */
}
private void clickOnLinkUsingJs(final String linkId, WebViewOnUiThread webViewOnUiThread) {