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(
|
default FingerprintExtPreferencesProvider getExtPreferenceProvider(
|
||||||
@NonNull Context context
|
@NonNull Context context
|
||||||
) {
|
) {
|
||||||
return new FingerprintExtPreferencesProvider();
|
return new FingerprintExtPreferencesProvider(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -468,12 +468,10 @@ public class FingerprintSettings extends SubSettings {
|
|||||||
* Add new preferences from FingerprintExtPreferencesProvider
|
* Add new preferences from FingerprintExtPreferencesProvider
|
||||||
*/
|
*/
|
||||||
public void setupExtFingerprintPreferences() {
|
public void setupExtFingerprintPreferences() {
|
||||||
final FingerprintExtPreferencesProvider preferencesProvider =
|
FingerprintExtPreferencesProvider preferencesProvider = getExtPreferenceProvider();
|
||||||
FeatureFactory.getFeatureFactory().getFingerprintFeatureProvider()
|
|
||||||
.getExtPreferenceProvider(requireContext());
|
|
||||||
for (int index = 0; index < preferencesProvider.getSize(); ++index) {
|
for (int index = 0; index < preferencesProvider.getSize(); ++index) {
|
||||||
final RestrictedPreference preference = preferencesProvider.newPreference(
|
final RestrictedPreference preference = preferencesProvider.newPreference(
|
||||||
index, this::inflateFromResource, requireContext());
|
index, this::inflateFromResource);
|
||||||
if (preference == null || findPreference(preference.getKey()) != null) {
|
if (preference == null || findPreference(preference.getKey()) != null) {
|
||||||
continue;
|
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
|
// This needs to be after setting ids, otherwise
|
||||||
// |mRequireScreenOnToAuthPreferenceController.isChecked| is always checking the primary
|
// |mRequireScreenOnToAuthPreferenceController.isChecked| is always checking the primary
|
||||||
// user instead of the user with |mUserId|.
|
// user instead of the user with |mUserId|.
|
||||||
if (isSfps() || (screenOffUnlockUdfps() && isScreenOffUnlcokSupported())) {
|
if (isSfps() || (screenOffUnlockUdfps() && isScreenOffUnlcokSupported())
|
||||||
|
|| getExtPreferenceProvider().getSize() > 0) {
|
||||||
scrollToPreference(fpPrefKey);
|
scrollToPreference(fpPrefKey);
|
||||||
addFingerprintUnlockCategory();
|
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;
|
return controllers;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -27,14 +27,13 @@ import com.android.settingslib.RestrictedPreference
|
|||||||
*
|
*
|
||||||
* @see com.android.settings.biometrics.fingerprint.FingerprintSettings
|
* @see com.android.settings.biometrics.fingerprint.FingerprintSettings
|
||||||
*/
|
*/
|
||||||
open class FingerprintExtPreferencesProvider {
|
open class FingerprintExtPreferencesProvider(protected val context: Context) {
|
||||||
|
|
||||||
open val size: Int = 0
|
open val size: Int = 0
|
||||||
|
|
||||||
open fun newPreference(
|
open fun newPreference(
|
||||||
index: Int,
|
index: Int,
|
||||||
inflater: PreferenceInflater,
|
inflater: PreferenceInflater,
|
||||||
context: Context
|
|
||||||
): RestrictedPreference? = null
|
): RestrictedPreference? = null
|
||||||
|
|
||||||
interface PreferenceInflater {
|
interface PreferenceInflater {
|
||||||
|
@@ -70,6 +70,7 @@ import androidx.fragment.app.FragmentTransaction;
|
|||||||
import androidx.preference.Preference;
|
import androidx.preference.Preference;
|
||||||
import androidx.test.core.app.ApplicationProvider;
|
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.ChooseLockSettingsHelper;
|
||||||
import com.android.settings.password.ConfirmDeviceCredentialActivity;
|
import com.android.settings.password.ConfirmDeviceCredentialActivity;
|
||||||
import com.android.settings.search.BaseSearchIndexProvider;
|
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.ShadowSettingsPreferenceFragment;
|
||||||
import com.android.settings.testutils.shadow.ShadowUserManager;
|
import com.android.settings.testutils.shadow.ShadowUserManager;
|
||||||
import com.android.settings.testutils.shadow.ShadowUtils;
|
import com.android.settings.testutils.shadow.ShadowUtils;
|
||||||
|
import com.android.settingslib.RestrictedPreference;
|
||||||
import com.android.settingslib.RestrictedSwitchPreference;
|
import com.android.settingslib.RestrictedSwitchPreference;
|
||||||
|
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
@@ -123,6 +125,12 @@ public class FingerprintSettingsFragmentTest {
|
|||||||
private PackageManager mPackageManager;
|
private PackageManager mPackageManager;
|
||||||
@Mock
|
@Mock
|
||||||
private BiometricManager mBiometricManager;
|
private BiometricManager mBiometricManager;
|
||||||
|
@Mock
|
||||||
|
private FingerprintExtPreferencesProvider mExtPreferencesProvider;
|
||||||
|
@Mock
|
||||||
|
private RestrictedPreference mRestrictedPreference0;
|
||||||
|
@Mock
|
||||||
|
private RestrictedPreference mRestrictedPreference1;
|
||||||
|
|
||||||
@Captor
|
@Captor
|
||||||
private ArgumentCaptor<CancellationSignal> mCancellationSignalArgumentCaptor =
|
private ArgumentCaptor<CancellationSignal> mCancellationSignalArgumentCaptor =
|
||||||
@@ -159,6 +167,11 @@ public class FingerprintSettingsFragmentTest {
|
|||||||
when(mFakeFeatureFactory.getFingerprintFeatureProvider()
|
when(mFakeFeatureFactory.getFingerprintFeatureProvider()
|
||||||
.getFingerprintSettingsFeatureProvider())
|
.getFingerprintSettingsFeatureProvider())
|
||||||
.thenReturn(mFingerprintSettingsFeatureProvider);
|
.thenReturn(mFingerprintSettingsFeatureProvider);
|
||||||
|
|
||||||
|
when(mFakeFeatureFactory.getFingerprintFeatureProvider()
|
||||||
|
.getExtPreferenceProvider(mContext))
|
||||||
|
.thenReturn(mExtPreferencesProvider);
|
||||||
|
when(mExtPreferencesProvider.getSize()).thenReturn(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@After
|
@After
|
||||||
@@ -417,6 +430,33 @@ public class FingerprintSettingsFragmentTest {
|
|||||||
assertThat(checkEnrolledPerf).isNull();
|
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,
|
private void setSensor(@FingerprintSensorProperties.SensorType int sensorType,
|
||||||
int maxFingerprints) {
|
int maxFingerprints) {
|
||||||
final ArrayList<FingerprintSensorPropertiesInternal> props = new ArrayList<>();
|
final ArrayList<FingerprintSensorPropertiesInternal> props = new ArrayList<>();
|
||||||
|
Reference in New Issue
Block a user