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

Commit af3a006b authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add context to FingerprintExtPreferencesProvider" into main

parents dc34cabe 7379aee0
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -73,7 +73,7 @@ public interface FingerprintFeatureProvider {
    default FingerprintExtPreferencesProvider getExtPreferenceProvider(
            @NonNull Context context
    ) {
        return new FingerprintExtPreferencesProvider();
        return new FingerprintExtPreferencesProvider(context);
    }

    /**
+20 −5
Original line number Diff line number Diff line
@@ -468,12 +468,10 @@ public class FingerprintSettings extends SubSettings {
         * Add new preferences from FingerprintExtPreferencesProvider
         */
        public void setupExtFingerprintPreferences() {
            final FingerprintExtPreferencesProvider preferencesProvider =
                    FeatureFactory.getFeatureFactory().getFingerprintFeatureProvider()
                            .getExtPreferenceProvider(requireContext());
            FingerprintExtPreferencesProvider preferencesProvider = getExtPreferenceProvider();
            for (int index = 0; index < preferencesProvider.getSize(); ++index) {
                final RestrictedPreference preference = preferencesProvider.newPreference(
                        index, this::inflateFromResource, requireContext());
                        index, this::inflateFromResource);
                if (preference == null || findPreference(preference.getKey()) != null) {
                    continue;
                }
@@ -485,6 +483,12 @@ public class FingerprintSettings extends SubSettings {
            }
        }

        @NonNull
        private FingerprintExtPreferencesProvider getExtPreferenceProvider() {
            return FeatureFactory.getFeatureFactory().getFingerprintFeatureProvider()
                    .getExtPreferenceProvider(requireContext());
        }

        /**
         *
         */
@@ -748,7 +752,8 @@ public class FingerprintSettings extends SubSettings {
            // This needs to be after setting ids, otherwise
            // |mRequireScreenOnToAuthPreferenceController.isChecked| is always checking the primary
            // user instead of the user with |mUserId|.
            if (isSfps() || (screenOffUnlockUdfps() && isScreenOffUnlcokSupported())) {
            if (isSfps() || (screenOffUnlockUdfps() && isScreenOffUnlcokSupported())
                    || getExtPreferenceProvider().getSize() > 0) {
                scrollToPreference(fpPrefKey);
                addFingerprintUnlockCategory();
            }
@@ -1266,6 +1271,16 @@ public class FingerprintSettings extends SubSettings {

                }
            }

            if (mFingerprintUnlockCategoryPreferenceController == null
                    && getExtPreferenceProvider().getSize() > 0 && controllers != null) {
                for (AbstractPreferenceController controller : controllers) {
                    if (KEY_FINGERPRINT_UNLOCK_CATEGORY.equals(controller.getPreferenceKey())) {
                        mFingerprintUnlockCategoryPreferenceController =
                                (FingerprintUnlockCategoryController) controller;
                    }
                }
            }
            return controllers;
        }

+1 −2
Original line number Diff line number Diff line
@@ -27,14 +27,13 @@ import com.android.settingslib.RestrictedPreference
 *
 * @see com.android.settings.biometrics.fingerprint.FingerprintSettings
 */
open class FingerprintExtPreferencesProvider {
open class FingerprintExtPreferencesProvider(protected val context: Context) {

    open val size: Int = 0

    open fun newPreference(
        index: Int,
        inflater: PreferenceInflater,
        context: Context
    ): RestrictedPreference? = null

    interface PreferenceInflater {
+40 −0
Original line number Diff line number Diff line
@@ -70,6 +70,7 @@ import androidx.fragment.app.FragmentTransaction;
import androidx.preference.Preference;
import androidx.test.core.app.ApplicationProvider;

import com.android.settings.biometrics.fingerprint.feature.FingerprintExtPreferencesProvider;
import com.android.settings.password.ChooseLockSettingsHelper;
import com.android.settings.password.ConfirmDeviceCredentialActivity;
import com.android.settings.search.BaseSearchIndexProvider;
@@ -79,6 +80,7 @@ import com.android.settings.testutils.shadow.ShadowLockPatternUtils;
import com.android.settings.testutils.shadow.ShadowSettingsPreferenceFragment;
import com.android.settings.testutils.shadow.ShadowUserManager;
import com.android.settings.testutils.shadow.ShadowUtils;
import com.android.settingslib.RestrictedPreference;
import com.android.settingslib.RestrictedSwitchPreference;

import org.junit.After;
@@ -123,6 +125,12 @@ public class FingerprintSettingsFragmentTest {
    private PackageManager mPackageManager;
    @Mock
    private BiometricManager mBiometricManager;
    @Mock
    private FingerprintExtPreferencesProvider mExtPreferencesProvider;
    @Mock
    private RestrictedPreference mRestrictedPreference0;
    @Mock
    private RestrictedPreference mRestrictedPreference1;

    @Captor
    private ArgumentCaptor<CancellationSignal> mCancellationSignalArgumentCaptor =
@@ -159,6 +167,11 @@ public class FingerprintSettingsFragmentTest {
        when(mFakeFeatureFactory.getFingerprintFeatureProvider()
                .getFingerprintSettingsFeatureProvider())
                .thenReturn(mFingerprintSettingsFeatureProvider);

        when(mFakeFeatureFactory.getFingerprintFeatureProvider()
                .getExtPreferenceProvider(mContext))
                .thenReturn(mExtPreferencesProvider);
        when(mExtPreferencesProvider.getSize()).thenReturn(0);
    }

    @After
@@ -417,6 +430,33 @@ public class FingerprintSettingsFragmentTest {
        assertThat(checkEnrolledPerf).isNull();
    }

    @Test
    public void testHasExtPreferences() {
        String key0 = "ExtKey0";
        String key1 = "ExtKey1";
        when(mRestrictedPreference0.getKey()).thenReturn(key0);
        when(mRestrictedPreference1.getKey()).thenReturn(key1);
        when(mExtPreferencesProvider.getSize()).thenReturn(2);
        when(mExtPreferencesProvider.newPreference(eq(0),
                any(FingerprintExtPreferencesProvider.PreferenceInflater.class)))
                .thenReturn(mRestrictedPreference0);
        when(mExtPreferencesProvider.newPreference(eq(1),
                any(FingerprintExtPreferencesProvider.PreferenceInflater.class)))
                .thenReturn(mRestrictedPreference1);

        Fingerprint fingerprint = new Fingerprint("Test", 0, 0);
        doReturn(List.of(fingerprint)).when(mFingerprintManager).getEnrolledFingerprints(anyInt());
        setUpFragment(false, PRIMARY_USER_ID, TYPE_UDFPS_OPTICAL, 5);

        shadowOf(Looper.getMainLooper()).idle();

        Preference preference0 = mFragment.findPreference(key0);
        assertThat(preference0).isEqualTo(mRestrictedPreference0);

        Preference preference1 = mFragment.findPreference(key1);
        assertThat(preference1).isEqualTo(mRestrictedPreference1);
    }

    private void setSensor(@FingerprintSensorProperties.SensorType int sensorType,
            int maxFingerprints) {
        final ArrayList<FingerprintSensorPropertiesInternal> props = new ArrayList<>();