Merge "Fix require on screen toggle on guest user." into udc-qpr-dev am: 800728a5a6
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/23714620 Change-Id: I77aa61c6d6f3f52e275754f17e56586e335da2c8 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -169,7 +169,8 @@ public class FingerprintSettings extends SubSettings {
|
||||
private static final String KEY_LAUNCHED_CONFIRM = "launched_confirm";
|
||||
private static final String KEY_HAS_FIRST_ENROLLED = "has_first_enrolled";
|
||||
private static final String KEY_IS_ENROLLING = "is_enrolled";
|
||||
private static final String KEY_REQUIRE_SCREEN_ON_TO_AUTH =
|
||||
@VisibleForTesting
|
||||
static final String KEY_REQUIRE_SCREEN_ON_TO_AUTH =
|
||||
"security_settings_require_screen_on_to_auth";
|
||||
private static final String KEY_FINGERPRINTS_ENROLLED_CATEGORY =
|
||||
"security_settings_fingerprints_enrolled";
|
||||
@@ -536,10 +537,6 @@ public class FingerprintSettings extends SubSettings {
|
||||
|
||||
private void addFingerprintPreferences(PreferenceGroup root) {
|
||||
final String fpPrefKey = addFingerprintItemPreferences(root);
|
||||
if (isSfps()) {
|
||||
scrollToPreference(fpPrefKey);
|
||||
addFingerprintUnlockCategory();
|
||||
}
|
||||
for (AbstractPreferenceController controller : mControllers) {
|
||||
if (controller instanceof FingerprintSettingsPreferenceController) {
|
||||
((FingerprintSettingsPreferenceController) controller).setUserId(mUserId);
|
||||
@@ -547,6 +544,14 @@ public class FingerprintSettings extends SubSettings {
|
||||
((FingerprintUnlockCategoryController) controller).setUserId(mUserId);
|
||||
}
|
||||
}
|
||||
|
||||
// This needs to be after setting ids, otherwise
|
||||
// |mRequireScreenOnToAuthPreferenceController.isChecked| is always checking the primary
|
||||
// user instead of the user with |mUserId|.
|
||||
if (isSfps()) {
|
||||
scrollToPreference(fpPrefKey);
|
||||
addFingerprintUnlockCategory();
|
||||
}
|
||||
createFooterPreference(root);
|
||||
}
|
||||
|
||||
|
@@ -16,12 +16,14 @@
|
||||
|
||||
package com.android.settings.biometrics.fingerprint;
|
||||
|
||||
import static android.hardware.fingerprint.FingerprintSensorProperties.TYPE_POWER_BUTTON;
|
||||
import static android.hardware.fingerprint.FingerprintSensorProperties.TYPE_UDFPS_OPTICAL;
|
||||
|
||||
import static com.android.settings.biometrics.fingerprint.FingerprintSettings.FingerprintSettingsFragment;
|
||||
import static com.android.settings.biometrics.fingerprint.FingerprintSettings.FingerprintSettingsFragment.ADD_FINGERPRINT_REQUEST;
|
||||
import static com.android.settings.biometrics.fingerprint.FingerprintSettings.FingerprintSettingsFragment.CHOOSE_LOCK_GENERIC_REQUEST;
|
||||
import static com.android.settings.biometrics.fingerprint.FingerprintSettings.FingerprintSettingsFragment.KEY_FINGERPRINT_ADD;
|
||||
import static com.android.settings.biometrics.fingerprint.FingerprintSettings.FingerprintSettingsFragment.KEY_REQUIRE_SCREEN_ON_TO_AUTH;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
@@ -39,12 +41,16 @@ import static org.mockito.Mockito.verify;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.UserInfo;
|
||||
import android.hardware.biometrics.ComponentInfoInternal;
|
||||
import android.hardware.biometrics.SensorProperties;
|
||||
import android.hardware.fingerprint.FingerprintManager;
|
||||
import android.hardware.fingerprint.FingerprintSensorProperties;
|
||||
import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
|
||||
import android.os.Bundle;
|
||||
import android.os.CancellationSignal;
|
||||
import android.os.UserHandle;
|
||||
import android.provider.Settings;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
@@ -62,6 +68,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.RestrictedSwitchPreference;
|
||||
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
@@ -83,6 +90,9 @@ import java.util.ArrayList;
|
||||
@Config(shadows = {ShadowSettingsPreferenceFragment.class, ShadowUtils.class, ShadowFragment.class,
|
||||
ShadowUserManager.class, ShadowLockPatternUtils.class})
|
||||
public class FingerprintSettingsFragmentTest {
|
||||
private static final int PRIMARY_USER_ID = 0;
|
||||
private static final int GUEST_USER_ID = 10;
|
||||
|
||||
private FingerprintSettingsFragment mFragment;
|
||||
private Context mContext;
|
||||
private FragmentActivity mActivity;
|
||||
@@ -106,9 +116,14 @@ public class FingerprintSettingsFragmentTest {
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
doReturn(true).when(mFingerprintManager).isHardwareDetected();
|
||||
ShadowUtils.setFingerprintManager(mFingerprintManager);
|
||||
FakeFeatureFactory.setupForTest();
|
||||
|
||||
mContext = spy(ApplicationProvider.getApplicationContext());
|
||||
mFragment = spy(new FingerprintSettingsFragment());
|
||||
doReturn(mContext).when(mFragment).getContext();
|
||||
|
||||
doReturn(true).when(mFingerprintManager).isHardwareDetected();
|
||||
}
|
||||
|
||||
@After
|
||||
@@ -186,19 +201,43 @@ public class FingerprintSettingsFragmentTest {
|
||||
assertThat(mFingerprintAuthenticateSidecar.isCancelled()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGuestUserRequireScreenOnToAuth() {
|
||||
Settings.Secure.putIntForUser(
|
||||
mContext.getContentResolver(),
|
||||
Settings.Secure.SFPS_PERFORMANT_AUTH_ENABLED,
|
||||
0,
|
||||
UserHandle.of(PRIMARY_USER_ID).getIdentifier());
|
||||
|
||||
Settings.Secure.putIntForUser(
|
||||
mContext.getContentResolver(),
|
||||
Settings.Secure.SFPS_PERFORMANT_AUTH_ENABLED,
|
||||
1,
|
||||
UserHandle.of(GUEST_USER_ID).getIdentifier());
|
||||
|
||||
setUpFragment(false, GUEST_USER_ID, TYPE_POWER_BUTTON);
|
||||
|
||||
final RestrictedSwitchPreference requireScreenOnToAuthPreference = mFragment.findPreference(
|
||||
KEY_REQUIRE_SCREEN_ON_TO_AUTH);
|
||||
assertThat(requireScreenOnToAuthPreference.isChecked()).isTrue();
|
||||
}
|
||||
|
||||
private void setUpFragment(boolean showChooseLock) {
|
||||
setUpFragment(showChooseLock, PRIMARY_USER_ID, TYPE_UDFPS_OPTICAL);
|
||||
}
|
||||
|
||||
private void setUpFragment(boolean showChooseLock, int userId,
|
||||
@FingerprintSensorProperties.SensorType int sensorType) {
|
||||
ShadowUserManager.getShadow().addProfile(new UserInfo(userId, "", 0));
|
||||
|
||||
Intent intent = new Intent();
|
||||
if (!showChooseLock) {
|
||||
intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN, new byte[0]);
|
||||
intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_GK_PW_HANDLE, 1L);
|
||||
}
|
||||
|
||||
intent.putExtra(Intent.EXTRA_USER_ID, userId);
|
||||
mActivity = spy(Robolectric.buildActivity(FragmentActivity.class, intent).get());
|
||||
mContext = spy(ApplicationProvider.getApplicationContext());
|
||||
|
||||
mFragment = spy(new FingerprintSettingsFragment());
|
||||
doReturn(mActivity).when(mFragment).getActivity();
|
||||
doReturn(mContext).when(mFragment).getContext();
|
||||
|
||||
FragmentManager fragmentManager = mock(FragmentManager.class);
|
||||
doReturn(mFragmentTransaction).when(fragmentManager).beginTransaction();
|
||||
@@ -212,7 +251,7 @@ public class FingerprintSettingsFragmentTest {
|
||||
|
||||
doNothing().when(mFragment).startActivityForResult(any(Intent.class), anyInt());
|
||||
|
||||
setSensor();
|
||||
setSensor(sensorType);
|
||||
|
||||
// Start fragment
|
||||
mFragment.onAttach(mContext);
|
||||
@@ -221,14 +260,14 @@ public class FingerprintSettingsFragmentTest {
|
||||
mFragment.onResume();
|
||||
}
|
||||
|
||||
private void setSensor() {
|
||||
private void setSensor(@FingerprintSensorProperties.SensorType int sensorType) {
|
||||
final ArrayList<FingerprintSensorPropertiesInternal> props = new ArrayList<>();
|
||||
props.add(new FingerprintSensorPropertiesInternal(
|
||||
0 /* sensorId */,
|
||||
SensorProperties.STRENGTH_STRONG,
|
||||
1 /* maxEnrollmentsPerUser */,
|
||||
new ArrayList<ComponentInfoInternal>(),
|
||||
TYPE_UDFPS_OPTICAL,
|
||||
sensorType,
|
||||
true /* resetLockoutRequiresHardwareAuthToken */));
|
||||
doReturn(props).when(mFingerprintManager).getSensorPropertiesInternal();
|
||||
}
|
||||
|
Reference in New Issue
Block a user