Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 37224598 authored by Issei Suzuki's avatar Issei Suzuki Committed by Automerger Merge Worker
Browse files

Merge "Fix unexpected closure of the bubble." into rvc-dev am: e3defa2d am:...

Merge "Fix unexpected closure of the bubble." into rvc-dev am: e3defa2d am: 07610a29 am: e653b6fe

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/11818615

Change-Id: I0b1cf2a902c217cce7a64458ec9f5f10845d90b4
parents 247e62c0 e653b6fe
Loading
Loading
Loading
Loading
+5 −10
Original line number Diff line number Diff line
@@ -1436,15 +1436,6 @@ class Task extends WindowContainer<WindowContainer> {
            mAtmService.getTaskChangeNotificationController().notifyTaskStackChanged();
        }

        final boolean isRootTask = isRootTask();
        if (isRootTask) {
            final DisplayContent display = getDisplayContent();
            if (display.isSingleTaskInstance()) {
                mAtmService.notifySingleTaskDisplayEmpty(display.mDisplayId);
            }
            display.mDisplayContent.setLayoutNeeded();
        }

        if (hasChild()) {
            updateEffectiveIntent();

@@ -1465,7 +1456,7 @@ class Task extends WindowContainer<WindowContainer> {
        } else if (!mReuseTask && !mCreatedByOrganizer) {
            // Remove entire task if it doesn't have any activity left and it isn't marked for reuse
            // or created by task organizer.
            if (!isRootTask) {
            if (!isRootTask()) {
                getStack().removeChild(this, reason);
            }
            EventLogTags.writeWmTaskRemoved(mTaskId,
@@ -2817,6 +2808,10 @@ class Task extends WindowContainer<WindowContainer> {
        if (DEBUG_STACK) Slog.i(TAG, "removeTask: removing taskId=" + mTaskId);
        EventLogTags.writeWmTaskRemoved(mTaskId, "removeTask");

        if (mDisplayContent != null && mDisplayContent.isSingleTaskInstance()) {
            mAtmService.notifySingleTaskDisplayEmpty(mDisplayContent.mDisplayId);
        }

        // If applicable let the TaskOrganizer know the Task is vanishing.
        setTaskOrganizer(null);

+2 −0
Original line number Diff line number Diff line
@@ -54,6 +54,8 @@
        <activity android:name="com.android.server.wm.TaskStackChangedListenerTest$ActivityViewTestActivity" />
        <activity android:name="com.android.server.wm.TaskStackChangedListenerTest$ActivityInActivityView"
                  android:resizeableActivity="true" />
        <activity android:name="com.android.server.wm.TaskStackChangedListenerTest$ActivityLaunchesNewActivityInActivityView"
            android:resizeableActivity="true" />
        <activity android:name="com.android.server.wm.TaskStackChangedListenerTest$LandscapeActivity"
                  android:screenOrientation="sensorLandscape"
                  android:showWhenLocked="true"
+22 −1
Original line number Diff line number Diff line
@@ -299,6 +299,20 @@ public class TaskStackChangedListenerTest {
        waitForCallback(singleTaskDisplayDrawnLatch);
    }

    public static class ActivityLaunchesNewActivityInActivityView extends TestActivity {
        private boolean mActivityBLaunched = false;

        @Override
        protected void onPostResume() {
            super.onPostResume();
            if (mActivityBLaunched) {
                return;
            }
            mActivityBLaunched = true;
            startActivity(new Intent(this, ActivityB.class));
        }
    }

    @Test
    public void testSingleTaskDisplayEmpty() throws Exception {
        final Instrumentation instrumentation = getInstrumentation();
@@ -335,13 +349,20 @@ public class TaskStackChangedListenerTest {
        });
        waitForCallback(activityViewReadyLatch);

        // 1. start ActivityLaunchesNewActivityInActivityView in an ActivityView
        // 2. ActivityLaunchesNewActivityInActivityView launches ActivityB
        // 3. ActivityB finishes self.
        // 4. Verify ITaskStackListener#onSingleTaskDisplayEmpty is not called yet.
        final Context context = instrumentation.getContext();
        Intent intent = new Intent(context, ActivityInActivityView.class);
        Intent intent = new Intent(context, ActivityLaunchesNewActivityInActivityView.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
        activityView.startActivity(intent);
        waitForCallback(singleTaskDisplayDrawnLatch);
        UiDevice.getInstance(getInstrumentation()).waitForIdle();
        assertEquals(1, singleTaskDisplayEmptyLatch.getCount());

        // 5. Release the container, and ActivityLaunchesNewActivityInActivityView finishes.
        // 6. Verify ITaskStackListener#onSingleTaskDisplayEmpty is called.
        activityView.release();
        waitForCallback(activityViewDestroyedLatch);
        waitForCallback(singleTaskDisplayEmptyLatch);