Merge "Disallow multiple calls to dismiss/exit pip" into rvc-dev

This commit is contained in:
Winson Chung
2020-05-28 17:24:01 +00:00
committed by Android (Google) Code Review

View File

@@ -204,6 +204,7 @@ public class PipTaskOrganizer extends TaskOrganizer implements
private WindowContainerToken mToken; private WindowContainerToken mToken;
private SurfaceControl mLeash; private SurfaceControl mLeash;
private boolean mInPip; private boolean mInPip;
private boolean mExitingPip;
private @PipAnimationController.AnimationType int mOneShotAnimationType = ANIM_TYPE_BOUNDS; private @PipAnimationController.AnimationType int mOneShotAnimationType = ANIM_TYPE_BOUNDS;
private PipSurfaceTransactionHelper.SurfaceControlTransactionFactory private PipSurfaceTransactionHelper.SurfaceControlTransactionFactory
mSurfaceControlTransactionFactory; mSurfaceControlTransactionFactory;
@@ -270,9 +271,9 @@ public class PipTaskOrganizer extends TaskOrganizer implements
* @param animationDurationMs duration in millisecond for the exiting PiP transition * @param animationDurationMs duration in millisecond for the exiting PiP transition
*/ */
public void exitPip(int animationDurationMs) { public void exitPip(int animationDurationMs) {
if (!mInPip || mToken == null) { if (!mInPip || mExitingPip || mToken == null) {
Log.wtf(TAG, "Not allowed to exitPip in current state" Log.wtf(TAG, "Not allowed to exitPip in current state"
+ " mInPip=" + mInPip + " mToken=" + mToken); + " mInPip=" + mInPip + " mExitingPip=" + mExitingPip + " mToken=" + mToken);
return; return;
} }
@@ -312,15 +313,16 @@ public class PipTaskOrganizer extends TaskOrganizer implements
} }
}); });
} }
mExitingPip = true;
} }
/** /**
* Removes PiP immediately. * Removes PiP immediately.
*/ */
public void removePip() { public void removePip() {
if (!mInPip || mToken == null) { if (!mInPip || mExitingPip || mToken == null) {
Log.wtf(TAG, "Not allowed to removePip in current state" Log.wtf(TAG, "Not allowed to removePip in current state"
+ " mInPip=" + mInPip + " mToken=" + mToken); + " mInPip=" + mInPip + " mExitingPip=" + mExitingPip + " mToken=" + mToken);
return; return;
} }
getUpdateHandler().post(() -> { getUpdateHandler().post(() -> {
@@ -332,6 +334,7 @@ public class PipTaskOrganizer extends TaskOrganizer implements
} }
}); });
mInitialState.remove(mToken.asBinder()); mInitialState.remove(mToken.asBinder());
mExitingPip = true;
} }
@Override @Override
@@ -340,6 +343,7 @@ public class PipTaskOrganizer extends TaskOrganizer implements
mTaskInfo = info; mTaskInfo = info;
mToken = mTaskInfo.token; mToken = mTaskInfo.token;
mInPip = true; mInPip = true;
mExitingPip = false;
mLeash = leash; mLeash = leash;
mInitialState.put(mToken.asBinder(), new Configuration(mTaskInfo.configuration)); mInitialState.put(mToken.asBinder(), new Configuration(mTaskInfo.configuration));
mPictureInPictureParams = mTaskInfo.pictureInPictureParams; mPictureInPictureParams = mTaskInfo.pictureInPictureParams;
@@ -420,6 +424,7 @@ public class PipTaskOrganizer extends TaskOrganizer implements
mShouldDeferEnteringPip = false; mShouldDeferEnteringPip = false;
mPictureInPictureParams = null; mPictureInPictureParams = null;
mInPip = false; mInPip = false;
mExitingPip = false;
} }
@Override @Override