Remove hard-coded car media from CTS tests

Walk through system packages with activities and car metadata and make
sure they are allowed while driving instead.

Bug:26692560
Change-Id: I5369e9f5229c76a598222fcf4867839cb1d76e9d
diff --git a/tests/tests/car/src/android/car/cts/CarPackageManagerTest.java b/tests/tests/car/src/android/car/cts/CarPackageManagerTest.java
index 2865710..dc5fe0a 100644
--- a/tests/tests/car/src/android/car/cts/CarPackageManagerTest.java
+++ b/tests/tests/car/src/android/car/cts/CarPackageManagerTest.java
@@ -18,16 +18,21 @@
 import android.car.Car;
 import android.car.CarNotConnectedException;
 import android.car.content.pm.CarPackageManager;
-import android.telecom.TelecomManager;
-import android.util.Log;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.os.Bundle;
 
-import java.util.ArrayList;
 import java.util.List;
-import java.util.concurrent.ExecutionException;
 
 public class CarPackageManagerTest extends CarApiTestBase {
 
     private CarPackageManager mCarPm;
+    private static String TAG = CarPackageManagerTest.class.getSimpleName();
+
+    /** Name of the meta-data attribute for the automotive application XML resource */
+    private static final String METADATA_ATTRIBUTE = "android.car.application";
+
 
     @Override
     protected void setUp() throws Exception {
@@ -39,8 +44,6 @@
        assertFalse(mCarPm.isActivityAllowedWhileDriving("com.basic.package", "DummyActivity"));
        // Real system activity is not allowed as well.
        assertFalse(mCarPm.isActivityAllowedWhileDriving("com.android.phone", "CallActivity"));
-       assertTrue(mCarPm.isActivityAllowedWhileDriving(
-               "com.google.android.car.media", "com.google.android.car.media.MediaProxyActivity"));
 
        try {
            mCarPm.isActivityAllowedWhileDriving("com.android.settings", null);
@@ -62,6 +65,32 @@
        }
    }
 
+    public void testSystemActivitiesAllowed() throws CarNotConnectedException {
+        List<PackageInfo> packages = getContext().getPackageManager().getInstalledPackages(
+                PackageManager.GET_ACTIVITIES | PackageManager.GET_META_DATA);
+
+        for (PackageInfo info : packages) {
+            if (info.applicationInfo == null) {
+                continue;
+            }
+            if ((info.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0 ||
+                    ((info.applicationInfo.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0)) {
+
+                Bundle metaData = info.applicationInfo.metaData;
+                if (metaData == null || metaData.getInt(METADATA_ATTRIBUTE, 0) == 0) {
+                    continue;  // No car metadata, ignoring this app.
+                }
+
+                if (info.activities != null && info.activities.length > 0) {
+                    String activity = info.activities[0].name;
+                    String packageName = info.packageName;
+                    assertTrue("Failed for package: " + packageName + ", activity: " + activity,
+                            mCarPm.isActivityAllowedWhileDriving(packageName, activity));
+                }
+            }
+        }
+    }
+
     public void testServiceAllowedWhileDriving() throws Exception {
         assertFalse(mCarPm.isServiceAllowedWhileDriving("com.basic.package", ""));
         assertTrue(mCarPm.isServiceAllowedWhileDriving("com.android.settings", "Any"));
@@ -75,4 +104,5 @@
             // Expected.
         }
     }
+
 }