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

Commit 1a8c556b authored by Evan Rosky's avatar Evan Rosky Committed by Automerger Merge Worker
Browse files

Merge "Detect "expand to fullscreen" over recents and switch to it" into tm-dev am: be2f1eae

parents 905e1e7e be2f1eae
Loading
Loading
Loading
Loading
+10 −0
Original line number Original line Diff line number Diff line
@@ -40,4 +40,14 @@ public interface RecentsAnimationListener {
     * was running becomes ready for control.
     * was running becomes ready for control.
     */
     */
    void onTasksAppeared(RemoteAnimationTargetCompat[] app);
    void onTasksAppeared(RemoteAnimationTargetCompat[] app);

    /**
     * Called to request that the current task tile be switched out for a screenshot (if not
     * already). Once complete, onFinished should be called.
     * @return true if this impl will call onFinished. No other onSwitchToScreenshot impls will
     *         be called afterwards (to avoid multiple calls to onFinished).
     */
    default boolean onSwitchToScreenshot(Runnable onFinished) {
        return false;
    }
}
}
+23 −0
Original line number Original line Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.systemui.shared.system;


import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD;
import static android.view.WindowManager.TRANSIT_CHANGE;
import static android.view.WindowManager.TRANSIT_CLOSE;
import static android.view.WindowManager.TRANSIT_CLOSE;
import static android.view.WindowManager.TRANSIT_FLAG_KEYGUARD_GOING_AWAY;
import static android.view.WindowManager.TRANSIT_FLAG_KEYGUARD_GOING_AWAY;
import static android.view.WindowManager.TRANSIT_OPEN;
import static android.view.WindowManager.TRANSIT_OPEN;
@@ -244,6 +245,8 @@ public class RemoteTransitionCompat implements Parcelable {
                RecentsAnimationListener recents) {
                RecentsAnimationListener recents) {
            ArrayList<TransitionInfo.Change> openingTasks = null;
            ArrayList<TransitionInfo.Change> openingTasks = null;
            boolean cancelRecents = false;
            boolean cancelRecents = false;
            boolean homeGoingAway = false;
            boolean hasChangingApp = false;
            for (int i = info.getChanges().size() - 1; i >= 0; --i) {
            for (int i = info.getChanges().size() - 1; i >= 0; --i) {
                final TransitionInfo.Change change = info.getChanges().get(i);
                final TransitionInfo.Change change = info.getChanges().get(i);
                if (change.getMode() == TRANSIT_OPEN || change.getMode() == TRANSIT_TO_FRONT) {
                if (change.getMode() == TRANSIT_OPEN || change.getMode() == TRANSIT_TO_FRONT) {
@@ -257,7 +260,27 @@ public class RemoteTransitionCompat implements Parcelable {
                        }
                        }
                        openingTasks.add(change);
                        openingTasks.add(change);
                    }
                    }
                } else if (change.getMode() == TRANSIT_CLOSE
                        || change.getMode() == TRANSIT_TO_BACK) {
                    if (mRecentsTask.equals(change.getContainer())) {
                        homeGoingAway = true;
                    }
                    }
                } else if (change.getMode() == TRANSIT_CHANGE) {
                    hasChangingApp = true;
                }
            }
            if (hasChangingApp && homeGoingAway) {
                // This happens when a visible app is expanding (usually PiP). In this case,
                // The transition probably has a special-purpose animation, so finish recents
                // now and let it do its animation (since recents is going to be occluded).
                if (!recents.onSwitchToScreenshot(() -> {
                    finish(true /* toHome */, false /* userLeaveHint */);
                })) {
                    Log.w(TAG, "Recents callback doesn't support support switching to screenshot"
                            + ", there might be a flicker.");
                    finish(true /* toHome */, false /* userLeaveHint */);
                }
                return false;
            }
            }
            if (openingTasks == null) return false;
            if (openingTasks == null) return false;
            int pauseMatches = 0;
            int pauseMatches = 0;