Merge "Add context to FingerprintExtPreferencesProvider" into main
This commit is contained in:
committed by
Android (Google) Code Review
commit
af3a006b2a
@@ -73,7 +73,7 @@ public interface FingerprintFeatureProvider {
|
||||
default FingerprintExtPreferencesProvider getExtPreferenceProvider(
|
||||
@NonNull Context context
|
||||
) {
|
||||
return new FingerprintExtPreferencesProvider();
|
||||
return new FingerprintExtPreferencesProvider(context);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -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;
|
||||
}
|
||||
|
||||
|
@@ -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 {
|
||||
|
@@ -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<>();
|
||||
|
Reference in New Issue
Block a user