Merge "Update PermissionGroupChange for automotive" into rvc-dev
diff --git a/tests/tests/permission/src/android/permission/cts/PermissionGroupChange.java b/tests/tests/permission/src/android/permission/cts/PermissionGroupChange.java
index 1466cb8..37a448b 100644
--- a/tests/tests/permission/src/android/permission/cts/PermissionGroupChange.java
+++ b/tests/tests/permission/src/android/permission/cts/PermissionGroupChange.java
@@ -30,7 +30,9 @@
 import android.content.Intent;
 import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
+import android.content.res.Resources;
 import android.platform.test.annotations.SecurityTest;
+import android.support.test.uiautomator.By;
 import android.support.test.uiautomator.UiDevice;
 import android.support.test.uiautomator.UiScrollable;
 import android.support.test.uiautomator.UiSelector;
@@ -53,6 +55,7 @@
 
     private Context mContext;
     private UiDevice mUiDevice;
+    private String mAllowButtonText = null;
 
     @Before
     public void setContextAndUiDevice() {
@@ -100,8 +103,15 @@
     }
 
     protected void clickAllowButton() throws Exception {
-        mUiDevice.findObject(new UiSelector().resourceId(
-                "com.android.permissioncontroller:id/permission_allow_button")).click();
+        if (mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE)) {
+            if (mAllowButtonText == null) {
+                mAllowButtonText = getPermissionControllerString("grant_dialog_button_allow");
+            }
+            mUiDevice.findObject(By.text(mAllowButtonText)).click();
+        } else {
+            mUiDevice.findObject(By.res(
+                    "com.android.permissioncontroller:id/permission_allow_button")).click();
+        }
     }
 
     private void grantPermissionViaUi() throws Throwable {
@@ -174,6 +184,15 @@
         }
     }
 
+    private String getPermissionControllerString(String res)
+            throws PackageManager.NameNotFoundException {
+        Resources permissionControllerResources = mContext.createPackageContext(
+                mContext.getPackageManager().getPermissionControllerPackageName(), 0)
+                .getResources();
+        return permissionControllerResources.getString(permissionControllerResources
+                .getIdentifier(res, "string", "com.android.permissioncontroller"));
+    }
+
     private interface ThrowingRunnable {
         void run() throws Throwable;
     }
diff --git a/tests/tests/permission3/src/android/permission3/cts/BasePermissionTest.kt b/tests/tests/permission3/src/android/permission3/cts/BasePermissionTest.kt
index f4f97f71..5cd5c4f 100644
--- a/tests/tests/permission3/src/android/permission3/cts/BasePermissionTest.kt
+++ b/tests/tests/permission3/src/android/permission3/cts/BasePermissionTest.kt
@@ -21,10 +21,6 @@
 import android.content.Context
 import android.content.Intent
 import android.content.pm.PackageManager
-import android.content.pm.PackageManager.MATCH_DIRECT_BOOT_AWARE
-import android.content.pm.PackageManager.MATCH_DIRECT_BOOT_UNAWARE
-import android.content.pm.PackageManager.MATCH_SYSTEM_ONLY
-import android.content.pm.ResolveInfo
 import android.content.res.Resources
 import android.provider.Settings
 import android.support.test.uiautomator.By
@@ -58,7 +54,7 @@
     protected val uiDevice: UiDevice = UiDevice.getInstance(instrumentation)
     protected val packageManager: PackageManager = context.packageManager
     private val mPermissionControllerResources: Resources = context.createPackageContext(
-            getPermissionControllerPackageName(), 0).resources
+            context.packageManager.permissionControllerPackageName, 0).resources
 
     @get:Rule
     val activityRule = ActivityTestRule(StartForFutureActivity::class.java, false, false)
@@ -98,23 +94,6 @@
             mPermissionControllerResources.getString(mPermissionControllerResources
                     .getIdentifier(res, "string", "com.android.permissioncontroller"))
 
-    private fun getPermissionControllerPackageName(): String {
-        val intent = Intent("android.intent.action.MANAGE_PERMISSIONS")
-        intent.addCategory(Intent.CATEGORY_DEFAULT)
-        val packageManager: PackageManager = context.getPackageManager()
-        val matches: List<ResolveInfo> = packageManager.queryIntentActivities(intent,
-                MATCH_SYSTEM_ONLY or MATCH_DIRECT_BOOT_AWARE or MATCH_DIRECT_BOOT_UNAWARE)
-        return if (matches.size == 1) {
-            val resolveInfo: ResolveInfo = matches[0]
-            if (!resolveInfo.activityInfo.applicationInfo.isPrivilegedApp()) {
-                throw RuntimeException("The permissions manager must be a privileged app")
-            }
-            matches[0].activityInfo.packageName
-        } else {
-            throw RuntimeException("There must be exactly one permissions manager; found $matches")
-        }
-    }
-
     protected fun installPackage(
         apkPath: String,
         reinstall: Boolean = false,