Snap for 6245392 from 7e14a22f019f8d49bb982c61709eee8db5652503 to qt-d4-release

Change-Id: I8e846b071614f0330f192c94a05f6501e33605e3
diff --git a/src/com/android/car/carlauncher/AppLauncherUtils.java b/src/com/android/car/carlauncher/AppLauncherUtils.java
index d7df815..223a551 100644
--- a/src/com/android/car/carlauncher/AppLauncherUtils.java
+++ b/src/com/android/car/carlauncher/AppLauncherUtils.java
@@ -200,8 +200,8 @@
                 String className = info.serviceInfo.name;
                 ComponentName componentName = new ComponentName(packageName, className);
                 mediaServicesMap.put(componentName, info);
-                if (shouldAddServiceToLaunchables(componentName, launchablesMap, blackList,
-                    customMediaComponents)) {
+                if (shouldAddToLaunchables(componentName, blackList, customMediaComponents,
+                        appTypes, APP_TYPE_MEDIA_SERVICES)) {
                     final boolean isDistractionOptimized = true;
 
                     Intent intent = new Intent(Car.CAR_INTENT_ACTION_MEDIA_TEMPLATE);
@@ -231,7 +231,8 @@
             for (LauncherActivityInfo info : availableActivities) {
                 ComponentName componentName = info.getComponentName();
                 String packageName = componentName.getPackageName();
-                if (shouldAddToLaunchables(componentName, launchablesMap, blackList)) {
+                if (shouldAddToLaunchables(componentName, blackList, customMediaComponents,
+                        appTypes, APP_TYPE_LAUNCHABLES)) {
                     boolean isDistractionOptimized =
                         isActivityDistractionOptimized(carPackageManager, packageName,
                             info.getName());
@@ -253,24 +254,35 @@
             }
         }
 
-
-
         return new LauncherAppsInfo(launchablesMap, mediaServicesMap);
     }
 
-    private static boolean shouldAddToLaunchables(ComponentName componentName,
-            Map<ComponentName, AppMetaData> launchablesMap,
-            @NonNull Set<String> blackList) {
-        return !launchablesMap.containsKey(componentName) && !blackList.contains(
-                componentName.getPackageName());
-    }
-
-    private static boolean shouldAddServiceToLaunchables(ComponentName componentName,
-                                             Map<ComponentName, AppMetaData> launchablesMap,
-                                             @NonNull Set<String> blackList,
-                                             @NonNull Set<String> customMediaComponents) {
-        return shouldAddToLaunchables(componentName, launchablesMap, blackList)
-                && !customMediaComponents.contains(componentName.flattenToString());
+    private static boolean shouldAddToLaunchables(@NonNull ComponentName componentName,
+            @NonNull Set<String> blackList,
+            @NonNull Set<String> customMediaComponents,
+            @AppTypes int appTypesToShow,
+            @AppTypes int componentAppType) {
+        if (blackList.contains(componentName.getPackageName())) {
+            return false;
+        }
+        switch (componentAppType) {
+            // Process media services
+            case APP_TYPE_MEDIA_SERVICES:
+                // For a media service in customMediaComponents, if its application's launcher
+                // activity will be shown in the Launcher, don't show the service's icon in the
+                // Launcher.
+                if (customMediaComponents.contains(componentName.flattenToString())
+                        && (appTypesToShow & APP_TYPE_LAUNCHABLES) != 0) {
+                    return false;
+                }
+                return true;
+            // Process activities
+            case APP_TYPE_LAUNCHABLES:
+                return true;
+            default:
+                Log.e(TAG, "Invalid componentAppType : " + componentAppType);
+                return false;
+        }
     }
 
     private static void selectMediaSourceAndFinish(Context context, ComponentName componentName) {