Add unit tests for resize relaunch.
This is remnant from an old CL that introduced the logic to keep the
activity around if it crashes during drag resizing.
Fixes: 111986496
Test: atest WmTests:ActivityRecordTests
atest WmTests:ActivityStackTests
Change-Id: I443d325c38c6e202b8f2e2e9d1451db9e899608e
diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java
index 8f9d2ba..d1609c3 100644
--- a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java
@@ -41,9 +41,11 @@
import android.app.ActivityOptions;
import android.app.servertransaction.ClientTransaction;
import android.app.servertransaction.PauseActivityItem;
+import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.graphics.Rect;
import android.platform.test.annotations.Presubmit;
+import android.util.MergedConfiguration;
import android.util.MutableBoolean;
import androidx.test.filters.MediumTest;
@@ -251,4 +253,72 @@
assertEquals(prevSeq + 1, appWindowTokenRequestedOrientation.seq);
verify(mActivity.mAppWindowToken).onMergedOverrideConfigurationChanged();
}
+
+ @Test
+ public void testSetsRelaunchReason_NotDragResizing() {
+ mActivity.setState(ActivityStack.ActivityState.RESUMED, "Testing");
+
+ mTask.onRequestedOverrideConfigurationChanged(mTask.getConfiguration());
+ mActivity.setLastReportedConfiguration(new MergedConfiguration(new Configuration(),
+ mActivity.getConfiguration()));
+
+ mActivity.info.configChanges &= ~ActivityInfo.CONFIG_ORIENTATION;
+ final Configuration newConfig = new Configuration(mTask.getConfiguration());
+ newConfig.orientation = newConfig.orientation == Configuration.ORIENTATION_PORTRAIT
+ ? Configuration.ORIENTATION_LANDSCAPE : Configuration.ORIENTATION_PORTRAIT;
+ mTask.onRequestedOverrideConfigurationChanged(newConfig);
+
+ mActivity.mRelaunchReason = ActivityTaskManagerService.RELAUNCH_REASON_NONE;
+
+ mActivity.ensureActivityConfiguration(0, false, false);
+
+ assertEquals(ActivityTaskManagerService.RELAUNCH_REASON_WINDOWING_MODE_RESIZE,
+ mActivity.mRelaunchReason);
+ }
+
+ @Test
+ public void testSetsRelaunchReason_DragResizing() {
+ mActivity.setState(ActivityStack.ActivityState.RESUMED, "Testing");
+
+ mTask.onRequestedOverrideConfigurationChanged(mTask.getConfiguration());
+ mActivity.setLastReportedConfiguration(new MergedConfiguration(new Configuration(),
+ mActivity.getConfiguration()));
+
+ mActivity.info.configChanges &= ~ActivityInfo.CONFIG_ORIENTATION;
+ final Configuration newConfig = new Configuration(mTask.getConfiguration());
+ newConfig.orientation = newConfig.orientation == Configuration.ORIENTATION_PORTRAIT
+ ? Configuration.ORIENTATION_LANDSCAPE : Configuration.ORIENTATION_PORTRAIT;
+ mTask.onRequestedOverrideConfigurationChanged(newConfig);
+
+ doReturn(true).when(mTask.getTask()).isDragResizing();
+
+ mActivity.mRelaunchReason = ActivityTaskManagerService.RELAUNCH_REASON_NONE;
+
+ mActivity.ensureActivityConfiguration(0, false, false);
+
+ assertEquals(ActivityTaskManagerService.RELAUNCH_REASON_FREE_RESIZE,
+ mActivity.mRelaunchReason);
+ }
+
+ @Test
+ public void testSetsRelaunchReason_NonResizeConfigChanges() {
+ mActivity.setState(ActivityStack.ActivityState.RESUMED, "Testing");
+
+ mTask.onRequestedOverrideConfigurationChanged(mTask.getConfiguration());
+ mActivity.setLastReportedConfiguration(new MergedConfiguration(new Configuration(),
+ mActivity.getConfiguration()));
+
+ mActivity.info.configChanges &= ~ActivityInfo.CONFIG_FONT_SCALE;
+ final Configuration newConfig = new Configuration(mTask.getConfiguration());
+ newConfig.fontScale = 5;
+ mTask.onRequestedOverrideConfigurationChanged(newConfig);
+
+ mActivity.mRelaunchReason =
+ ActivityTaskManagerService.RELAUNCH_REASON_WINDOWING_MODE_RESIZE;
+
+ mActivity.ensureActivityConfiguration(0, false, false);
+
+ assertEquals(ActivityTaskManagerService.RELAUNCH_REASON_NONE,
+ mActivity.mRelaunchReason);
+ }
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityStackTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityStackTests.java
index b2a2869..9d5f687 100644
--- a/services/tests/wmtests/src/com/android/server/wm/ActivityStackTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/ActivityStackTests.java
@@ -36,6 +36,8 @@
import static com.android.server.wm.ActivityStack.ActivityState.RESUMED;
import static com.android.server.wm.ActivityStack.ActivityState.STOPPING;
import static com.android.server.wm.ActivityStack.REMOVE_TASK_MODE_DESTROYING;
+import static com.android.server.wm.ActivityTaskManagerService.RELAUNCH_REASON_FREE_RESIZE;
+import static com.android.server.wm.ActivityTaskManagerService.RELAUNCH_REASON_WINDOWING_MODE_RESIZE;
import static com.google.common.truth.Truth.assertThat;
@@ -687,6 +689,62 @@
}
@Test
+ public void testHandleAppDied_RelaunchesAfterCrashDuringWindowingModeResize() {
+ final ActivityRecord activity = new ActivityBuilder(mService).setTask(mTask).build();
+
+ activity.mRelaunchReason = RELAUNCH_REASON_WINDOWING_MODE_RESIZE;
+ activity.launchCount = 1;
+ activity.haveState = false;
+
+ mStack.handleAppDiedLocked(activity.app);
+
+ assertEquals(1, mTask.mActivities.size());
+ assertEquals(1, mStack.getAllTasks().size());
+ }
+
+ @Test
+ public void testHandleAppDied_NotRelaunchAfterThreeCrashesDuringWindowingModeResize() {
+ final ActivityRecord activity = new ActivityBuilder(mService).setTask(mTask).build();
+
+ activity.mRelaunchReason = RELAUNCH_REASON_WINDOWING_MODE_RESIZE;
+ activity.launchCount = 3;
+ activity.haveState = false;
+
+ mStack.handleAppDiedLocked(activity.app);
+
+ assertThat(mTask.mActivities).isEmpty();
+ assertThat(mStack.getAllTasks()).isEmpty();
+ }
+
+ @Test
+ public void testHandleAppDied_RelaunchesAfterCrashDuringFreeResize() {
+ final ActivityRecord activity = new ActivityBuilder(mService).setTask(mTask).build();
+
+ activity.mRelaunchReason = RELAUNCH_REASON_FREE_RESIZE;
+ activity.launchCount = 1;
+ activity.haveState = false;
+
+ mStack.handleAppDiedLocked(activity.app);
+
+ assertEquals(1, mTask.mActivities.size());
+ assertEquals(1, mStack.getAllTasks().size());
+ }
+
+ @Test
+ public void testHandleAppDied_NotRelaunchAfterThreeCrashesDuringFreeResize() {
+ final ActivityRecord activity = new ActivityBuilder(mService).setTask(mTask).build();
+
+ activity.mRelaunchReason = RELAUNCH_REASON_FREE_RESIZE;
+ activity.launchCount = 3;
+ activity.haveState = false;
+
+ mStack.handleAppDiedLocked(activity.app);
+
+ assertThat(mTask.mActivities).isEmpty();
+ assertThat(mStack.getAllTasks()).isEmpty();
+ }
+
+ @Test
public void testFinishCurrentActivity() {
// Create 2 activities on a new display.
final ActivityDisplay display = addNewActivityDisplayAt(ActivityDisplay.POSITION_TOP);