Loading services/core/java/com/android/server/wm/RootWindowContainer.java +2 −1 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ import static android.view.WindowManager.TRANSIT_SHOW_SINGLE_TASK_DISPLAY; import static com.android.server.policy.WindowManagerPolicy.FINISH_LAYOUT_REDO_LAYOUT; import static com.android.server.policy.WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER; import static com.android.server.wm.ActivityStack.ActivityState.FINISHING; import static com.android.server.wm.ActivityStack.ActivityState.PAUSED; import static com.android.server.wm.ActivityStack.ActivityState.RESUMED; import static com.android.server.wm.ActivityStack.ActivityState.STOPPED; Loading Loading @@ -3324,7 +3325,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent> for (int sNdx = taskDisplayArea.getStackCount() - 1; sNdx >= 0; --sNdx) { final ActivityStack stack = taskDisplayArea.getStackAt(sNdx); final ActivityRecord r = stack.mPausingActivity; if (r != null && !r.isState(PAUSED, STOPPED, STOPPING)) { if (r != null && !r.isState(PAUSED, STOPPED, STOPPING, FINISHING)) { if (DEBUG_STATES) { Slog.d(TAG_STATES, "allPausedActivitiesComplete: r=" + r + " state=" + r.getState()); Loading services/tests/wmtests/src/com/android/server/wm/RootWindowContainerTests.java +36 −0 Original line number Diff line number Diff line Loading @@ -16,12 +16,23 @@ package com.android.server.wm; import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD; import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; import static android.view.Display.DEFAULT_DISPLAY; import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION; import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_STARTING; import static android.view.WindowManager.LayoutParams.TYPE_NOTIFICATION_SHADE; import static android.view.WindowManager.LayoutParams.TYPE_STATUS_BAR; import static android.view.WindowManager.LayoutParams.TYPE_TOAST; import static com.android.server.wm.ActivityStack.ActivityState.FINISHING; import static com.android.server.wm.ActivityStack.ActivityState.PAUSED; import static com.android.server.wm.ActivityStack.ActivityState.PAUSING; import static com.android.server.wm.ActivityStack.ActivityState.STOPPED; import static com.android.server.wm.ActivityStack.ActivityState.STOPPING; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; Loading Loading @@ -133,5 +144,30 @@ public class RootWindowContainerTests extends WindowTestsBase { assertEquals(activity, mWm.mRoot.findActivity(activity.intent, activity.info, false /* compareIntentFilters */)); } @Test public void testAllPausedActivitiesComplete() { DisplayContent displayContent = mWm.mRoot.getDisplayContent(DEFAULT_DISPLAY); TaskDisplayArea taskDisplayArea = displayContent.getTaskDisplayAreaAt(0); ActivityStack stack = taskDisplayArea.getStackAt(0); ActivityRecord activity = createActivityRecord(displayContent, WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD); stack.mPausingActivity = activity; activity.setState(PAUSING, "test PAUSING"); assertThat(mWm.mRoot.allPausedActivitiesComplete()).isFalse(); activity.setState(PAUSED, "test PAUSED"); assertThat(mWm.mRoot.allPausedActivitiesComplete()).isTrue(); activity.setState(STOPPED, "test STOPPED"); assertThat(mWm.mRoot.allPausedActivitiesComplete()).isTrue(); activity.setState(STOPPING, "test STOPPING"); assertThat(mWm.mRoot.allPausedActivitiesComplete()).isTrue(); activity.setState(FINISHING, "test FINISHING"); assertThat(mWm.mRoot.allPausedActivitiesComplete()).isTrue(); } } Loading
services/core/java/com/android/server/wm/RootWindowContainer.java +2 −1 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ import static android.view.WindowManager.TRANSIT_SHOW_SINGLE_TASK_DISPLAY; import static com.android.server.policy.WindowManagerPolicy.FINISH_LAYOUT_REDO_LAYOUT; import static com.android.server.policy.WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER; import static com.android.server.wm.ActivityStack.ActivityState.FINISHING; import static com.android.server.wm.ActivityStack.ActivityState.PAUSED; import static com.android.server.wm.ActivityStack.ActivityState.RESUMED; import static com.android.server.wm.ActivityStack.ActivityState.STOPPED; Loading Loading @@ -3324,7 +3325,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent> for (int sNdx = taskDisplayArea.getStackCount() - 1; sNdx >= 0; --sNdx) { final ActivityStack stack = taskDisplayArea.getStackAt(sNdx); final ActivityRecord r = stack.mPausingActivity; if (r != null && !r.isState(PAUSED, STOPPED, STOPPING)) { if (r != null && !r.isState(PAUSED, STOPPED, STOPPING, FINISHING)) { if (DEBUG_STATES) { Slog.d(TAG_STATES, "allPausedActivitiesComplete: r=" + r + " state=" + r.getState()); Loading
services/tests/wmtests/src/com/android/server/wm/RootWindowContainerTests.java +36 −0 Original line number Diff line number Diff line Loading @@ -16,12 +16,23 @@ package com.android.server.wm; import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD; import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; import static android.view.Display.DEFAULT_DISPLAY; import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION; import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_STARTING; import static android.view.WindowManager.LayoutParams.TYPE_NOTIFICATION_SHADE; import static android.view.WindowManager.LayoutParams.TYPE_STATUS_BAR; import static android.view.WindowManager.LayoutParams.TYPE_TOAST; import static com.android.server.wm.ActivityStack.ActivityState.FINISHING; import static com.android.server.wm.ActivityStack.ActivityState.PAUSED; import static com.android.server.wm.ActivityStack.ActivityState.PAUSING; import static com.android.server.wm.ActivityStack.ActivityState.STOPPED; import static com.android.server.wm.ActivityStack.ActivityState.STOPPING; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; Loading Loading @@ -133,5 +144,30 @@ public class RootWindowContainerTests extends WindowTestsBase { assertEquals(activity, mWm.mRoot.findActivity(activity.intent, activity.info, false /* compareIntentFilters */)); } @Test public void testAllPausedActivitiesComplete() { DisplayContent displayContent = mWm.mRoot.getDisplayContent(DEFAULT_DISPLAY); TaskDisplayArea taskDisplayArea = displayContent.getTaskDisplayAreaAt(0); ActivityStack stack = taskDisplayArea.getStackAt(0); ActivityRecord activity = createActivityRecord(displayContent, WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD); stack.mPausingActivity = activity; activity.setState(PAUSING, "test PAUSING"); assertThat(mWm.mRoot.allPausedActivitiesComplete()).isFalse(); activity.setState(PAUSED, "test PAUSED"); assertThat(mWm.mRoot.allPausedActivitiesComplete()).isTrue(); activity.setState(STOPPED, "test STOPPED"); assertThat(mWm.mRoot.allPausedActivitiesComplete()).isTrue(); activity.setState(STOPPING, "test STOPPING"); assertThat(mWm.mRoot.allPausedActivitiesComplete()).isTrue(); activity.setState(FINISHING, "test FINISHING"); assertThat(mWm.mRoot.allPausedActivitiesComplete()).isTrue(); } }