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

Commit 222ce93b authored by Evan Rosky's avatar Evan Rosky Committed by Automerger Merge Worker
Browse files

Merge "Consider "similar" change modes the same for promotion purposes" into...

Merge "Consider "similar" change modes the same for promotion purposes" into tm-qpr-dev am: 559b8310 am: c9aa4e46

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



Change-Id: I71823be015bdd7395abb245b9ad98438f9bc2f60
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents d283b780 c9aa4e46
Loading
Loading
Loading
Loading
+12 −2
Original line number Diff line number Diff line
@@ -1297,7 +1297,7 @@ class Transition extends Binder implements BLASTSyncEngine.TransactionReadyListe
            ProtoLog.v(ProtoLogGroup.WM_DEBUG_WINDOW_TRANSITIONS,
                    "        sibling is a participant with mode %s",
                    TransitionInfo.modeToString(siblingMode));
            if (mode != siblingMode) {
            if (reduceMode(mode) != reduceMode(siblingMode)) {
                ProtoLog.v(ProtoLogGroup.WM_DEBUG_WINDOW_TRANSITIONS,
                        "          SKIP: common mode mismatch. was %s",
                        TransitionInfo.modeToString(mode));
@@ -1307,6 +1307,16 @@ class Transition extends Binder implements BLASTSyncEngine.TransactionReadyListe
        return true;
    }

    /** "reduces" a mode into a smaller set of modes that uniquely represents visibility change. */
    @TransitionInfo.TransitionMode
    private static int reduceMode(@TransitionInfo.TransitionMode int mode) {
        switch (mode) {
            case TRANSIT_TO_BACK: return TRANSIT_CLOSE;
            case TRANSIT_TO_FRONT: return TRANSIT_OPEN;
            default: return mode;
        }
    }

    /**
     * Go through topTargets and try to promote (see {@link #canPromote}) one of them.
     *
@@ -1808,7 +1818,7 @@ class Transition extends Binder implements BLASTSyncEngine.TransactionReadyListe
        @TransitionInfo.TransitionMode
        int getTransitMode(@NonNull WindowContainer wc) {
            if ((mFlags & ChangeInfo.FLAG_ABOVE_TRANSIENT_LAUNCH) != 0) {
                return TRANSIT_CLOSE;
                return mExistenceChanged ? TRANSIT_CLOSE : TRANSIT_TO_BACK;
            }
            final boolean nowVisible = wc.isVisibleRequested();
            if (nowVisible == mVisible) {
+64 −0
Original line number Diff line number Diff line
@@ -395,6 +395,70 @@ public class TransitionTests extends WindowTestsBase {
                tasks[showWallpaperTask].mRemoteToken.toWindowContainerToken()).getFlags());
    }

    @Test
    public void testCreateInfo_PromoteSimilarClose() {
        final Transition transition = createTestTransition(TRANSIT_CLOSE);
        ArrayMap<WindowContainer, Transition.ChangeInfo> changes = transition.mChanges;
        ArraySet<WindowContainer> participants = transition.mParticipants;

        final Task topTask = createTask(mDisplayContent);
        final Task belowTask = createTask(mDisplayContent);
        final ActivityRecord showing = createActivityRecord(belowTask);
        final ActivityRecord hiding = createActivityRecord(topTask);
        final ActivityRecord closing = createActivityRecord(topTask);
        // Start states.
        changes.put(topTask, new Transition.ChangeInfo(true /* vis */, false /* exChg */));
        changes.put(belowTask, new Transition.ChangeInfo(false /* vis */, false /* exChg */));
        changes.put(showing, new Transition.ChangeInfo(false /* vis */, false /* exChg */));
        changes.put(hiding, new Transition.ChangeInfo(true /* vis */, false /* exChg */));
        changes.put(closing, new Transition.ChangeInfo(true /* vis */, true /* exChg */));
        fillChangeMap(changes, topTask);
        // End states.
        showing.mVisibleRequested = true;
        closing.mVisibleRequested = false;
        hiding.mVisibleRequested = false;

        participants.add(belowTask);
        participants.add(hiding);
        participants.add(closing);
        ArrayList<WindowContainer> targets = Transition.calculateTargets(participants, changes);
        assertEquals(2, targets.size());
        assertTrue(targets.contains(belowTask));
        assertTrue(targets.contains(topTask));
    }

    @Test
    public void testCreateInfo_PromoteSimilarOpen() {
        final Transition transition = createTestTransition(TRANSIT_OPEN);
        ArrayMap<WindowContainer, Transition.ChangeInfo> changes = transition.mChanges;
        ArraySet<WindowContainer> participants = transition.mParticipants;

        final Task topTask = createTask(mDisplayContent);
        final Task belowTask = createTask(mDisplayContent);
        final ActivityRecord showing = createActivityRecord(topTask);
        final ActivityRecord opening = createActivityRecord(topTask);
        final ActivityRecord closing = createActivityRecord(belowTask);
        // Start states.
        changes.put(topTask, new Transition.ChangeInfo(false /* vis */, false /* exChg */));
        changes.put(belowTask, new Transition.ChangeInfo(true /* vis */, false /* exChg */));
        changes.put(showing, new Transition.ChangeInfo(false /* vis */, false /* exChg */));
        changes.put(opening, new Transition.ChangeInfo(false /* vis */, true /* exChg */));
        changes.put(closing, new Transition.ChangeInfo(true /* vis */, false /* exChg */));
        fillChangeMap(changes, topTask);
        // End states.
        showing.mVisibleRequested = true;
        opening.mVisibleRequested = true;
        closing.mVisibleRequested = false;

        participants.add(belowTask);
        participants.add(showing);
        participants.add(opening);
        ArrayList<WindowContainer> targets = Transition.calculateTargets(participants, changes);
        assertEquals(2, targets.size());
        assertTrue(targets.contains(belowTask));
        assertTrue(targets.contains(topTask));
    }

    @Test
    public void testTargets_noIntermediatesToWallpaper() {
        final Transition transition = createTestTransition(TRANSIT_OPEN);