diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2021-09-10 23:06:43 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2021-09-10 23:06:43 +0000 |
commit | 30c280a1b1fc8f98641bbb40ef9bc44da35976c9 (patch) | |
tree | 4db73faf0741360a6525e839aed59bfb380c3789 | |
parent | dedcf3e270e7be9b9001bd30295654d6f34597b8 (diff) | |
parent | f135e371b47d43915a6db40a7265c03a41bf2c4c (diff) | |
download | cts-30c280a1b1fc8f98641bbb40ef9bc44da35976c9.tar.gz |
Merge "Snap for 7719676 from d08dae25b765edf97ff0b388e69d7f7dfe5be785 to pie-vts-release" into pie-vts-release
4 files changed, 85 insertions, 22 deletions
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleSecureClientTestListActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleSecureClientTestListActivity.java index 54f8ad1d304..90848a9e07f 100644 --- a/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleSecureClientTestListActivity.java +++ b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleSecureClientTestListActivity.java @@ -17,7 +17,9 @@ package com.android.cts.verifier.bluetooth;
import android.bluetooth.BluetoothAdapter;
+import android.content.pm.PackageManager;
import android.os.Bundle;
+import android.os.SystemProperties;
import com.android.cts.verifier.ManifestTestListAdapter;
import com.android.cts.verifier.PassFailButtons;
@@ -42,6 +44,16 @@ public class BleSecureClientTestListActivity extends PassFailButtons.TestListAct "com.android.cts.verifier.bluetooth.BleAdvertiserHardwareScanFilterActivity.");
}
+ // RPA is optional on TVs already released before Android 11
+ boolean isTv = getPackageManager().hasSystemFeature(PackageManager.FEATURE_LEANBACK);
+ int firstSdk = SystemProperties.getInt("ro.product.first_api_level", 0);
+ if (isTv && (firstSdk <= 29)) {
+ disabledTest.add(
+ "com.android.cts.verifier.bluetooth.BleSecureConnectionPriorityClientTestActivity");
+ disabledTest.add(
+ "com.android.cts.verifier.bluetooth.BleSecureEncryptedClientTestActivity");
+ }
+
setTestListAdapter(new ManifestTestListAdapter(this, getClass().getName(),
disabledTest.toArray(new String[disabledTest.size()])));
}
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 { |