Pass AppOps result for PiP to Transition change.

Bug: 194272108
Test: Enable shell transitions, enter PIP
Change-Id: Ic39840615df9c270187f9f810a6755fa22b585b7
This commit is contained in:
Ben Lin
2021-08-06 14:26:00 -07:00
parent f74b9ddc8a
commit a50d29727a
3 changed files with 16 additions and 1 deletions

View File

@@ -352,6 +352,7 @@ public final class TransitionInfo implements Parcelable {
private final Rect mEndAbsBounds = new Rect();
private final Point mEndRelOffset = new Point();
private ActivityManager.RunningTaskInfo mTaskInfo = null;
private boolean mAllowEnterPip;
private int mStartRotation = ROTATION_UNDEFINED;
private int mEndRotation = ROTATION_UNDEFINED;
private int mRotationAnimation = ROTATION_ANIMATION_UNSPECIFIED;
@@ -372,6 +373,7 @@ public final class TransitionInfo implements Parcelable {
mEndAbsBounds.readFromParcel(in);
mEndRelOffset.readFromParcel(in);
mTaskInfo = in.readTypedObject(ActivityManager.RunningTaskInfo.CREATOR);
mAllowEnterPip = in.readBoolean();
mStartRotation = in.readInt();
mEndRotation = in.readInt();
mRotationAnimation = in.readInt();
@@ -415,6 +417,11 @@ public final class TransitionInfo implements Parcelable {
mTaskInfo = taskInfo;
}
/** Sets the allowEnterPip flag which represents AppOpsManager check on PiP permission */
public void setAllowEnterPip(boolean allowEnterPip) {
mAllowEnterPip = allowEnterPip;
}
/** Sets the start and end rotation of this container. */
public void setRotation(@Surface.Rotation int start, @Surface.Rotation int end) {
mStartRotation = start;
@@ -492,6 +499,10 @@ public final class TransitionInfo implements Parcelable {
return mTaskInfo;
}
public boolean getAllowEnterPip() {
return mAllowEnterPip;
}
public int getStartRotation() {
return mStartRotation;
}
@@ -517,6 +528,7 @@ public final class TransitionInfo implements Parcelable {
mEndAbsBounds.writeToParcel(dest, flags);
mEndRelOffset.writeToParcel(dest, flags);
dest.writeTypedObject(mTaskInfo, flags);
dest.writeBoolean(mAllowEnterPip);
dest.writeInt(mStartRotation);
dest.writeInt(mEndRotation);
dest.writeInt(mRotationAnimation);

View File

@@ -216,7 +216,7 @@ public class RemoteAnimationTargetCompat {
activityType = ACTIVITY_TYPE_UNDEFINED;
}
taskInfo = change.getTaskInfo();
allowEnterPip = false; /* always false in shell-transition case */
allowEnterPip = change.getAllowEnterPip();
mStartLeash = null;
rotationChange = change.getEndRotation() - change.getStartRotation();
windowType = INVALID_WINDOW_TYPE;

View File

@@ -1070,6 +1070,9 @@ class Transition extends Binder implements BLASTSyncEngine.TransactionReadyListe
task.fillTaskInfo(tinfo);
change.setTaskInfo(tinfo);
change.setRotationAnimation(getTaskRotationAnimation(task));
final ActivityRecord topMostActivity = task.getTopMostActivity();
change.setAllowEnterPip(topMostActivity != null
&& topMostActivity.checkEnterPictureInPictureAppOpsState());
}
out.addChange(change);
}