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

Commit 3c4f6090 authored by Hongwei Wang's avatar Hongwei Wang Committed by Android (Google) Code Review
Browse files

Merge "Use display cutout info in auto-enter-pip transition" into sc-v2-dev

parents dc955de0 70d4e3e2
Loading
Loading
Loading
Loading
+9 −9
Original line number Diff line number Diff line
@@ -115,7 +115,6 @@ import com.android.systemui.shared.system.InputConsumerController;
import com.android.systemui.shared.system.InteractionJankMonitorWrapper;
import com.android.systemui.shared.system.LatencyTrackerCompat;
import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
import com.android.systemui.shared.system.TaskInfoCompat;
import com.android.systemui.shared.system.TaskStackChangeListener;
import com.android.systemui.shared.system.TaskStackChangeListeners;

@@ -1110,7 +1109,8 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
        public void onActivityRestartAttempt(ActivityManager.RunningTaskInfo task,
                boolean homeTaskVisible, boolean clearedTask, boolean wasVisible) {
            if (task.taskId == mGestureState.getRunningTaskId()
                    && TaskInfoCompat.getActivityType(task) != ACTIVITY_TYPE_HOME) {
                    && task.configuration.windowConfiguration.getActivityType()
                    != ACTIVITY_TYPE_HOME) {
                // Since this is an edge case, just cancel and relaunch with default activity
                // options (since we don't know if there's an associated app icon to launch from)
                endRunningWindowAnim(true /* cancel */);
@@ -1152,8 +1152,7 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
            boolean appCanEnterPip = !mDeviceState.isPipActive()
                    && runningTaskTarget != null
                    && runningTaskTarget.taskInfo.pictureInPictureParams != null
                    && TaskInfoCompat.isAutoEnterPipEnabled(
                            runningTaskTarget.taskInfo.pictureInPictureParams);
                    && runningTaskTarget.taskInfo.pictureInPictureParams.isAutoEnterEnabled();
            HomeAnimationFactory homeAnimFactory =
                    createHomeAnimationFactory(cookies, duration, isTranslucent, appCanEnterPip,
                            runningTaskTarget);
@@ -1254,7 +1253,7 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,

        final Rect destinationBounds = SystemUiProxy.INSTANCE.get(mContext)
                .startSwipePipToHome(taskInfo.topActivity,
                        TaskInfoCompat.getTopActivityInfo(taskInfo),
                        taskInfo.topActivityInfo,
                        runningTaskTarget.taskInfo.pictureInPictureParams,
                        homeRotation,
                        mDp.hotseatBarSizePx);
@@ -1263,9 +1262,9 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
                .setTaskId(runningTaskTarget.taskId)
                .setComponentName(taskInfo.topActivity)
                .setLeash(runningTaskTarget.leash.getSurfaceControl())
                .setSourceRectHint(TaskInfoCompat.getPipSourceRectHint(
                        runningTaskTarget.taskInfo.pictureInPictureParams))
                .setAppBounds(TaskInfoCompat.getWindowConfigurationBounds(taskInfo))
                .setSourceRectHint(
                        runningTaskTarget.taskInfo.pictureInPictureParams.getSourceRectHint())
                .setAppBounds(taskInfo.configuration.windowConfiguration.getBounds())
                .setHomeToWindowPositionMap(homeToWindowPositionMap)
                .setStartBounds(startRect)
                .setDestinationBounds(destinationBounds)
@@ -1275,7 +1274,8 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
        // is not ROTATION_0 (which implies the rotation is turned on in launcher settings).
        if (homeRotation == ROTATION_0
                && (windowRotation == ROTATION_90 || windowRotation == ROTATION_270)) {
            builder.setFromRotation(mTaskViewSimulator, windowRotation);
            builder.setFromRotation(mTaskViewSimulator, windowRotation,
                    taskInfo.displayCutoutInsets);
        }
        final SwipePipToHomeAnimator swipePipToHomeAnimator = builder.build();
        AnimatorPlaybackController activityAnimationToHome =
+1 −2
Original line number Diff line number Diff line
@@ -23,7 +23,6 @@ import android.content.Intent;
import android.os.Build;

import com.android.systemui.shared.system.ActivityManagerWrapper;
import com.android.systemui.shared.system.TaskInfoCompat;

/**
 * Utility class for interacting with the Assistant.
@@ -39,7 +38,7 @@ public final class AssistantUtilities {
    /** Returns true if the given task holds an Assistant activity that is excluded from recents. */
    public static boolean isExcludedAssistant(TaskInfo info) {
        return info != null
            && TaskInfoCompat.getActivityType(info) == ACTIVITY_TYPE_ASSISTANT
            && info.configuration.windowConfiguration.getActivityType() == ACTIVITY_TYPE_ASSISTANT
            && (info.baseIntent.getFlags() & Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS) != 0;
    }

+14 −1
Original line number Diff line number Diff line
@@ -301,6 +301,7 @@ public class SwipePipToHomeAnimator extends RectFSpringAnim {
        private ComponentName mComponentName;
        private SurfaceControl mLeash;
        private Rect mSourceRectHint;
        private Rect mDisplayCutoutInsets;
        private Rect mAppBounds;
        private Matrix mHomeToWindowPositionMap;
        private RectF mStartBounds;
@@ -366,7 +367,8 @@ public class SwipePipToHomeAnimator extends RectFSpringAnim {
        }

        public Builder setFromRotation(TaskViewSimulator taskViewSimulator,
                @RecentsOrientedState.SurfaceRotation int fromRotation) {
                @RecentsOrientedState.SurfaceRotation int fromRotation,
                Rect displayCutoutInsets) {
            if (fromRotation != Surface.ROTATION_90 && fromRotation != Surface.ROTATION_270) {
                Log.wtf(TAG, "Not a supported rotation, rotation=" + fromRotation);
                return this;
@@ -381,6 +383,9 @@ public class SwipePipToHomeAnimator extends RectFSpringAnim {
            transformed.round(mDestinationBoundsTransformed);

            mFromRotation = fromRotation;
            if (displayCutoutInsets != null) {
                mDisplayCutoutInsets = new Rect(displayCutoutInsets);
            }
            return this;
        }

@@ -388,6 +393,14 @@ public class SwipePipToHomeAnimator extends RectFSpringAnim {
            if (mDestinationBoundsTransformed.isEmpty()) {
                mDestinationBoundsTransformed.set(mDestinationBounds);
            }
            // adjust the mSourceRectHint / mAppBounds by display cutout if applicable.
            if (mSourceRectHint != null && mDisplayCutoutInsets != null) {
                if (mFromRotation == Surface.ROTATION_90) {
                    mSourceRectHint.offset(mDisplayCutoutInsets.left, mDisplayCutoutInsets.top);
                } else if (mFromRotation == Surface.ROTATION_270) {
                    mAppBounds.inset(mDisplayCutoutInsets);
                }
            }
            return new SwipePipToHomeAnimator(mContext, mTaskId, mComponentName, mLeash,
                    mSourceRectHint, mAppBounds,
                    mHomeToWindowPositionMap, mStartBounds, mDestinationBounds,