diff options
3 files changed, 29 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityStack.java b/services/core/java/com/android/server/wm/ActivityStack.java index 9df3f855ad86..593e5e73a3b9 100644 --- a/services/core/java/com/android/server/wm/ActivityStack.java +++ b/services/core/java/com/android/server/wm/ActivityStack.java @@ -1276,6 +1276,8 @@ class ActivityStack extends Task { prev.cpuTimeAtResume = 0; // reset it } + mRootWindowContainer.ensureActivitiesVisible(resuming, 0, !PRESERVE_WINDOWS); + // Notify when the task stack has changed, but only if visibilities changed (not just // focus). Also if there is an active pinned stack - we always want to notify it about // task stack changes, because its positioning may depend on it. @@ -1284,8 +1286,6 @@ class ActivityStack extends Task { mAtmService.getTaskChangeNotificationController().notifyTaskStackChanged(); mStackSupervisor.mAppVisibilitiesChangedSinceLastPause = false; } - - mRootWindowContainer.ensureActivitiesVisible(resuming, 0, !PRESERVE_WINDOWS); } boolean isTopStackInDisplayArea() { diff --git a/services/tests/wmtests/AndroidManifest.xml b/services/tests/wmtests/AndroidManifest.xml index fdc9401a66b0..f382fbae9280 100644 --- a/services/tests/wmtests/AndroidManifest.xml +++ b/services/tests/wmtests/AndroidManifest.xml @@ -58,6 +58,8 @@ android:screenOrientation="sensorLandscape" android:showWhenLocked="true" android:turnScreenOn="true" /> + <activity android:name="com.android.server.wm.TaskStackChangedListenerTest$ResumeWhilePausingActivity" + android:resumeWhilePausing="true"/> <activity android:name="com.android.server.wm.ScreenDecorWindowTests$TestActivity" android:showWhenLocked="true" android:allowEmbedded="true"/> </application> diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskStackChangedListenerTest.java b/services/tests/wmtests/src/com/android/server/wm/TaskStackChangedListenerTest.java index 4e92ea0f82e6..965edd4f8b11 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TaskStackChangedListenerTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/TaskStackChangedListenerTest.java @@ -81,6 +81,7 @@ public class TaskStackChangedListenerTest { @Before public void setUp() throws Exception { mService = ActivityManager.getService(); + sTaskStackChangedCalled = false; } @After @@ -114,6 +115,28 @@ public class TaskStackChangedListenerTest { @Test @Presubmit + public void testTaskStackChanged_resumeWhilePausing() throws Exception { + registerTaskStackChangedListener(new TaskStackListener() { + @Override + public void onTaskStackChanged() throws RemoteException { + synchronized (sLock) { + sTaskStackChangedCalled = true; + } + } + }); + + final Context context = getInstrumentation().getContext(); + context.startActivity(new Intent(context, ResumeWhilePausingActivity.class).addFlags( + Intent.FLAG_ACTIVITY_NEW_TASK)); + UiDevice.getInstance(getInstrumentation()).waitForIdle(); + + synchronized (sLock) { + assertTrue(sTaskStackChangedCalled); + } + } + + @Test + @Presubmit public void testTaskDescriptionChanged() throws Exception { final Object[] params = new Object[2]; final CountDownLatch latch = new CountDownLatch(1); @@ -617,5 +640,7 @@ public class TaskStackChangedListenerTest { // Activity that has {@link android.R.attr#resizeableActivity} attribute set to {@code true} public static class ActivityInActivityView extends TestActivity {} + public static class ResumeWhilePausingActivity extends TestActivity {} + public static class LandscapeActivity extends TestActivity {} } |