diff --git a/res/xml/configure_notification_settings.xml b/res/xml/configure_notification_settings.xml
index 63f67510490..89464fbc5db 100644
--- a/res/xml/configure_notification_settings.xml
+++ b/res/xml/configure_notification_settings.xml
@@ -72,6 +72,13 @@
android:summary="@string/lock_screen_notifs_redact_work_summary"
settings:controller="com.android.settings.notification.RedactNotificationPreferenceController" />
+
+
+
+
controllers = new ArrayList<>();
controllers.add(new FaceSettingsVideoPreferenceController(context));
controllers.add(new FaceSettingsKeyguardPreferenceController(context));
- controllers.add(new FaceSettingsLockscreenBypassPreferenceController(context));
controllers.add(new FaceSettingsAppPreferenceController(context));
controllers.add(new FaceSettingsAttentionPreferenceController(context));
controllers.add(new FaceSettingsRemoveButtonPreferenceController(context));
diff --git a/src/com/android/settings/biometrics/face/FaceSettingsLockscreenBypassPreferenceController.java b/src/com/android/settings/biometrics/face/FaceSettingsLockscreenBypassPreferenceController.java
index 8d1b5438693..15fab260dc9 100644
--- a/src/com/android/settings/biometrics/face/FaceSettingsLockscreenBypassPreferenceController.java
+++ b/src/com/android/settings/biometrics/face/FaceSettingsLockscreenBypassPreferenceController.java
@@ -19,6 +19,8 @@ package com.android.settings.biometrics.face;
import android.content.Context;
import android.content.pm.PackageManager;
import android.hardware.face.FaceManager;
+import android.os.UserHandle;
+import android.os.UserManager;
import android.provider.Settings;
import androidx.preference.Preference;
@@ -32,16 +34,15 @@ public class FaceSettingsLockscreenBypassPreferenceController
@VisibleForTesting
protected FaceManager mFaceManager;
-
- public FaceSettingsLockscreenBypassPreferenceController(Context context) {
- this(context, KEY);
- }
+ private UserManager mUserManager;
public FaceSettingsLockscreenBypassPreferenceController(Context context, String preferenceKey) {
super(context, preferenceKey);
if (context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_FACE)) {
mFaceManager = context.getSystemService(FaceManager.class);
}
+
+ mUserManager = context.getSystemService(UserManager.class);
}
@Override
@@ -75,6 +76,10 @@ public class FaceSettingsLockscreenBypassPreferenceController
@Override
public int getAvailabilityStatus() {
+ if (mUserManager.isManagedProfile(UserHandle.myUserId())) {
+ return UNSUPPORTED_ON_DEVICE;
+ }
+
if (mFaceManager != null && mFaceManager.isHardwareDetected()) {
return mFaceManager.hasEnrolledTemplates() ? AVAILABLE : DISABLED_DEPENDENT_SETTING;
} else {
diff --git a/tests/robotests/src/com/android/settings/biometrics/face/FaceSettingsLockscreenBypassPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/biometrics/face/FaceSettingsLockscreenBypassPreferenceControllerTest.java
index cbcebfc751b..7f7fa4fed13 100644
--- a/tests/robotests/src/com/android/settings/biometrics/face/FaceSettingsLockscreenBypassPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/biometrics/face/FaceSettingsLockscreenBypassPreferenceControllerTest.java
@@ -18,10 +18,12 @@ package com.android.settings.biometrics.face;
import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Mockito.when;
import android.content.Context;
import android.hardware.face.FaceManager;
+import android.os.UserManager;
import android.provider.Settings;
import androidx.preference.SwitchPreference;
@@ -41,6 +43,8 @@ public class FaceSettingsLockscreenBypassPreferenceControllerTest {
@Mock
private FaceManager mFaceManager;
private SwitchPreference mPreference;
+ @Mock
+ private UserManager mUserManager;
private Context mContext;
private FaceSettingsLockscreenBypassPreferenceController mController;
@@ -51,8 +55,9 @@ public class FaceSettingsLockscreenBypassPreferenceControllerTest {
mContext = RuntimeEnvironment.application;
mPreference = new SwitchPreference(mContext);
- mController = new FaceSettingsLockscreenBypassPreferenceController(mContext);
+ mController = new FaceSettingsLockscreenBypassPreferenceController(mContext, "test_key");
ReflectionHelpers.setField(mController, "mFaceManager", mFaceManager);
+ ReflectionHelpers.setField(mController, "mUserManager", mUserManager);
}
@Test
@@ -62,6 +67,13 @@ public class FaceSettingsLockscreenBypassPreferenceControllerTest {
assertThat(mController.isAvailable()).isTrue();
}
+ @Test
+ public void isAvailable_isManagedProfile_shouldReturnUnsupported() {
+ when(mUserManager.isManagedProfile(anyInt())).thenReturn(true);
+
+ assertThat(mController.isAvailable()).isFalse();
+ }
+
@Test
public void onPreferenceChange_settingIsUpdated() {
boolean defaultValue = mContext.getResources().getBoolean(