Fix NPE in accountPrefController
Change-Id: I83dba35604c501780fa9a99d122b9d9bc8068661 Fix: 34193417 Test: RunSettingsRoboTests
This commit is contained in:
@@ -311,7 +311,10 @@ public class AccountPreferenceController extends PreferenceController
|
||||
preferenceGroup.setContentDescription(
|
||||
mContext.getString(R.string.accessibility_category_personal));
|
||||
}
|
||||
mParent.getPreferenceScreen().addPreference(preferenceGroup);
|
||||
final PreferenceScreen screen = mParent.getPreferenceScreen();
|
||||
if (screen != null) {
|
||||
screen.addPreference(preferenceGroup);
|
||||
}
|
||||
profileData.preferenceGroup = preferenceGroup;
|
||||
if (userInfo.isEnabled()) {
|
||||
profileData.authenticatorHelper = new AuthenticatorHelper(context,
|
||||
@@ -367,6 +370,9 @@ public class AccountPreferenceController extends PreferenceController
|
||||
|
||||
void cleanUpPreferences() {
|
||||
PreferenceScreen screen = mParent.getPreferenceScreen();
|
||||
if (screen == null) {
|
||||
return;
|
||||
}
|
||||
for (int i = 0; i < mProfiles.size(); i++) {
|
||||
final PreferenceGroup preferenceGroup = mProfiles.valueAt(i).preferenceGroup;
|
||||
screen.removePreference(preferenceGroup);
|
||||
|
@@ -189,6 +189,24 @@ public class AccountPreferenceControllerTest {
|
||||
verify(mScreen, times(2)).removePreference(preferenceGroup);
|
||||
}
|
||||
|
||||
@Test
|
||||
@Config(shadows = {ShadowAccountManager.class, ShadowContentResolver.class})
|
||||
public void onResume_noPreferenceScreen_shouldNotCrash() {
|
||||
final List<UserInfo> infos = new ArrayList<>();
|
||||
infos.add(new UserInfo(1, "user 1", 0));
|
||||
when(mUserManager.isManagedProfile()).thenReturn(false);
|
||||
when(mUserManager.isLinkedUser()).thenReturn(false);
|
||||
when(mUserManager.getProfiles(anyInt())).thenReturn(infos);
|
||||
|
||||
AccessiblePreferenceCategory preferenceGroup = mock(AccessiblePreferenceCategory.class);
|
||||
when(mAccountHelper.createAccessiblePreferenceCategory(any(Context.class))).thenReturn(
|
||||
preferenceGroup);
|
||||
|
||||
mController.onResume();
|
||||
|
||||
// Should not crash
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateRawDataToIndex_ManagedProfile_shouldNotUpdate() {
|
||||
final List<SearchIndexableRaw> data = new ArrayList<>();
|
||||
|
Reference in New Issue
Block a user