Snap for 4683893 from 8176b22e2dbf860191c08734de8b1678ccb5c122 to pi-release

Change-Id: Ib5cd3fbfe9a86dc55a2676b04568462f4c14b45c
diff --git a/src/com/android/settings/intelligence/suggestions/eligibility/AutomotiveEligibilityChecker.java b/src/com/android/settings/intelligence/suggestions/eligibility/AutomotiveEligibilityChecker.java
new file mode 100644
index 0000000..db8b1d7
--- /dev/null
+++ b/src/com/android/settings/intelligence/suggestions/eligibility/AutomotiveEligibilityChecker.java
@@ -0,0 +1,31 @@
+package com.android.settings.intelligence.suggestions.eligibility;
+
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.util.Log;
+
+public class AutomotiveEligibilityChecker {
+    private static final String TAG = "AutomotiveEligibility";
+
+    /**
+     * When running with {@link PackageManager#FEATURE_AUTOMOTIVE}, suggestion must have
+     * {@link #META_DATA_AUTOMOTIVE_ELIGIBLE} defined as true for the suggestion to be eligible.
+     */
+    private static final String META_DATA_AUTOMOTIVE_ELIGIBLE =
+            "com.android.settings.automotive_eligible";
+
+    public static boolean isEligible(Context context, String id, ResolveInfo info) {
+        PackageManager packageManager = context.getPackageManager();
+        boolean isAutomotive = packageManager.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE);
+        boolean isAutomotiveEligible =
+                info.activityInfo.metaData.getBoolean(META_DATA_AUTOMOTIVE_ELIGIBLE, false);
+        if (isAutomotive) {
+            if (!isAutomotiveEligible) {
+                Log.i(TAG, "Suggestion is ineligible for FEATURE_AUTOMOTIVE: " + id);
+            }
+            return isAutomotiveEligible;
+        }
+        return true;
+    }
+}
diff --git a/src/com/android/settings/intelligence/suggestions/model/CandidateSuggestion.java b/src/com/android/settings/intelligence/suggestions/model/CandidateSuggestion.java
index b53d16f..c468ab9 100644
--- a/src/com/android/settings/intelligence/suggestions/model/CandidateSuggestion.java
+++ b/src/com/android/settings/intelligence/suggestions/model/CandidateSuggestion.java
@@ -32,6 +32,7 @@
 import android.util.Log;
 
 import com.android.settings.intelligence.suggestions.eligibility.AccountEligibilityChecker;
+import com.android.settings.intelligence.suggestions.eligibility.AutomotiveEligibilityChecker;
 import com.android.settings.intelligence.suggestions.eligibility.ConnectivityEligibilityChecker;
 import com.android.settings.intelligence.suggestions.eligibility.DismissedChecker;
 import com.android.settings.intelligence.suggestions.eligibility.FeatureEligibilityChecker;
@@ -156,6 +157,9 @@
         if (!DismissedChecker.isEligible(mContext, mId, mResolveInfo, mIgnoreAppearRule)) {
             return false;
         }
+        if (!AutomotiveEligibilityChecker.isEligible(mContext, mId, mResolveInfo)) {
+            return false;
+        }
         return true;
     }
 
diff --git a/src/com/android/settings/intelligence/suggestions/model/SuggestionCategoryRegistry.java b/src/com/android/settings/intelligence/suggestions/model/SuggestionCategoryRegistry.java
index 7917a3e..84b2332 100644
--- a/src/com/android/settings/intelligence/suggestions/model/SuggestionCategoryRegistry.java
+++ b/src/com/android/settings/intelligence/suggestions/model/SuggestionCategoryRegistry.java
@@ -28,6 +28,9 @@
     static final String CATEGORY_KEY_DEFERRED_SETUP =
             "com.android.settings.suggested.category.DEFERRED_SETUP";
     @VisibleForTesting
+    static final String CATEGORY_KEY_HIGH_PRIORITY =
+        "com.android.settings.suggested.category.HIGH_PRIORITY";
+    @VisibleForTesting
     static final String CATEGORY_KEY_FIRST_IMPRESSION =
             "com.android.settings.suggested.category.FIRST_IMPRESSION";
 
@@ -40,6 +43,8 @@
         CATEGORIES = new ArrayList<>();
         CATEGORIES.add(buildCategory(CATEGORY_KEY_DEFERRED_SETUP,
                 true /* exclusive */, 14 * DateUtils.DAY_IN_MILLIS));
+        CATEGORIES.add(buildCategory(CATEGORY_KEY_HIGH_PRIORITY,
+                true /* exclusive */, 3 * DateUtils.DAY_IN_MILLIS));
         CATEGORIES.add(buildCategory(CATEGORY_KEY_FIRST_IMPRESSION,
                 true /* exclusive */, 14 * DateUtils.DAY_IN_MILLIS));
         CATEGORIES.add(buildCategory("com.android.settings.suggested.category.LOCK_SCREEN",