Merge "CheckpointHostTest: Skip on pre-Q devices." into qt-dev am: 0e6ce20da1
am: 9f37b11d66
Change-Id: Iefcd22abb79f3315c03592c4402603640288895f
diff --git a/apps/CtsVerifier/res/values/strings.xml b/apps/CtsVerifier/res/values/strings.xml
index d688ce9..22109e7 100755
--- a/apps/CtsVerifier/res/values/strings.xml
+++ b/apps/CtsVerifier/res/values/strings.xml
@@ -5103,11 +5103,7 @@
<string name="bubbles_notification_test_verify_9">Click the button below and verify that a bubble
appears on screen, auto-expanded.</string>
<string name="bubbles_notification_test_button_9">Send auto-expanded bubble notification</string>
- <string name="bubbles_notification_test_title_10">No bubbles on low memory device</string>
- <string name="bubbles_notification_test_verify_10">Click the button below and verify that a
- bubble does NOT appear on screen. Verify that there is a notification in the notification
- shade.</string>
- <string name="bubbles_notification_test_button_10">Add bubble</string>
+ <string name="bubbles_notification_no_bubbles_low_mem">No bubbles on low memory device; no tests to run</string>
<string name="bubbles_test_summary_title">Test Complete</string>
<string name="bubbles_test_summary">%1$d out of %2$d tests passed</string>
<string name="bubble_activity_title">Bubble Activity</string>
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/notifications/BubblesVerifierActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/notifications/BubblesVerifierActivity.java
index 0c4addf..3dc41e6 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/notifications/BubblesVerifierActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/notifications/BubblesVerifierActivity.java
@@ -103,14 +103,9 @@
runNextTestOrShowSummary();
});
- // Make sure they're enabled
- mTests.add(new EnableBubbleTest());
-
ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
- if (am.isLowRamDevice()) {
- // Bubbles don't occur on low ram, instead they just show as notifs so test that
- mTests.add(new LowRamBubbleTest());
- } else {
+ if (!am.isLowRamDevice()) {
+ mTests.add(new EnableBubbleTest());
mTests.add(new SendBubbleTest());
mTests.add(new SuppressNotifTest());
mTests.add(new AddNotifTest());
@@ -120,6 +115,10 @@
mTests.add(new DismissBubbleTest());
mTests.add(new DismissNotificationTest());
mTests.add(new AutoExpandBubbleTest());
+ } else {
+ Toast.makeText(getApplicationContext(),
+ getResources().getString(R.string.bubbles_notification_no_bubbles_low_mem),
+ Toast.LENGTH_LONG).show();
}
setPassFailButtonClickListeners();
@@ -463,32 +462,6 @@
}
}
- private class LowRamBubbleTest extends BubblesTestStep {
- @Override
- public int getButtonText() {
- return R.string.bubbles_notification_test_button_10;
- }
-
- @Override
- public int getTestTitle() {
- return R.string.bubbles_notification_test_title_10;
- }
-
- @Override
- public int getTestDescription() {
- return R.string.bubbles_notification_test_verify_10;
- }
-
- @Override
- public void performTestAction() {
- Notification.Builder builder =
- getBasicNotifBuilder("Bubble notification", "Low ram test");
- builder.setBubbleMetadata(getBasicBubbleBuilder().build());
-
- mNotificationManager.notify(NOTIFICATION_ID, builder.build());
- }
- }
-
/** Creates a minimally filled out {@link android.app.Notification.BubbleMetadata.Builder} */
private Notification.BubbleMetadata.Builder getBasicBubbleBuilder() {
Context context = getApplicationContext();
diff --git a/hostsidetests/devicepolicy/app/NoLaunchableActivityApp/Android.bp b/hostsidetests/devicepolicy/app/HasLauncherActivityApp/Android.bp
similarity index 88%
rename from hostsidetests/devicepolicy/app/NoLaunchableActivityApp/Android.bp
rename to hostsidetests/devicepolicy/app/HasLauncherActivityApp/Android.bp
index 2e8d9f4..f2c0649 100644
--- a/hostsidetests/devicepolicy/app/NoLaunchableActivityApp/Android.bp
+++ b/hostsidetests/devicepolicy/app/HasLauncherActivityApp/Android.bp
@@ -13,7 +13,7 @@
// limitations under the License.
android_test_helper_app {
- name: "CtsNoLaunchableActivityApp",
+ name: "CtsHasLauncherActivityApp",
// Don't include this package in any target
// When built, explicitly put it in the data partition.
dex_preopt: {
@@ -28,14 +28,13 @@
"cts",
"vts",
"general-tests",
- "cts_instant",
],
sdk_version: "current",
}
-// Build for no component app
+// Build for no launcher activity app
android_test_helper_app {
- name: "CtsNoComponentApp",
+ name: "CtsNoLauncherActivityApp",
dex_preopt: {
enabled: false,
},
@@ -48,9 +47,8 @@
"cts",
"vts",
"general-tests",
- "cts_instant",
],
- manifest: "no_component_AndroidManifest.xml",
+ manifest: "no_launcher_activity_AndroidManifest.xml",
sdk_version: "current",
}
@@ -69,7 +67,6 @@
"cts",
"vts",
"general-tests",
- "cts_instant",
],
manifest: "no_permission_AndroidManifest.xml",
sdk_version: "current",
diff --git a/hostsidetests/devicepolicy/app/NoLaunchableActivityApp/AndroidManifest.xml b/hostsidetests/devicepolicy/app/HasLauncherActivityApp/AndroidManifest.xml
similarity index 69%
copy from hostsidetests/devicepolicy/app/NoLaunchableActivityApp/AndroidManifest.xml
copy to hostsidetests/devicepolicy/app/HasLauncherActivityApp/AndroidManifest.xml
index 59f3767..760b31f 100755
--- a/hostsidetests/devicepolicy/app/NoLaunchableActivityApp/AndroidManifest.xml
+++ b/hostsidetests/devicepolicy/app/HasLauncherActivityApp/AndroidManifest.xml
@@ -16,9 +16,15 @@
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.android.cts.nolaunchableactivityapp">
+ package="com.android.cts.haslauncheractivityapp">
<uses-permission android:name="android.permission.INTERNET" />
- <application>
+ <application android:testOnly="true">
+ <activity android:name="com.android.cts.haslauncheractivityapp.MainActivity">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ </activity>
<service android:name=".EmptyService" android:enabled="true"></service>
</application>
diff --git a/hostsidetests/devicepolicy/app/NoLaunchableActivityApp/AndroidManifest.xml b/hostsidetests/devicepolicy/app/HasLauncherActivityApp/no_launcher_activity_AndroidManifest.xml
similarity index 71%
rename from hostsidetests/devicepolicy/app/NoLaunchableActivityApp/AndroidManifest.xml
rename to hostsidetests/devicepolicy/app/HasLauncherActivityApp/no_launcher_activity_AndroidManifest.xml
index 59f3767..ae2249a 100755
--- a/hostsidetests/devicepolicy/app/NoLaunchableActivityApp/AndroidManifest.xml
+++ b/hostsidetests/devicepolicy/app/HasLauncherActivityApp/no_launcher_activity_AndroidManifest.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
- * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2019 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.
@@ -16,9 +16,14 @@
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.android.cts.nolaunchableactivityapp">
+ package="com.android.cts.nolauncheractivityapp">
<uses-permission android:name="android.permission.INTERNET" />
<application>
+ <activity android:name="com.android.cts.haslauncheractivityapp.MainActivity">
+ <intent-filter>
+ <action android:name="android.intent.action.VIEW" />
+ </intent-filter>
+ </activity>
<service android:name=".EmptyService" android:enabled="true"></service>
</application>
diff --git a/hostsidetests/devicepolicy/app/NoLaunchableActivityApp/no_permission_AndroidManifest.xml b/hostsidetests/devicepolicy/app/HasLauncherActivityApp/no_permission_AndroidManifest.xml
similarity index 100%
rename from hostsidetests/devicepolicy/app/NoLaunchableActivityApp/no_permission_AndroidManifest.xml
rename to hostsidetests/devicepolicy/app/HasLauncherActivityApp/no_permission_AndroidManifest.xml
diff --git a/hostsidetests/devicepolicy/app/NoLaunchableActivityApp/src/com/android/cts/nolaunchableactivityapp/EmptyService.java b/hostsidetests/devicepolicy/app/HasLauncherActivityApp/src/com/android/cts/haslauncheractivityapp/EmptyService.java
similarity index 94%
rename from hostsidetests/devicepolicy/app/NoLaunchableActivityApp/src/com/android/cts/nolaunchableactivityapp/EmptyService.java
rename to hostsidetests/devicepolicy/app/HasLauncherActivityApp/src/com/android/cts/haslauncheractivityapp/EmptyService.java
index 6cd0da6..80f9ee5 100644
--- a/hostsidetests/devicepolicy/app/NoLaunchableActivityApp/src/com/android/cts/nolaunchableactivityapp/EmptyService.java
+++ b/hostsidetests/devicepolicy/app/HasLauncherActivityApp/src/com/android/cts/haslauncheractivityapp/EmptyService.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.android.cts.nolaunchableactivityapp;
+package com.android.cts.haslaunchableactivityapp;
import android.app.Service;
import android.content.Intent;
diff --git a/hostsidetests/devicepolicy/app/NoLaunchableActivityApp/no_component_AndroidManifest.xml b/hostsidetests/devicepolicy/app/HasLauncherActivityApp/src/com/android/cts/haslauncheractivityapp/MainActivity.java
old mode 100755
new mode 100644
similarity index 63%
rename from hostsidetests/devicepolicy/app/NoLaunchableActivityApp/no_component_AndroidManifest.xml
rename to hostsidetests/devicepolicy/app/HasLauncherActivityApp/src/com/android/cts/haslauncheractivityapp/MainActivity.java
index a48cb1d..1f2b2cb
--- a/hostsidetests/devicepolicy/app/NoLaunchableActivityApp/no_component_AndroidManifest.xml
+++ b/hostsidetests/devicepolicy/app/HasLauncherActivityApp/src/com/android/cts/haslauncheractivityapp/MainActivity.java
@@ -1,6 +1,5 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2019 The Android Open Source Project
+/*
+ * Copyright (C) 2018 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.
@@ -13,13 +12,11 @@
* 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.haslaunchableactivityapp;
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.android.cts.nocomponentapp">
+import android.app.Activity;
- <uses-permission android:name="android.permission.INTERNET" />
- <application />
-
-</manifest>
+public class MainActivity extends Activity {
+}
diff --git a/hostsidetests/devicepolicy/app/LauncherTests/src/com/android/cts/launchertests/LauncherAppsTests.java b/hostsidetests/devicepolicy/app/LauncherTests/src/com/android/cts/launchertests/LauncherAppsTests.java
index 45032a4..cade532 100644
--- a/hostsidetests/devicepolicy/app/LauncherTests/src/com/android/cts/launchertests/LauncherAppsTests.java
+++ b/hostsidetests/devicepolicy/app/LauncherTests/src/com/android/cts/launchertests/LauncherAppsTests.java
@@ -42,7 +42,9 @@
import android.test.AndroidTestCase;
import androidx.test.InstrumentationRegistry;
+import com.android.compatibility.common.util.SystemUtil;
+import java.io.IOException;
import java.util.List;
import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit;
@@ -53,12 +55,14 @@
public class LauncherAppsTests extends AndroidTestCase {
public static final String SIMPLE_APP_PACKAGE = "com.android.cts.launcherapps.simpleapp";
- private static final String NO_LAUNCHABLE_ACTIVITY_APP_PACKAGE =
- "com.android.cts.nolaunchableactivityapp";
- private static final String NO_COMPONENT_APP_PACKAGE =
- "com.android.cts.nocomponentapp";
+ private static final String HAS_LAUNCHER_ACTIVITY_APP_PACKAGE =
+ "com.android.cts.haslauncheractivityapp";
+ private static final String NO_LAUNCHER_ACTIVITY_APP_PACKAGE =
+ "com.android.cts.nolauncheractivityapp";
private static final String NO_PERMISSION_APP_PACKAGE =
"com.android.cts.nopermissionapp";
+ private static final String LAUNCHER_ACTIVITY_COMPONENT =
+ "com.android.cts.haslauncheractivityapp/.MainActivity";
private static final String SYNTHETIC_APP_DETAILS_ACTIVITY = "android.app.AppDetailsActivity";
@@ -216,15 +220,17 @@
assertFalse(mLauncherApps.isPackageEnabled("android", mUser));
}
- public void testNoLaunchableActivityAppHasAppDetailsActivityInjected() throws Exception {
- // NoLaunchableActivityApp is installed for duration of this test - make sure
+ public void testHasLauncherActivityAppHasAppDetailsActivityInjected() throws Exception {
+ // HasLauncherActivityApp is installed for duration of this test - make sure
// it's present on the activity list, has the synthetic activity generated, and it's
// enabled and exported
- assertActivityInjected(NO_LAUNCHABLE_ACTIVITY_APP_PACKAGE);
+ disableLauncherActivity();
+ assertActivityInjected(HAS_LAUNCHER_ACTIVITY_APP_PACKAGE);
}
public void testGetSetSyntheticAppDetailsActivityEnabled() throws Exception {
- assertActivityInjected(NO_LAUNCHABLE_ACTIVITY_APP_PACKAGE);
+ disableLauncherActivity();
+ assertActivityInjected(HAS_LAUNCHER_ACTIVITY_APP_PACKAGE);
PackageManager pm = mInstrumentation.getContext().getPackageManager();
try {
pm.setSyntheticAppDetailsActivityEnabled(mContext.getPackageName(), false);
@@ -233,7 +239,7 @@
// Expected: No permission
}
try {
- pm.setSyntheticAppDetailsActivityEnabled(NO_LAUNCHABLE_ACTIVITY_APP_PACKAGE, false);
+ pm.setSyntheticAppDetailsActivityEnabled(HAS_LAUNCHER_ACTIVITY_APP_PACKAGE, false);
fail("Should not able to change other app's app details activity state");
} catch (SecurityException e) {
// Expected: No permission
@@ -241,17 +247,17 @@
mInstrumentation.getUiAutomation().adoptShellPermissionIdentity();
try {
assertTrue(
- pm.getSyntheticAppDetailsActivityEnabled(NO_LAUNCHABLE_ACTIVITY_APP_PACKAGE));
+ pm.getSyntheticAppDetailsActivityEnabled(HAS_LAUNCHER_ACTIVITY_APP_PACKAGE));
// Disable app details activity and assert if the change is applied
- pm.setSyntheticAppDetailsActivityEnabled(NO_LAUNCHABLE_ACTIVITY_APP_PACKAGE, false);
+ pm.setSyntheticAppDetailsActivityEnabled(HAS_LAUNCHER_ACTIVITY_APP_PACKAGE, false);
assertFalse(
- pm.getSyntheticAppDetailsActivityEnabled(NO_LAUNCHABLE_ACTIVITY_APP_PACKAGE));
- assertInjectedActivityNotFound(NO_LAUNCHABLE_ACTIVITY_APP_PACKAGE);
+ pm.getSyntheticAppDetailsActivityEnabled(HAS_LAUNCHER_ACTIVITY_APP_PACKAGE));
+ assertInjectedActivityNotFound(HAS_LAUNCHER_ACTIVITY_APP_PACKAGE);
// Enable app details activity and assert if the change is applied
- pm.setSyntheticAppDetailsActivityEnabled(NO_LAUNCHABLE_ACTIVITY_APP_PACKAGE, true);
+ pm.setSyntheticAppDetailsActivityEnabled(HAS_LAUNCHER_ACTIVITY_APP_PACKAGE, true);
assertTrue(
- pm.getSyntheticAppDetailsActivityEnabled(NO_LAUNCHABLE_ACTIVITY_APP_PACKAGE));
- assertActivityInjected(NO_LAUNCHABLE_ACTIVITY_APP_PACKAGE);
+ pm.getSyntheticAppDetailsActivityEnabled(HAS_LAUNCHER_ACTIVITY_APP_PACKAGE));
+ assertActivityInjected(HAS_LAUNCHER_ACTIVITY_APP_PACKAGE);
} finally {
mInstrumentation.getUiAutomation().dropShellPermissionIdentity();
}
@@ -262,10 +268,10 @@
assertActivityInjected(MANAGED_PROFILE_PKG);
}
- public void testNoComponentAppNotInjected() throws Exception {
- // NoComponentApp is installed for duration of this test - make sure
+ public void testNoLauncherActivityAppNotInjected() throws Exception {
+ // NoLauncherActivityApp is installed for duration of this test - make sure
// it's NOT present on the activity list
- assertInjectedActivityNotFound(NO_COMPONENT_APP_PACKAGE);
+ assertInjectedActivityNotFound(NO_LAUNCHER_ACTIVITY_APP_PACKAGE);
}
public void testNoPermissionAppNotInjected() throws Exception {
@@ -275,10 +281,11 @@
}
public void testDoPoNoTestAppInjectedActivityFound() throws Exception {
- // NoLaunchableActivityApp is installed for duration of this test - make sure
+ // HasLauncherActivityApp is installed for duration of this test - make sure
// it's NOT present on the activity list For example, DO / PO mode won't show icons.
// This test is being called by DeviceOwnerTest.
- assertInjectedActivityNotFound(NO_LAUNCHABLE_ACTIVITY_APP_PACKAGE);
+ disableLauncherActivity();
+ assertInjectedActivityNotFound(HAS_LAUNCHER_ACTIVITY_APP_PACKAGE);
}
public void testProfileOwnerInjectedActivityNotFound() throws Exception {
@@ -305,6 +312,11 @@
}
}
+ private void disableLauncherActivity() throws IOException {
+ SystemUtil.runShellCommand(mInstrumentation,
+ "pm disable --user " + mUser.getIdentifier() + " " + LAUNCHER_ACTIVITY_COMPONENT);
+ }
+
private void expectSecurityException(ExceptionRunnable action, String failMessage)
throws Exception {
try {
@@ -336,7 +348,7 @@
if (compName.getPackageName().equals(targetPackage)) {
noLaunchableActivityAppFound = true;
// make sure it points to the synthetic app details activity
- assertEquals(activity.getName(), SYNTHETIC_APP_DETAILS_ACTIVITY);
+ assertEquals(SYNTHETIC_APP_DETAILS_ACTIVITY, activity.getName());
// make sure it's both exported and enabled
try {
PackageManager pm = mInstrumentation.getContext().getPackageManager();
diff --git a/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/DeviceOwnerTest.java b/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/DeviceOwnerTest.java
index d223f03..7c335c2 100644
--- a/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/DeviceOwnerTest.java
+++ b/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/DeviceOwnerTest.java
@@ -72,8 +72,8 @@
private static final String ARG_NETWORK_LOGGING_BATCH_COUNT = "batchCount";
private static final String TEST_UPDATE_LOCATION = "/data/local/tmp/cts/deviceowner";
- private static final String LAUNCHER_TESTS_NO_LAUNCHABLE_ACTIVITY_APK =
- "CtsNoLaunchableActivityApp.apk";
+ private static final String LAUNCHER_TESTS_HAS_LAUNCHER_ACTIVITY_APK =
+ "CtsHasLauncherActivityApp.apk";
/**
* Copied from {@link android.app.admin.DevicePolicyManager
@@ -995,7 +995,7 @@
// Install app to primary user
installAppAsUser(BaseLauncherAppsTest.LAUNCHER_TESTS_APK, mPrimaryUserId);
installAppAsUser(BaseLauncherAppsTest.LAUNCHER_TESTS_SUPPORT_APK, mPrimaryUserId);
- installAppAsUser(LAUNCHER_TESTS_NO_LAUNCHABLE_ACTIVITY_APK, mPrimaryUserId);
+ installAppAsUser(LAUNCHER_TESTS_HAS_LAUNCHER_ACTIVITY_APK, mPrimaryUserId);
// Run test to check if launcher api shows hidden app
String mSerialNumber = Integer.toString(getUserSerialNumber(USER_SYSTEM));
@@ -1005,7 +1005,7 @@
mPrimaryUserId, Collections.singletonMap(BaseLauncherAppsTest.PARAM_TEST_USER,
mSerialNumber));
} finally {
- getDevice().uninstallPackage(LAUNCHER_TESTS_NO_LAUNCHABLE_ACTIVITY_APK);
+ getDevice().uninstallPackage(LAUNCHER_TESTS_HAS_LAUNCHER_ACTIVITY_APK);
getDevice().uninstallPackage(BaseLauncherAppsTest.LAUNCHER_TESTS_SUPPORT_APK);
getDevice().uninstallPackage(BaseLauncherAppsTest.LAUNCHER_TESTS_APK);
}
diff --git a/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/LauncherAppsProfileTest.java b/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/LauncherAppsProfileTest.java
index c756d16..f8a78f0 100755
--- a/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/LauncherAppsProfileTest.java
+++ b/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/LauncherAppsProfileTest.java
@@ -31,8 +31,8 @@
private static final String MANAGED_PROFILE_APK = "CtsManagedProfileApp.apk";
private static final String ADMIN_RECEIVER_TEST_CLASS =
MANAGED_PROFILE_PKG + ".BaseManagedProfileTest$BasicAdminReceiver";
- private static final String LAUNCHER_TESTS_NO_LAUNCHABLE_ACTIVITY_APK =
- "CtsNoLaunchableActivityApp.apk";
+ private static final String LAUNCHER_TESTS_HAS_LAUNCHER_ACTIVITY_APK =
+ "CtsHasLauncherActivityApp.apk";
private int mProfileUserId;
private int mParentUserId;
@@ -65,7 +65,7 @@
if (mHasFeature) {
removeUser(mProfileUserId);
uninstallTestApps();
- getDevice().uninstallPackage(LAUNCHER_TESTS_NO_LAUNCHABLE_ACTIVITY_APK);
+ getDevice().uninstallPackage(LAUNCHER_TESTS_HAS_LAUNCHER_ACTIVITY_APK);
}
super.tearDown();
}
@@ -122,15 +122,15 @@
return;
}
// Install app for all users.
- installAppAsUser(LAUNCHER_TESTS_NO_LAUNCHABLE_ACTIVITY_APK, mParentUserId);
- installAppAsUser(LAUNCHER_TESTS_NO_LAUNCHABLE_ACTIVITY_APK, mProfileUserId);
+ installAppAsUser(LAUNCHER_TESTS_HAS_LAUNCHER_ACTIVITY_APK, mParentUserId);
+ installAppAsUser(LAUNCHER_TESTS_HAS_LAUNCHER_ACTIVITY_APK, mProfileUserId);
// Run tests to check SimpleApp exists in both profile and main user.
runDeviceTestsAsUser(LAUNCHER_TESTS_PKG,
LAUNCHER_TESTS_CLASS, "testDoPoNoTestAppInjectedActivityFound",
mParentUserId, Collections.singletonMap(PARAM_TEST_USER, mProfileSerialNumber));
runDeviceTestsAsUser(LAUNCHER_TESTS_PKG,
- LAUNCHER_TESTS_CLASS, "testNoLaunchableActivityAppHasAppDetailsActivityInjected",
+ LAUNCHER_TESTS_CLASS, "testHasLauncherActivityAppHasAppDetailsActivityInjected",
mParentUserId, Collections.singletonMap(PARAM_TEST_USER, mMainUserSerialNumber));
}
diff --git a/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/LimitAppIconHidingTest.java b/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/LimitAppIconHidingTest.java
index 09d2541..fa92065 100644
--- a/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/LimitAppIconHidingTest.java
+++ b/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/LimitAppIconHidingTest.java
@@ -23,10 +23,10 @@
*/
public class LimitAppIconHidingTest extends BaseLauncherAppsTest {
- private static final String LAUNCHER_TESTS_NO_LAUNCHABLE_ACTIVITY_APK =
- "CtsNoLaunchableActivityApp.apk";
- private static final String LAUNCHER_TESTS_NO_COMPONENT_APK =
- "CtsNoComponentApp.apk";
+ private static final String LAUNCHER_TESTS_HAS_LAUNCHER_ACTIVITY_APK =
+ "CtsHasLauncherActivityApp.apk";
+ private static final String LAUNCHER_TESTS_NO_LAUNCHER_ACTIVITY_APK =
+ "CtsNoLauncherActivityApp.apk";
private static final String LAUNCHER_TESTS_NO_PERMISSION_APK =
"CtsNoPermissionApp.apk";
@@ -58,8 +58,8 @@
@Override
protected void installTestApps(int userId) throws Exception {
super.installTestApps(mCurrentUserId);
- installAppAsUser(LAUNCHER_TESTS_NO_LAUNCHABLE_ACTIVITY_APK, mCurrentUserId);
- installAppAsUser(LAUNCHER_TESTS_NO_COMPONENT_APK, mCurrentUserId);
+ installAppAsUser(LAUNCHER_TESTS_HAS_LAUNCHER_ACTIVITY_APK, mCurrentUserId);
+ installAppAsUser(LAUNCHER_TESTS_NO_LAUNCHER_ACTIVITY_APK, mCurrentUserId);
installAppAsUser(LAUNCHER_TESTS_NO_PERMISSION_APK, mCurrentUserId);
}
@@ -67,16 +67,16 @@
protected void uninstallTestApps() throws Exception {
super.uninstallTestApps();
getDevice().uninstallPackage(LAUNCHER_TESTS_NO_PERMISSION_APK);
- getDevice().uninstallPackage(LAUNCHER_TESTS_NO_COMPONENT_APK);
- getDevice().uninstallPackage(LAUNCHER_TESTS_NO_LAUNCHABLE_ACTIVITY_APK);
+ getDevice().uninstallPackage(LAUNCHER_TESTS_NO_LAUNCHER_ACTIVITY_APK);
+ getDevice().uninstallPackage(LAUNCHER_TESTS_HAS_LAUNCHER_ACTIVITY_APK);
}
- public void testNoLaunchableActivityAppHasAppDetailsActivityInjected() throws Exception {
+ public void testHasLauncherActivityAppHasAppDetailsActivityInjected() throws Exception {
if (!mHasLauncherApps) {
return;
}
runDeviceTestsAsUser(LAUNCHER_TESTS_PKG,
- LAUNCHER_TESTS_CLASS, "testNoLaunchableActivityAppHasAppDetailsActivityInjected",
+ LAUNCHER_TESTS_CLASS, "testHasLauncherActivityAppHasAppDetailsActivityInjected",
mCurrentUserId, Collections.singletonMap(PARAM_TEST_USER, mSerialNumber));
}
@@ -89,12 +89,12 @@
mCurrentUserId, Collections.singletonMap(PARAM_TEST_USER, mSerialNumber));
}
- public void testNoComponentAppNotInjected() throws Exception {
+ public void testNoLauncherActivityAppNotInjected() throws Exception {
if (!mHasLauncherApps) {
return;
}
runDeviceTestsAsUser(LAUNCHER_TESTS_PKG,
- LAUNCHER_TESTS_CLASS, "testNoComponentAppNotInjected",
+ LAUNCHER_TESTS_CLASS, "testNoLauncherActivityAppNotInjected",
mCurrentUserId, Collections.singletonMap(PARAM_TEST_USER, mSerialNumber));
}
diff --git a/tests/apppredictionservice/src/android/apppredictionservice/cts/AppPredictionServiceTest.java b/tests/apppredictionservice/src/android/apppredictionservice/cts/AppPredictionServiceTest.java
index dbc5f38..8e92d9a 100644
--- a/tests/apppredictionservice/src/android/apppredictionservice/cts/AppPredictionServiceTest.java
+++ b/tests/apppredictionservice/src/android/apppredictionservice/cts/AppPredictionServiceTest.java
@@ -39,6 +39,7 @@
import androidx.test.InstrumentationRegistry;
import androidx.test.runner.AndroidJUnit4;
+import com.android.compatibility.common.util.RequiredServiceRule;
import com.android.compatibility.common.util.SystemUtil;
import org.junit.After;
@@ -47,6 +48,7 @@
import org.junit.runner.RunWith;
import java.util.ArrayList;
+import org.junit.ClassRule;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.Executors;
@@ -66,6 +68,10 @@
private static final String TEST_LAUNCH_LOCATION = "testCollapsedLocation";
private static final int TEST_ACTION = 2;
+ @ClassRule
+ public static final RequiredServiceRule mRequiredServiceRule =
+ new RequiredServiceRule(APP_PREDICTION_SERVICE);
+
private ServiceReporter mReporter;
private Bundle mPredictionContextExtras;
diff --git a/tests/contentsuggestions/src/android/contentsuggestions/cts/ContentSuggestionsManagerTest.java b/tests/contentsuggestions/src/android/contentsuggestions/cts/ContentSuggestionsManagerTest.java
index c9f7fbb..20c6a5f 100644
--- a/tests/contentsuggestions/src/android/contentsuggestions/cts/ContentSuggestionsManagerTest.java
+++ b/tests/contentsuggestions/src/android/contentsuggestions/cts/ContentSuggestionsManagerTest.java
@@ -37,10 +37,13 @@
import androidx.annotation.NonNull;
import androidx.test.runner.AndroidJUnit4;
+import com.android.compatibility.common.util.RequiredServiceRule;
+
import com.google.common.collect.Lists;
import org.junit.After;
import org.junit.Before;
+import org.junit.ClassRule;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -58,6 +61,10 @@
private static final long VERIFY_TIMEOUT_MS = 5_000;
private static final long SERVICE_LIFECYCLE_TIMEOUT_MS = 10_000;
+ @ClassRule
+ public static final RequiredServiceRule mRequiredServiceRule =
+ new RequiredServiceRule(Context.CONTENT_SUGGESTIONS_SERVICE);
+
private ContentSuggestionsManager mManager;
private CtsContentSuggestionsService.Watcher mWatcher;
diff --git a/tests/tests/permission/src/android/permission/cts/SplitPermissionsSystemTest.java b/tests/tests/permission/src/android/permission/cts/SplitPermissionsSystemTest.java
index 4670928..c15b7a4 100755
--- a/tests/tests/permission/src/android/permission/cts/SplitPermissionsSystemTest.java
+++ b/tests/tests/permission/src/android/permission/cts/SplitPermissionsSystemTest.java
@@ -19,6 +19,7 @@
import static android.Manifest.permission.ACCESS_BACKGROUND_LOCATION;
import static android.Manifest.permission.ACCESS_COARSE_LOCATION;
import static android.Manifest.permission.ACCESS_FINE_LOCATION;
+import static android.Manifest.permission.ACCESS_MEDIA_LOCATION;
import static android.Manifest.permission.READ_CALL_LOG;
import static android.Manifest.permission.READ_CONTACTS;
import static android.Manifest.permission.READ_EXTERNAL_STORAGE;
@@ -104,6 +105,13 @@
case ACCESS_COARSE_LOCATION:
assertSplit(split, ACCESS_BACKGROUND_LOCATION, Build.VERSION_CODES.Q);
break;
+ case READ_EXTERNAL_STORAGE:
+ assertSplit(split, ACCESS_MEDIA_LOCATION, Build.VERSION_CODES.Q);
+ // Remove this split permission from seenSplits, ACCESS_MEDIA_LOCATION is not
+ // always available hence removing this permission from seenSplits will
+ // avoid seenSplits size check fail.
+ seenSplits.remove(split);
+ break;
}
}
diff --git a/tests/tests/view/src/android/view/cts/SystemGestureExclusionRectsTest.java b/tests/tests/view/src/android/view/cts/SystemGestureExclusionRectsTest.java
index 423f3b7..25312e7 100644
--- a/tests/tests/view/src/android/view/cts/SystemGestureExclusionRectsTest.java
+++ b/tests/tests/view/src/android/view/cts/SystemGestureExclusionRectsTest.java
@@ -201,9 +201,62 @@
assertTrue("set rects timeout", setter[0].await(3, SECONDS));
}
+ @Test
+ public void ignoreHiddenViewRects() throws Throwable {
+ final Activity activity = mActivityRule.getActivity();
+ final View contentView = activity.findViewById(R.id.abslistview_root);
+ final List<Rect> dummyLocalExclusionRects = Lists.newArrayList(new Rect(0, 0, 5, 5));
+ final List<Rect> dummyWindowExclusionRects = new ArrayList<>();
+
+ mActivityRule.runOnUiThread(() -> {
+ final View v = activity.findViewById(R.id.animating_view);
+ int[] point = new int[2];
+ v.getLocationInWindow(point);
+ for (Rect r : dummyLocalExclusionRects) {
+ Rect offsetR = new Rect(r);
+ offsetR.offsetTo(point[0], point[1]);
+ dummyWindowExclusionRects.add(offsetR);
+ }
+ });
+
+ // Set an exclusion rect on the animating view, ensure it's reported
+ final GestureExclusionLatcher[] setLatch = new GestureExclusionLatcher[1];
+ mActivityRule.runOnUiThread(() -> {
+ final View v = activity.findViewById(R.id.animating_view);
+ setLatch[0] = GestureExclusionLatcher.watching(v.getViewTreeObserver());
+ v.setSystemGestureExclusionRects(dummyLocalExclusionRects);
+ });
+ assertTrue("set rects timeout", setLatch[0].await(3, SECONDS));
+ assertEquals("returned rects as expected", dummyWindowExclusionRects,
+ setLatch[0].getLastReportedRects());
+
+ // Hide the content view, ensure that the reported rects are null for the child view
+ final GestureExclusionLatcher[] updateHideLatch = new GestureExclusionLatcher[1];
+ mActivityRule.runOnUiThread(() -> {
+ final View v = activity.findViewById(R.id.animating_view);
+ updateHideLatch[0] = GestureExclusionLatcher.watching(v.getViewTreeObserver());
+ contentView.setVisibility(View.INVISIBLE);
+ });
+ assertTrue("set rects timeout", updateHideLatch[0].await(3, SECONDS));
+ assertEquals("returned rects as expected", Collections.EMPTY_LIST,
+ updateHideLatch[0].getLastReportedRects());
+
+ // Show the content view again, ensure that the reported rects are valid for the child view
+ final GestureExclusionLatcher[] updateShowLatch = new GestureExclusionLatcher[1];
+ mActivityRule.runOnUiThread(() -> {
+ final View v = activity.findViewById(R.id.animating_view);
+ updateShowLatch[0] = GestureExclusionLatcher.watching(v.getViewTreeObserver());
+ contentView.setVisibility(View.VISIBLE);
+ });
+ assertTrue("set rects timeout", updateShowLatch[0].await(3, SECONDS));
+ assertEquals("returned rects as expected", dummyWindowExclusionRects,
+ updateShowLatch[0].getLastReportedRects());
+ }
+
private static class GestureExclusionLatcher implements Consumer<List<Rect>> {
private final CountDownLatch mLatch = new CountDownLatch(1);
private final ViewTreeObserver mVto;
+ private List<Rect> mLastReportedRects = Collections.EMPTY_LIST;
public static GestureExclusionLatcher watching(ViewTreeObserver vto) {
final GestureExclusionLatcher latcher = new GestureExclusionLatcher(vto);
@@ -219,8 +272,13 @@
return mLatch.await(time, unit);
}
+ public List<Rect> getLastReportedRects() {
+ return mLastReportedRects;
+ }
+
@Override
public void accept(List<Rect> rects) {
+ mLastReportedRects = rects;
mLatch.countDown();
mVto.removeOnSystemGestureExclusionRectsChangedListener(this);
}