Merge "DO NOT MERGE: CDD Annotation for Section 7.9" into oreo-mr1-cts-dev
diff --git a/apps/CameraITS/tests/scene5/test_lens_shading_and_color_uniformity.py b/apps/CameraITS/tests/scene5/test_lens_shading_and_color_uniformity.py
index f7f2003..95fc543 100644
--- a/apps/CameraITS/tests/scene5/test_lens_shading_and_color_uniformity.py
+++ b/apps/CameraITS/tests/scene5/test_lens_shading_and_color_uniformity.py
@@ -45,7 +45,7 @@
THRES_LS_CN = 0.6 # len shading allowance for corner
THRES_LS_HIGH = 0.2 # max allowed percentage for a patch to be brighter
# than center
- THRES_UFMT = 0.1 # uniformity allowance
+ THRES_UFMT = 0.2 # uniformity allowance
# Drawing color
RED = (1, 0, 0) # blocks failed the test
GREEN = (0, 0.7, 0.3) # blocks passed the test
diff --git a/apps/CtsVerifier/res/layout/intent_driven_test.xml b/apps/CtsVerifier/res/layout/intent_driven_test.xml
index 794a6d6..4386392 100644
--- a/apps/CtsVerifier/res/layout/intent_driven_test.xml
+++ b/apps/CtsVerifier/res/layout/intent_driven_test.xml
@@ -9,7 +9,7 @@
<ScrollView
android:layout_width="match_parent"
android:layout_height="0dp"
- android:layout_weight="1">
+ android:layout_weight="3">
<TextView android:id="@+id/info"
android:layout_width="match_parent"
android:layout_height="wrap_content"
@@ -18,15 +18,16 @@
android:text="@string/dc_start_alarm_test_info"/>
</ScrollView>
- <LinearLayout android:id="@+id/buttons"
- android:orientation="horizontal"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"/>
-
- <LinearLayout
+ <ScrollView
android:layout_width="match_parent"
- android:layout_height="wrap_content">
+ android:layout_height="0dp"
+ android:layout_weight="2">
- <include layout="@layout/pass_fail_buttons"/>
- </LinearLayout>
+ <LinearLayout
+ android:id="@+id/buttons"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"/>
+ </ScrollView>
+ <include layout="@layout/pass_fail_buttons"/>
</LinearLayout>
diff --git a/apps/CtsVerifier/res/layout/provisioning_byod.xml b/apps/CtsVerifier/res/layout/provisioning_byod.xml
index 227d8d8..444bead 100644
--- a/apps/CtsVerifier/res/layout/provisioning_byod.xml
+++ b/apps/CtsVerifier/res/layout/provisioning_byod.xml
@@ -15,7 +15,7 @@
android:orientation="vertical">
<ScrollView
android:layout_width="match_parent"
- android:layout_height="wrap_content"
+ android:layout_height="0dp"
android:layout_weight="2">
<TextView
android:id="@+id/test_instructions"
@@ -26,12 +26,12 @@
</ScrollView>
<Button
android:id="@+id/prepare_test_button"
- android:layout_width="204dip"
+ android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<ListView
android:id="@+id/android:list"
android:layout_width="match_parent"
- android:layout_height="wrap_content"
+ android:layout_height="0dp"
android:layout_weight="3"/>
<include layout="@layout/pass_fail_buttons"/>
</LinearLayout>
diff --git a/apps/CtsVerifier/res/layout/voicemail_hide_in_call_settings.xml b/apps/CtsVerifier/res/layout/voicemail_hide_in_call_settings.xml
index 4d7803b..cf1cc7c 100644
--- a/apps/CtsVerifier/res/layout/voicemail_hide_in_call_settings.xml
+++ b/apps/CtsVerifier/res/layout/voicemail_hide_in_call_settings.xml
@@ -68,23 +68,25 @@
android:layout_height="wrap_content"
android:text="@string/open_call_settings"/>
- <LinearLayout
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginTop="@dimen/js_padding"
- android:layout_marginBottom="@dimen/js_padding">
- <Button
- android:id="@+id/settings_hidden"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/voicemail_hidden"/>
- <Button
- android:id="@+id/settings_not_hidden"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/voicemail_not_hidden"
- />
- </LinearLayout>
+ <LinearLayout
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="@dimen/js_padding"
+ android:layout_marginBottom="@dimen/js_padding"
+ android:orientation="vertical">
+
+ <Button
+ android:id="@+id/settings_hidden"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/voicemail_hidden"/>
+
+ <Button
+ android:id="@+id/settings_not_hidden"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/voicemail_not_hidden"/>
+ </LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
diff --git a/apps/CtsVerifier/res/layout/voicemail_hide_ringtone_settings.xml b/apps/CtsVerifier/res/layout/voicemail_hide_ringtone_settings.xml
index 9ccd909..47cd2f6 100644
--- a/apps/CtsVerifier/res/layout/voicemail_hide_ringtone_settings.xml
+++ b/apps/CtsVerifier/res/layout/voicemail_hide_ringtone_settings.xml
@@ -45,23 +45,25 @@
android:layout_height="wrap_content"
android:text="@string/open_voicemail_settings"/>
- <LinearLayout
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginTop="@dimen/js_padding"
- android:layout_marginBottom="@dimen/js_padding">
- <Button
- android:id="@+id/settings_hidden"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/ringtone_hidden"/>
- <Button
- android:id="@+id/settings_not_hidden"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/ringtone_not_hidden"
- />
- </LinearLayout>
+ <LinearLayout
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="@dimen/js_padding"
+ android:layout_marginBottom="@dimen/js_padding"
+ android:orientation="vertical">
+
+ <Button
+ android:id="@+id/settings_hidden"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/ringtone_hidden"/>
+
+ <Button
+ android:id="@+id/settings_not_hidden"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/ringtone_not_hidden"/>
+ </LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
diff --git a/apps/CtsVerifier/res/values/strings.xml b/apps/CtsVerifier/res/values/strings.xml
index 48e03b9..8286f1b 100755
--- a/apps/CtsVerifier/res/values/strings.xml
+++ b/apps/CtsVerifier/res/values/strings.xml
@@ -1896,7 +1896,8 @@
This test verifies that if a work profile is locked with a separate password, Recents views
for applications in the work profile are redacted.\n
Some devices may not lock as soon as the screen is turned off by default. On such devices,
- use the button below when requested to lock the work profile.
+ use the button below when requested to lock the work profile. Please skip these tests if
+ "Recents" is absent.
</string>
<string name="provisioning_byod_recents_lock_now">Lock now</string>
@@ -2565,7 +2566,9 @@
Please do the following:\n
1) Open and fully expand Quick Settings.\n
2) Verify that at the bottom of Quick Settings, you are not told the device is managed.\n
- 3) Close Quick Settings.
+ 3) Close Quick Settings.\n
+ \n
+ If this device does not have quick settings, please skip this test and mark it passing
</string>
<string name="enterprise_privacy_keyguard_negative">Keyguard disclosure</string>
<string name="enterprise_privacy_keyguard_negative_info">
@@ -3303,7 +3306,7 @@
10) Tap the \"Learn more\" link.\n
11) Verify that a screen informing you what your managing organization can do is shown.\n
\n
- Use the Back button to return to this page.
+ Use the Back button to return to this page. If this device does not have quick settings, please skip this test and mark it passing.
</string>
<string name="enterprise_privacy_keyguard">Keyguard disclosure</string>
<string name="enterprise_privacy_keyguard_info">
@@ -3351,6 +3354,8 @@
9) Close the dialog.\n
10) Tap the right button below to disable network logging.\n
11) Verify that the notification disappeared.\n
+ \n
+ If this device does not have quick settings, please skip this test and mark it passing.
</string>
<string name="device_owner_enable_network_logging_button">Enable Network Logging</string>
<string name="device_owner_disable_network_logging_button">Disable Network Logging</string>
diff --git a/hostsidetests/appsecurity/Android.mk b/hostsidetests/appsecurity/Android.mk
index 0ef5da3..2a8c819 100644
--- a/hostsidetests/appsecurity/Android.mk
+++ b/hostsidetests/appsecurity/Android.mk
@@ -32,7 +32,8 @@
LOCAL_REQUIRED_MODULES := \
CtsCorruptApkTests_b71360999 \
- CtsCorruptApkTests_b71361168
+ CtsCorruptApkTests_b71361168 \
+ CtsCorruptApkTests_b79488511
include $(BUILD_CTS_HOST_JAVA_LIBRARY)
diff --git a/hostsidetests/appsecurity/src/android/appsecurity/cts/CorruptApkTests.java b/hostsidetests/appsecurity/src/android/appsecurity/cts/CorruptApkTests.java
index bcf67b0..933b395 100644
--- a/hostsidetests/appsecurity/src/android/appsecurity/cts/CorruptApkTests.java
+++ b/hostsidetests/appsecurity/src/android/appsecurity/cts/CorruptApkTests.java
@@ -34,7 +34,8 @@
*/
public class CorruptApkTests extends DeviceTestCase implements IBuildReceiver {
private final String B71360999_PKG = "com.android.appsecurity.b71360999";
- private final String B71361168_PKG = "com.example.helloworld";
+ private final String B71361168_PKG = "com.android.appsecurity.b71361168";
+ private final String B79488511_PKG = "com.android.appsecurity.b79488511";
private IBuildInfo mBuildInfo;
@@ -49,6 +50,7 @@
super.setUp();
uninstall(B71360999_PKG);
uninstall(B71361168_PKG);
+ uninstall(B79488511_PKG);
}
@After
@@ -57,6 +59,7 @@
super.tearDown();
uninstall(B71360999_PKG);
uninstall(B71361168_PKG);
+ uninstall(B79488511_PKG);
}
/** Uninstall the apk if the test failed previously. */
@@ -72,7 +75,7 @@
*/
public void testFailToInstallCorruptStringPoolHeader_b71360999() throws Exception {
final String APK_PATH = "CtsCorruptApkTests_b71360999.apk";
- assertFailsToInstall(APK_PATH, B71360999_PKG);
+ assertInstallNoFatalError(APK_PATH, B71360999_PKG);
}
/**
@@ -80,24 +83,34 @@
*/
public void testFailToInstallCorruptStringPoolHeader_b71361168() throws Exception {
final String APK_PATH = "CtsCorruptApkTests_b71361168.apk";
- assertFailsToInstall(APK_PATH, B71361168_PKG);
+ assertInstallNoFatalError(APK_PATH, B71361168_PKG);
}
/**
- * Assert that the app fails to install and the reason for failing is not caused by a buffer
- * overflow nor a out of bounds read.
+ * Tests that apks described in b/79488511 do not install successfully.
+ */
+ public void testFailToInstallCorruptStringPoolHeader_b79488511() throws Exception {
+ final String APK_PATH = "CtsCorruptApkTests_b79488511.apk";
+ assertInstallNoFatalError(APK_PATH, B79488511_PKG);
+ }
+
+ /**
+ * Assert that installing the app does not cause a native error caused by a buffer overflow
+ * or an out-of-bounds read.
**/
- private void assertFailsToInstall(String filename, String pkg) throws Exception {
+ private void assertInstallNoFatalError(String filename, String pkg) throws Exception {
ITestDevice device = getDevice();
device.clearLogcat();
-
final String result = device.installPackage(
new CompatibilityBuildHelper(mBuildInfo).getTestFile(filename),
true /*reinstall*/);
- assertNotNull(result);
- assertFalse(result.isEmpty());
- assertFalse(device.getInstalledPackageNames().contains(pkg));
+ // Starting from P, corrupt apks should always fail to install
+ if (device.getApiLevel() >= 28) {
+ assertNotNull(result);
+ assertFalse(result.isEmpty());
+ assertFalse(device.getInstalledPackageNames().contains(pkg));
+ }
// This catches if the device fails to install the app because a segmentation fault
// or out of bounds read created by the bug occurs
diff --git a/hostsidetests/appsecurity/src/android/appsecurity/cts/DirectBootHostTest.java b/hostsidetests/appsecurity/src/android/appsecurity/cts/DirectBootHostTest.java
index 2174fa0..ddec487 100644
--- a/hostsidetests/appsecurity/src/android/appsecurity/cts/DirectBootHostTest.java
+++ b/hostsidetests/appsecurity/src/android/appsecurity/cts/DirectBootHostTest.java
@@ -175,7 +175,7 @@
doTest = false;
}
getDevice().waitForDeviceNotAvailable(SHUTDOWN_TIME_MS);
- getDevice().waitForDeviceOnline();
+ getDevice().waitForDeviceOnline(120000);
} else {
getDevice().rebootUntilOnline();
}
diff --git a/hostsidetests/appsecurity/test-apps/CorruptApkTests/Android.mk b/hostsidetests/appsecurity/test-apps/CorruptApkTests/Android.mk
index feaaa03..9fd8b98 100644
--- a/hostsidetests/appsecurity/test-apps/CorruptApkTests/Android.mk
+++ b/hostsidetests/appsecurity/test-apps/CorruptApkTests/Android.mk
@@ -28,4 +28,12 @@
LOCAL_SRC_FILES := b71361168.apk
LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
LOCAL_CERTIFICATE := PRESIGNED
+include $(BUILD_PREBUILT)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := CtsCorruptApkTests_b79488511
+LOCAL_MODULE_CLASS := APPS
+LOCAL_SRC_FILES := b79488511.apk
+LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
+LOCAL_CERTIFICATE := PRESIGNED
include $(BUILD_PREBUILT)
\ No newline at end of file
diff --git a/hostsidetests/appsecurity/test-apps/CorruptApkTests/b71361168.apk b/hostsidetests/appsecurity/test-apps/CorruptApkTests/b71361168.apk
index ef1e2bf..dc00656 100644
--- a/hostsidetests/appsecurity/test-apps/CorruptApkTests/b71361168.apk
+++ b/hostsidetests/appsecurity/test-apps/CorruptApkTests/b71361168.apk
Binary files differ
diff --git a/hostsidetests/appsecurity/test-apps/CorruptApkTests/b79488511.apk b/hostsidetests/appsecurity/test-apps/CorruptApkTests/b79488511.apk
new file mode 100644
index 0000000..22af499
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/CorruptApkTests/b79488511.apk
Binary files differ
diff --git a/hostsidetests/incident/src/com/android/server/cts/BatteryStatsValidationTest.java b/hostsidetests/incident/src/com/android/server/cts/BatteryStatsValidationTest.java
index 153d552..8a82416 100644
--- a/hostsidetests/incident/src/com/android/server/cts/BatteryStatsValidationTest.java
+++ b/hostsidetests/incident/src/com/android/server/cts/BatteryStatsValidationTest.java
@@ -179,9 +179,11 @@
startSimpleActivity();
assertValueRange("st", "", STATE_TIME_FOREGROUND_SERVICE_INDEX, 0,
0); // No foreground service time before test
+ final long startTime = System.nanoTime();
runDeviceTests(DEVICE_SIDE_TEST_PACKAGE, ".BatteryStatsProcessStateTests",
"testForegroundService");
- assertValueRange("st", "", STATE_TIME_FOREGROUND_SERVICE_INDEX, (long) (2000 * 0.8), 4000);
+ assertValueRange("st", "", STATE_TIME_FOREGROUND_SERVICE_INDEX, (long) (2000 * 0.8),
+ (System.nanoTime() - startTime) / 1000000);
batteryOffScreenOn();
}
diff --git a/tests/autofillservice/src/android/autofillservice/cts/CustomDescriptionWithLinkTestCase.java b/tests/autofillservice/src/android/autofillservice/cts/CustomDescriptionWithLinkTestCase.java
index ee38a29..e74e75a 100644
--- a/tests/autofillservice/src/android/autofillservice/cts/CustomDescriptionWithLinkTestCase.java
+++ b/tests/autofillservice/src/android/autofillservice/cts/CustomDescriptionWithLinkTestCase.java
@@ -15,8 +15,6 @@
*/
package android.autofillservice.cts;
-import static android.autofillservice.cts.Helper.runShellCommand;
-
import static com.google.common.truth.Truth.assertThat;
import android.app.Activity;
@@ -64,16 +62,10 @@
*/
@Test
public final void testTapLink_changeOrientationThenTapBack() throws Exception {
-
- // If the screen is too small and the devices shows an IME,
- // it might not have space for all UI elements after the
- // device is rotated to landscape.
- sUiBot.assumeMinimumResolution(500);
+ sUiBot.setScreenResolution();
sUiBot.setScreenOrientation(UiBot.PORTRAIT);
try {
- runShellCommand("wm size 1080x1920");
- runShellCommand("wm density 420");
saveUiRestoredAfterTappingLinkTest(
PostSaveLinkTappedAction.ROTATE_THEN_TAP_BACK_BUTTON);
} finally {
@@ -81,8 +73,7 @@
try {
cleanUpAfterScreenOrientationIsBackToPortrait();
} finally {
- runShellCommand("wm density reset");
- runShellCommand("wm size reset");
+ sUiBot.resetScreenResolution();
}
}
}
diff --git a/tests/autofillservice/src/android/autofillservice/cts/SessionLifecycleTest.java b/tests/autofillservice/src/android/autofillservice/cts/SessionLifecycleTest.java
index bd26426..923b471 100644
--- a/tests/autofillservice/src/android/autofillservice/cts/SessionLifecycleTest.java
+++ b/tests/autofillservice/src/android/autofillservice/cts/SessionLifecycleTest.java
@@ -94,110 +94,116 @@
// Set service.
enableService();
- // Start activity that is autofilled in a separate process so it can be killed
- Intent outOfProcessAcvitityStartIntent = new Intent(getContext(),
- OutOfProcessLoginActivity.class);
- getContext().startActivity(outOfProcessAcvitityStartIntent);
+ sUiBot.setScreenResolution();
- // Set expectations.
- final Bundle extras = new Bundle();
- extras.putString("numbers", "4815162342");
+ try {
+ // Start activity that is autofilled in a separate process so it can be killed
+ Intent outOfProcessAcvitityStartIntent = new Intent(getContext(),
+ OutOfProcessLoginActivity.class);
+ getContext().startActivity(outOfProcessAcvitityStartIntent);
- // Create the authentication intent (launching a full screen activity)
- IntentSender authentication = PendingIntent.getActivity(getContext(), 0,
- new Intent(getContext(), ManualAuthenticationActivity.class),
- 0).getIntentSender();
+ // Set expectations.
+ final Bundle extras = new Bundle();
+ extras.putString("numbers", "4815162342");
- // Prepare the authenticated response
- ManualAuthenticationActivity.setResponse(new CannedFillResponse.Builder()
- .addDataset(new CannedFillResponse.CannedDataset.Builder()
- .setField(ID_USERNAME, AutofillValue.forText("autofilled username"))
- .setPresentation(createPresentation("dataset")).build())
- .setRequiredSavableIds(SAVE_DATA_TYPE_PASSWORD, ID_USERNAME, ID_PASSWORD)
- .setExtras(extras).build());
+ // Create the authentication intent (launching a full screen activity)
+ IntentSender authentication = PendingIntent.getActivity(getContext(), 0,
+ new Intent(getContext(), ManualAuthenticationActivity.class),
+ 0).getIntentSender();
- CannedFillResponse response = new CannedFillResponse.Builder()
- .setAuthentication(authentication, ID_USERNAME, ID_PASSWORD)
- .setPresentation(createPresentation("authenticate"))
- .build();
- sReplier.addResponse(response);
+ // Prepare the authenticated response
+ ManualAuthenticationActivity.setResponse(new CannedFillResponse.Builder()
+ .addDataset(new CannedFillResponse.CannedDataset.Builder()
+ .setField(ID_USERNAME, AutofillValue.forText("autofilled username"))
+ .setPresentation(createPresentation("dataset")).build())
+ .setRequiredSavableIds(SAVE_DATA_TYPE_PASSWORD, ID_USERNAME, ID_PASSWORD)
+ .setExtras(extras).build());
- // Trigger autofill on username
- sUiBot.selectById(USERNAME_FULL_ID);
+ CannedFillResponse response = new CannedFillResponse.Builder()
+ .setAuthentication(authentication, ID_USERNAME, ID_PASSWORD)
+ .setPresentation(createPresentation("authenticate"))
+ .build();
+ sReplier.addResponse(response);
- // Wait for fill request to be processed
- sReplier.getNextFillRequest();
+ // Trigger autofill on username
+ sUiBot.selectById(USERNAME_FULL_ID);
- // Wait until authentication is shown
- sUiBot.assertDatasets("authenticate");
+ // Wait for fill request to be processed
+ sReplier.getNextFillRequest();
- // Change orientation which triggers a destroy -> create in the app as the activity
- // cannot deal with such situations
- sUiBot.setScreenOrientation(LANDSCAPE);
+ // Wait until authentication is shown
+ sUiBot.assertDatasets("authenticate");
- // Delete stopped marker
- getStoppedMarker(getContext()).delete();
+ // Change orientation which triggers a destroy -> create in the app as the activity
+ // cannot deal with such situations
+ sUiBot.setScreenOrientation(LANDSCAPE);
- // Authenticate
- sUiBot.selectDataset("authenticate");
+ // Delete stopped marker
+ getStoppedMarker(getContext()).delete();
- // Kill activity that is in the background
- killOfProcessLoginActivityProcess();
+ // Authenticate
+ sUiBot.selectDataset("authenticate");
- // Change orientation which triggers a destroy -> create in the app as the activity
- // cannot deal with such situations
- sUiBot.setScreenOrientation(PORTRAIT);
+ // Kill activity that is in the background
+ killOfProcessLoginActivityProcess();
- // Approve authentication
- sUiBot.selectById(BUTTON_FULL_ID);
+ // Change orientation which triggers a destroy -> create in the app as the activity
+ // cannot deal with such situations
+ sUiBot.setScreenOrientation(PORTRAIT);
- // Wait for dataset to be shown
- sUiBot.assertDatasets("dataset");
+ // Approve authentication
+ sUiBot.selectById(BUTTON_FULL_ID);
- // Change orientation which triggers a destroy -> create in the app as the activity
- // cannot deal with such situations
- sUiBot.setScreenOrientation(LANDSCAPE);
+ // Wait for dataset to be shown
+ sUiBot.assertDatasets("dataset");
- // Select dataset
- sUiBot.selectDataset("dataset");
+ // Change orientation which triggers a destroy -> create in the app as the activity
+ // cannot deal with such situations
+ sUiBot.setScreenOrientation(LANDSCAPE);
- // Check the results.
- eventually(() -> assertThat(sUiBot.getTextById(USERNAME_FULL_ID)).isEqualTo(
- "autofilled username"));
+ // Select dataset
+ sUiBot.selectDataset("dataset");
- // Set password
- sUiBot.setTextById(PASSWORD_FULL_ID, "new password");
+ // Check the results.
+ eventually(() -> assertThat(sUiBot.getTextById(USERNAME_FULL_ID)).isEqualTo(
+ "autofilled username"));
- // Login
- sUiBot.selectById(LOGIN_FULL_ID);
+ // Set password
+ sUiBot.setTextById(PASSWORD_FULL_ID, "new password");
- // Wait for save UI to be shown
- sUiBot.assertShownById("android:id/autofill_save_yes");
+ // Login
+ sUiBot.selectById(LOGIN_FULL_ID);
- // Change orientation to make sure save UI can handle this
- sUiBot.setScreenOrientation(PORTRAIT);
+ // Wait for save UI to be shown
+ sUiBot.assertShownById("android:id/autofill_save_yes");
- // Tap "Save".
- sUiBot.selectById("android:id/autofill_save_yes");
+ // Change orientation to make sure save UI can handle this
+ sUiBot.setScreenOrientation(PORTRAIT);
- // Get save request
- InstrumentedAutoFillService.SaveRequest saveRequest = sReplier.getNextSaveRequest();
- assertWithMessage("onSave() not called").that(saveRequest).isNotNull();
+ // Tap "Save".
+ sUiBot.selectById("android:id/autofill_save_yes");
- // Make sure data is correctly saved
- final AssistStructure.ViewNode username = findNodeByResourceId(saveRequest.structure,
- ID_USERNAME);
- assertTextAndValue(username, "autofilled username");
- final AssistStructure.ViewNode password = findNodeByResourceId(saveRequest.structure,
- ID_PASSWORD);
- assertTextAndValue(password, "new password");
+ // Get save request
+ InstrumentedAutoFillService.SaveRequest saveRequest = sReplier.getNextSaveRequest();
+ assertWithMessage("onSave() not called").that(saveRequest).isNotNull();
- // Make sure extras were passed back on onSave()
- assertThat(saveRequest.data).isNotNull();
- final String extraValue = saveRequest.data.getString("numbers");
- assertWithMessage("extras not passed on save").that(extraValue).isEqualTo("4815162342");
+ // Make sure data is correctly saved
+ final AssistStructure.ViewNode username = findNodeByResourceId(saveRequest.structure,
+ ID_USERNAME);
+ assertTextAndValue(username, "autofilled username");
+ final AssistStructure.ViewNode password = findNodeByResourceId(saveRequest.structure,
+ ID_PASSWORD);
+ assertTextAndValue(password, "new password");
- eventually(() -> assertNoDanglingSessions());
+ // Make sure extras were passed back on onSave()
+ assertThat(saveRequest.data).isNotNull();
+ final String extraValue = saveRequest.data.getString("numbers");
+ assertWithMessage("extras not passed on save").that(extraValue).isEqualTo("4815162342");
+
+ eventually(() -> assertNoDanglingSessions());
+ } finally {
+ sUiBot.resetScreenResolution();
+ }
}
@Test
diff --git a/tests/autofillservice/src/android/autofillservice/cts/UiBot.java b/tests/autofillservice/src/android/autofillservice/cts/UiBot.java
index 436f59f..82d4700 100644
--- a/tests/autofillservice/src/android/autofillservice/cts/UiBot.java
+++ b/tests/autofillservice/src/android/autofillservice/cts/UiBot.java
@@ -20,6 +20,7 @@
import static android.autofillservice.cts.Helper.SAVE_TIMEOUT_MS;
import static android.autofillservice.cts.Helper.UI_RECENTS_SWITCH_TIMEOUT_MS;
import static android.autofillservice.cts.Helper.UI_TIMEOUT_MS;
+import static android.autofillservice.cts.Helper.runShellCommand;
import static android.service.autofill.SaveInfo.SAVE_DATA_TYPE_ADDRESS;
import static android.service.autofill.SaveInfo.SAVE_DATA_TYPE_CREDIT_CARD;
import static android.service.autofill.SaveInfo.SAVE_DATA_TYPE_EMAIL_ADDRESS;
@@ -676,4 +677,27 @@
public void dumpScreen() throws IOException {
mDevice.dumpWindowHierarchy(System.out);
}
+
+ /**
+ * Sets screen resolution.
+ *
+ * <p>If the screen is too small and the devices shows an IME, it might not have space for all
+ * UI elements after the device is rotated to landscape.
+ *
+ * <p>{@link #resetScreenResolution()} should always be called too.
+ */
+ void setScreenResolution() {
+ assumeMinimumResolution(500);
+
+ runShellCommand("wm size 1080x1920");
+ runShellCommand("wm density 420");
+ }
+
+ /**
+ * Resets screen resolution.
+ */
+ void resetScreenResolution() {
+ runShellCommand("wm density reset");
+ runShellCommand("wm size reset");
+ }
}
diff --git a/tests/signature/api-check/Android.mk b/tests/signature/api-check/Android.mk
index 8f00386..013cc4d 100644
--- a/tests/signature/api-check/Android.mk
+++ b/tests/signature/api-check/Android.mk
@@ -32,7 +32,6 @@
cts-signature-common \
repackaged-legacy-test \
repackaged.android.test.runner \
- compatibility-device-util
include $(BUILD_STATIC_JAVA_LIBRARY)
diff --git a/tests/signature/api-check/src/android/signature/cts/api/SignatureTest.java b/tests/signature/api-check/src/android/signature/cts/api/SignatureTest.java
index eb8dc63..3473cfd 100644
--- a/tests/signature/api-check/src/android/signature/cts/api/SignatureTest.java
+++ b/tests/signature/api-check/src/android/signature/cts/api/SignatureTest.java
@@ -23,7 +23,6 @@
import android.signature.cts.JDiffClassDescription;
import android.signature.cts.ReflectionHelper;
import android.signature.cts.ResultObserver;
-import com.android.compatibility.common.util.CddTest;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
@@ -40,7 +39,6 @@
/**
* Performs the signature check via a JUnit test.
*/
-@CddTest(requirement="3.6/C-0-1,C-0-2")
public class SignatureTest extends InstrumentationTestCase {
private static final String TAG = SignatureTest.class.getSimpleName();
diff --git a/tests/signature/intent-check/src/android/signature/cts/intent/IntentTest.java b/tests/signature/intent-check/src/android/signature/cts/intent/IntentTest.java
index 756a432..2f551dc 100644
--- a/tests/signature/intent-check/src/android/signature/cts/intent/IntentTest.java
+++ b/tests/signature/intent-check/src/android/signature/cts/intent/IntentTest.java
@@ -28,7 +28,6 @@
import android.support.test.runner.AndroidJUnit4;
import android.util.Log;
-import com.android.compatibility.common.util.CddTest;
import com.android.compatibility.common.util.DynamicConfigDeviceSide;
import org.junit.Assert;
@@ -50,7 +49,6 @@
* Validate that the android intents used by APKs on this device are part of the
* platform.
*/
-@CddTest(requirement="3.2.3.3/C-0-1,C-0-2")
@RunWith(AndroidJUnit4.class)
public class IntentTest {
private static final String TAG = IntentTest.class.getSimpleName();
diff --git a/tests/tests/content/src/android/content/cts/AvailableIntentsTest.java b/tests/tests/content/src/android/content/cts/AvailableIntentsTest.java
index 3a016bc..2e6acc7 100644
--- a/tests/tests/content/src/android/content/cts/AvailableIntentsTest.java
+++ b/tests/tests/content/src/android/content/cts/AvailableIntentsTest.java
@@ -332,29 +332,4 @@
assertCanBeHandled(new Intent(StorageManager.ACTION_MANAGE_STORAGE));
}
- public void testVoiceCommand() {
- if (FeatureUtil.isLowRam()) {
- // Low ram devices do not support voice command, skip this test
- return;
- }
- PackageManager packageManager = mContext.getPackageManager();
- if (packageManager.hasSystemFeature(PackageManager.FEATURE_MICROPHONE)) {
- Intent intent = new Intent(Intent.ACTION_VOICE_COMMAND);
- assertCanBeHandled(intent);
- assertDefaultHandlerValidPriority(intent);
- }
- }
-
- public void testVoiceSearchHandsFree() {
- if (FeatureUtil.isLowRam()) {
- // Low ram devices do not support hands-free hot word, skip this test
- return;
- }
- PackageManager packageManager = mContext.getPackageManager();
- if (packageManager.hasSystemFeature(PackageManager.FEATURE_MICROPHONE)) {
- Intent intent = new Intent(RecognizerIntent.ACTION_VOICE_SEARCH_HANDS_FREE);
- assertCanBeHandled(intent);
- assertDefaultHandlerValidPriority(intent);
- }
- }
}