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:
Yi-Ling Chuang
2022-05-11 16:29:34 +08:00
parent c53c5a906f
commit 2754a20c72
2 changed files with 23 additions and 0 deletions

View File

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