Merge "Add feature flags for Factory Reset Wizard." into main
diff --git a/res/layout/accessibility_launch_activity_preference.xml b/res/layout/accessibility_launch_activity_preference.xml
index 6791206..f3841e2 100644
--- a/res/layout/accessibility_launch_activity_preference.xml
+++ b/res/layout/accessibility_launch_activity_preference.xml
@@ -21,8 +21,7 @@
     android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
     android:paddingStart="?android:attr/listPreferredItemPaddingStart"
     android:paddingVertical="@dimen/settingslib_switchbar_margin"
-    android:background="@android:color/transparent"
-    android:importantForAccessibility="no">
+    android:background="@android:color/transparent">
 
     <FrameLayout
         android:layout_height="wrap_content"
diff --git a/res/values/strings.xml b/res/values/strings.xml
index dc06f3a..3d05af3 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -12460,6 +12460,8 @@
     <!-- Developer settings: select Grammatical gender dialog title [CHAR LIMIT=50]-->
     <string name="grammatical_gender_dialog_title">Select Grammatical gender</string>
 
-    <!-- Developer settings: Title for the screen allowing user to control Quarantined apps [CHAR LIMIT=50] -->
-    <string name="quarantined_apps_title">Quarantined Apps</string>
+    <!-- Do not translate. Developer settings: Title for the screen allowing user to control Quarantined apps [CHAR LIMIT=50] -->
+    <string name="quarantined_apps_title" translatable="false">Quarantined Apps</string>
+    <!-- Do not translate. Developer settings: Button to unquarantine an app [CHAR LIMIT=20] -->
+    <string name="unquarantine_app_button" translatable="false">Unquarantine app</string>
 </resources>
diff --git a/src/com/android/settings/biometrics/fingerprint2/conversion/Util.kt b/src/com/android/settings/biometrics/fingerprint2/conversion/Util.kt
index b2767c3..98b7ed0 100644
--- a/src/com/android/settings/biometrics/fingerprint2/conversion/Util.kt
+++ b/src/com/android/settings/biometrics/fingerprint2/conversion/Util.kt
@@ -17,43 +17,10 @@
 package com.android.settings.biometrics.fingerprint2.conversion
 
 import android.hardware.fingerprint.FingerprintManager
-import android.hardware.fingerprint.FingerprintSensorProperties
-import android.hardware.fingerprint.FingerprintSensorPropertiesInternal
 import com.android.settings.biometrics.fingerprint2.shared.model.EnrollReason
-import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintSensorPropertyViewModel
-import com.android.settings.biometrics.fingerprint2.shared.model.SensorStrength
-import com.android.settings.biometrics.fingerprint2.shared.model.SensorType
 
-class Util {
-  companion object {
-    fun sensorPropsToViewModel(
-      props: FingerprintSensorPropertiesInternal
-    ): FingerprintSensorPropertyViewModel {
-      val sensorStrength: SensorStrength =
-        when (props.sensorStrength) {
-          FingerprintSensorProperties.STRENGTH_CONVENIENCE -> SensorStrength.Convenient
-          FingerprintSensorProperties.STRENGTH_WEAK -> SensorStrength.Weak
-          FingerprintSensorProperties.STRENGTH_STRONG -> SensorStrength.Strong
-          else -> SensorStrength.Unknown
-        }
-      val sensorType: SensorType =
-        when (props.sensorType) {
-          FingerprintSensorProperties.TYPE_UDFPS_OPTICAL -> SensorType.Optical
-          FingerprintSensorProperties.TYPE_UDFPS_ULTRASONIC -> SensorType.Ultrasonic
-          FingerprintSensorProperties.TYPE_REAR -> SensorType.RFPS
-          FingerprintSensorProperties.TYPE_POWER_BUTTON -> SensorType.SFPS
-          else -> SensorType.Unknown
-        }
-      return FingerprintSensorPropertyViewModel(
-        props.sensorId,
-        sensorStrength,
-        props.maxEnrollmentsPerUser,
-        sensorType
-      )
-    }
-  }
+class Util
 
-}
 fun EnrollReason.toOriginalReason(): Int {
   return when (this) {
     EnrollReason.EnrollEnrolling -> FingerprintManager.ENROLL_ENROLL
diff --git a/src/com/android/settings/biometrics/fingerprint2/domain/interactor/FingerprintManagerInteractorImpl.kt b/src/com/android/settings/biometrics/fingerprint2/domain/interactor/FingerprintManagerInteractorImpl.kt
index 41da247..5c9232f 100644
--- a/src/com/android/settings/biometrics/fingerprint2/domain/interactor/FingerprintManagerInteractorImpl.kt
+++ b/src/com/android/settings/biometrics/fingerprint2/domain/interactor/FingerprintManagerInteractorImpl.kt
@@ -24,14 +24,14 @@
 import android.os.CancellationSignal
 import android.util.Log
 import com.android.settings.biometrics.GatekeeperPasswordProvider
-import com.android.settings.biometrics.fingerprint2.conversion.Util
 import com.android.settings.biometrics.fingerprint2.conversion.toOriginalReason
 import com.android.settings.biometrics.fingerprint2.shared.domain.interactor.FingerprintManagerInteractor
 import com.android.settings.biometrics.fingerprint2.shared.model.EnrollReason
+import com.android.settings.biometrics.fingerprint2.shared.model.FingerEnrollStateViewModel
 import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintAuthAttemptViewModel
 import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintViewModel
-import com.android.settings.biometrics.fingerprint2.shared.model.FingerEnrollStateViewModel
 import com.android.settings.password.ChooseLockSettingsHelper
+import com.android.systemui.biometrics.shared.model.toFingerprintSensor
 import kotlin.coroutines.resume
 import kotlin.coroutines.suspendCoroutine
 import kotlinx.coroutines.CancellableContinuation
@@ -94,7 +94,7 @@
     val sensorPropertiesInternal = fingerprintManager.sensorPropertiesInternal
     emit(
       if (sensorPropertiesInternal.isEmpty()) null
-      else Util.sensorPropsToViewModel(sensorPropertiesInternal.first())
+      else sensorPropertiesInternal.first().toFingerprintSensor()
     )
   }
 
diff --git a/src/com/android/settings/biometrics/fingerprint2/shared/Android.bp b/src/com/android/settings/biometrics/fingerprint2/shared/Android.bp
index 8873fd8..145f3d6 100644
--- a/src/com/android/settings/biometrics/fingerprint2/shared/Android.bp
+++ b/src/com/android/settings/biometrics/fingerprint2/shared/Android.bp
@@ -8,6 +8,7 @@
       "**/*.kt"
     ],
     static_libs: [
+      "BiometricsSharedLib",
       "kotlinx-coroutines-android",
     ],
 }
\ No newline at end of file
diff --git a/src/com/android/settings/biometrics/fingerprint2/shared/domain/interactor/FingerprintManagerInteractor.kt b/src/com/android/settings/biometrics/fingerprint2/shared/domain/interactor/FingerprintManagerInteractor.kt
index 5353bb2..7286715 100644
--- a/src/com/android/settings/biometrics/fingerprint2/shared/domain/interactor/FingerprintManagerInteractor.kt
+++ b/src/com/android/settings/biometrics/fingerprint2/shared/domain/interactor/FingerprintManagerInteractor.kt
@@ -18,9 +18,9 @@
 
 import com.android.settings.biometrics.fingerprint2.shared.model.EnrollReason
 import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintAuthAttemptViewModel
-import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintSensorPropertyViewModel
 import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintViewModel
 import com.android.settings.biometrics.fingerprint2.shared.model.FingerEnrollStateViewModel
+import com.android.systemui.biometrics.shared.model.FingerprintSensor
 import kotlinx.coroutines.flow.Flow
 
 /**
@@ -40,7 +40,7 @@
   val canEnrollFingerprints: Flow<Boolean>
 
   /** Retrieves the sensor properties of a device */
-  val sensorPropertiesInternal: Flow<FingerprintSensorPropertyViewModel?>
+  val sensorPropertiesInternal: Flow<FingerprintSensor?>
 
   /** Runs the authenticate flow */
   suspend fun authenticate(): FingerprintAuthAttemptViewModel
diff --git a/src/com/android/settings/biometrics/fingerprint2/shared/model/FingerprintViewModel.kt b/src/com/android/settings/biometrics/fingerprint2/shared/model/FingerprintViewModel.kt
index fc9539c..db28e79 100644
--- a/src/com/android/settings/biometrics/fingerprint2/shared/model/FingerprintViewModel.kt
+++ b/src/com/android/settings/biometrics/fingerprint2/shared/model/FingerprintViewModel.kt
@@ -32,36 +32,3 @@
     val message: String,
   ) : FingerprintAuthAttemptViewModel()
 }
-
-/** The various types of fingerprint sensors */
-sealed class SensorType {
-  /** Rear fingerprint sensor */
-  data object RFPS : SensorType()
-
-  /** Optical under display sensor */
-  data object Optical : SensorType()
-
-  /** Ultrasonic under display sensor */
-  data object Ultrasonic : SensorType()
-
-  /** Side fingerprint sensor */
-  data object SFPS : SensorType()
-
-  /** Unkonwn fingerprint sensor */
-  data object Unknown : SensorType()
-}
-
-/** The strength of a given sensor */
-sealed class SensorStrength {
-  data object Convenient : SensorStrength()
-  data object Weak : SensorStrength()
-  data object Strong : SensorStrength()
-  data object Unknown : SensorStrength()
-}
-
-data class FingerprintSensorPropertyViewModel(
-  val sensorId: Int,
-  val sensorStrength: SensorStrength,
-  val maxEnrollmentsPerUser: Int,
-  val sensorType: SensorType
-)
diff --git a/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/fragment/FingerprintEnrollFindSensorV2Fragment.kt b/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/fragment/FingerprintEnrollFindSensorV2Fragment.kt
index e4ac00f..dcdcccf 100644
--- a/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/fragment/FingerprintEnrollFindSensorV2Fragment.kt
+++ b/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/fragment/FingerprintEnrollFindSensorV2Fragment.kt
@@ -29,7 +29,6 @@
 import com.android.settings.R
 import com.android.settings.biometrics.fingerprint.FingerprintErrorDialog
 import com.android.settings.biometrics.fingerprint.FingerprintFindSensorAnimation
-import com.android.settings.biometrics.fingerprint2.shared.model.SensorType
 import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintEnrollFindSensorViewModel
 import com.android.systemui.biometrics.shared.model.FingerprintSensorType
 import com.google.android.setupcompat.template.FooterBarMixin
@@ -66,9 +65,9 @@
       viewModel.sensorType.collect {
         contentLayoutId =
           when (it) {
-            SensorType.Optical,
-            SensorType.Ultrasonic -> R.layout.udfps_enroll_find_sensor_layout
-            SensorType.SFPS -> R.layout.sfps_enroll_find_sensor_layout
+            FingerprintSensorType.UDFPS_OPTICAL,
+            FingerprintSensorType.UDFPS_ULTRASONIC -> R.layout.udfps_enroll_find_sensor_layout
+            FingerprintSensorType.POWER_BUTTON -> R.layout.sfps_enroll_find_sensor_layout
             else -> R.layout.fingerprint_v2_enroll_find_sensor
           }
       }
@@ -171,14 +170,14 @@
     illustrationLottie?.visibility = View.VISIBLE
   }
 
-  private fun setTexts(sensorType: SensorType, view: GlifLayout) {
+  private fun setTexts(sensorType: FingerprintSensorType, view: GlifLayout) {
     when (sensorType) {
-      SensorType.Optical,
-      SensorType.Ultrasonic -> {
+      FingerprintSensorType.UDFPS_OPTICAL,
+      FingerprintSensorType.UDFPS_ULTRASONIC -> {
         view.setHeaderText(R.string.security_settings_udfps_enroll_find_sensor_title)
         view.setDescriptionText(R.string.security_settings_udfps_enroll_find_sensor_message)
       }
-      SensorType.SFPS -> {
+      FingerprintSensorType.POWER_BUTTON -> {
         view.setHeaderText(R.string.security_settings_sfps_enroll_find_sensor_title)
         view.setDescriptionText(R.string.security_settings_sfps_enroll_find_sensor_message)
       }
diff --git a/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/fragment/FingerprintEnrollIntroV2Fragment.kt b/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/fragment/FingerprintEnrollIntroV2Fragment.kt
index 2ebc5d5..dbf6d12 100644
--- a/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/fragment/FingerprintEnrollIntroV2Fragment.kt
+++ b/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/fragment/FingerprintEnrollIntroV2Fragment.kt
@@ -35,10 +35,10 @@
 import com.android.settings.R
 import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintEnrollNavigationViewModel
 import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintEnrollViewModel
-import com.android.settings.biometrics.fingerprint2.shared.model.SensorType
 import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintGatekeeperViewModel
 import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintScrollViewModel
 import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.Unicorn
+import com.android.systemui.biometrics.shared.model.FingerprintSensorType
 import com.google.android.setupcompat.template.FooterBarMixin
 import com.google.android.setupcompat.template.FooterButton
 import com.google.android.setupdesign.GlifLayout
@@ -144,8 +144,8 @@
             val iconShield: ImageView = view.requireViewById(R.id.icon_shield)
             val footerMessage6: TextView = view.requireViewById(R.id.footer_message_6)
             when (sensorType) {
-              SensorType.Ultrasonic,
-              SensorType.Optical -> {
+              FingerprintSensorType.UDFPS_ULTRASONIC,
+              FingerprintSensorType.UDFPS_OPTICAL -> {
                 footerMessage6.visibility = View.VISIBLE
                 iconShield.visibility = View.VISIBLE
               }
diff --git a/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/viewmodel/FingerprintEnrollFindSensorViewModel.kt b/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/viewmodel/FingerprintEnrollFindSensorViewModel.kt
index c877d67..94bfce3 100644
--- a/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/viewmodel/FingerprintEnrollFindSensorViewModel.kt
+++ b/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/viewmodel/FingerprintEnrollFindSensorViewModel.kt
@@ -22,7 +22,6 @@
 import androidx.lifecycle.viewModelScope
 import com.android.settings.biometrics.fingerprint2.shared.model.EnrollReason
 import com.android.settings.biometrics.fingerprint2.shared.model.FingerEnrollStateViewModel
-import com.android.settings.biometrics.fingerprint2.shared.model.SensorType
 import com.android.systemui.biometrics.shared.model.FingerprintSensorType
 import kotlinx.coroutines.flow.Flow
 import kotlinx.coroutines.flow.MutableStateFlow
@@ -45,13 +44,13 @@
   orientationStateViewModel: OrientationStateViewModel
 ) : ViewModel() {
   /** Represents the stream of sensor type. */
-  val sensorType: Flow<SensorType> =
+  val sensorType: Flow<FingerprintSensorType> =
     fingerprintEnrollViewModel.sensorType.filterWhenEducationIsShown()
   private val _isUdfps: Flow<Boolean> =
     sensorType.map {
-      it == SensorType.Optical || it == SensorType.Ultrasonic
+      it == FingerprintSensorType.UDFPS_OPTICAL || it == FingerprintSensorType.UDFPS_ULTRASONIC
     }
-  private val _isSfps: Flow<Boolean> = sensorType.map { it == SensorType.RFPS }
+  private val _isSfps: Flow<Boolean> = sensorType.map { it == FingerprintSensorType.POWER_BUTTON }
   private val _isRearSfps: Flow<Boolean> =
     combineTransform(_isSfps, _isUdfps) { v1, v2 -> !v1 && !v2 }
 
@@ -95,8 +94,8 @@
         ) { sensorType, hasValidGatekeeperInfo, gatekeeperInfo, navigationViewModel ->
           val shouldStartEnroll =
             navigationViewModel.currStep == Education &&
-              sensorType != SensorType.Optical &&
-              sensorType != SensorType.Ultrasonic &&
+              sensorType != FingerprintSensorType.UDFPS_OPTICAL &&
+              sensorType != FingerprintSensorType.UDFPS_ULTRASONIC &&
               hasValidGatekeeperInfo
           if (shouldStartEnroll) (gatekeeperInfo as GatekeeperInfo.GatekeeperPasswordInfo).token
           else null
diff --git a/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/viewmodel/FingerprintEnrollViewModel.kt b/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/viewmodel/FingerprintEnrollViewModel.kt
index b2c51db..392d205 100644
--- a/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/viewmodel/FingerprintEnrollViewModel.kt
+++ b/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/viewmodel/FingerprintEnrollViewModel.kt
@@ -20,7 +20,6 @@
 import com.android.settings.biometrics.fingerprint2.shared.domain.interactor.FingerprintManagerInteractor
 import com.android.settings.biometrics.fingerprint2.shared.model.EnrollReason
 import com.android.settings.biometrics.fingerprint2.shared.model.FingerEnrollStateViewModel
-import com.android.settings.biometrics.fingerprint2.shared.model.SensorType
 import com.android.systemui.biometrics.shared.model.FingerprintSensorType
 import kotlinx.coroutines.CoroutineDispatcher
 import kotlinx.coroutines.flow.Flow
@@ -46,7 +45,7 @@
   private var _consumerShouldEnroll: MutableStateFlow<Boolean> = MutableStateFlow(false)
 
   /** Represents the stream of [FingerprintSensorType] */
-  val sensorType: Flow<SensorType> =
+  val sensorType: Flow<FingerprintSensorType> =
     fingerprintManagerInteractor.sensorPropertiesInternal.filterNotNull().map { it.sensorType }
 
   /**
diff --git a/src/com/android/settings/biometrics/fingerprint2/ui/settings/viewmodel/FingerprintSettingsViewModel.kt b/src/com/android/settings/biometrics/fingerprint2/ui/settings/viewmodel/FingerprintSettingsViewModel.kt
index d2691b4..fa1e5e1 100644
--- a/src/com/android/settings/biometrics/fingerprint2/ui/settings/viewmodel/FingerprintSettingsViewModel.kt
+++ b/src/com/android/settings/biometrics/fingerprint2/ui/settings/viewmodel/FingerprintSettingsViewModel.kt
@@ -24,7 +24,7 @@
 import com.android.settings.biometrics.fingerprint2.shared.domain.interactor.FingerprintManagerInteractor
 import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintAuthAttemptViewModel
 import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintViewModel
-import com.android.settings.biometrics.fingerprint2.shared.model.SensorType
+import com.android.systemui.biometrics.shared.model.FingerprintSensorType
 import kotlinx.coroutines.CoroutineDispatcher
 import kotlinx.coroutines.flow.Flow
 import kotlinx.coroutines.flow.MutableSharedFlow
@@ -89,7 +89,7 @@
 
   private val _consumerShouldAuthenticate: MutableStateFlow<Boolean> = MutableStateFlow(false)
 
-  private val _fingerprintSensorType: Flow<SensorType> =
+  private val _fingerprintSensorType: Flow<FingerprintSensorType> =
     fingerprintManagerInteractor.sensorPropertiesInternal.filterNotNull().map { it.sensorType }
 
   private val _sensorNullOrEmpty: Flow<Boolean> =
@@ -146,7 +146,10 @@
         if (sensorNullOrEmpty) {
           return@combine false
         }
-        if (listOf(SensorType.Ultrasonic, SensorType.Optical).contains(sensorType)) {
+        if (
+          listOf(FingerprintSensorType.UDFPS_ULTRASONIC, FingerprintSensorType.UDFPS_OPTICAL)
+            .contains(sensorType)
+        ) {
           return@combine false
         }
 
diff --git a/src/com/android/settings/development/quarantine/QuarantinedAppsScreenController.java b/src/com/android/settings/development/quarantine/QuarantinedAppsScreenController.java
index e5373fd..c3cb38d 100644
--- a/src/com/android/settings/development/quarantine/QuarantinedAppsScreenController.java
+++ b/src/com/android/settings/development/quarantine/QuarantinedAppsScreenController.java
@@ -19,6 +19,7 @@
 import android.app.Application;
 import android.content.Context;
 import android.content.pm.PackageManager;
+import android.content.pm.SuspendDialogInfo;
 import android.os.UserHandle;
 
 import androidx.annotation.VisibleForTesting;
@@ -181,8 +182,17 @@
     private void setPackageQuarantined(String pkg, int uid, boolean quarantined) {
         final PackageManager pm = mContext.createContextAsUser(
                 UserHandle.getUserHandleForUid(uid), 0).getPackageManager();
+        final SuspendDialogInfo dialogInfo;
+        if (quarantined) {
+            dialogInfo = new SuspendDialogInfo.Builder()
+                    .setNeutralButtonText(R.string.unquarantine_app_button)
+                    .setNeutralButtonAction(SuspendDialogInfo.BUTTON_ACTION_UNSUSPEND)
+                    .build();
+        } else {
+            dialogInfo = null;
+        }
         pm.setPackagesSuspended(new String[] {pkg}, quarantined, null /* appExtras */,
-                null /* launcherExtras */, null /* dialogInfo */,
+                null /* launcherExtras */, dialogInfo,
                 PackageManager.FLAG_SUSPEND_QUARANTINED);
     }
 
diff --git a/src/com/android/settings/display/FoldLockBehaviorPreferenceController.java b/src/com/android/settings/display/FoldLockBehaviorPreferenceController.java
index 88e78e8..661eb99 100644
--- a/src/com/android/settings/display/FoldLockBehaviorPreferenceController.java
+++ b/src/com/android/settings/display/FoldLockBehaviorPreferenceController.java
@@ -24,12 +24,12 @@
 import static com.android.settings.display.FoldLockBehaviorSettings.SETTING_VALUE_STAY_AWAKE_ON_FOLD;
 
 import android.content.Context;
-import android.content.res.Resources;
 import android.os.UserHandle;
 import android.provider.Settings;
 
 import androidx.preference.Preference;
 
+import com.android.internal.foldables.FoldLockSettingAvailabilityProvider;
 import com.android.settings.R;
 import com.android.settings.core.BasePreferenceController;
 
@@ -45,17 +45,17 @@
  */
 public class FoldLockBehaviorPreferenceController extends BasePreferenceController {
 
-    private final Resources mResources;
-
-    private static Map<String, String> KEY_TO_TEXT = new HashMap<>();
+    private static final Map<String, String> KEY_TO_TEXT = new HashMap<>();
+    private final FoldLockSettingAvailabilityProvider mFoldLockSettingAvailabilityProvider;
 
     public FoldLockBehaviorPreferenceController(Context context, String key) {
-        this(context, key, context.getResources());
+        this(context, key, new FoldLockSettingAvailabilityProvider(context.getResources()));
     }
 
-    public FoldLockBehaviorPreferenceController(Context context, String key, Resources resources) {
+    public FoldLockBehaviorPreferenceController(Context context, String key,
+            FoldLockSettingAvailabilityProvider foldLockSettingAvailabilityProvider) {
         super(context, key);
-        mResources = resources;
+        mFoldLockSettingAvailabilityProvider = foldLockSettingAvailabilityProvider;
         KEY_TO_TEXT.put(SETTING_VALUE_STAY_AWAKE_ON_FOLD,
                 resourceToString(R.string.stay_awake_on_fold_title));
         KEY_TO_TEXT.put(SETTING_VALUE_SELECTIVE_STAY_AWAKE,
@@ -66,7 +66,9 @@
 
     @Override
     public int getAvailabilityStatus() {
-        return mResources.getBoolean(com.android.internal.R.bool.config_fold_lock_behavior)
+        boolean isFoldLockBehaviorAvailable =
+                mFoldLockSettingAvailabilityProvider.isFoldLockBehaviorAvailable();
+        return isFoldLockBehaviorAvailable
                 ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
     }
 
diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownController.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownController.java
index 4db4d3b..ea4fa3a 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownController.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownController.java
@@ -146,10 +146,15 @@
         return false;
     }
 
-    private String getActionKey(String packageName) {
-        final String actionKey = TextUtils.isEmpty(packageName)
-                ? PACKAGE_NAME_NONE : packageName;
-        return mAnomalyEventId == null ? actionKey : actionKey + "|"  + mAnomalyEventId;
+    private boolean isAnomalyBatteryDiffEntry(BatteryDiffEntry entry) {
+        return mIsHighlightSlot && mAnomalyEntryKey != null
+                && mAnomalyEntryKey.equals(entry.getKey());
+    }
+
+    private String getActionKey(BatteryDiffEntry entry) {
+        final String actionKey = TextUtils.isEmpty(entry.getPackageName())
+                ? PACKAGE_NAME_NONE : entry.getPackageName();
+        return !isAnomalyBatteryDiffEntry(entry) ? actionKey : actionKey + "|"  + mAnomalyEventId;
     }
 
     @Override
@@ -159,17 +164,16 @@
         }
         final PowerGaugePreference powerPref = (PowerGaugePreference) preference;
         final BatteryDiffEntry diffEntry = powerPref.getBatteryDiffEntry();
-        final String packageName = diffEntry.getPackageName();
         mMetricsFeatureProvider.action(
                 /* attribution */ SettingsEnums.OPEN_BATTERY_USAGE,
                 /* action */ diffEntry.isSystemEntry()
                         ? SettingsEnums.ACTION_BATTERY_USAGE_SYSTEM_ITEM
                         : SettingsEnums.ACTION_BATTERY_USAGE_APP_ITEM,
                 /* pageId */ SettingsEnums.OPEN_BATTERY_USAGE,
-                getActionKey(packageName),
+                getActionKey(diffEntry),
                 (int) Math.round(diffEntry.getPercentage()));
         Log.d(TAG, String.format("handleClick() label=%s key=%s package=%s",
-                diffEntry.getAppLabel(), diffEntry.getKey(), packageName));
+                diffEntry.getAppLabel(), diffEntry.getKey(), diffEntry.getPackageName()));
         AdvancedPowerUsageDetail.startBatteryDetailPage(
                 mActivity, mFragment, diffEntry, powerPref.getPercentage(), mSlotTimestamp);
         return true;
@@ -324,9 +328,7 @@
             pref.setOrder(prefIndex);
             pref.setSingleLineTitle(true);
             // Updates App item preference style
-            pref.setAnomalyHint(mIsHighlightSlot && mAnomalyEntryKey != null
-                    && mAnomalyEntryKey.equals(entry.getKey())
-                    ? mAnomalyHintString : null);
+            pref.setAnomalyHint(isAnomalyBatteryDiffEntry(entry) ? mAnomalyHintString : null);
             // Sets the BatteryDiffEntry to preference for launching detailed page.
             pref.setBatteryDiffEntry(entry);
             pref.setSelectable(entry.validForRestriction());
diff --git a/src/com/android/settings/notification/app/FullScreenIntentPermissionPreferenceController.kt b/src/com/android/settings/notification/app/FullScreenIntentPermissionPreferenceController.kt
index 2cc26f6..4349b4c 100644
--- a/src/com/android/settings/notification/app/FullScreenIntentPermissionPreferenceController.kt
+++ b/src/com/android/settings/notification/app/FullScreenIntentPermissionPreferenceController.kt
@@ -21,6 +21,7 @@
 import android.app.AppOpsManager.OP_USE_FULL_SCREEN_INTENT
 import android.content.AttributionSource
 import android.content.Context
+import android.content.pm.PackageManager.NameNotFoundException
 import android.content.pm.PackageManager.FLAG_PERMISSION_USER_SET
 import android.content.pm.PackageManager.GET_PERMISSIONS
 import android.os.UserHandle
@@ -79,12 +80,16 @@
     }
 
     private fun isPermissionRequested(): Boolean {
-        val packageInfo = packageManager.getPackageInfo(packageName, GET_PERMISSIONS)
+        try {
+            val packageInfo = packageManager.getPackageInfo(packageName, GET_PERMISSIONS)
 
-        for (requestedPermission in packageInfo.requestedPermissions.orEmpty()) {
-            if (USE_FULL_SCREEN_INTENT.equals(requestedPermission)) {
-                return true
+            for (requestedPermission in packageInfo.requestedPermissions.orEmpty()) {
+                if (USE_FULL_SCREEN_INTENT.equals(requestedPermission)) {
+                    return true
+                }
             }
+        } catch (exception: NameNotFoundException) {
+            Log.e(TAG, "isPermissionRequested failed: $exception")
         }
 
         return false
diff --git a/tests/robotests/assets/exempt_slice_controller_not_in_xml b/tests/robotests/assets/exempt_slice_controller_not_in_xml
index 93bd9f3..88c716f 100644
--- a/tests/robotests/assets/exempt_slice_controller_not_in_xml
+++ b/tests/robotests/assets/exempt_slice_controller_not_in_xml
@@ -1,17 +1,17 @@
 com.android.settings.accessibility.AccessibilitySlicePreferenceController
-com.android.settings.core.TogglePreferenceControllerTest$FakeToggle
+com.android.settings.accessibility.ReduceBrightColorsIntensityPreferenceController
+com.android.settings.accessibility.ReduceBrightColorsPersistencePreferenceController
 com.android.settings.biometrics.face.FaceSettingsAttentionPreferenceController
+com.android.settings.core.TogglePreferenceControllerTest$FakeToggle
 com.android.settings.display.DeviceStateAutoRotateSettingController
 com.android.settings.display.SmartAutoRotatePreferenceController
 com.android.settings.gestures.OneHandedMainSwitchPreferenceController
-com.android.settings.network.telephony.MmsMessagePreferenceController
 com.android.settings.network.telephony.AutoDataSwitchPreferenceController
 com.android.settings.network.telephony.Enhanced4gBasePreferenceController
+com.android.settings.network.telephony.MmsMessagePreferenceController
 com.android.settings.notification.RingVolumePreferenceController
-com.android.settings.testutils.FakeToggleController
-com.android.settings.testutils.FakeSliderController
 com.android.settings.testutils.FakeInvalidSliderController
+com.android.settings.testutils.FakeSliderController
+com.android.settings.testutils.FakeToggleController
+com.android.settings.users.GuestTelephonyPreferenceController
 com.android.settings.wifi.details2.WifiAutoConnectPreferenceController2
-com.android.settings.accessibility.ReduceBrightColorsIntensityPreferenceController
-com.android.settings.accessibility.ReduceBrightColorsPersistencePreferenceController
-
diff --git a/tests/robotests/src/com/android/settings/development/quarantine/QuarantinedAppsScreenControllerTest.java b/tests/robotests/src/com/android/settings/development/quarantine/QuarantinedAppsScreenControllerTest.java
index 32ad0ad..a93e529 100644
--- a/tests/robotests/src/com/android/settings/development/quarantine/QuarantinedAppsScreenControllerTest.java
+++ b/tests/robotests/src/com/android/settings/development/quarantine/QuarantinedAppsScreenControllerTest.java
@@ -20,6 +20,7 @@
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyInt;
 import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.ArgumentMatchers.isNull;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.spy;
@@ -28,6 +29,7 @@
 import android.content.Context;
 import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageManager;
+import android.content.pm.SuspendDialogInfo;
 import android.os.UserHandle;
 
 import androidx.test.core.app.ApplicationProvider;
@@ -70,12 +72,12 @@
 
         mController.onPreferenceChange(preference, true);
         verify(packageManager).setPackagesSuspended(aryEq(new String[] {TEST_PACKAGE}), eq(true),
-                any(), any(), any(),
+                isNull(), isNull(), any(SuspendDialogInfo.class),
                 eq(PackageManager.FLAG_SUSPEND_QUARANTINED));
 
         mController.onPreferenceChange(preference, false);
         verify(packageManager).setPackagesSuspended(aryEq(new String[] {TEST_PACKAGE}), eq(false),
-                any(), any(), any(),
+                isNull(), isNull(), isNull(),
                 eq(PackageManager.FLAG_SUSPEND_QUARANTINED));
     }
 
diff --git a/tests/robotests/src/com/android/settings/display/FoldLockBehaviorPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/FoldLockBehaviorPreferenceControllerTest.java
index 2510bf1..4fc56b0 100644
--- a/tests/robotests/src/com/android/settings/display/FoldLockBehaviorPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/display/FoldLockBehaviorPreferenceControllerTest.java
@@ -25,9 +25,8 @@
 import static org.mockito.Mockito.when;
 
 import android.content.Context;
-import android.content.res.Resources;
 
-import com.android.internal.R;
+import com.android.internal.foldables.FoldLockSettingAvailabilityProvider;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -41,27 +40,29 @@
 public class FoldLockBehaviorPreferenceControllerTest {
 
     @Mock
-    private Resources mResources;
+    private FoldLockSettingAvailabilityProvider mFoldLockSettingAvailabilityProvider;
     private Context mContext;
     private FoldLockBehaviorPreferenceController mController;
 
     @Before
     public void setUp() {
         mContext = RuntimeEnvironment.application;
-        mResources = Mockito.mock(Resources.class);
-        mController = new FoldLockBehaviorPreferenceController(mContext, "key", mResources);
+        mFoldLockSettingAvailabilityProvider = Mockito.mock(
+                FoldLockSettingAvailabilityProvider.class);
+        mController = new FoldLockBehaviorPreferenceController(mContext, "key",
+                mFoldLockSettingAvailabilityProvider);
     }
 
     @Test
     public void getAvailabilityStatus_withConfigNoShow_returnUnsupported() {
-        when(mResources.getBoolean(R.bool.config_fold_lock_behavior)).thenReturn(false);
+        when(mFoldLockSettingAvailabilityProvider.isFoldLockBehaviorAvailable()).thenReturn(false);
 
         assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
     }
 
     @Test
     public void getAvailabilityStatus_withConfigNoShow_returnAvailable() {
-        when(mResources.getBoolean(R.bool.config_fold_lock_behavior)).thenReturn(true);
+        when(mFoldLockSettingAvailabilityProvider.isFoldLockBehaviorAvailable()).thenReturn(true);
 
         assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
     }
diff --git a/tests/robotests/src/com/android/settings/notification/app/FullScreenIntentPermissionPreferenceControllerTest.kt b/tests/robotests/src/com/android/settings/notification/app/FullScreenIntentPermissionPreferenceControllerTest.kt
index 64bb849..89e33ee 100644
--- a/tests/robotests/src/com/android/settings/notification/app/FullScreenIntentPermissionPreferenceControllerTest.kt
+++ b/tests/robotests/src/com/android/settings/notification/app/FullScreenIntentPermissionPreferenceControllerTest.kt
@@ -30,6 +30,7 @@
 import android.content.pm.PackageManager
 import android.content.pm.PackageManager.FLAG_PERMISSION_USER_SET
 import android.content.pm.PackageManager.GET_PERMISSIONS
+import android.content.pm.PackageManager.NameNotFoundException
 import android.os.UserHandle
 import android.permission.PermissionManager.PERMISSION_GRANTED
 import android.permission.PermissionManager.PERMISSION_HARD_DENIED
@@ -134,6 +135,14 @@
     }
 
     @Test
+    fun testIsAvailable_notWhenPackageNotFound() {
+        setPackageInfoNotFound()
+        initController()
+
+        assertFalse(controller.isAvailable)
+    }
+
+    @Test
     fun testIsEnabled_notWhenDisabledByAdmin() {
         setPermissionRequestedInManifest()
         initController(admin = makeTestAdmin())
@@ -242,6 +251,12 @@
             })
     }
 
+    private fun setPackageInfoNotFound() {
+        whenever(packageManager.getPackageInfo(TEST_PACKAGE, GET_PERMISSIONS)).thenThrow(
+            NameNotFoundException(TEST_PACKAGE)
+        )
+    }
+
     private fun setPermissionResult(@PermissionResult result: Int) {
         ShadowPermissionChecker.setResult(TEST_PACKAGE, USE_FULL_SCREEN_INTENT, result)
     }
diff --git a/tests/shared/Android.bp b/tests/shared/Android.bp
index fca24b6..27573e8 100644
--- a/tests/shared/Android.bp
+++ b/tests/shared/Android.bp
@@ -4,6 +4,7 @@
         "src/**/*.kt"
     ],
     libs: [
+        "BiometricsSharedLib",
         "FingerprintManagerInteractor",
     ],
 }
diff --git a/tests/shared/src/com/android/settings/testutils2/FakeFingerprintManagerInteractor.kt b/tests/shared/src/com/android/settings/testutils2/FakeFingerprintManagerInteractor.kt
index 05c3e3c..ad943f2 100644
--- a/tests/shared/src/com/android/settings/testutils2/FakeFingerprintManagerInteractor.kt
+++ b/tests/shared/src/com/android/settings/testutils2/FakeFingerprintManagerInteractor.kt
@@ -17,13 +17,13 @@
 package com.android.settings.testutils2
 
 import com.android.settings.biometrics.fingerprint2.shared.domain.interactor.FingerprintManagerInteractor
-import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintAuthAttemptViewModel
-import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintSensorPropertyViewModel
-import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintViewModel
 import com.android.settings.biometrics.fingerprint2.shared.model.EnrollReason
 import com.android.settings.biometrics.fingerprint2.shared.model.FingerEnrollStateViewModel
-import com.android.settings.biometrics.fingerprint2.shared.model.SensorStrength
-import com.android.settings.biometrics.fingerprint2.shared.model.SensorType
+import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintAuthAttemptViewModel
+import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintViewModel
+import com.android.systemui.biometrics.shared.model.FingerprintSensor
+import com.android.systemui.biometrics.shared.model.FingerprintSensorType
+import com.android.systemui.biometrics.shared.model.SensorStrength
 import kotlinx.coroutines.flow.Flow
 import kotlinx.coroutines.flow.flow
 import kotlinx.coroutines.flow.flowOf
@@ -39,7 +39,12 @@
   var pressToAuthEnabled = true
 
   var sensorProp =
-    FingerprintSensorPropertyViewModel(0 /* sensorId */, SensorStrength.Strong, 5, SensorType.SFPS)
+    FingerprintSensor(
+      0 /* sensorId */,
+      SensorStrength.STRONG,
+      5,
+      FingerprintSensorType.POWER_BUTTON
+    )
 
   override suspend fun authenticate(): FingerprintAuthAttemptViewModel {
     return authenticateAttempt
@@ -57,7 +62,7 @@
     emit(enrolledFingerprintsInternal.size < enrollableFingerprints)
   }
 
-  override val sensorPropertiesInternal: Flow<FingerprintSensorPropertyViewModel?> = flow {
+  override val sensorPropertiesInternal: Flow<FingerprintSensor?> = flow {
     emit(sensorProp)
   }
 
@@ -79,7 +84,7 @@
   }
 
   override suspend fun hasSideFps(): Boolean {
-    return sensorProp.sensorType == SensorType.SFPS
+    return sensorProp.sensorType == FingerprintSensorType.POWER_BUTTON
   }
 
   override suspend fun pressToAuthEnabled(): Boolean {
diff --git a/tests/unit/Android.bp b/tests/unit/Android.bp
index 4f044c7..eb38980 100644
--- a/tests/unit/Android.bp
+++ b/tests/unit/Android.bp
@@ -25,6 +25,7 @@
         "androidx.preference_preference",
         "mockito-target-minus-junit4",
         "platform-test-annotations",
+        "platform-test-rules",
         "truth-prebuilt",
         "kotlinx_coroutines_test",
         "flag-junit",
diff --git a/tests/unit/src/com/android/settings/applications/appcompat/UserAspectRatioManagerTest.java b/tests/unit/src/com/android/settings/applications/appcompat/UserAspectRatioManagerTest.java
index 81078e8..61c4507 100644
--- a/tests/unit/src/com/android/settings/applications/appcompat/UserAspectRatioManagerTest.java
+++ b/tests/unit/src/com/android/settings/applications/appcompat/UserAspectRatioManagerTest.java
@@ -17,7 +17,6 @@
 package com.android.settings.applications.appcompat;
 
 import static android.content.pm.PackageManager.USER_MIN_ASPECT_RATIO_16_9;
-import static android.content.pm.PackageManager.USER_MIN_ASPECT_RATIO_3_2;
 import static android.content.pm.PackageManager.USER_MIN_ASPECT_RATIO_4_3;
 import static android.content.pm.PackageManager.USER_MIN_ASPECT_RATIO_FULLSCREEN;
 import static android.content.pm.PackageManager.USER_MIN_ASPECT_RATIO_SPLIT_SCREEN;
@@ -45,6 +44,10 @@
 import android.content.pm.LauncherApps;
 import android.content.pm.PackageManager;
 import android.content.res.Resources;
+import android.platform.test.rule.DeviceTypeRule;
+import android.platform.test.rule.FoldableOnly;
+import android.platform.test.rule.LargeScreenOnly;
+import android.platform.test.rule.TabletOnly;
 import android.provider.DeviceConfig;
 
 import androidx.test.core.app.ApplicationProvider;
@@ -55,7 +58,9 @@
 
 import org.junit.After;
 import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
+import org.junit.rules.TestRule;
 import org.junit.runner.RunWith;
 
 import java.util.List;
@@ -64,6 +69,7 @@
  * To run this test: atest SettingsUnitTests:UserAspectRatioManagerTest
  */
 @RunWith(AndroidJUnit4.class)
+@LargeScreenOnly
 public class UserAspectRatioManagerTest {
 
     private Context mContext;
@@ -74,6 +80,10 @@
     private String mPackageName = "com.test.mypackage";
     private LauncherApps mLauncherApps;
     private List<LauncherActivityInfo> mLauncherActivities;
+
+    @Rule
+    public TestRule mDeviceTypeRule = new DeviceTypeRule();
+
     @Before
     public void setUp() {
         mContext = spy(ApplicationProvider.getApplicationContext());
@@ -219,7 +229,8 @@
     }
 
     @Test
-    public void testGetUserMinAspectRatioEntry() {
+    @FoldableOnly
+    public void testGetUserMinAspectRatioEntry_Foldable() {
         // R.string.user_aspect_ratio_app_default
         final String appDefault = ResourcesUtils.getResourcesString(mContext,
                 "user_aspect_ratio_app_default");
@@ -232,19 +243,35 @@
         assertThat(mUtils.getUserMinAspectRatioEntry(USER_MIN_ASPECT_RATIO_SPLIT_SCREEN,
                 mPackageName)).isEqualTo(ResourcesUtils.getResourcesString(mContext,
                         "user_aspect_ratio_half_screen"));
-        // R.string.user_aspect_ratio_3_2
-        assertThat(mUtils.getUserMinAspectRatioEntry(USER_MIN_ASPECT_RATIO_3_2, mPackageName))
-                .isEqualTo(ResourcesUtils.getResourcesString(mContext, "user_aspect_ratio_3_2"));
         // R,string.user_aspect_ratio_4_3
         assertThat(mUtils.getUserMinAspectRatioEntry(USER_MIN_ASPECT_RATIO_4_3, mPackageName))
                 .isEqualTo(ResourcesUtils.getResourcesString(mContext, "user_aspect_ratio_4_3"));
-        // R.string.user_aspect_ratio_16_9
+        assertThat(mUtils.getUserMinAspectRatioEntry(USER_MIN_ASPECT_RATIO_FULLSCREEN,
+                mPackageName)).isEqualTo(ResourcesUtils.getResourcesString(mContext,
+                        "user_aspect_ratio_fullscreen"));
+    }
+
+    @Test
+    @TabletOnly
+    public void testGetUserMinAspectRatioEntry_Tablet() {
+        // R.string.user_aspect_ratio_app_default
+        final String appDefault = ResourcesUtils.getResourcesString(mContext,
+                "user_aspect_ratio_app_default");
+        assertThat(mUtils.getUserMinAspectRatioEntry(USER_MIN_ASPECT_RATIO_UNSET, mPackageName))
+                .isEqualTo(appDefault);
+        // should always return default if value does not correspond to anything
+        assertThat(mUtils.getUserMinAspectRatioEntry(-1, mPackageName))
+                .isEqualTo(appDefault);
+        // R.string.user_aspect_ratio_half_screen
+        assertThat(mUtils.getUserMinAspectRatioEntry(USER_MIN_ASPECT_RATIO_SPLIT_SCREEN,
+                mPackageName)).isEqualTo(ResourcesUtils.getResourcesString(mContext,
+                "user_aspect_ratio_half_screen"));
         assertThat(mUtils.getUserMinAspectRatioEntry(USER_MIN_ASPECT_RATIO_16_9, mPackageName))
                 .isEqualTo(ResourcesUtils.getResourcesString(mContext, "user_aspect_ratio_16_9"));
         // R.string.user_aspect_ratio_fullscreen
         assertThat(mUtils.getUserMinAspectRatioEntry(USER_MIN_ASPECT_RATIO_FULLSCREEN,
                 mPackageName)).isEqualTo(ResourcesUtils.getResourcesString(mContext,
-                        "user_aspect_ratio_fullscreen"));
+                "user_aspect_ratio_fullscreen"));
     }
 
     @Test
diff --git a/tests/unit/src/com/android/settings/fingerprint2/ui/settings/FingerprintSettingsViewModelTest.kt b/tests/unit/src/com/android/settings/fingerprint2/ui/settings/FingerprintSettingsViewModelTest.kt
index fb1d05a..d25ced0 100644
--- a/tests/unit/src/com/android/settings/fingerprint2/ui/settings/FingerprintSettingsViewModelTest.kt
+++ b/tests/unit/src/com/android/settings/fingerprint2/ui/settings/FingerprintSettingsViewModelTest.kt
@@ -18,14 +18,14 @@
 
 import androidx.arch.core.executor.testing.InstantTaskExecutorRule
 import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintAuthAttemptViewModel
-import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintSensorPropertyViewModel
 import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintViewModel
-import com.android.settings.biometrics.fingerprint2.shared.model.SensorStrength
-import com.android.settings.biometrics.fingerprint2.shared.model.SensorType
 import com.android.settings.biometrics.fingerprint2.ui.settings.viewmodel.FingerprintSettingsNavigationViewModel
 import com.android.settings.biometrics.fingerprint2.ui.settings.viewmodel.FingerprintSettingsViewModel
 import com.android.settings.biometrics.fingerprint2.ui.settings.viewmodel.PreferenceViewModel
 import com.android.settings.testutils2.FakeFingerprintManagerInteractor
+import com.android.systemui.biometrics.shared.model.FingerprintSensor
+import com.android.systemui.biometrics.shared.model.FingerprintSensorType
+import com.android.systemui.biometrics.shared.model.SensorStrength
 import com.google.common.truth.Truth.assertThat
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.flow.collectLatest
@@ -96,11 +96,11 @@
   fun authenticate_DoesNotRun_ifOptical() =
     testScope.runTest {
       fakeFingerprintManagerInteractor.sensorProp =
-        FingerprintSensorPropertyViewModel(
+        FingerprintSensor(
           0 /* sensorId */,
-          SensorStrength.Strong,
+          SensorStrength.STRONG,
           5 /* maxEnrollmentsPerUser */,
-          SensorType.Optical,
+          FingerprintSensorType.UDFPS_OPTICAL,
         )
       fakeFingerprintManagerInteractor.enrolledFingerprintsInternal =
         mutableListOf(FingerprintViewModel("a", 1, 3L))
@@ -132,11 +132,11 @@
   fun authenticate_DoesNotRun_ifUltrasonic() =
     testScope.runTest {
       fakeFingerprintManagerInteractor.sensorProp =
-        FingerprintSensorPropertyViewModel(
+        FingerprintSensor(
           0 /* sensorId */,
-          SensorStrength.Strong,
+          SensorStrength.STRONG,
           5 /* maxEnrollmentsPerUser */,
-          SensorType.Ultrasonic,
+          FingerprintSensorType.UDFPS_ULTRASONIC,
         )
       fakeFingerprintManagerInteractor.enrolledFingerprintsInternal =
         mutableListOf(FingerprintViewModel("a", 1, 3L))
@@ -166,11 +166,11 @@
   fun authenticate_DoesRun_ifNotUdfps() =
     testScope.runTest {
       fakeFingerprintManagerInteractor.sensorProp =
-        FingerprintSensorPropertyViewModel(
+        FingerprintSensor(
           0 /* sensorId */,
-          SensorStrength.Strong,
+          SensorStrength.STRONG,
           5 /* maxEnrollmentsPerUser */,
-          SensorType.SFPS
+          FingerprintSensorType.POWER_BUTTON
         )
       fakeFingerprintManagerInteractor.enrolledFingerprintsInternal =
         mutableListOf(FingerprintViewModel("a", 1, 3L))
@@ -372,11 +372,11 @@
 
   private fun setupAuth(): MutableList<FingerprintViewModel> {
     fakeFingerprintManagerInteractor.sensorProp =
-      FingerprintSensorPropertyViewModel(
+      FingerprintSensor(
         0 /* sensorId */,
-        SensorStrength.Strong,
+        SensorStrength.STRONG,
         5 /* maxEnrollmentsPerUser */,
-        SensorType.SFPS
+        FingerprintSensorType.POWER_BUTTON
       )
     val fingerprints =
       mutableListOf(FingerprintViewModel("a", 1, 3L), FingerprintViewModel("b", 2, 5L))