Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 56d5cc24 authored by Rubin Xu's avatar Rubin Xu
Browse files

Show in UI if admin has disabled face auth

Bug: 135747161
Test: manual
Change-Id: I13bf681be36a2ea5192f841ffcf423390189474c
parent a5a629c7
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -29,7 +29,7 @@
    <PreferenceCategory
        android:key="security_settings_face_unlock_category"
        android:title="@string/security_settings_face_settings_use_face_category">
        <SwitchPreference
        <com.android.settingslib.RestrictedSwitchPreference
            android:key="security_settings_face_keyguard"
            android:title="@string/security_settings_face_settings_use_face_unlock_phone"
            app:keywords="@string/keywords_face_unlock"
@@ -39,7 +39,7 @@
            android:title="@string/security_settings_face_settings_use_face_for_apps"
            app:keywords="@string/keywords_face_unlock"
            app:controller="com.android.settings.biometrics.face.FaceSettingsAppPreferenceController"/>
        <SwitchPreference
        <com.android.settingslib.RestrictedSwitchPreference
            android:key="security_lockscreen_bypass"
            android:title="@string/lockscreen_bypass_title"
            android:summary="@string/lockscreen_bypass_summary"
+6 −3
Original line number Diff line number Diff line
@@ -25,6 +25,8 @@ import android.provider.Settings;
import androidx.preference.Preference;

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
@@ -53,7 +55,7 @@ public class FaceSettingsKeyguardPreferenceController extends FaceSettingsPrefer
    public boolean isChecked() {
        if (!FaceSettings.isAvailable(mContext)) {
            return false;
        } else if (adminDisabled()) {
        } else if (getRestrictingAdmin() != null) {
            return false;
        }
        return Settings.Secure.getIntForUser(mContext.getContentResolver(),
@@ -73,11 +75,12 @@ public class FaceSettingsKeyguardPreferenceController extends FaceSettingsPrefer

    @Override
    public void updateState(Preference preference) {
        EnforcedAdmin admin;
        super.updateState(preference);
        if (!FaceSettings.isAvailable(mContext)) {
            preference.setEnabled(false);
        } else if (adminDisabled()) {
            preference.setEnabled(false);
        } else if ((admin = getRestrictingAdmin()) != null) {
            ((RestrictedSwitchPreference) preference).setDisabledByAdmin(admin);
        } else if (!mFaceManager.hasEnrolledTemplates(getUserId())) {
            preference.setEnabled(false);
        } else {
+5 −2
Original line number Diff line number Diff line
@@ -26,6 +26,8 @@ import android.provider.Settings;
import androidx.preference.Preference;

import com.android.internal.annotations.VisibleForTesting;
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
import com.android.settingslib.RestrictedSwitchPreference;

public class FaceSettingsLockscreenBypassPreferenceController
        extends FaceSettingsPreferenceController {
@@ -60,11 +62,12 @@ public class FaceSettingsLockscreenBypassPreferenceController

    @Override
    public void updateState(Preference preference) {
        EnforcedAdmin admin;
        super.updateState(preference);
        if (!FaceSettings.isAvailable(mContext)) {
            preference.setEnabled(false);
        } else if (adminDisabled()) {
            preference.setEnabled(false);
        } else if ((admin = getRestrictingAdmin()) != null) {
            ((RestrictedSwitchPreference) preference).setDisabledByAdmin(admin);
        } else if (!mFaceManager.hasEnrolledTemplates(getUserId())) {
            preference.setEnabled(false);
        } else {
+5 −8
Original line number Diff line number Diff line
@@ -18,9 +18,10 @@ package com.android.settings.biometrics.face;

import android.app.admin.DevicePolicyManager;
import android.content.Context;
import android.os.UserHandle;

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.
@@ -41,12 +42,8 @@ public abstract class FaceSettingsPreferenceController extends TogglePreferenceC
        return mUserId;
    }

    protected boolean adminDisabled() {
        DevicePolicyManager dpm =
                (DevicePolicyManager) mContext.getSystemService(Context.DEVICE_POLICY_SERVICE);
        return dpm != null &&
                (dpm.getKeyguardDisabledFeatures(null, UserHandle.myUserId())
                        & DevicePolicyManager.KEYGUARD_DISABLE_FACE)
                        != 0;
    protected EnforcedAdmin getRestrictingAdmin() {
        return RestrictedLockUtilsInternal.checkIfKeyguardFeaturesDisabled(
                mContext, DevicePolicyManager.KEYGUARD_DISABLE_FACE, mUserId);
    }
}