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

Commit 6235b9bf authored by Wei Sheng Shih's avatar Wei Sheng Shih Committed by Automerger Merge Worker
Browse files

Merge "Remove starting window on the corresponding task organizer." into...

Merge "Remove starting window on the corresponding task organizer." into udc-qpr-dev am: fae78ad7 am: ac0822e2

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



Change-Id: I6cd882444bc3abb68af524d39da769b806968ab1
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 3f963157 ac0822e2
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -2698,7 +2698,8 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A

    private void requestCopySplashScreen() {
        mTransferringSplashScreenState = TRANSFER_SPLASH_SCREEN_COPYING;
        if (!mAtmService.mTaskOrganizerController.copySplashScreenView(getTask())) {
        if (mStartingSurface == null || !mAtmService.mTaskOrganizerController.copySplashScreenView(
                getTask(), mStartingSurface.mTaskOrganizer)) {
            mTransferringSplashScreenState = TRANSFER_SPLASH_SCREEN_FINISH;
            removeStartingWindow();
        }
@@ -2766,7 +2767,8 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
                && (mTransferringSplashScreenState == TRANSFER_SPLASH_SCREEN_FINISH
                || mTransferringSplashScreenState == TRANSFER_SPLASH_SCREEN_IDLE)) {
            ProtoLog.v(WM_DEBUG_STARTING_WINDOW, "Cleaning splash screen token=%s", this);
            mAtmService.mTaskOrganizerController.onAppSplashScreenViewRemoved(getTask());
            mAtmService.mTaskOrganizerController.onAppSplashScreenViewRemoved(getTask(),
                    mStartingSurface != null ? mStartingSurface.mTaskOrganizer : null);
        }
    }

+18 −9
Original line number Diff line number Diff line
@@ -40,6 +40,7 @@ import android.compat.annotation.EnabledSince;
import android.content.pm.ApplicationInfo;
import android.os.UserHandle;
import android.util.Slog;
import android.window.ITaskOrganizer;
import android.window.SplashScreenView;
import android.window.TaskSnapshot;

@@ -79,12 +80,13 @@ public class StartingSurfaceController {
    }

    StartingSurface createSplashScreenStartingSurface(ActivityRecord activity, int theme) {

        synchronized (mService.mGlobalLock) {
            final Task task = activity.getTask();
            if (task != null && mService.mAtmService.mTaskOrganizerController.addStartingWindow(
                    task, activity, theme, null /* taskSnapshot */)) {
                return new StartingSurface(task);
            final TaskOrganizerController controller =
                    mService.mAtmService.mTaskOrganizerController;
            if (task != null && controller.addStartingWindow(task, activity, theme,
                    null /* taskSnapshot */)) {
                return new StartingSurface(task, controller.getTaskOrganizer());
            }
        }
        return null;
@@ -166,9 +168,12 @@ public class StartingSurfaceController {
                activity.mDisplayContent.handleTopActivityLaunchingInDifferentOrientation(
                        activity, false /* checkOpening */);
            }
                mService.mAtmService.mTaskOrganizerController.addStartingWindow(task,
                        activity, 0 /* launchTheme */, taskSnapshot);
            return new StartingSurface(task);
            final TaskOrganizerController controller =
                    mService.mAtmService.mTaskOrganizerController;
            if (controller.addStartingWindow(task, activity, 0 /* launchTheme */, taskSnapshot)) {
                return new StartingSurface(task, controller.getTaskOrganizer());
            }
            return null;
        }
    }

@@ -256,9 +261,12 @@ public class StartingSurfaceController {

    final class StartingSurface {
        private final Task mTask;
        // The task organizer which hold the client side reference of this surface.
        final ITaskOrganizer mTaskOrganizer;

        StartingSurface(Task task) {
        StartingSurface(Task task, ITaskOrganizer taskOrganizer) {
            mTask = task;
            mTaskOrganizer = taskOrganizer;
        }

        /**
@@ -268,7 +276,8 @@ public class StartingSurfaceController {
         */
        public void remove(boolean animate) {
            synchronized (mService.mGlobalLock) {
                mService.mAtmService.mTaskOrganizerController.removeStartingWindow(mTask, animate);
                mService.mAtmService.mTaskOrganizerController.removeStartingWindow(mTask,
                        mTaskOrganizer, animate);
            }
        }
    }
+9 −7
Original line number Diff line number Diff line
@@ -652,7 +652,7 @@ class TaskOrganizerController extends ITaskOrganizerController.Stub {
        if (rootTask == null || activity.mStartingData == null) {
            return false;
        }
        final ITaskOrganizer lastOrganizer = mTaskOrganizers.peekLast();
        final ITaskOrganizer lastOrganizer = getTaskOrganizer();
        if (lastOrganizer == null) {
            return false;
        }
@@ -672,12 +672,13 @@ class TaskOrganizerController extends ITaskOrganizerController.Stub {
        return true;
    }

    void removeStartingWindow(Task task, boolean prepareAnimation) {
    void removeStartingWindow(Task task, ITaskOrganizer taskOrganizer, boolean prepareAnimation) {
        final Task rootTask = task.getRootTask();
        if (rootTask == null) {
            return;
        }
        final ITaskOrganizer lastOrganizer = mTaskOrganizers.peekLast();
        final ITaskOrganizer lastOrganizer = taskOrganizer != null ? taskOrganizer
                : getTaskOrganizer();
        if (lastOrganizer == null) {
            return;
        }
@@ -771,12 +772,13 @@ class TaskOrganizerController extends ITaskOrganizerController.Stub {
        }
    }

    boolean copySplashScreenView(Task task) {
    boolean copySplashScreenView(Task task, ITaskOrganizer taskOrganizer) {
        final Task rootTask = task.getRootTask();
        if (rootTask == null) {
            return false;
        }
        final ITaskOrganizer lastOrganizer = mTaskOrganizers.peekLast();
        final ITaskOrganizer lastOrganizer = taskOrganizer != null ? taskOrganizer
                : getTaskOrganizer();
        if (lastOrganizer == null) {
            return false;
        }
@@ -799,12 +801,12 @@ class TaskOrganizerController extends ITaskOrganizerController.Stub {
     * @see com.android.wm.shell.ShellTaskOrganizer#onAppSplashScreenViewRemoved(int)
     * @see SplashScreenView#remove()
     */
    public void onAppSplashScreenViewRemoved(Task task) {
    public void onAppSplashScreenViewRemoved(Task task, ITaskOrganizer organizer) {
        final Task rootTask = task.getRootTask();
        if (rootTask == null) {
            return;
        }
        final ITaskOrganizer lastOrganizer = mTaskOrganizers.peekLast();
        final ITaskOrganizer lastOrganizer = organizer != null ? organizer : getTaskOrganizer();
        if (lastOrganizer == null) {
            return;
        }