Fix NPE in accountPrefController

Change-Id: I83dba35604c501780fa9a99d122b9d9bc8068661
Fix: 34193417
Test: RunSettingsRoboTests
This commit is contained in:
Fan Zhang
2017-01-10 11:50:01 -08:00
parent 6fbdb5df55
commit 424443bdb2
2 changed files with 25 additions and 1 deletions

View File

@@ -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);

View File

@@ -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<>();