Make the force stop dialog work properly in split screen
When it's in a multi-window mode, force stopping an app will lead to an activity recreate, and the dialog fragment will also be recreated. That's why the dialog still shows after the button is clicked. Hence, dismiss the dialog before stopping the app to fix it. Fixes: 231529730 Test: robotest Change-Id: I75d27624f0c60bb617e7d1a92ffe01d3c0fbf7be
This commit is contained in:
@@ -90,6 +90,12 @@ public class ButtonActionDialogFragment extends InstrumentedDialogFragment imple
|
||||
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
// When it's in a multi-window mode, force stopping an app will lead to an activity
|
||||
// recreate, and the dialog fragment will also be recreated. So dismiss the dialog before
|
||||
// stopping the app.
|
||||
if (mId == ButtonActionDialogFragment.DialogType.FORCE_STOP) {
|
||||
dialog.dismiss();
|
||||
}
|
||||
final AppButtonsDialogListener lsn =
|
||||
(AppButtonsDialogListener) getTargetFragment();
|
||||
lsn.handleDialogClick(mId);
|
||||
|
@@ -18,7 +18,9 @@ package com.android.settings.applications.appinfo;
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.ArgumentMatchers.anyInt;
|
||||
import static org.mockito.Mockito.doNothing;
|
||||
import static org.mockito.Mockito.doReturn;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.verify;
|
||||
|
||||
@@ -72,6 +74,21 @@ public class ButtonActionDialogFragmentTest {
|
||||
verify(mTargetFragment).handleDialogClick(anyInt());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testOnClick_forceStop_dismissDialog() {
|
||||
ButtonActionDialogFragment fragment =
|
||||
spy(ButtonActionDialogFragment.newInstance(FORCE_STOP_ID));
|
||||
FragmentController.setupFragment(fragment, FragmentActivity.class, 0 /* containerViewId */,
|
||||
null /* bundle */);
|
||||
doReturn(mTargetFragment).when(fragment).getTargetFragment();
|
||||
doNothing().when(mTargetFragment).handleDialogClick(anyInt());
|
||||
final AlertDialog dialog = mock(AlertDialog.class);
|
||||
|
||||
fragment.onClick(dialog, 0);
|
||||
|
||||
verify(dialog).dismiss();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testOnCreateDialog_forceStopDialog() {
|
||||
ButtonActionDialogFragment fragment = ButtonActionDialogFragment.newInstance(FORCE_STOP_ID);
|
||||
|
Reference in New Issue
Block a user