diff --git a/src/com/android/settings/dashboard/profileselector/ProfileSelectFragment.java b/src/com/android/settings/dashboard/profileselector/ProfileSelectFragment.java index 657cdbf7415..dc1b792efad 100644 --- a/src/com/android/settings/dashboard/profileselector/ProfileSelectFragment.java +++ b/src/com/android/settings/dashboard/profileselector/ProfileSelectFragment.java @@ -323,7 +323,7 @@ public abstract class ProfileSelectFragment extends DashboardFragment { fragments.add(personalFragment); if (managedProfileInfoProvider.getManagedProfile(context) != null) { - final Bundle workOnly = bundle != null ? bundle : new Bundle(); + final Bundle workOnly = bundle != null ? bundle.deepCopy() : new Bundle(); workOnly.putInt(EXTRA_PROFILE, ProfileType.WORK); final Fragment workFragment = workFragmentConstructor.constructAndGetFragment(); @@ -333,7 +333,7 @@ public abstract class ProfileSelectFragment extends DashboardFragment { if (Flags.allowPrivateProfile() && !privateSpaceInfoProvider.isPrivateSpaceLocked(context)) { - final Bundle privateOnly = bundle != null ? bundle : new Bundle(); + final Bundle privateOnly = bundle != null ? bundle.deepCopy() : new Bundle(); privateOnly.putInt(EXTRA_PROFILE, ProfileType.PRIVATE); final Fragment privateFragment = privateFragmentConstructor.constructAndGetFragment(); diff --git a/tests/robotests/src/com/android/settings/dashboard/profileselector/ProfileSelectFragmentTest.java b/tests/robotests/src/com/android/settings/dashboard/profileselector/ProfileSelectFragmentTest.java index 056935cd521..0f0de56da22 100644 --- a/tests/robotests/src/com/android/settings/dashboard/profileselector/ProfileSelectFragmentTest.java +++ b/tests/robotests/src/com/android/settings/dashboard/profileselector/ProfileSelectFragmentTest.java @@ -18,6 +18,7 @@ package com.android.settings.dashboard.profileselector; import static android.content.Intent.EXTRA_USER_ID; +import static com.android.settings.dashboard.profileselector.ProfileSelectFragment.EXTRA_PROFILE; import static com.android.settings.dashboard.profileselector.ProfileSelectFragment.PERSONAL_TAB; import static com.android.settings.dashboard.profileselector.ProfileSelectFragment.PRIVATE_TAB; import static com.android.settings.dashboard.profileselector.ProfileSelectFragment.WORK_TAB; @@ -255,6 +256,37 @@ public class ProfileSelectFragmentTest { assertThat(fragments).hasLength(3); } + @Test + public void testGetFragments_whenAvailableBundle_returnsFragmentsWithCorrectBundles() { + mSetFlagsRule.enableFlags(Flags.FLAG_ALLOW_PRIVATE_PROFILE); + Bundle bundle = new Bundle(); + Fragment[] fragments = ProfileSelectFragment.getFragments( + mContext, + bundle, + TestProfileSelectFragment::new, + TestProfileSelectFragment::new, + TestProfileSelectFragment::new, + new ProfileSelectFragment.PrivateSpaceInfoProvider() { + @Override + public boolean isPrivateSpaceLocked(Context context) { + return false; + } + }, + new ProfileSelectFragment.ManagedProfileInfoProvider() { + @Override + public UserHandle getManagedProfile(Context context) { + return new UserHandle(123); + } + }); + assertThat(fragments).hasLength(3); + assertThat(fragments[0].getArguments().getInt(EXTRA_PROFILE)) + .isEqualTo(ProfileSelectFragment.ProfileType.PERSONAL); + assertThat(fragments[1].getArguments().getInt(EXTRA_PROFILE)) + .isEqualTo(ProfileSelectFragment.ProfileType.WORK); + assertThat(fragments[2].getArguments().getInt(EXTRA_PROFILE)) + .isEqualTo(ProfileSelectFragment.ProfileType.PRIVATE); + } + public static class TestProfileSelectFragment extends ProfileSelectFragment { @Override