Fix NPE in AddUserWhenLockedPreferenceController.

Set LockPatternUtils in constructor, but allow it to be
overridden for tests.

Bug: 149511500
Test: make -j64 RunSettingsRoboTests ROBOTEST_FILTER="com.android.settings.users.AddUserWhenLockedPreferenceControllerTest"
Change-Id: I4148fec8eea9c76afebe45cc29c2c87775fd3b1e
This commit is contained in:
Ben Murdoch
2020-02-14 14:49:12 +00:00
parent acc2fe085a
commit c20d548ad9
3 changed files with 7 additions and 12 deletions

View File

@@ -28,15 +28,12 @@ import com.android.settingslib.RestrictedSwitchPreference;
public class AddUserWhenLockedPreferenceController extends TogglePreferenceController {
private final UserCapabilities mUserCaps;
private LockPatternUtils mLockPatternUtils;
private final LockPatternUtils mLockPatternUtils;
public AddUserWhenLockedPreferenceController(Context context, String key) {
super(context, key);
mUserCaps = UserCapabilities.create(context);
}
void setLockPatternUtils(LockPatternUtils lockPatternUtils) {
mLockPatternUtils = lockPatternUtils;
mLockPatternUtils = new LockPatternUtils(context);
}
@Override

View File

@@ -241,8 +241,6 @@ public class UserSettings extends SettingsPreferenceFragment
mAddUserWhenLockedPreferenceController = new AddUserWhenLockedPreferenceController(
activity, KEY_ADD_USER_WHEN_LOCKED);
mAddUserWhenLockedPreferenceController.setLockPatternUtils(
new LockPatternUtils(getPrefContext()));
mMultiUserFooterPreferenceController = new MultiUserFooterPreferenceController(activity,
KEY_MULTIUSER_FOOTER);
@@ -1296,7 +1294,6 @@ public class UserSettings extends SettingsPreferenceFragment
AddUserWhenLockedPreferenceController controller =
new AddUserWhenLockedPreferenceController(
context, KEY_ADD_USER_WHEN_LOCKED);
controller.setLockPatternUtils(new LockPatternUtils(context));
controller.updateNonIndexableKeys(niks);
new AutoSyncDataPreferenceController(context, null /* parent */)
.updateNonIndexableKeys(niks);

View File

@@ -42,6 +42,7 @@ import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
import org.robolectric.util.ReflectionHelpers;
@RunWith(RobolectricTestRunner.class)
@Config(shadows = {ShadowUserManager.class})
@@ -63,7 +64,7 @@ public class AddUserWhenLockedPreferenceControllerTest {
mLockPatternUtils = mock(LockPatternUtils.class);
mUserManager = ShadowUserManager.getShadow();
mController = new AddUserWhenLockedPreferenceController(mContext, "fake_key");
mController.setLockPatternUtils(mLockPatternUtils);
ReflectionHelpers.setField(mController, "mLockPatternUtils", mLockPatternUtils);
mUserManager.setSupportsMultipleUsers(true);
}
@@ -104,7 +105,7 @@ public class AddUserWhenLockedPreferenceControllerTest {
when(mLockPatternUtils.isSecure(anyInt())).thenReturn(true);
final AddUserWhenLockedPreferenceController controller =
new AddUserWhenLockedPreferenceController(mContext, "fake_key");
controller.setLockPatternUtils(mLockPatternUtils);
ReflectionHelpers.setField(controller, "mLockPatternUtils", mLockPatternUtils);
final RestrictedSwitchPreference preference = mock(RestrictedSwitchPreference.class);
controller.updateState(preference);
@@ -162,7 +163,7 @@ public class AddUserWhenLockedPreferenceControllerTest {
when(mLockPatternUtils.isSecure(anyInt())).thenReturn(false);
final AddUserWhenLockedPreferenceController controller =
new AddUserWhenLockedPreferenceController(mContext, "fake_key");
controller.setLockPatternUtils(mLockPatternUtils);
ReflectionHelpers.setField(controller, "mLockPatternUtils", mLockPatternUtils);
final RestrictedSwitchPreference preference = mock(RestrictedSwitchPreference.class);
controller.updateState(preference);
@@ -180,7 +181,7 @@ public class AddUserWhenLockedPreferenceControllerTest {
when(mLockPatternUtils.isSecure(anyInt())).thenReturn(true);
final AddUserWhenLockedPreferenceController controller =
new AddUserWhenLockedPreferenceController(mContext, "fake_key");
controller.setLockPatternUtils(mLockPatternUtils);
ReflectionHelpers.setField(controller, "mLockPatternUtils", mLockPatternUtils);
final RestrictedSwitchPreference preference = mock(RestrictedSwitchPreference.class);
controller.updateState(preference);