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
diff --git a/src/com/android/settings/dashboard/profileselector/ProfileSelectFragment.java b/src/com/android/settings/dashboard/profileselector/ProfileSelectFragment.java
index 657cdbf..dc1b792 100644
--- a/src/com/android/settings/dashboard/profileselector/ProfileSelectFragment.java
+++ b/src/com/android/settings/dashboard/profileselector/ProfileSelectFragment.java
@@ -323,7 +323,7 @@
             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 @@
 
             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 056935c..0f0de56 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 @@
 
 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 @@
         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