diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingCallAudioDialogFragment.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingCallAudioDialogFragment.java index 75b4acf8636..5e0ec0766d1 100644 --- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingCallAudioDialogFragment.java +++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingCallAudioDialogFragment.java @@ -19,6 +19,7 @@ package com.android.settings.connecteddevice.audiosharing; import android.app.Dialog; import android.app.settings.SettingsEnums; import android.os.Bundle; +import android.util.Log; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -66,7 +67,13 @@ public class AudioSharingCallAudioDialogFragment extends InstrumentedDialogFragm @NonNull List deviceItems, @NonNull DialogEventListener listener) { if (!AudioSharingUtils.isFeatureEnabled()) return; - final FragmentManager manager = host.getChildFragmentManager(); + final FragmentManager manager; + try { + manager = host.getChildFragmentManager(); + } catch (IllegalStateException e) { + Log.d(TAG, "Fail to show dialog: " + e.getMessage()); + return; + } sListener = listener; if (manager.findFragmentByTag(TAG) == null) { final Bundle bundle = new Bundle(); @@ -79,10 +86,18 @@ public class AudioSharingCallAudioDialogFragment extends InstrumentedDialogFragm } @Override + @NonNull public Dialog onCreateDialog(Bundle savedInstanceState) { Bundle arguments = requireArguments(); List deviceItems = arguments.getParcelable(BUNDLE_KEY_DEVICE_ITEMS, List.class); + AlertDialog.Builder builder = + new AlertDialog.Builder(getActivity()) + .setTitle(R.string.audio_sharing_call_audio_title); + if (deviceItems == null) { + Log.d(TAG, "Create dialog error: null deviceItems"); + return builder.create(); + } int checkedItem = -1; for (AudioSharingDeviceItem item : deviceItems) { int fallbackActiveGroupId = AudioSharingUtils.getFallbackActiveGroupId(getContext()); @@ -92,17 +107,14 @@ public class AudioSharingCallAudioDialogFragment extends InstrumentedDialogFragm } String[] choices = deviceItems.stream().map(AudioSharingDeviceItem::getName).toArray(String[]::new); - AlertDialog.Builder builder = - new AlertDialog.Builder(getActivity()) - .setTitle(R.string.audio_sharing_call_audio_title) - .setSingleChoiceItems( - choices, - checkedItem, - (dialog, which) -> { - if (sListener != null) { - sListener.onItemClick(deviceItems.get(which)); - } - }); + builder.setSingleChoiceItems( + choices, + checkedItem, + (dialog, which) -> { + if (sListener != null) { + sListener.onItemClick(deviceItems.get(which)); + } + }); return builder.create(); } } diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingConfirmDialogFragment.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingConfirmDialogFragment.java index e9013d7d6c2..61b1df104eb 100644 --- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingConfirmDialogFragment.java +++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingConfirmDialogFragment.java @@ -21,6 +21,7 @@ import android.app.settings.SettingsEnums; import android.os.Bundle; import android.util.Log; +import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.Fragment; @@ -44,7 +45,13 @@ public class AudioSharingConfirmDialogFragment extends InstrumentedDialogFragmen */ public static void show(Fragment host) { if (!AudioSharingUtils.isFeatureEnabled()) return; - FragmentManager manager = host.getChildFragmentManager(); + final FragmentManager manager; + try { + manager = host.getChildFragmentManager(); + } catch (IllegalStateException e) { + Log.d(TAG, "Fail to show dialog: " + e.getMessage()); + return; + } AlertDialog dialog = AudioSharingDialogHelper.getDialogIfShowing(manager, TAG); if (dialog != null) { Log.d(TAG, "Dialog is showing, return."); @@ -56,6 +63,7 @@ public class AudioSharingConfirmDialogFragment extends InstrumentedDialogFragmen } @Override + @NonNull public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) { AlertDialog dialog = AudioSharingDialogFactory.newBuilder(getActivity()) diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogFragment.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogFragment.java index e787be30e03..f00cf7326dd 100644 --- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogFragment.java +++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogFragment.java @@ -77,7 +77,13 @@ public class AudioSharingDialogFragment extends InstrumentedDialogFragment { @NonNull DialogEventListener listener, @NonNull Pair[] eventData) { if (!AudioSharingUtils.isFeatureEnabled()) return; - final FragmentManager manager = host.getChildFragmentManager(); + final FragmentManager manager; + try { + manager = host.getChildFragmentManager(); + } catch (IllegalStateException e) { + Log.d(TAG, "Fail to show dialog: " + e.getMessage()); + return; + } sListener = listener; sEventData = eventData; AlertDialog dialog = AudioSharingDialogHelper.getDialogIfShowing(manager, TAG); diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogHandler.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogHandler.java index 753daaf33bb..81d7979f878 100644 --- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogHandler.java +++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogHandler.java @@ -414,7 +414,13 @@ public class AudioSharingDialogHandler { private void closeOpeningDialogsOtherThan(String tag) { if (mHostFragment == null) return; - List fragments = mHostFragment.getChildFragmentManager().getFragments(); + List fragments; + try { + fragments = mHostFragment.getChildFragmentManager().getFragments(); + } catch (IllegalStateException e) { + Log.d(TAG, "Fail to closeOpeningDialogsOtherThan " + tag + ": " + e.getMessage()); + return; + } for (Fragment fragment : fragments) { if (fragment instanceof DialogFragment && fragment.getTag() != null @@ -430,7 +436,13 @@ public class AudioSharingDialogHandler { public void closeOpeningDialogsForLeaDevice(@NonNull CachedBluetoothDevice cachedDevice) { if (mHostFragment == null) return; int groupId = AudioSharingUtils.getGroupId(cachedDevice); - List fragments = mHostFragment.getChildFragmentManager().getFragments(); + List fragments; + try { + fragments = mHostFragment.getChildFragmentManager().getFragments(); + } catch (IllegalStateException e) { + Log.d(TAG, "Fail to closeOpeningDialogsForLeaDevice: " + e.getMessage()); + return; + } for (Fragment fragment : fragments) { CachedBluetoothDevice device = getCachedBluetoothDeviceFromDialog(fragment); if (device != null @@ -447,7 +459,13 @@ public class AudioSharingDialogHandler { public void closeOpeningDialogsForNonLeaDevice(@NonNull CachedBluetoothDevice cachedDevice) { if (mHostFragment == null) return; String address = cachedDevice.getAddress(); - List fragments = mHostFragment.getChildFragmentManager().getFragments(); + List fragments; + try { + fragments = mHostFragment.getChildFragmentManager().getFragments(); + } catch (IllegalStateException e) { + Log.d(TAG, "Fail to closeOpeningDialogsForNonLeaDevice: " + e.getMessage()); + return; + } for (Fragment fragment : fragments) { CachedBluetoothDevice device = getCachedBluetoothDeviceFromDialog(fragment); if (device != null && address != null && address.equals(device.getAddress())) { diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogHelper.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogHelper.java index 69001aae393..010a3ba87c3 100644 --- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogHelper.java +++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogHelper.java @@ -51,12 +51,13 @@ public class AudioSharingDialogHelper { public static AlertDialog getDialogIfShowing( @NonNull FragmentManager manager, @NonNull String tag) { Fragment dialog = manager.findFragmentByTag(tag); - return dialog != null - && dialog instanceof DialogFragment - && ((DialogFragment) dialog).getDialog() != null - && ((DialogFragment) dialog).getDialog().isShowing() - && ((DialogFragment) dialog).getDialog() instanceof AlertDialog + return dialog instanceof DialogFragment + && ((DialogFragment) dialog).getDialog() != null + && ((DialogFragment) dialog).getDialog().isShowing() + && ((DialogFragment) dialog).getDialog() instanceof AlertDialog ? (AlertDialog) ((DialogFragment) dialog).getDialog() : null; } + + private AudioSharingDialogHelper() {} } diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDisconnectDialogFragment.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDisconnectDialogFragment.java index dcd8a3be19a..66e327b1389 100644 --- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDisconnectDialogFragment.java +++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDisconnectDialogFragment.java @@ -84,7 +84,13 @@ public class AudioSharingDisconnectDialogFragment extends InstrumentedDialogFrag @NonNull DialogEventListener listener, @NonNull Pair[] eventData) { if (!AudioSharingUtils.isFeatureEnabled()) return; - FragmentManager manager = host.getChildFragmentManager(); + final FragmentManager manager; + try { + manager = host.getChildFragmentManager(); + } catch (IllegalStateException e) { + Log.d(TAG, "Fail to show dialog: " + e.getMessage()); + return; + } AlertDialog dialog = AudioSharingDialogHelper.getDialogIfShowing(manager, TAG); if (dialog != null) { int newGroupId = AudioSharingUtils.getGroupId(newDevice); diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingJoinDialogFragment.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingJoinDialogFragment.java index ec669bf3ac0..9afa1864454 100644 --- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingJoinDialogFragment.java +++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingJoinDialogFragment.java @@ -81,7 +81,13 @@ public class AudioSharingJoinDialogFragment extends InstrumentedDialogFragment { @NonNull DialogEventListener listener, @NonNull Pair[] eventData) { if (!AudioSharingUtils.isFeatureEnabled()) return; - final FragmentManager manager = host.getChildFragmentManager(); + final FragmentManager manager; + try { + manager = host.getChildFragmentManager(); + } catch (IllegalStateException e) { + Log.d(TAG, "Fail to show dialog: " + e.getMessage()); + return; + } sListener = listener; sNewDevice = newDevice; sEventData = eventData; diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingStopDialogFragment.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingStopDialogFragment.java index b8da290f6e5..d026fa72055 100644 --- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingStopDialogFragment.java +++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingStopDialogFragment.java @@ -81,7 +81,13 @@ public class AudioSharingStopDialogFragment extends InstrumentedDialogFragment { @NonNull DialogEventListener listener, @NonNull Pair[] eventData) { if (!AudioSharingUtils.isFeatureEnabled()) return; - final FragmentManager manager = host.getChildFragmentManager(); + final FragmentManager manager; + try { + manager = host.getChildFragmentManager(); + } catch (IllegalStateException e) { + Log.d(TAG, "Fail to show dialog: " + e.getMessage()); + return; + } AlertDialog dialog = AudioSharingDialogHelper.getDialogIfShowing(manager, TAG); if (dialog != null) { int newGroupId = AudioSharingUtils.getGroupId(newDevice); diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingCallAudioDialogFragmentTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingCallAudioDialogFragmentTest.java index 7f0c1c97858..51ed899957b 100644 --- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingCallAudioDialogFragmentTest.java +++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingCallAudioDialogFragmentTest.java @@ -23,6 +23,7 @@ import static org.robolectric.shadows.ShadowLooper.shadowMainLooper; import android.app.settings.SettingsEnums; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothStatusCodes; +import android.os.Bundle; import android.platform.test.flag.junit.SetFlagsRule; import androidx.appcompat.app.AlertDialog; @@ -78,10 +79,6 @@ public class AudioSharingCallAudioDialogFragmentTest { BluetoothStatusCodes.FEATURE_SUPPORTED); shadowBluetoothAdapter.setIsLeAudioBroadcastAssistantSupported( BluetoothStatusCodes.FEATURE_SUPPORTED); - mFragment = new AudioSharingCallAudioDialogFragment(); - mParent = new Fragment(); - FragmentController.setupFragment( - mParent, FragmentActivity.class, /* containerViewId= */ 0, /* bundle= */ null); } @After @@ -91,6 +88,7 @@ public class AudioSharingCallAudioDialogFragmentTest { @Test public void getMetricsCategory_correctValue() { + mFragment = new AudioSharingCallAudioDialogFragment(); assertThat(mFragment.getMetricsCategory()) .isEqualTo(SettingsEnums.DIALOG_AUDIO_SHARING_CALL_AUDIO); } @@ -98,21 +96,52 @@ public class AudioSharingCallAudioDialogFragmentTest { @Test public void onCreateDialog_flagOff_dialogNotExist() { mSetFlagsRule.disableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING); - mFragment.show(mParent, new ArrayList<>(), (item) -> {}); + mParent = new Fragment(); + FragmentController.setupFragment( + mParent, FragmentActivity.class, /* containerViewId= */ 0, /* bundle= */ null); + AudioSharingCallAudioDialogFragment.show(mParent, new ArrayList<>(), (item) -> {}); shadowMainLooper().idle(); AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog(); assertThat(dialog).isNull(); } + @Test + public void onCreateDialog_unattachedFragment_dialogNotExist() { + mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING); + mParent = new Fragment(); + AudioSharingCallAudioDialogFragment.show(mParent, new ArrayList<>(), (item) -> {}); + shadowMainLooper().idle(); + AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog(); + assertThat(dialog).isNull(); + } + + @Test + public void onCreateDialog_nullDeviceItems_showEmptyDialog() { + mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING); + mFragment = new AudioSharingCallAudioDialogFragment(); + mFragment.setArguments(Bundle.EMPTY); + FragmentController.setupFragment( + mFragment, FragmentActivity.class, /* containerViewId= */ 0, /* bundle= */ null); + AlertDialog dialog = (AlertDialog) mFragment.onCreateDialog(Bundle.EMPTY); + dialog.show(); + shadowMainLooper().idle(); + assertThat(dialog.isShowing()).isTrue(); + assertThat(dialog.getListView()).isNull(); + } + @Test public void onCreateDialog_showCorrectItems() { mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING); + mParent = new Fragment(); + FragmentController.setupFragment( + mParent, FragmentActivity.class, /* containerViewId= */ 0, /* bundle= */ null); ArrayList deviceItemList = new ArrayList<>(); deviceItemList.add(TEST_DEVICE_ITEM1); deviceItemList.add(TEST_DEVICE_ITEM2); - mFragment.show(mParent, deviceItemList, (item) -> {}); + AudioSharingCallAudioDialogFragment.show(mParent, deviceItemList, (item) -> {}); shadowMainLooper().idle(); AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog(); + assertThat(dialog).isNotNull(); assertThat(dialog.getListView().getCount()).isEqualTo(2); } } diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingConfirmDialogFragmentTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingConfirmDialogFragmentTest.java index 32f666f05f4..9aa00fb8e5d 100644 --- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingConfirmDialogFragmentTest.java +++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingConfirmDialogFragmentTest.java @@ -95,6 +95,15 @@ public class AudioSharingConfirmDialogFragmentTest { assertThat(dialog).isNull(); } + @Test + public void onCreateDialog_unattachedFragment_dialogNotExist() { + mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING); + AudioSharingConfirmDialogFragment.show(new Fragment()); + shadowMainLooper().idle(); + AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog(); + assertThat(dialog).isNull(); + } + @Test public void onCreateDialog_flagOn_showDialog() { mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING); diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogFragmentTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogFragmentTest.java index 39709c14931..20c225c09bf 100644 --- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogFragmentTest.java +++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogFragmentTest.java @@ -130,7 +130,16 @@ public class AudioSharingDialogFragmentTest { AudioSharingDialogFragment.show( mParent, new ArrayList<>(), EMPTY_EVENT_LISTENER, TEST_EVENT_DATA_LIST); shadowMainLooper().idle(); + AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog(); + assertThat(dialog).isNull(); + } + @Test + public void onCreateDialog_unattachedFragment_dialogNotExist() { + mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING); + AudioSharingDialogFragment.show( + new Fragment(), new ArrayList<>(), EMPTY_EVENT_LISTENER, TEST_EVENT_DATA_LIST); + shadowMainLooper().idle(); AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog(); assertThat(dialog).isNull(); } diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogHandlerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogHandlerTest.java index 53c214be43a..e71e876baea 100644 --- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogHandlerTest.java +++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDialogHandlerTest.java @@ -647,6 +647,15 @@ public class AudioSharingDialogHandlerTest { SettingsEnums.DIALOG_START_AUDIO_SHARING); } + @Test + public void closeOpeningDialogsForLeaDevice_unattachedFragment_doNothing() { + mParentFragment = new Fragment(); + mHandler = new AudioSharingDialogHandler(mContext, mParentFragment); + mHandler.closeOpeningDialogsForLeaDevice(mCachedDevice1); + shadowOf(Looper.getMainLooper()).idle(); + verifyNoMoreInteractions(mFeatureFactory.metricsFeatureProvider); + } + @Test public void closeOpeningDialogsForLeaDevice_closeDisconnectDialog() { // Show disconnect dialog @@ -674,6 +683,15 @@ public class AudioSharingDialogHandlerTest { SettingsEnums.DIALOG_AUDIO_SHARING_SWITCH_DEVICE); } + @Test + public void closeOpeningDialogsForNonLeaDevice_unattachedFragment_doNothing() { + mParentFragment = new Fragment(); + mHandler = new AudioSharingDialogHandler(mContext, mParentFragment); + mHandler.closeOpeningDialogsForNonLeaDevice(mCachedDevice2); + shadowOf(Looper.getMainLooper()).idle(); + verifyNoMoreInteractions(mFeatureFactory.metricsFeatureProvider); + } + @Test public void closeOpeningDialogsForNonLeaDevice_closeStopDialog() { // Show stop dialog 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 6b984af9939..86b0d65b2e5 100644 --- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDisconnectDialogFragmentTest.java +++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDisconnectDialogFragmentTest.java @@ -153,6 +153,23 @@ public class AudioSharingDisconnectDialogFragmentTest { assertThat(dialog).isNull(); } + @Test + 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); + AudioSharingDisconnectDialogFragment.show( + new Fragment(), + mDeviceItems, + mCachedDevice3, + EMPTY_EVENT_LISTENER, + TEST_EVENT_DATA_LIST); + shadowMainLooper().idle(); + AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog(); + assertThat(dialog).isNull(); + } + @Test public void onCreateDialog_flagOn_dialogShowBtnForTwoDevices() { mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING); 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 13ea965d3c5..2310d75d876 100644 --- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingJoinDialogFragmentTest.java +++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingJoinDialogFragmentTest.java @@ -163,6 +163,20 @@ public class AudioSharingJoinDialogFragmentTest { assertThat(dialog).isNull(); } + @Test + public void onCreateDialog_unattachedFragment_dialogNotExist() { + mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING); + AudioSharingJoinDialogFragment.show( + new Fragment(), + new ArrayList<>(), + mCachedDevice2, + EMPTY_EVENT_LISTENER, + TEST_EVENT_DATA_LIST); + shadowMainLooper().idle(); + AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog(); + assertThat(dialog).isNull(); + } + @Test public void onCreateDialog_flagOn_dialogShowTextForSingleDevice() { mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING); 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 b6babfb8016..c0af09f5c8e 100644 --- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingStopDialogFragmentTest.java +++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingStopDialogFragmentTest.java @@ -148,6 +148,20 @@ public class AudioSharingStopDialogFragmentTest { assertThat(dialog).isNull(); } + @Test + public void onCreateDialog_unattachedFragment_dialogNotExist() { + mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING); + AudioSharingStopDialogFragment.show( + new Fragment(), + ImmutableList.of(TEST_DEVICE_ITEM2), + mCachedDevice1, + EMPTY_EVENT_LISTENER, + TEST_EVENT_DATA_LIST); + shadowMainLooper().idle(); + AlertDialog dialog = ShadowAlertDialogCompat.getLatestAlertDialog(); + assertThat(dialog).isNull(); + } + @Test public void onCreateDialog_oneDeviceInSharing_showDialogWithCorrectMessage() { mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);