Merge "Show in UI if admin has disabled face auth" into rvc-dev

This commit is contained in:
TreeHugger Robot
2020-03-23 10:59:16 +00:00
committed by Android (Google) Code Review
4 changed files with 18 additions and 15 deletions

View File

@@ -29,7 +29,7 @@
<PreferenceCategory <PreferenceCategory
android:key="security_settings_face_unlock_category" android:key="security_settings_face_unlock_category"
android:title="@string/security_settings_face_settings_use_face_category"> android:title="@string/security_settings_face_settings_use_face_category">
<SwitchPreference <com.android.settingslib.RestrictedSwitchPreference
android:key="security_settings_face_keyguard" android:key="security_settings_face_keyguard"
android:title="@string/security_settings_face_settings_use_face_unlock_phone" android:title="@string/security_settings_face_settings_use_face_unlock_phone"
app:keywords="@string/keywords_face_unlock" app:keywords="@string/keywords_face_unlock"
@@ -39,7 +39,7 @@
android:title="@string/security_settings_face_settings_use_face_for_apps" android:title="@string/security_settings_face_settings_use_face_for_apps"
app:keywords="@string/keywords_face_unlock" app:keywords="@string/keywords_face_unlock"
app:controller="com.android.settings.biometrics.face.FaceSettingsAppPreferenceController"/> app:controller="com.android.settings.biometrics.face.FaceSettingsAppPreferenceController"/>
<SwitchPreference <com.android.settingslib.RestrictedSwitchPreference
android:key="security_lockscreen_bypass" android:key="security_lockscreen_bypass"
android:title="@string/lockscreen_bypass_title" android:title="@string/lockscreen_bypass_title"
android:summary="@string/lockscreen_bypass_summary" android:summary="@string/lockscreen_bypass_summary"

View File

@@ -25,6 +25,8 @@ import android.provider.Settings;
import androidx.preference.Preference; import androidx.preference.Preference;
import com.android.settings.Utils; import com.android.settings.Utils;
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
import com.android.settingslib.RestrictedSwitchPreference;
/** /**
* Preference controller for Face settings page controlling the ability to unlock the phone * Preference controller for Face settings page controlling the ability to unlock the phone
@@ -53,7 +55,7 @@ public class FaceSettingsKeyguardPreferenceController extends FaceSettingsPrefer
public boolean isChecked() { public boolean isChecked() {
if (!FaceSettings.isAvailable(mContext)) { if (!FaceSettings.isAvailable(mContext)) {
return false; return false;
} else if (adminDisabled()) { } else if (getRestrictingAdmin() != null) {
return false; return false;
} }
return Settings.Secure.getIntForUser(mContext.getContentResolver(), return Settings.Secure.getIntForUser(mContext.getContentResolver(),
@@ -73,11 +75,12 @@ public class FaceSettingsKeyguardPreferenceController extends FaceSettingsPrefer
@Override @Override
public void updateState(Preference preference) { public void updateState(Preference preference) {
EnforcedAdmin admin;
super.updateState(preference); super.updateState(preference);
if (!FaceSettings.isAvailable(mContext)) { if (!FaceSettings.isAvailable(mContext)) {
preference.setEnabled(false); preference.setEnabled(false);
} else if (adminDisabled()) { } else if ((admin = getRestrictingAdmin()) != null) {
preference.setEnabled(false); ((RestrictedSwitchPreference) preference).setDisabledByAdmin(admin);
} else if (!mFaceManager.hasEnrolledTemplates(getUserId())) { } else if (!mFaceManager.hasEnrolledTemplates(getUserId())) {
preference.setEnabled(false); preference.setEnabled(false);
} else { } else {

View File

@@ -26,6 +26,8 @@ import android.provider.Settings;
import androidx.preference.Preference; import androidx.preference.Preference;
import com.android.internal.annotations.VisibleForTesting; import com.android.internal.annotations.VisibleForTesting;
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
import com.android.settingslib.RestrictedSwitchPreference;
public class FaceSettingsLockscreenBypassPreferenceController public class FaceSettingsLockscreenBypassPreferenceController
extends FaceSettingsPreferenceController { extends FaceSettingsPreferenceController {
@@ -60,11 +62,12 @@ public class FaceSettingsLockscreenBypassPreferenceController
@Override @Override
public void updateState(Preference preference) { public void updateState(Preference preference) {
EnforcedAdmin admin;
super.updateState(preference); super.updateState(preference);
if (!FaceSettings.isAvailable(mContext)) { if (!FaceSettings.isAvailable(mContext)) {
preference.setEnabled(false); preference.setEnabled(false);
} else if (adminDisabled()) { } else if ((admin = getRestrictingAdmin()) != null) {
preference.setEnabled(false); ((RestrictedSwitchPreference) preference).setDisabledByAdmin(admin);
} else if (!mFaceManager.hasEnrolledTemplates(getUserId())) { } else if (!mFaceManager.hasEnrolledTemplates(getUserId())) {
preference.setEnabled(false); preference.setEnabled(false);
} else { } else {

View File

@@ -18,9 +18,10 @@ package com.android.settings.biometrics.face;
import android.app.admin.DevicePolicyManager; import android.app.admin.DevicePolicyManager;
import android.content.Context; import android.content.Context;
import android.os.UserHandle;
import com.android.settings.core.TogglePreferenceController; import com.android.settings.core.TogglePreferenceController;
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
import com.android.settingslib.RestrictedLockUtilsInternal;
/** /**
* Abstract base class for all face settings toggles. * Abstract base class for all face settings toggles.
@@ -41,12 +42,8 @@ public abstract class FaceSettingsPreferenceController extends TogglePreferenceC
return mUserId; return mUserId;
} }
protected boolean adminDisabled() { protected EnforcedAdmin getRestrictingAdmin() {
DevicePolicyManager dpm = return RestrictedLockUtilsInternal.checkIfKeyguardFeaturesDisabled(
(DevicePolicyManager) mContext.getSystemService(Context.DEVICE_POLICY_SERVICE); mContext, DevicePolicyManager.KEYGUARD_DISABLE_FACE, mUserId);
return dpm != null &&
(dpm.getKeyguardDisabledFeatures(null, UserHandle.myUserId())
& DevicePolicyManager.KEYGUARD_DISABLE_FACE)
!= 0;
} }
} }