Fingerprint swipe settings and suggestions should not show if hardware unavailable

Fixes: 63589121

Test: remove FP driver, make sure swipe setting and suggestions
don't show anymore && make -j RunSettingsRoboTests

Merged-In: I2539128daff8df52d040606141f772fc9edffa57
Change-Id: I2539128daff8df52d040606141f772fc9edffa57
diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java
index 43106cf..2b2ca8c 100644
--- a/src/com/android/settings/Utils.java
+++ b/src/com/android/settings/Utils.java
@@ -1253,6 +1253,11 @@
         }
     }
 
+    public static boolean hasFingerprintHardware(Context context) {
+        FingerprintManager fingerprintManager = getFingerprintManagerOrNull(context);
+        return fingerprintManager != null && fingerprintManager.isHardwareDetected();
+    }
+
     /**
      * Launches an intent which may optionally have a user id defined.
      * @param fragment Fragment to use to launch the activity.
diff --git a/src/com/android/settings/dashboard/suggestions/SuggestionsChecks.java b/src/com/android/settings/dashboard/suggestions/SuggestionsChecks.java
index 3e85d2c..6ff0413 100644
--- a/src/com/android/settings/dashboard/suggestions/SuggestionsChecks.java
+++ b/src/com/android/settings/dashboard/suggestions/SuggestionsChecks.java
@@ -65,12 +65,14 @@
         } else if (className.equals(WifiCallingSuggestionActivity.class.getName())) {
             return isWifiCallingUnavailableOrEnabled();
         } else if (className.equals(FingerprintSuggestionActivity.class.getName())) {
-            return isNotSingleFingerprintEnrolled() || !isFingerprintEnabled();
+            return !Utils.hasFingerprintHardware(mContext) || !isFingerprintEnabled()
+                    || isNotSingleFingerprintEnrolled();
         } else if (className.equals(ScreenLockSuggestionActivity.class.getName())) {
             return isDeviceSecured();
         } else if (className.equals(FingerprintEnrollSuggestionActivity.class.getName())) {
-            FingerprintManager manager = Utils.getFingerprintManagerOrNull(mContext);
-            if (manager == null || !isFingerprintEnabled()) {
+            final FingerprintManager manager = Utils.getFingerprintManagerOrNull(mContext);
+            if (manager == null || !isFingerprintEnabled()
+                    || !Utils.hasFingerprintHardware(mContext)) {
                 return true;
             }
             return manager.hasEnrolledFingerprints();
diff --git a/src/com/android/settings/gestures/SwipeToNotificationPreferenceController.java b/src/com/android/settings/gestures/SwipeToNotificationPreferenceController.java
index bb63f21..6935cce 100644
--- a/src/com/android/settings/gestures/SwipeToNotificationPreferenceController.java
+++ b/src/com/android/settings/gestures/SwipeToNotificationPreferenceController.java
@@ -23,7 +23,7 @@
 import android.support.v7.preference.Preference;
 
 import com.android.settings.R;
-import com.android.settings.overlay.FeatureFactory;
+import com.android.settings.Utils;
 import com.android.settings.search.DatabaseIndexingUtils;
 import com.android.settings.search.InlineSwitchPayload;
 import com.android.settings.search.ResultPayload;
@@ -50,7 +50,7 @@
     }
 
     private static boolean isGestureAvailable(Context context) {
-        return context.getResources()
+        return Utils.hasFingerprintHardware(context) && context.getResources()
                 .getBoolean(com.android.internal.R.bool.config_supportSystemNavigationKeys);
     }