diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDisconnectDialogFragment.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDisconnectDialogFragment.java index b4ce2d1575b..89e94262599 100644 --- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDisconnectDialogFragment.java +++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDisconnectDialogFragment.java @@ -27,6 +27,7 @@ import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentManager; import androidx.lifecycle.Lifecycle; @@ -35,6 +36,7 @@ import com.android.settings.core.instrumentation.InstrumentedDialogFragment; import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.bluetooth.BluetoothUtils; import com.android.settingslib.bluetooth.CachedBluetoothDevice; +import com.android.settingslib.flags.Flags; import com.android.settingslib.utils.ThreadUtils; import java.util.List; @@ -212,6 +214,18 @@ public class AudioSharingDisconnectDialogFragment extends InstrumentedDialogFrag return builder.build(); } + @Override + public void onDestroy() { + super.onDestroy(); + FragmentActivity activity = getActivity(); + if (Flags.promoteAudioSharingForSecondAutoConnectedLeaDevice() + && activity instanceof AudioSharingJoinHandlerActivity + && !activity.isChangingConfigurations() && !activity.isFinishing()) { + Log.d(TAG, "onDestroy, finish activity = " + activity.getClass().getName()); + activity.finish(); + } + } + private static void logDialogAutoDismiss(AlertDialog dialog) { var unused = ThreadUtils.postOnBackgroundThread( diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingJoinDialogFragment.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingJoinDialogFragment.java index f5f3b2cd8f2..ddb60427882 100644 --- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingJoinDialogFragment.java +++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingJoinDialogFragment.java @@ -27,6 +27,7 @@ import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentManager; import androidx.lifecycle.Lifecycle; @@ -35,6 +36,7 @@ import com.android.settings.bluetooth.Utils; import com.android.settings.core.instrumentation.InstrumentedDialogFragment; import com.android.settingslib.bluetooth.BluetoothUtils; import com.android.settingslib.bluetooth.CachedBluetoothDevice; +import com.android.settingslib.flags.Flags; import java.util.List; @@ -197,6 +199,18 @@ public class AudioSharingJoinDialogFragment extends InstrumentedDialogFragment { return dialog; } + @Override + public void onDestroy() { + super.onDestroy(); + FragmentActivity activity = getActivity(); + if (Flags.promoteAudioSharingForSecondAutoConnectedLeaDevice() + && activity instanceof AudioSharingJoinHandlerActivity + && !activity.isChangingConfigurations() && !activity.isFinishing()) { + Log.d(TAG, "onDestroy, finish activity = " + activity.getClass().getName()); + activity.finish(); + } + } + private static void updateDialog( List deviceItems, String newDeviceName, diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingStopDialogFragment.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingStopDialogFragment.java index 047f2fcf8d3..9e1019e4585 100644 --- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingStopDialogFragment.java +++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingStopDialogFragment.java @@ -27,6 +27,7 @@ import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentManager; import androidx.lifecycle.Lifecycle; @@ -35,6 +36,7 @@ import com.android.settings.core.instrumentation.InstrumentedDialogFragment; import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.bluetooth.BluetoothUtils; import com.android.settingslib.bluetooth.CachedBluetoothDevice; +import com.android.settingslib.flags.Flags; import com.android.settingslib.utils.ThreadUtils; import com.google.common.collect.Iterables; @@ -218,6 +220,18 @@ public class AudioSharingStopDialogFragment extends InstrumentedDialogFragment { return dialog; } + @Override + public void onDestroy() { + super.onDestroy(); + FragmentActivity activity = getActivity(); + if (Flags.promoteAudioSharingForSecondAutoConnectedLeaDevice() + && activity instanceof AudioSharingJoinHandlerActivity + && !activity.isChangingConfigurations() && !activity.isFinishing()) { + Log.d(TAG, "onDestroy, finish activity = " + activity.getClass().getName()); + activity.finish(); + } + } + private static void logDialogAutoDismiss(AlertDialog dialog) { var unused = ThreadUtils.postOnBackgroundThread( diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDisconnectDialogFragmentTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDisconnectDialogFragmentTest.java index 86b0d65b2e5..87d4a2a7566 100644 --- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDisconnectDialogFragmentTest.java +++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDisconnectDialogFragmentTest.java @@ -30,6 +30,8 @@ import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothStatusCodes; import android.content.Context; +import android.platform.test.annotations.DisableFlags; +import android.platform.test.annotations.EnableFlags; import android.platform.test.flag.junit.SetFlagsRule; import android.util.Pair; import android.view.View; @@ -140,8 +142,8 @@ public class AudioSharingDisconnectDialogFragmentTest { } @Test + @DisableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING) public void onCreateDialog_flagOff_dialogNotExist() { - mSetFlagsRule.disableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING); mDeviceItems = new ArrayList<>(); mDeviceItems.add(TEST_DEVICE_ITEM1); mDeviceItems.add(TEST_DEVICE_ITEM2); @@ -154,8 +156,8 @@ public class AudioSharingDisconnectDialogFragmentTest { } @Test + @EnableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING) public void onCreateDialog_unattachedFragment_dialogNotExist() { - mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING); mDeviceItems = new ArrayList<>(); mDeviceItems.add(TEST_DEVICE_ITEM1); mDeviceItems.add(TEST_DEVICE_ITEM2); @@ -171,8 +173,8 @@ public class AudioSharingDisconnectDialogFragmentTest { } @Test + @EnableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING) public void onCreateDialog_flagOn_dialogShowBtnForTwoDevices() { - mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING); mDeviceItems = new ArrayList<>(); mDeviceItems.add(TEST_DEVICE_ITEM1); mDeviceItems.add(TEST_DEVICE_ITEM2); @@ -189,8 +191,8 @@ public class AudioSharingDisconnectDialogFragmentTest { } @Test + @EnableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING) public void onCreateDialog_dialogIsShowingForSameGroup_updateDialog() { - mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING); mDeviceItems = new ArrayList<>(); mDeviceItems.add(TEST_DEVICE_ITEM1); mDeviceItems.add(TEST_DEVICE_ITEM2); @@ -248,8 +250,8 @@ public class AudioSharingDisconnectDialogFragmentTest { } @Test + @EnableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING) public void onCreateDialog_dialogIsShowingForNewGroup_showNewDialog() { - mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING); mDeviceItems = new ArrayList<>(); mDeviceItems.add(TEST_DEVICE_ITEM1); mDeviceItems.add(TEST_DEVICE_ITEM2); @@ -302,8 +304,9 @@ public class AudioSharingDisconnectDialogFragmentTest { } @Test + @EnableFlags({Flags.FLAG_ENABLE_LE_AUDIO_SHARING, + Flags.FLAG_PROMOTE_AUDIO_SHARING_FOR_SECOND_AUTO_CONNECTED_LEA_DEVICE}) public void onCreateDialog_clickCancel_dialogDismiss() { - mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING); mDeviceItems = new ArrayList<>(); mDeviceItems.add(TEST_DEVICE_ITEM1); mDeviceItems.add(TEST_DEVICE_ITEM2); @@ -319,6 +322,7 @@ public class AudioSharingDisconnectDialogFragmentTest { shadowMainLooper().idle(); assertThat(dialog.isShowing()).isFalse(); + assertThat(mParent.getActivity().isFinishing()).isFalse(); verify(mFeatureFactory.metricsFeatureProvider, times(0)) .action( any(Context.class), @@ -330,4 +334,33 @@ public class AudioSharingDisconnectDialogFragmentTest { eq(SettingsEnums.ACTION_AUDIO_SHARING_DIALOG_NEGATIVE_BTN_CLICKED), eq(TEST_EVENT_DATA)); } + + @Test + @EnableFlags({Flags.FLAG_ENABLE_LE_AUDIO_SHARING, + Flags.FLAG_PROMOTE_AUDIO_SHARING_FOR_SECOND_AUTO_CONNECTED_LEA_DEVICE}) + public void onDestroy_finishAudioSharingJoinHandlerActivity() { + mDeviceItems = new ArrayList<>(); + mDeviceItems.add(TEST_DEVICE_ITEM1); + mDeviceItems.add(TEST_DEVICE_ITEM2); + Fragment parent = new Fragment(); + FragmentController.setupFragment( + parent, AudioSharingJoinHandlerActivity.class, /* containerViewId= */ + 0, /* bundle= */ null); + AudioSharingDisconnectDialogFragment.show( + parent, mDeviceItems, mCachedDevice3, EMPTY_EVENT_LISTENER, TEST_EVENT_DATA_LIST); + shadowMainLooper().idle(); + + AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog(); + assertThat(dialog).isNotNull(); + assertThat(dialog.isShowing()).isTrue(); + + View btnView = dialog.findViewById(R.id.negative_btn); + assertThat(btnView).isNotNull(); + btnView.performClick(); + shadowMainLooper().idle(); + + assertThat(dialog.isShowing()).isFalse(); + assertThat( + parent.getActivity().isFinishing() || parent.getActivity().isDestroyed()).isTrue(); + } } diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingJoinDialogFragmentTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingJoinDialogFragmentTest.java index 32f9e83cbc8..69a22611c01 100644 --- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingJoinDialogFragmentTest.java +++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingJoinDialogFragmentTest.java @@ -28,6 +28,8 @@ import android.app.settings.SettingsEnums; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothStatusCodes; import android.content.Context; +import android.platform.test.annotations.DisableFlags; +import android.platform.test.annotations.EnableFlags; import android.platform.test.flag.junit.SetFlagsRule; import android.util.Pair; import android.view.View; @@ -142,8 +144,8 @@ public class AudioSharingJoinDialogFragmentTest { } @Test + @EnableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING) public void getMetricsCategory_inSharing_correctValue() { - mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING); when(mBroadcast.isEnabled(null)).thenReturn(true); int category = mFragment.getMetricsCategory(); shadowMainLooper().idle(); @@ -151,8 +153,8 @@ public class AudioSharingJoinDialogFragmentTest { } @Test + @DisableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING) public void onCreateDialog_flagOff_dialogNotExist() { - mSetFlagsRule.disableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING); AudioSharingJoinDialogFragment.show( mParent, new ArrayList<>(), @@ -165,8 +167,8 @@ public class AudioSharingJoinDialogFragmentTest { } @Test + @EnableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING) public void onCreateDialog_unattachedFragment_dialogNotExist() { - mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING); AudioSharingJoinDialogFragment.show( new Fragment(), new ArrayList<>(), @@ -179,8 +181,8 @@ public class AudioSharingJoinDialogFragmentTest { } @Test + @EnableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING) public void onCreateDialog_flagOn_dialogShowTextForSingleDevice() { - mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING); when(mBroadcast.isEnabled(null)).thenReturn(true); AudioSharingJoinDialogFragment.show( mParent, @@ -201,8 +203,8 @@ public class AudioSharingJoinDialogFragmentTest { } @Test + @EnableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING) public void onCreateDialog_flagOn_dialogShowTextForTwoDevice() { - mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING); ArrayList list = new ArrayList<>(); list.add(TEST_DEVICE_ITEM1); AudioSharingJoinDialogFragment.show( @@ -228,8 +230,8 @@ public class AudioSharingJoinDialogFragmentTest { } @Test + @EnableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING) public void onCreateDialog_dialogIsShowing_updateDialog() { - mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING); ArrayList list = new ArrayList<>(); list.add(TEST_DEVICE_ITEM1); AudioSharingJoinDialogFragment.show( @@ -258,8 +260,9 @@ public class AudioSharingJoinDialogFragmentTest { } @Test + @EnableFlags({Flags.FLAG_ENABLE_LE_AUDIO_SHARING, + Flags.FLAG_PROMOTE_AUDIO_SHARING_FOR_SECOND_AUTO_CONNECTED_LEA_DEVICE}) public void onCreateDialog_clickCancel_dialogDismiss() { - mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING); AudioSharingJoinDialogFragment.show( mParent, new ArrayList<>(), @@ -274,6 +277,7 @@ public class AudioSharingJoinDialogFragmentTest { btnView.performClick(); shadowMainLooper().idle(); assertThat(dialog.isShowing()).isFalse(); + assertThat(mParent.getActivity().isFinishing()).isFalse(); verify(mFeatureFactory.metricsFeatureProvider) .action( any(Context.class), @@ -282,8 +286,9 @@ public class AudioSharingJoinDialogFragmentTest { } @Test + @EnableFlags({Flags.FLAG_ENABLE_LE_AUDIO_SHARING, + Flags.FLAG_PROMOTE_AUDIO_SHARING_FOR_SECOND_AUTO_CONNECTED_LEA_DEVICE}) public void onCreateDialog_clickBtn_callbackTriggered() { - mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING); AtomicBoolean isShareBtnClicked = new AtomicBoolean(false); mFragment.show( mParent, @@ -308,6 +313,7 @@ public class AudioSharingJoinDialogFragmentTest { shadowMainLooper().idle(); assertThat(dialog.isShowing()).isFalse(); assertThat(isShareBtnClicked.get()).isTrue(); + assertThat(mParent.getActivity().isFinishing()).isFalse(); verify(mFeatureFactory.metricsFeatureProvider) .action( any(Context.class), @@ -316,8 +322,9 @@ public class AudioSharingJoinDialogFragmentTest { } @Test + @EnableFlags({Flags.FLAG_ENABLE_LE_AUDIO_SHARING, + Flags.FLAG_PROMOTE_AUDIO_SHARING_FOR_SECOND_AUTO_CONNECTED_LEA_DEVICE}) public void onCreateDialog_clickCancel_callbackTriggered() { - mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING); AtomicBoolean isCancelBtnClicked = new AtomicBoolean(false); mFragment.show( mParent, @@ -342,10 +349,40 @@ public class AudioSharingJoinDialogFragmentTest { shadowMainLooper().idle(); assertThat(dialog.isShowing()).isFalse(); assertThat(isCancelBtnClicked.get()).isTrue(); + assertThat(mParent.getActivity().isFinishing()).isFalse(); verify(mFeatureFactory.metricsFeatureProvider) .action( any(Context.class), eq(SettingsEnums.ACTION_AUDIO_SHARING_DIALOG_NEGATIVE_BTN_CLICKED), eq(TEST_EVENT_DATA)); } + + @Test + @EnableFlags({Flags.FLAG_ENABLE_LE_AUDIO_SHARING, + Flags.FLAG_PROMOTE_AUDIO_SHARING_FOR_SECOND_AUTO_CONNECTED_LEA_DEVICE}) + public void onDestroy_finishAudioSharingJoinHandlerActivity() { + Fragment parent = new Fragment(); + FragmentController.setupFragment( + parent, AudioSharingJoinHandlerActivity.class, /* containerViewId= */ + 0, /* bundle= */ null); + AudioSharingJoinDialogFragment.show( + parent, + new ArrayList<>(), + mCachedDevice2, + EMPTY_EVENT_LISTENER, + TEST_EVENT_DATA_LIST); + shadowMainLooper().idle(); + + AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog(); + assertThat(dialog).isNotNull(); + + View btnView = dialog.findViewById(R.id.negative_btn); + assertThat(btnView).isNotNull(); + btnView.performClick(); + shadowMainLooper().idle(); + + assertThat(dialog.isShowing()).isFalse(); + assertThat( + parent.getActivity().isFinishing() || parent.getActivity().isDestroyed()).isTrue(); + } } diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingStopDialogFragmentTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingStopDialogFragmentTest.java index c0af09f5c8e..952ab21d29a 100644 --- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingStopDialogFragmentTest.java +++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingStopDialogFragmentTest.java @@ -30,6 +30,8 @@ import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothStatusCodes; import android.content.Context; +import android.platform.test.annotations.DisableFlags; +import android.platform.test.annotations.EnableFlags; import android.platform.test.flag.junit.SetFlagsRule; import android.util.Pair; import android.view.View; @@ -135,8 +137,8 @@ public class AudioSharingStopDialogFragmentTest { } @Test + @DisableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING) public void onCreateDialog_flagOff_dialogNotExist() { - mSetFlagsRule.disableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING); AudioSharingStopDialogFragment.show( mParent, ImmutableList.of(), @@ -149,8 +151,8 @@ public class AudioSharingStopDialogFragmentTest { } @Test + @EnableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING) public void onCreateDialog_unattachedFragment_dialogNotExist() { - mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING); AudioSharingStopDialogFragment.show( new Fragment(), ImmutableList.of(TEST_DEVICE_ITEM2), @@ -163,8 +165,8 @@ public class AudioSharingStopDialogFragmentTest { } @Test + @EnableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING) public void onCreateDialog_oneDeviceInSharing_showDialogWithCorrectMessage() { - mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING); AudioSharingStopDialogFragment.show( mParent, ImmutableList.of(TEST_DEVICE_ITEM2), @@ -184,8 +186,8 @@ public class AudioSharingStopDialogFragmentTest { } @Test + @EnableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING) public void onCreateDialog_twoDeviceInSharing_showDialogWithCorrectMessage() { - mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING); AudioSharingStopDialogFragment.show( mParent, ImmutableList.of(TEST_DEVICE_ITEM2, TEST_DEVICE_ITEM3), @@ -207,8 +209,8 @@ public class AudioSharingStopDialogFragmentTest { } @Test + @EnableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING) public void onCreateDialog_dialogIsShowingForSameDevice_updateDialog() { - mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING); AudioSharingStopDialogFragment.show( mParent, ImmutableList.of(), @@ -256,8 +258,8 @@ public class AudioSharingStopDialogFragmentTest { } @Test + @EnableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING) public void onCreateDialog_dialogIsShowingForNewDevice_showNewDialog() { - mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING); AudioSharingStopDialogFragment.show( mParent, ImmutableList.of(), @@ -309,8 +311,9 @@ public class AudioSharingStopDialogFragmentTest { } @Test + @EnableFlags({Flags.FLAG_ENABLE_LE_AUDIO_SHARING, + Flags.FLAG_PROMOTE_AUDIO_SHARING_FOR_SECOND_AUTO_CONNECTED_LEA_DEVICE}) public void onCreateDialog_clickCancel_dialogDismiss() { - mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING); AudioSharingStopDialogFragment.show( mParent, ImmutableList.of(), @@ -325,6 +328,7 @@ public class AudioSharingStopDialogFragmentTest { btnView.performClick(); shadowMainLooper().idle(); assertThat(dialog.isShowing()).isFalse(); + assertThat(mParent.getActivity().isFinishing()).isFalse(); verify(mFeatureFactory.metricsFeatureProvider, times(0)) .action( any(Context.class), @@ -338,8 +342,9 @@ public class AudioSharingStopDialogFragmentTest { } @Test + @EnableFlags({Flags.FLAG_ENABLE_LE_AUDIO_SHARING, + Flags.FLAG_PROMOTE_AUDIO_SHARING_FOR_SECOND_AUTO_CONNECTED_LEA_DEVICE}) public void onCreateDialog_clickShare_callbackTriggered() { - mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING); AtomicBoolean isStopBtnClicked = new AtomicBoolean(false); AudioSharingStopDialogFragment.show( mParent, @@ -356,6 +361,7 @@ public class AudioSharingStopDialogFragmentTest { shadowMainLooper().idle(); assertThat(dialog.isShowing()).isFalse(); assertThat(isStopBtnClicked.get()).isTrue(); + assertThat(mParent.getActivity().isFinishing()).isFalse(); verify(mFeatureFactory.metricsFeatureProvider, times(0)) .action( any(Context.class), @@ -367,4 +373,32 @@ public class AudioSharingStopDialogFragmentTest { eq(SettingsEnums.ACTION_AUDIO_SHARING_DIALOG_POSITIVE_BTN_CLICKED), eq(TEST_EVENT_DATA)); } + + @Test + @EnableFlags({Flags.FLAG_ENABLE_LE_AUDIO_SHARING, + Flags.FLAG_PROMOTE_AUDIO_SHARING_FOR_SECOND_AUTO_CONNECTED_LEA_DEVICE}) + public void onDestroy_finishAudioSharingJoinHandlerActivity() { + Fragment parent = new Fragment(); + FragmentController.setupFragment( + parent, AudioSharingJoinHandlerActivity.class, /* containerViewId= */ + 0, /* bundle= */ null); + AudioSharingStopDialogFragment.show( + parent, + ImmutableList.of(), + mCachedDevice1, + EMPTY_EVENT_LISTENER, + TEST_EVENT_DATA_LIST); + shadowMainLooper().idle(); + AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog(); + assertThat(dialog).isNotNull(); + + View btnView = dialog.findViewById(android.R.id.button2); + assertThat(btnView).isNotNull(); + btnView.performClick(); + shadowMainLooper().idle(); + + assertThat(dialog.isShowing()).isFalse(); + assertThat( + parent.getActivity().isFinishing() || parent.getActivity().isDestroyed()).isTrue(); + } }