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

Commit c03130ab authored by Issei Suzuki's avatar Issei Suzuki
Browse files

Fix jank when app launched from quick panels on the lock screen

Bug: 209035016
Test: atest AppTransitionTests
Change-Id: Ifb0b41345729afc94e2c9bbbf828db80bf7858f7
parent 4003a0d7
Loading
Loading
Loading
Loading
+11 −11
Original line number Diff line number Diff line
@@ -1634,21 +1634,21 @@ public class AppTransition implements Dump {
    }

    @TransitionType int getKeyguardTransition() {
        if (mNextAppTransitionRequests.indexOf(TRANSIT_KEYGUARD_GOING_AWAY) != -1) {
            return TRANSIT_KEYGUARD_GOING_AWAY;
        }
        final int unoccludeIndex = mNextAppTransitionRequests.indexOf(TRANSIT_KEYGUARD_UNOCCLUDE);
        final int occludeIndex = mNextAppTransitionRequests.indexOf(TRANSIT_KEYGUARD_OCCLUDE);
        // No keyguard related transition requests.
        if (unoccludeIndex == -1 && occludeIndex == -1) {
            return TRANSIT_NONE;
        }
        // In case we unocclude Keyguard and occlude it again, meaning that we never actually
        // unoccclude/occlude Keyguard, but just run a normal transition.
        final int occludeIndex = mNextAppTransitionRequests.indexOf(TRANSIT_KEYGUARD_UNOCCLUDE);
        if (occludeIndex != -1
                && occludeIndex < mNextAppTransitionRequests.indexOf(TRANSIT_KEYGUARD_OCCLUDE)) {
        if (unoccludeIndex != -1 && unoccludeIndex < occludeIndex) {
            return TRANSIT_NONE;
        }

        for (int i = 0; i < mNextAppTransitionRequests.size(); ++i) {
            final @TransitionType int transit = mNextAppTransitionRequests.get(i);
            if (isKeyguardTransit(transit)) {
                return transit;
            }
        }
        return TRANSIT_NONE;
        return unoccludeIndex != -1 ? TRANSIT_KEYGUARD_UNOCCLUDE : TRANSIT_KEYGUARD_OCCLUDE;
    }

    @TransitionType int getFirstAppTransition() {
+20 −0
Original line number Diff line number Diff line
@@ -22,6 +22,9 @@ import static android.view.WindowManager.TRANSIT_CHANGE;
import static android.view.WindowManager.TRANSIT_CLOSE;
import static android.view.WindowManager.TRANSIT_FLAG_APP_CRASHED;
import static android.view.WindowManager.TRANSIT_KEYGUARD_GOING_AWAY;
import static android.view.WindowManager.TRANSIT_KEYGUARD_OCCLUDE;
import static android.view.WindowManager.TRANSIT_KEYGUARD_UNOCCLUDE;
import static android.view.WindowManager.TRANSIT_NONE;
import static android.view.WindowManager.TRANSIT_OLD_CRASHING_ACTIVITY_CLOSE;
import static android.view.WindowManager.TRANSIT_OLD_KEYGUARD_GOING_AWAY;
import static android.view.WindowManager.TRANSIT_OLD_TASK_CHANGE_WINDOWING_MODE;
@@ -92,6 +95,7 @@ public class AppTransitionTests extends WindowTestsBase {
        final ActivityRecord activity = createActivityRecord(dc);

        mDc.prepareAppTransition(TRANSIT_OPEN);
        mDc.prepareAppTransition(TRANSIT_KEYGUARD_OCCLUDE);
        mDc.prepareAppTransition(TRANSIT_KEYGUARD_GOING_AWAY);
        mDc.mOpeningApps.add(activity);
        assertEquals(TRANSIT_OLD_KEYGUARD_GOING_AWAY,
@@ -101,6 +105,22 @@ public class AppTransitionTests extends WindowTestsBase {
                        null /* oldWallpaper */, false /*skipAppTransitionAnimation*/));
    }

    @Test
    public void testKeyguardUnoccludeOcclude() {
        final DisplayContent dc = createNewDisplay(Display.STATE_ON);
        final ActivityRecord activity = createActivityRecord(dc);

        mDc.prepareAppTransition(TRANSIT_KEYGUARD_UNOCCLUDE);
        mDc.prepareAppTransition(TRANSIT_KEYGUARD_OCCLUDE);
        mDc.mOpeningApps.add(activity);
        assertEquals(TRANSIT_NONE,
                AppTransitionController.getTransitCompatType(mDc.mAppTransition,
                        mDisplayContent.mOpeningApps, mDisplayContent.mClosingApps,
                        mDisplayContent.mChangingContainers, null /* wallpaperTarget */,
                        null /* oldWallpaper */, false /*skipAppTransitionAnimation*/));

    }

    @Test
    public void testKeyguardKeep() {
        final DisplayContent dc = createNewDisplay(Display.STATE_ON);