From f74a94db37c6608372da9871b13be2ae92b10ac6 Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Wed, 10 Jul 2019 19:31:11 -0700 Subject: [PATCH 1/6] Import translations. DO NOT MERGE Auto-generated-cl: translation import Bug: 64712476 Change-Id: I09ed37fffcf0bbcf61cdfa0b1f8cf22f5828d23b --- res/values-eu/strings.xml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml index 181e28dadd3..56710aea0d2 100644 --- a/res/values-eu/strings.xml +++ b/res/values-eu/strings.xml @@ -1953,7 +1953,7 @@ "Ezarpenak" "Zerbitzua bere aplikazioak hasi du. Gelditzen baduzu, agian aplikazioak huts egingo du." "Ezin da aplikazioa modu seguruan gelditu. Geldituz gero, uneko lan batzuk gal ditzakezu." - "Aplikazio-prozesu zaharra da hau, baina geroago behar bada erabiltzeko ari da exekutatzen. Normalean ez dago hori gelditzeko arrazoirik." + "Aplikazio-prozesu hau zaharra da, baina abian da oraindik ere, badaezpada berriro behar bada. Normalean ez dago hura gelditzeko arrazoirik." "%1$s: beste norbait ari da erabiltzen. Zuk kontrolatzeko, saka ezazu Ezarpenak." "Abian den prozesu nagusia." "%1$s zerbitzua abian da." @@ -2341,7 +2341,7 @@ Aplikazio hauek ezin dira exekutatu atzeko planoan - Aplikazio hau ezin da exekutatu atzeko planoan + Aplikazio hau ezin da abiarazi atzeko planoan %1$d aplikazio mugatu nahi dituzu? @@ -2413,7 +2413,7 @@ "PUZaren aurreko planoa" "Mantendu aktibo" "GPS" - "Wi-Fia exekutatzen" + "Wifiaren erabilera" "Tableta" "Telefonoa" "Bidalitako pakete mugikorrak" @@ -3450,9 +3450,9 @@ "Desaktibatu" "Utzi" "Errealitate birtualeko laguntza-zerbitzuak" - "Ez dago errealitate birtualeko laguntza-zerbitzu gisa exekutatzea eskatu duen aplikaziorik instalatuta." + "Ez dago errealitate birtualeko laguntza-zerbitzu gisa abiaraztea eskatu duen aplikaziorik instalatuta." "%1$s zerbitzuari errealitate birtualeko zerbitzuak atzitzeko baimena eman nahi diozu?" - "Aplikazioak errealitate birtualean erabiltzen dituzunean exekutatu ahal izango da %1$s." + "Aplikazioak errealitate birtualean erabiltzen dituzunean abiarazi ahal izango da %1$s." "Errealitate birtualeko moduan" "Murriztu lausotzea (gomendatua)" "Murriztu distira" @@ -3756,9 +3756,9 @@ "Erabilera-datuek zer beste aplikazio eta zer maiztasunekin erabiltzen dituzun jakiteko baimena ematen die aplikazioei, baita zer operadore duzun, zer hizkuntza-ezarpen dituzun eta beste xehetasun batzuk ere." "Memoria" "Memoriaren xehetasunak" - "Beti ari da exekutatzen (%s)" - "Noizbehinka exekutatzen da (%s)" - "Ez da ia inoiz exekutatzen (%s)" + "Beti dago abian (%s)" + "Noizbehinka abiarazten da (%s)" + "Ez da ia inoiz abiarazten (%s)" "Gehienekoa" "Batez besteko erabilera" "Gehienekoa: %1$s" @@ -3782,8 +3782,8 @@ "Bateria optimizatu egiten da" "Bateria-optimizazioa ez dago erabilgarri" "Ez aplikatu bateria-optimizazioa. Aukera horrekin, bizkorrago agortuko da bateria." - "Beti atzeko planoan exekutatzeko baimena eman nahi diozu aplikazioari?" - "%1$s aplikazioari atzeko planoan beti exekutatzeko baimena emanez gero, baliteke bateriak gutxiago irautea. \n\nAukera hori aldatzeko, sakatu Ezarpenak > Aplikazioak eta jakinarazpenak." + "Beti atzeko planoan abiarazteko baimena eman nahi diozu aplikazioari?" + "%1$s aplikazioari atzeko planoan beti abiarazteko baimena emanez gero, baliteke bateriak gutxiago irautea. \n\nAukera hori aldatzeko, sakatu Ezarpenak > Aplikazioak eta jakinarazpenak." "Bateriaren %1$s erabili du bateria guztiz kargatu zenetik" "Bateriaren kudeaketa" "Ez du bateriarik erabili bateria guztiz kargatu zenetik" From fa674d85ae66859742b30cae16f4fec816fefd0c Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Wed, 10 Jul 2019 20:08:17 -0700 Subject: [PATCH 2/6] Import translations. DO NOT MERGE Auto-generated-cl: translation import Bug: 64712476 Change-Id: I67ba6e489c14dc511d485a4895c9e12fce1c3ee1 --- res/values-eu/strings.xml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml index bb4c7701132..af13e86c293 100644 --- a/res/values-eu/strings.xml +++ b/res/values-eu/strings.xml @@ -1960,7 +1960,7 @@ "Ezarpenak" "Zerbitzua bere aplikazioak hasi du. Gelditzen baduzu, agian aplikazioak huts egingo du." "Ezin da aplikazioa modu seguruan gelditu. Geldituz gero, uneko lan batzuk gal ditzakezu." - "Aplikazio-prozesu zaharra da hau, baina geroago behar bada erabiltzeko ari da exekutatzen. Normalean ez dago hori gelditzeko arrazoirik." + "Aplikazio-prozesu hau zaharra da, baina abian da oraindik ere, badaezpada berriro behar bada. Normalean ez dago hura gelditzeko arrazoirik." "%1$s: beste norbait ari da erabiltzen. Zuk kontrolatzeko, saka ezazu Ezarpenak." "Abian den prozesu nagusia." "%1$s zerbitzua abian da." @@ -2348,7 +2348,7 @@ Aplikazio hauek ezin dira exekutatu atzeko planoan - Aplikazio hau ezin da exekutatu atzeko planoan + Aplikazio hau ezin da abiarazi atzeko planoan %1$d aplikazio mugatu nahi dituzu? @@ -2420,7 +2420,7 @@ "PUZaren aurreko planoa" "Mantendu aktibo" "GPS" - "Wi-Fia exekutatzen" + "Wifiaren erabilera" "Tableta" "Telefonoa" "Bidalitako pakete mugikorrak" @@ -3460,9 +3460,9 @@ "Desaktibatu" "Utzi" "Errealitate birtualeko laguntza-zerbitzuak" - "Ez dago errealitate birtualeko laguntza-zerbitzu gisa exekutatzea eskatu duen aplikaziorik instalatuta." + "Ez dago errealitate birtualeko laguntza-zerbitzu gisa abiaraztea eskatu duen aplikaziorik instalatuta." "%1$s zerbitzuari errealitate birtualeko zerbitzuak atzitzeko baimena eman nahi diozu?" - "Aplikazioak errealitate birtualean erabiltzen dituzunean exekutatu ahal izango da %1$s." + "Aplikazioak errealitate birtualean erabiltzen dituzunean abiarazi ahal izango da %1$s." "Errealitate birtualeko moduan" "Murriztu lausotzea (gomendatua)" "Murriztu distira" @@ -3766,9 +3766,9 @@ "Erabilera-datuek zer beste aplikazio eta zer maiztasunekin erabiltzen dituzun jakiteko baimena ematen die aplikazioei, baita zer operadore duzun, zer hizkuntza-ezarpen dituzun eta beste xehetasun batzuk ere." "Memoria" "Memoriaren xehetasunak" - "Beti ari da exekutatzen (%s)" - "Noizbehinka exekutatzen da (%s)" - "Ez da ia inoiz exekutatzen (%s)" + "Beti dago abian (%s)" + "Noizbehinka abiarazten da (%s)" + "Ez da ia inoiz abiarazten (%s)" "Gehienekoa" "Batez besteko erabilera" "Gehienekoa: %1$s" @@ -3792,8 +3792,8 @@ "Bateria optimizatu egiten da" "Bateria-optimizazioa ez dago erabilgarri" "Ez aplikatu bateria-optimizazioa. Aukera horrekin, bizkorrago agortuko da bateria." - "Beti atzeko planoan exekutatzeko baimena eman nahi diozu aplikazioari?" - "%1$s aplikazioari atzeko planoan beti exekutatzeko baimena emanez gero, baliteke bateriak gutxiago irautea. \n\nAukera hori aldatzeko, sakatu Ezarpenak > Aplikazioak eta jakinarazpenak." + "Beti atzeko planoan abiarazteko baimena eman nahi diozu aplikazioari?" + "%1$s aplikazioari atzeko planoan beti abiarazteko baimena emanez gero, baliteke bateriak gutxiago irautea. \n\nAukera hori aldatzeko, sakatu Ezarpenak > Aplikazioak eta jakinarazpenak." "Bateriaren %1$s erabili du bateria guztiz kargatu zenetik" "Bateriaren kudeaketa" "Ez du bateriarik erabili bateria guztiz kargatu zenetik" From 496d3f6f9c5ff64006dc271f4ec03639aecad025 Mon Sep 17 00:00:00 2001 From: tmfang Date: Wed, 3 Jul 2019 20:44:42 +0800 Subject: [PATCH 3/6] Improve Settings launch performance From traces analysis, we found getFreeBytes was taking a long time to return. getFreeBytes was used when storage controller tried to get storage information. In order to prevent this case, we put the action which takes too much time in background thread. Test: I can't reproduce it locally. From code view, this is a reasonable root cause. Fixes: 136268875 Change-Id: I78e42cde88553c003f198cffb5747b352055f59a (cherry picked from commit 0c37f019f61f37b67e2297e99d96e8396d962f40) --- .../TopLevelStoragePreferenceController.java | 29 +++++++++++++------ 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/src/com/android/settings/deviceinfo/TopLevelStoragePreferenceController.java b/src/com/android/settings/deviceinfo/TopLevelStoragePreferenceController.java index c6fc23b1df2..fdc5feb573e 100644 --- a/src/com/android/settings/deviceinfo/TopLevelStoragePreferenceController.java +++ b/src/com/android/settings/deviceinfo/TopLevelStoragePreferenceController.java @@ -20,10 +20,13 @@ import android.content.Context; import android.os.storage.StorageManager; import android.text.format.Formatter; +import androidx.preference.Preference; + import com.android.settings.R; import com.android.settings.core.BasePreferenceController; import com.android.settingslib.deviceinfo.PrivateStorageInfo; import com.android.settingslib.deviceinfo.StorageManagerVolumeProvider; +import com.android.settingslib.utils.ThreadUtils; import java.text.NumberFormat; @@ -44,14 +47,22 @@ public class TopLevelStoragePreferenceController extends BasePreferenceControlle } @Override - public CharSequence getSummary() { - // TODO: Register listener. - final NumberFormat percentageFormat = NumberFormat.getPercentInstance(); - final PrivateStorageInfo info = PrivateStorageInfo.getPrivateStorageInfo( - mStorageManagerVolumeProvider); - double privateUsedBytes = info.totalBytes - info.freeBytes; - return mContext.getString(R.string.storage_summary, - percentageFormat.format(privateUsedBytes / info.totalBytes), - Formatter.formatFileSize(mContext, info.freeBytes)); + protected void refreshSummary(Preference preference) { + if (preference == null) { + return; + } + + ThreadUtils.postOnBackgroundThread(() -> { + final NumberFormat percentageFormat = NumberFormat.getPercentInstance(); + final PrivateStorageInfo info = PrivateStorageInfo.getPrivateStorageInfo( + mStorageManagerVolumeProvider); + final double privateUsedBytes = info.totalBytes - info.freeBytes; + + ThreadUtils.postOnMainThread(() -> { + preference.setSummary(mContext.getString(R.string.storage_summary, + percentageFormat.format(privateUsedBytes / info.totalBytes), + Formatter.formatFileSize(mContext, info.freeBytes))); + }); + }); } } From 365beaebdbf07017219d5e6db17ba6a7be86c16c Mon Sep 17 00:00:00 2001 From: joshmccloskey Date: Tue, 9 Jul 2019 15:34:55 -0700 Subject: [PATCH 4/6] Update FaceSlice to use correct pref & FaceManager Fixes: 137137134 Test: Manual. Change-Id: Idc707a7d2009975f81902867e4c37a8ee5775700 --- ...FaceProfileStatusPreferenceController.java | 2 +- .../face/FaceStatusPreferenceController.java | 2 +- .../slices/FaceSetupSlice.java | 15 +++----- .../slices/FaceSetupSliceTest.java | 37 +++++++------------ 4 files changed, 21 insertions(+), 35 deletions(-) diff --git a/src/com/android/settings/biometrics/face/FaceProfileStatusPreferenceController.java b/src/com/android/settings/biometrics/face/FaceProfileStatusPreferenceController.java index 5015fba439e..eeb2cbf5f76 100644 --- a/src/com/android/settings/biometrics/face/FaceProfileStatusPreferenceController.java +++ b/src/com/android/settings/biometrics/face/FaceProfileStatusPreferenceController.java @@ -25,7 +25,7 @@ import androidx.preference.Preference; public class FaceProfileStatusPreferenceController extends FaceStatusPreferenceController { - public static final String KEY_FACE_SETTINGS = "face_settings_profile"; + private static final String KEY_FACE_SETTINGS = "face_settings_profile"; public FaceProfileStatusPreferenceController(Context context) { super(context, KEY_FACE_SETTINGS); diff --git a/src/com/android/settings/biometrics/face/FaceStatusPreferenceController.java b/src/com/android/settings/biometrics/face/FaceStatusPreferenceController.java index 84505772092..cb82b5e8563 100644 --- a/src/com/android/settings/biometrics/face/FaceStatusPreferenceController.java +++ b/src/com/android/settings/biometrics/face/FaceStatusPreferenceController.java @@ -26,7 +26,7 @@ import com.android.settings.biometrics.BiometricStatusPreferenceController; public class FaceStatusPreferenceController extends BiometricStatusPreferenceController { - private static final String KEY_FACE_SETTINGS = "face_settings"; + public static final String KEY_FACE_SETTINGS = "face_settings"; protected final FaceManager mFaceManager; diff --git a/src/com/android/settings/homepage/contextualcards/slices/FaceSetupSlice.java b/src/com/android/settings/homepage/contextualcards/slices/FaceSetupSlice.java index 128d76bba2d..31539503350 100644 --- a/src/com/android/settings/homepage/contextualcards/slices/FaceSetupSlice.java +++ b/src/com/android/settings/homepage/contextualcards/slices/FaceSetupSlice.java @@ -25,7 +25,9 @@ import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.hardware.biometrics.BiometricManager; +import android.hardware.face.FaceManager; import android.net.Uri; +import android.os.UserHandle; import androidx.core.graphics.drawable.IconCompat; import androidx.slice.Slice; @@ -36,7 +38,7 @@ import androidx.slice.builders.SliceAction; import com.android.settings.R; import com.android.settings.SubSettings; import com.android.settings.Utils; -import com.android.settings.biometrics.face.FaceProfileStatusPreferenceController; +import com.android.settings.biometrics.face.FaceStatusPreferenceController; import com.android.settings.security.SecuritySettings; import com.android.settings.slices.CustomSliceRegistry; import com.android.settings.slices.CustomSliceable; @@ -52,13 +54,8 @@ public class FaceSetupSlice implements CustomSliceable { @Override public Slice getSlice() { - final BiometricManager biometricManager = mContext.getSystemService(BiometricManager.class); - final PackageManager packageManager = mContext.getPackageManager(); - if (!packageManager.hasSystemFeature(PackageManager.FEATURE_FACE)) { - // no face hardware - return null; - } else if (biometricManager.canAuthenticate() == BIOMETRIC_SUCCESS) { - // face hardware, and already enrolled + final FaceManager faceManager = mContext.getSystemService(FaceManager.class); + if (faceManager == null || faceManager.hasEnrolledTemplates(UserHandle.myUserId())) { return null; } @@ -84,7 +81,7 @@ public class FaceSetupSlice implements CustomSliceable { public Intent getIntent() { return SliceBuilderUtils.buildSearchResultPageIntent(mContext, SecuritySettings.class.getName(), - FaceProfileStatusPreferenceController.KEY_FACE_SETTINGS, + FaceStatusPreferenceController.KEY_FACE_SETTINGS, mContext.getText(R.string.security_settings_face_settings_enroll).toString(), SettingsEnums.SLICE) .setClassName(mContext.getPackageName(), SubSettings.class.getName()); diff --git a/tests/robotests/src/com/android/settings/homepage/contextualcards/slices/FaceSetupSliceTest.java b/tests/robotests/src/com/android/settings/homepage/contextualcards/slices/FaceSetupSliceTest.java index f6c1821f120..5e364c073f9 100644 --- a/tests/robotests/src/com/android/settings/homepage/contextualcards/slices/FaceSetupSliceTest.java +++ b/tests/robotests/src/com/android/settings/homepage/contextualcards/slices/FaceSetupSliceTest.java @@ -16,19 +16,15 @@ package com.android.settings.homepage.contextualcards.slices; -import static android.hardware.biometrics.BiometricConstants.BIOMETRIC_ERROR_NO_BIOMETRICS; -import static android.hardware.biometrics.BiometricManager.BIOMETRIC_SUCCESS; - -import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.when; import static com.google.common.truth.Truth.assertThat; import android.content.Context; -import android.content.pm.PackageManager; -import android.hardware.biometrics.BiometricConstants; -import android.hardware.biometrics.BiometricManager; +import android.hardware.face.FaceManager; +import android.os.UserHandle; import androidx.slice.Slice; import androidx.slice.SliceProvider; @@ -46,43 +42,36 @@ import org.robolectric.RuntimeEnvironment; @RunWith(RobolectricTestRunner.class) public class FaceSetupSliceTest { - private BiometricManager mBiometricManager; private Context mContext; - private PackageManager mPackageManager; @Before public void setUp() { // Set-up specs for SliceMetadata. SliceProvider.setSpecs(SliceLiveData.SUPPORTED_SPECS); mContext = spy(RuntimeEnvironment.application); - mPackageManager = spy(mContext.getPackageManager()); - mBiometricManager = spy(mContext.getSystemService(BiometricManager.class)); } @Test - public void getSlice_noFaceSupported_shouldReturnNull() { - when(mPackageManager.hasSystemFeature(PackageManager.FEATURE_FACE)).thenReturn(false); - when(mContext.getPackageManager()).thenReturn(mPackageManager); + public void getSlice_noFaceManager_shouldReturnNull() { + when(mContext.getSystemService(FaceManager.class)).thenReturn(null); final FaceSetupSlice setupSlice = new FaceSetupSlice(mContext); assertThat(setupSlice.getSlice()).isNull(); } @Test - public void getSlice_faceSupportedUserEnrolled_shouldReturnNull() { - when(mBiometricManager.canAuthenticate()).thenReturn(BIOMETRIC_SUCCESS); - when(mPackageManager.hasSystemFeature(PackageManager.FEATURE_FACE)).thenReturn(true); - when(mContext.getPackageManager()).thenReturn(mPackageManager); - when(mContext.getSystemService(BiometricManager.class)).thenReturn(mBiometricManager); + public void getSlice_faceEnrolled_shouldReturnNull() { + final FaceManager faceManager = mock(FaceManager.class); + when(mContext.getSystemService(FaceManager.class)).thenReturn(faceManager); + when(faceManager.hasEnrolledTemplates(UserHandle.myUserId())).thenReturn(true); final FaceSetupSlice setupSlice = new FaceSetupSlice(mContext); assertThat(setupSlice.getSlice()).isNull(); } @Test - public void getSlice_faceSupportedUserNotEnrolled_shouldReturnNonNull() { - when(mBiometricManager.canAuthenticate()).thenReturn(BIOMETRIC_ERROR_NO_BIOMETRICS); - when(mPackageManager.hasSystemFeature(PackageManager.FEATURE_FACE)).thenReturn(true); - when(mContext.getPackageManager()).thenReturn(mPackageManager); - when(mContext.getSystemService(BiometricManager.class)).thenReturn(mBiometricManager); + public void getSlice_faceNotEnrolled_shouldReturnNonNull() { + final FaceManager faceManager = mock(FaceManager.class); + when(mContext.getSystemService(FaceManager.class)).thenReturn(faceManager); + when(faceManager.hasEnrolledTemplates(UserHandle.myUserId())).thenReturn(false); final FaceSetupSlice setupSlice = new FaceSetupSlice(mContext); assertThat(setupSlice.getSlice()).isNotNull(); } From 5f612a4b442494d08259a976eccb7192ffa0c534 Mon Sep 17 00:00:00 2001 From: Antony Sargent Date: Thu, 11 Jul 2019 11:04:09 -0700 Subject: [PATCH 5/6] Fix erasing of eSIMs for some devices Doing a factory data reset used to always erase eSIMs. Then a few months ago we added a default-on checkbox to let users opt out of erasing the eSIM during this process, but only had it show for some devices (ones which support the "fastboot oem esim_erase" command) by adding a system property named masterclear.allow_retain_esim_profiles_after_fdr. When recently updating the strings shown in the factory data reset screen and the confirmation dialog, we changed the code so that if that the checkbox is hidden we'll pass false for the ERASE_ESIMS_EXTRA parameter sent to the factory data reset confirmation dialog. This had the unintended side effect of making devices that don't specify true for masterclear.allow_retain_esim_profiles_after_fdr skip erasing the eSIM. This CL fixes that by removing the "is the checkbox hidden" check, going back to the previous behavior of just using the checkbox value, which is on by default even if hidden. Fixes: 135284765 Test: make RunSettingsRoboTests Change-Id: Ia9f335920e4e3c4a90f0a6a49d1722a0c19ea83d --- src/com/android/settings/MasterClear.java | 3 +-- tests/robotests/src/com/android/settings/MasterClearTest.java | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/com/android/settings/MasterClear.java b/src/com/android/settings/MasterClear.java index 14a6aed9e79..0df39842f9d 100644 --- a/src/com/android/settings/MasterClear.java +++ b/src/com/android/settings/MasterClear.java @@ -182,8 +182,7 @@ public class MasterClear extends InstrumentedFragment implements OnGlobalLayoutL void showFinalConfirmation() { final Bundle args = new Bundle(); args.putBoolean(ERASE_EXTERNAL_EXTRA, mExternalStorage.isChecked()); - args.putBoolean(ERASE_ESIMS_EXTRA, - mEsimStorageContainer.getVisibility() == View.VISIBLE && mEsimStorage.isChecked()); + args.putBoolean(ERASE_ESIMS_EXTRA, mEsimStorage.isChecked()); new SubSettingLauncher(getContext()) .setDestination(MasterClearConfirm.class.getName()) .setArguments(args) diff --git a/tests/robotests/src/com/android/settings/MasterClearTest.java b/tests/robotests/src/com/android/settings/MasterClearTest.java index 813e4aafa67..73adf937c86 100644 --- a/tests/robotests/src/com/android/settings/MasterClearTest.java +++ b/tests/robotests/src/com/android/settings/MasterClearTest.java @@ -163,7 +163,7 @@ public class MasterClearTest { verify(context).startActivity(intent.capture()); assertThat(intent.getValue().getBundleExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS) .getBoolean(MasterClear.ERASE_ESIMS_EXTRA, false)) - .isFalse(); + .isTrue(); } @Test From a96a84e2565394dba671478a1a105ae41f38cd2f Mon Sep 17 00:00:00 2001 From: joshmccloskey Date: Thu, 11 Jul 2019 13:08:02 -0700 Subject: [PATCH 6/6] Ensure feature is supported and enabled. Fixes: 137285390 Test: Verified that SecuritySettings no longer crashes. Test: Verified that this PrefenceController no longer shows up if the device does not support it. Test: Verified that this PreferenceController no longer shows up when the work profile is disabled. Change-Id: I10f015e18491b203db6f942f07034d55f620cfe5 --- .../face/FaceProfileStatusPreferenceController.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/com/android/settings/biometrics/face/FaceProfileStatusPreferenceController.java b/src/com/android/settings/biometrics/face/FaceProfileStatusPreferenceController.java index eeb2cbf5f76..56b325bdf89 100644 --- a/src/com/android/settings/biometrics/face/FaceProfileStatusPreferenceController.java +++ b/src/com/android/settings/biometrics/face/FaceProfileStatusPreferenceController.java @@ -33,6 +33,11 @@ public class FaceProfileStatusPreferenceController extends FaceStatusPreferenceC @Override public int getAvailabilityStatus() { + // Check if Face for Profile is available. + final int isAvailable = super.getAvailabilityStatus(); + if (isAvailable != AVAILABLE) { + return isAvailable; + } // Make the profile unsearchable so the user preference controller gets highlighted // when searched for. return AVAILABLE_UNSEARCHABLE;