diff --git a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java index 7e45369692..ac1772c300 100644 --- a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java +++ b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java @@ -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; @@ -1105,7 +1104,8 @@ public abstract class AbsSwipeUpHandler, 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 */); @@ -1146,8 +1146,7 @@ public abstract class AbsSwipeUpHandler, 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); @@ -1248,7 +1247,7 @@ public abstract class AbsSwipeUpHandler, final Rect destinationBounds = SystemUiProxy.INSTANCE.get(mContext) .startSwipePipToHome(taskInfo.topActivity, - TaskInfoCompat.getTopActivityInfo(taskInfo), + taskInfo.topActivityInfo, runningTaskTarget.taskInfo.pictureInPictureParams, homeRotation, mDp.hotseatBarSizePx); @@ -1257,9 +1256,9 @@ public abstract class AbsSwipeUpHandler, .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) @@ -1269,7 +1268,8 @@ public abstract class AbsSwipeUpHandler, // 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 = diff --git a/quickstep/src/com/android/quickstep/util/AssistantUtilities.java b/quickstep/src/com/android/quickstep/util/AssistantUtilities.java index 552db1f4dd..336f7d1362 100644 --- a/quickstep/src/com/android/quickstep/util/AssistantUtilities.java +++ b/quickstep/src/com/android/quickstep/util/AssistantUtilities.java @@ -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; } diff --git a/quickstep/src/com/android/quickstep/util/SwipePipToHomeAnimator.java b/quickstep/src/com/android/quickstep/util/SwipePipToHomeAnimator.java index 7488649eb7..c0f5c14e3c 100644 --- a/quickstep/src/com/android/quickstep/util/SwipePipToHomeAnimator.java +++ b/quickstep/src/com/android/quickstep/util/SwipePipToHomeAnimator.java @@ -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,