summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/wm/ActivityStack.java4
-rw-r--r--services/tests/wmtests/AndroidManifest.xml2
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/TaskStackChangedListenerTest.java25
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 {}
}