Deep copy the existing Arguments
Otherwise we end up using the same bundle for all the fragments. Bug: 304697867 Test: manual Test: atest ProfileSelectFragmentTest Change-Id: Ia31f2440516783c22849593922467756c8c54cb9
This commit is contained in:
@@ -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();
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user