diff --git a/src/com/android/settings/accounts/AccountPreferenceController.java b/src/com/android/settings/accounts/AccountPreferenceController.java index 904dea32a76..46a3e6b7776 100644 --- a/src/com/android/settings/accounts/AccountPreferenceController.java +++ b/src/com/android/settings/accounts/AccountPreferenceController.java @@ -192,12 +192,10 @@ public class AccountPreferenceController extends AbstractPreferenceController data.screenTitle = screenTitle; rawData.add(data); } - { - SearchIndexableRaw data = new SearchIndexableRaw(mContext); - data.title = res.getString(R.string.managed_profile_settings_title); - data.screenTitle = screenTitle; - rawData.add(data); - } + SearchIndexableRaw data = new SearchIndexableRaw(mContext); + data.title = res.getString(R.string.managed_profile_settings_title); + data.screenTitle = screenTitle; + rawData.add(data); } } } @@ -300,6 +298,7 @@ public class AccountPreferenceController extends AbstractPreferenceController final ProfileData data = mProfiles.get(userInfo.id); if (data != null) { data.pendingRemoval = false; + data.userInfo = userInfo; if (userInfo.isEnabled()) { // recreate the authentication helper to refresh the list of enabled accounts data.authenticatorHelper = diff --git a/tests/robotests/src/com/android/settings/accounts/AccountPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accounts/AccountPreferenceControllerTest.java index de558b34d16..e7902182095 100644 --- a/tests/robotests/src/com/android/settings/accounts/AccountPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/accounts/AccountPreferenceControllerTest.java @@ -563,6 +563,45 @@ public class AccountPreferenceControllerTest { verify(preferenceGroup, times(1)).removePreference(argThat(titleMatches("Acct12"))); } + @Test + public void onResume_userReEnabled_shouldAddOneAccountPreference() { + final List infos = new ArrayList<>(); + infos.add(new UserInfo(1, "user 1", UserInfo.FLAG_DISABLED)); + when(mUserManager.isManagedProfile()).thenReturn(false); + when(mUserManager.isRestrictedProfile()).thenReturn(false); + when(mUserManager.getProfiles(anyInt())).thenReturn(infos); + + Account[] accounts = {new Account("Acct1", "com.acct1")}; + when(mAccountManager.getAccountsAsUser(1)).thenReturn(accounts); + when(mAccountManager.getAccountsByTypeAsUser(eq("com.acct1"), any(UserHandle.class))) + .thenReturn(accounts); + + AuthenticatorDescription[] authDescs = { + new AuthenticatorDescription("com.acct1", "com.android.settings", + R.string.account_settings_title, 0 /* iconId */, 0 /* smallIconId */, + 0 /* prefId */, false /* customTokens */) + }; + when(mAccountManager.getAuthenticatorTypesAsUser(anyInt())).thenReturn(authDescs); + + AccessiblePreferenceCategory preferenceGroup = mock(AccessiblePreferenceCategory.class); + when(preferenceGroup.getPreferenceManager()).thenReturn(mock(PreferenceManager.class)); + when(mAccountHelper.createAccessiblePreferenceCategory(any(Context.class))) + .thenReturn(preferenceGroup); + + // First time resume will build the UI with no account + mController.onResume(); + verify(preferenceGroup, never()).addPreference(argThat(titleMatches("Acct1"))); + + // Enable the user + infos.remove(0 /* index */); + infos.add(new UserInfo(1, "user 1", 0 /* flags */)); + + // Resume should show the account for the user + mController.onResume(); + + verify(preferenceGroup).addPreference(argThat(titleMatches("Acct1"))); + } + private static ArgumentMatcher titleMatches(String expected) { return preference -> TextUtils.equals(expected, preference.getTitle()); }