diff options
author | 2020-05-10 13:42:56 +0000 | |
---|---|---|
committer | 2020-05-10 13:42:56 +0000 | |
commit | 83dd0adecb9c7ae6ae4e0747e6dd75d86334a13f (patch) | |
tree | 29632031c19e27d3cf20951c69d54d7d8bfd9967 | |
parent | 0f49e922c51e7ef647e81148848c5215e370d29c (diff) | |
parent | b1daa5e262b1b4da7e48763967ad6813d7c1aca5 (diff) |
Merge "Updates visibility before trying to notify task stack changes" into rvc-dev
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 {} } |