summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTreehugger Robot <treehugger-gerrit@google.com>2021-09-09 17:37:19 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2021-09-09 17:37:19 +0000
commitd08dae25b765edf97ff0b388e69d7f7dfe5be785 (patch)
tree4db73faf0741360a6525e839aed59bfb380c3789
parentcec82f4c54d8f1383f13092775b54c7855ebf2f3 (diff)
parent1fade24eed9c3ab5b517feead4530b2017ae8ecb (diff)
downloadcts-d08dae25b765edf97ff0b388e69d7f7dfe5be785.tar.gz
Merge "DO NOT MERGE: Update & revert CTS for permission dialogs on Automotive" into pie-cts-dev
-rw-r--r--hostsidetests/appsecurity/test-apps/UsePermissionApp23/src/com/android/cts/usepermission/BasePermissionsTest.java82
-rw-r--r--hostsidetests/appsecurity/test-apps/UsePermissionApp23/src/com/android/cts/usepermission/UsePermissionTest23.java4
-rw-r--r--tests/tests/permission/src/android/permission/cts/PermissionGroupChange.java9
3 files changed, 73 insertions, 22 deletions
diff --git a/hostsidetests/appsecurity/test-apps/UsePermissionApp23/src/com/android/cts/usepermission/BasePermissionsTest.java b/hostsidetests/appsecurity/test-apps/UsePermissionApp23/src/com/android/cts/usepermission/BasePermissionsTest.java
index 351dcf081eb..cabcfd0bde6 100644
--- a/hostsidetests/appsecurity/test-apps/UsePermissionApp23/src/com/android/cts/usepermission/BasePermissionsTest.java
+++ b/hostsidetests/appsecurity/test-apps/UsePermissionApp23/src/com/android/cts/usepermission/BasePermissionsTest.java
@@ -17,6 +17,9 @@
package com.android.cts.usepermission;
import static junit.framework.Assert.assertEquals;
+import static android.content.pm.PackageManager.MATCH_DIRECT_BOOT_AWARE;
+import static android.content.pm.PackageManager.MATCH_DIRECT_BOOT_UNAWARE;
+import static android.content.pm.PackageManager.MATCH_SYSTEM_ONLY;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.fail;
@@ -27,10 +30,12 @@ import android.app.Instrumentation;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
import android.content.res.Resources;
import android.net.Uri;
import android.os.Bundle;
import android.os.SystemClock;
+import android.os.UserHandle;
import android.provider.Settings;
import android.support.test.uiautomator.By;
import android.support.test.uiautomator.Direction;
@@ -62,6 +67,7 @@ import java.util.List;
import java.util.Map;
import java.util.concurrent.Callable;
import java.util.concurrent.TimeoutException;
+import java.util.regex.Pattern;
@RunWith(AndroidJUnit4.class)
public abstract class BasePermissionsTest {
@@ -77,6 +83,7 @@ public abstract class BasePermissionsTest {
private Context mContext;
private Resources mPlatformResources;
+ private Resources mPermissionControllerResources;
private boolean mWatch;
private boolean mAutomotive;
@@ -251,7 +258,7 @@ public abstract class BasePermissionsTest {
}
@Before
- public void beforeTest() {
+ public void beforeTest() throws PackageManager.NameNotFoundException{
mContext = InstrumentationRegistry.getTargetContext();
try {
Context platformContext = mContext.createPackageContext(PLATFORM_PACKAGE_NAME, 0);
@@ -265,12 +272,40 @@ public abstract class BasePermissionsTest {
mAutomotive = packageManager.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE);
initPermissionToLabelMap(packageManager.isPermissionReviewModeEnabled());
+ if (mAutomotive) {
+ Context permissionControllerContext = mContext.createPackageContext(
+ getPermissionControllerPackageName(), 0);
+ mPermissionControllerResources = permissionControllerContext.getResources();
+ assertNotNull(mPermissionControllerResources);
+ }
+
UiObject2 button = getUiDevice().findObject(By.text("Close"));
if (button != null) {
button.click();
}
}
+ private String getPermissionControllerPackageName() {
+ final Intent intent = new Intent("android.intent.action.MANAGE_PERMISSIONS");
+ intent.addCategory(Intent.CATEGORY_DEFAULT);
+
+ PackageManager packageManager = mContext.getPackageManager();
+
+ final List<ResolveInfo> matches = packageManager.queryIntentActivities(intent,
+ MATCH_SYSTEM_ONLY | MATCH_DIRECT_BOOT_AWARE | MATCH_DIRECT_BOOT_UNAWARE);
+
+ if (matches.size() == 1) {
+ ResolveInfo resolveInfo = matches.get(0);
+ if (!resolveInfo.activityInfo.applicationInfo.isPrivilegedApp()) {
+ throw new RuntimeException("The permissions manager must be a privileged app");
+ }
+ return matches.get(0).activityInfo.packageName;
+ } else {
+ throw new RuntimeException("There must be exactly one permissions manager; found "
+ + matches);
+ }
+ }
+
protected BasePermissionActivity.Result requestPermissions(
String[] permissions, int requestCode, Class<?> clazz, Runnable postRequestAction)
throws Exception {
@@ -299,20 +334,24 @@ public abstract class BasePermissionsTest {
protected void clickAllowButton() throws Exception {
scrollToBottomIfWatch();
- getUiDevice().wait(
- Until.findObject(mAutomotive
- ? By.res("android:id/button1")
- : By.res("com.android.packageinstaller:id/permission_allow_button")),
- GLOBAL_TIMEOUT_MILLIS).click();
+ if (mAutomotive) {
+ clickStringRes("grant_dialog_button_allow");
+ } else {
+ getUiDevice().wait(
+ Until.findObject(By.res("com.android.packageinstaller:id/permission_allow_button")),
+ GLOBAL_TIMEOUT_MILLIS).click();
+ }
}
protected void clickDenyButton() throws Exception {
scrollToBottomIfWatch();
- getUiDevice().wait(
- Until.findObject(mAutomotive
- ? By.res("android:id/button3")
- : By.res("com.android.packageinstaller:id/permission_deny_button")),
- GLOBAL_TIMEOUT_MILLIS).click();
+ if (mAutomotive) {
+ clickStringRes("grant_dialog_button_deny");
+ } else {
+ getUiDevice().wait(
+ Until.findObject(By.res("com.android.packageinstaller:id/permission_deny_button")),
+ GLOBAL_TIMEOUT_MILLIS).click();
+ }
}
protected void clickDontAskAgainCheckbox() throws Exception {
@@ -324,11 +363,22 @@ public abstract class BasePermissionsTest {
protected void clickDontAskAgainButton() throws Exception {
scrollToBottomIfWatch();
- getUiDevice().wait(
- Until.findObject(mAutomotive
- ? By.res("android:id/button2")
- : By.res("com.android.packageinstaller:id/permission_deny_dont_ask_again_button")),
- GLOBAL_TIMEOUT_MILLIS).click();
+ if (mAutomotive) {
+ clickStringRes("never_ask_again");
+ } else {
+ getUiDevice().wait(
+ Until.findObject(By.res("com.android.packageinstaller:id/permission_deny_dont_ask_again_button")),
+ GLOBAL_TIMEOUT_MILLIS).click();
+ }
+ }
+
+ private void clickStringRes(String res) throws TimeoutException, UiObjectNotFoundException {
+ String s = mPermissionControllerResources.getString(mPermissionControllerResources
+ .getIdentifier(res, "string", "com.android.packageinstaller"));
+ waitForIdle();
+ getUiDevice().wait(Until.findObject(By.text(
+ Pattern.compile(Pattern.quote(s), Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE))),
+ GLOBAL_TIMEOUT_MILLIS).click();
}
protected void grantPermission(String permission) throws Exception {
diff --git a/hostsidetests/appsecurity/test-apps/UsePermissionApp23/src/com/android/cts/usepermission/UsePermissionTest23.java b/hostsidetests/appsecurity/test-apps/UsePermissionApp23/src/com/android/cts/usepermission/UsePermissionTest23.java
index 12df59b8c5e..5ddd2dab55f 100644
--- a/hostsidetests/appsecurity/test-apps/UsePermissionApp23/src/com/android/cts/usepermission/UsePermissionTest23.java
+++ b/hostsidetests/appsecurity/test-apps/UsePermissionApp23/src/com/android/cts/usepermission/UsePermissionTest23.java
@@ -41,14 +41,12 @@ public class UsePermissionTest23 extends BasePermissionsTest {
private boolean mLeanback;
private boolean mWatch;
- private boolean mAutomotive;
@Before
public void initialize() {
PackageManager pm = getInstrumentation().getContext().getPackageManager();
mLeanback = pm.hasSystemFeature(PackageManager.FEATURE_LEANBACK);
mWatch = pm.hasSystemFeature(PackageManager.FEATURE_WATCH);
- mAutomotive = pm.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE);
}
@Test
@@ -679,7 +677,7 @@ public class UsePermissionTest23 extends BasePermissionsTest {
}
private void denyWithPrejudice() throws Exception {
- if (mLeanback || mWatch || mAutomotive) {
+ if (mLeanback || mWatch) {
clickDontAskAgainButton();
} else {
clickDontAskAgainCheckbox();
diff --git a/tests/tests/permission/src/android/permission/cts/PermissionGroupChange.java b/tests/tests/permission/src/android/permission/cts/PermissionGroupChange.java
index 640139f53e7..9c5c6be46d1 100644
--- a/tests/tests/permission/src/android/permission/cts/PermissionGroupChange.java
+++ b/tests/tests/permission/src/android/permission/cts/PermissionGroupChange.java
@@ -100,9 +100,12 @@ public class PermissionGroupChange {
}
protected void clickAllowButton() throws Exception {
- mUiDevice.findObject(new UiSelector().resourceId(mAutomotive
- ? "android:id/button1"
- : "com.android.packageinstaller:id/permission_allow_button")).click();
+ if (mAutomotive) {
+ mUiDevice.findObject(new UiSelector().textMatches("(?i)Allow")).click();
+ } else {
+ mUiDevice.findObject(new UiSelector().resourceId(
+ "com.android.packageinstaller:id/permission_allow_button")).click();
+ }
}
private void grantPermissionViaUi() throws Throwable {