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

Commit 9bc5f2ee authored by Yuri Ufimtsev's avatar Yuri Ufimtsev Committed by Android (Google) Code Review
Browse files

Merge "Move all the shared data from biometric controllers to separate utility classes" into tm-dev

parents 827910d3 268d1d6d
Loading
Loading
Loading
Loading
+65 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2022 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.settings.biometrics;

import static com.android.settings.Utils.SETTINGS_PACKAGE_NAME;
import static com.android.settings.biometrics.BiometricEnrollBase.EXTRA_FROM_SETTINGS_SUMMARY;

import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.UserHandle;
import android.os.UserManager;

import com.android.settings.Utils;
import com.android.settings.core.SettingsBaseActivity;
import com.android.settingslib.transition.SettingsTransitionHelper;

/**
 * Utilities for navigation shared between Security Settings and Safety Center.
 */
public class BiometricNavigationUtils {

    private final int mUserId = UserHandle.myUserId();

    /**
     * Tries to launch the Settings screen if Quiet Mode is not enabled
     * for managed profile, otherwise shows a dialog to disable the Quiet Mode.
     *
     * @param className The class name of Settings screen to launch.
     * @param extras Extras to put into the launching {@link Intent}.
     * @return true if the Settings screen is launching.
     */
    public boolean launchBiometricSettings(Context context, String className, Bundle extras) {
        final UserManager userManager = UserManager.get(context);
        if (Utils.startQuietModeDialogIfNecessary(context, userManager, mUserId)) {
            return false;
        }

        final Intent intent = new Intent();
        intent.setClassName(SETTINGS_PACKAGE_NAME, className);
        if (!extras.isEmpty()) {
            intent.putExtras(extras);
        }
        intent.putExtra(EXTRA_FROM_SETTINGS_SUMMARY, true);
        intent.putExtra(Intent.EXTRA_USER_ID, mUserId);
        intent.putExtra(SettingsBaseActivity.EXTRA_PAGE_TRANSITION_TYPE,
                SettingsTransitionHelper.TransitionType.TRANSITION_SLIDE);
        context.startActivity(intent);
        return true;
    }
}
+8 −45
Original line number Diff line number Diff line
@@ -16,11 +16,7 @@

package com.android.settings.biometrics;

import static com.android.settings.Utils.SETTINGS_PACKAGE_NAME;
import static com.android.settings.biometrics.BiometricEnrollBase.EXTRA_FROM_SETTINGS_SUMMARY;

import android.content.Context;
import android.content.Intent;
import android.os.UserHandle;
import android.os.UserManager;
import android.text.TextUtils;
@@ -30,9 +26,7 @@ import androidx.preference.Preference;
import com.android.internal.widget.LockPatternUtils;
import com.android.settings.Utils;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.core.SettingsBaseActivity;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.transition.SettingsTransitionHelper;

public abstract class BiometricStatusPreferenceController extends BasePreferenceController {

@@ -42,36 +36,23 @@ public abstract class BiometricStatusPreferenceController extends BasePreference
    private final int mUserId = UserHandle.myUserId();
    protected final int mProfileChallengeUserId;

    private final BiometricNavigationUtils mBiometricNavigationUtils;

    /**
     * @return true if the manager is not null and the hardware is detected.
     */
    protected abstract boolean isDeviceSupported();

    /**
     * @return true if the user has enrolled biometrics of the subclassed type.
     */
    protected abstract boolean hasEnrolledBiometrics();

    /**
     * @return the summary text if biometrics are enrolled.
     */
    protected abstract String getSummaryTextEnrolled();

    /**
     * @return the summary text if no biometrics are enrolled.
     * @return the summary text.
     */
    protected abstract String getSummaryTextNoneEnrolled();
    protected abstract String getSummaryText();

    /**
     * @return the class name for the settings page.
     */
    protected abstract String getSettingsClassName();

    /**
     * @return the class name for entry to enrollment.
     */
    protected abstract String getEnrollClassName();

    public BiometricStatusPreferenceController(Context context, String key) {
        super(context, key);
        mUm = (UserManager) context.getSystemService(Context.USER_SERVICE);
@@ -79,6 +60,7 @@ public abstract class BiometricStatusPreferenceController extends BasePreference
                .getSecurityFeatureProvider()
                .getLockPatternUtils(context);
        mProfileChallengeUserId = Utils.getManagedProfileId(mUm, mUserId);
        mBiometricNavigationUtils = new BiometricNavigationUtils();
    }

    @Override
@@ -103,8 +85,7 @@ public abstract class BiometricStatusPreferenceController extends BasePreference
        } else {
            preference.setVisible(true);
        }
        preference.setSummary(hasEnrolledBiometrics() ? getSummaryTextEnrolled()
                : getSummaryTextNoneEnrolled());
        preference.setSummary(getSummaryText());
    }

    @Override
@@ -113,26 +94,8 @@ public abstract class BiometricStatusPreferenceController extends BasePreference
            return super.handlePreferenceTreeClick(preference);
        }

        final Context context = preference.getContext();
        final UserManager userManager = UserManager.get(context);
        final int userId = getUserId();
        if (Utils.startQuietModeDialogIfNecessary(context, userManager, userId)) {
            return false;
        }

        final Intent intent = new Intent();
        final String clazz = hasEnrolledBiometrics() ? getSettingsClassName()
                : getEnrollClassName();
        intent.setClassName(SETTINGS_PACKAGE_NAME, clazz);
        if (!preference.getExtras().isEmpty()) {
            intent.putExtras(preference.getExtras());
        }
        intent.putExtra(Intent.EXTRA_USER_ID, userId);
        intent.putExtra(EXTRA_FROM_SETTINGS_SUMMARY, true);
        intent.putExtra(SettingsBaseActivity.EXTRA_PAGE_TRANSITION_TYPE,
                SettingsTransitionHelper.TransitionType.TRANSITION_SLIDE);
        context.startActivity(intent);
        return true;
        return mBiometricNavigationUtils.launchBiometricSettings(
                preference.getContext(), getSettingsClassName(), preference.getExtras());
    }

    protected int getUserId() {
+1 −1
Original line number Diff line number Diff line
@@ -29,7 +29,7 @@ import com.android.settings.biometrics.face.FaceStatusPreferenceController;
public class BiometricFaceStatusPreferenceController extends FaceStatusPreferenceController {

    public BiometricFaceStatusPreferenceController(Context context, String key) {
        super(context, key);
        super(context, key, null /* lifecycle */);
    }

    public BiometricFaceStatusPreferenceController(
+1 −1
Original line number Diff line number Diff line
@@ -30,7 +30,7 @@ public class BiometricFingerprintStatusPreferenceController extends
        FingerprintStatusPreferenceController {

    public BiometricFingerprintStatusPreferenceController(Context context, String key) {
        super(context, key);
        super(context, key, null /* lifecycle */);
    }

    public BiometricFingerprintStatusPreferenceController(
+1 −8
Original line number Diff line number Diff line
@@ -20,8 +20,6 @@ import android.os.UserHandle;

import androidx.lifecycle.Lifecycle;

import com.android.settings.Settings;

/**
 * Preference controller for biometrics settings page of work profile, controlling the ability to
 * unlock the phone with face and fingerprint.
@@ -62,11 +60,6 @@ public class CombinedBiometricProfileStatusPreferenceController extends

    @Override
    protected String getSettingsClassName() {
        return Settings.CombinedBiometricProfileSettingsActivity.class.getName();
    }

    @Override
    protected String getEnrollClassName() {
        return Settings.CombinedBiometricProfileSettingsActivity.class.getName();
        return mCombinedBiometricStatusUtils.getProfileSettingsClassName();
    }
}
Loading