Merge "[Audiosharing] Finish handler activity when dialog destroy" into main

This commit is contained in:
Yiyi Shen
2025-03-02 07:57:51 -08:00
committed by Android (Google) Code Review
6 changed files with 169 additions and 23 deletions

View File

@@ -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(

View File

@@ -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<AudioSharingDeviceItem> deviceItems,
String newDeviceName,

View File

@@ -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(

View File

@@ -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();
}
}

View File

@@ -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<AudioSharingDeviceItem> 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<AudioSharingDeviceItem> 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();
}
}

View File

@@ -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();
}
}