Loading packages/SystemUI/src/com/android/systemui/pip/PipAnimationController.java +6 −6 Original line number Diff line number Diff line Loading @@ -53,16 +53,16 @@ public class PipAnimationController { public static final int TRANSITION_DIRECTION_NONE = 0; public static final int TRANSITION_DIRECTION_SAME = 1; public static final int TRANSITION_DIRECTION_TO_PIP = 2; public static final int TRANSITION_DIRECTION_TO_FULLSCREEN = 3; public static final int TRANSITION_DIRECTION_TO_SPLIT_SCREEN = 4; public static final int TRANSITION_DIRECTION_LEAVE_PIP = 3; public static final int TRANSITION_DIRECTION_LEAVE_PIP_TO_SPLIT_SCREEN = 4; public static final int TRANSITION_DIRECTION_REMOVE_STACK = 5; @IntDef(prefix = { "TRANSITION_DIRECTION_" }, value = { TRANSITION_DIRECTION_NONE, TRANSITION_DIRECTION_SAME, TRANSITION_DIRECTION_TO_PIP, TRANSITION_DIRECTION_TO_FULLSCREEN, TRANSITION_DIRECTION_TO_SPLIT_SCREEN, TRANSITION_DIRECTION_LEAVE_PIP, TRANSITION_DIRECTION_LEAVE_PIP_TO_SPLIT_SCREEN, TRANSITION_DIRECTION_REMOVE_STACK }) @Retention(RetentionPolicy.SOURCE) Loading @@ -73,8 +73,8 @@ public class PipAnimationController { } public static boolean isOutPipDirection(@TransitionDirection int direction) { return direction == TRANSITION_DIRECTION_TO_FULLSCREEN || direction == TRANSITION_DIRECTION_TO_SPLIT_SCREEN; return direction == TRANSITION_DIRECTION_LEAVE_PIP || direction == TRANSITION_DIRECTION_LEAVE_PIP_TO_SPLIT_SCREEN; } private final PipSurfaceTransactionHelper mSurfaceTransactionHelper; Loading packages/SystemUI/src/com/android/systemui/pip/PipTaskOrganizer.java +10 −7 Original line number Diff line number Diff line Loading @@ -23,12 +23,12 @@ import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED; import static com.android.systemui.pip.PipAnimationController.ANIM_TYPE_ALPHA; import static com.android.systemui.pip.PipAnimationController.ANIM_TYPE_BOUNDS; import static com.android.systemui.pip.PipAnimationController.TRANSITION_DIRECTION_LEAVE_PIP; import static com.android.systemui.pip.PipAnimationController.TRANSITION_DIRECTION_LEAVE_PIP_TO_SPLIT_SCREEN; import static com.android.systemui.pip.PipAnimationController.TRANSITION_DIRECTION_NONE; import static com.android.systemui.pip.PipAnimationController.TRANSITION_DIRECTION_REMOVE_STACK; import static com.android.systemui.pip.PipAnimationController.TRANSITION_DIRECTION_SAME; import static com.android.systemui.pip.PipAnimationController.TRANSITION_DIRECTION_TO_FULLSCREEN; import static com.android.systemui.pip.PipAnimationController.TRANSITION_DIRECTION_TO_PIP; import static com.android.systemui.pip.PipAnimationController.TRANSITION_DIRECTION_TO_SPLIT_SCREEN; import static com.android.systemui.pip.PipAnimationController.isInPipDirection; import static com.android.systemui.pip.PipAnimationController.isOutPipDirection; Loading Loading @@ -285,8 +285,8 @@ public class PipTaskOrganizer extends TaskOrganizer implements final WindowContainerTransaction wct = new WindowContainerTransaction(); final Rect destinationBounds = initialConfig.windowConfiguration.getBounds(); final int direction = syncWithSplitScreenBounds(destinationBounds) ? TRANSITION_DIRECTION_TO_SPLIT_SCREEN : TRANSITION_DIRECTION_TO_FULLSCREEN; ? TRANSITION_DIRECTION_LEAVE_PIP_TO_SPLIT_SCREEN : TRANSITION_DIRECTION_LEAVE_PIP; if (orientationDiffers) { // Send started callback though animation is ignored. sendOnPipTransitionStarted(direction); Loading @@ -303,7 +303,10 @@ public class PipTaskOrganizer extends TaskOrganizer implements mSurfaceTransactionHelper.scale(tx, mLeash, destinationBounds, mLastReportedBounds); tx.setWindowCrop(mLeash, destinationBounds.width(), destinationBounds.height()); wct.setActivityWindowingMode(mToken, direction == TRANSITION_DIRECTION_TO_SPLIT_SCREEN // We set to fullscreen here for now, but later it will be set to UNDEFINED for // the proper windowing mode to take place. See #applyWindowingModeChangeOnExit. wct.setActivityWindowingMode(mToken, direction == TRANSITION_DIRECTION_LEAVE_PIP_TO_SPLIT_SCREEN ? WINDOWING_MODE_SPLIT_SCREEN_SECONDARY : WINDOWING_MODE_FULLSCREEN); wct.setBounds(mToken, destinationBounds); Loading @@ -327,7 +330,7 @@ public class PipTaskOrganizer extends TaskOrganizer implements wct.setWindowingMode(mToken, getOutPipWindowingMode()); // Simply reset the activity mode set prior to the animation running. wct.setActivityWindowingMode(mToken, WINDOWING_MODE_UNDEFINED); if (mSplitDivider != null && direction == TRANSITION_DIRECTION_TO_SPLIT_SCREEN) { if (mSplitDivider != null && direction == TRANSITION_DIRECTION_LEAVE_PIP_TO_SPLIT_SCREEN) { wct.reparent(mToken, mSplitDivider.getSecondaryRoot(), true /* onTop */); } } Loading Loading @@ -842,7 +845,7 @@ public class PipTaskOrganizer extends TaskOrganizer implements } else if (isOutPipDirection(direction)) { // If we are animating to fullscreen, then we need to reset the override bounds // on the task to ensure that the task "matches" the parent's bounds. taskBounds = (direction == TRANSITION_DIRECTION_TO_FULLSCREEN) taskBounds = (direction == TRANSITION_DIRECTION_LEAVE_PIP) ? null : destinationBounds; applyWindowingModeChangeOnExit(wct, direction); } else { Loading packages/SystemUI/src/com/android/systemui/pip/phone/PipAccessibilityInteractionConnection.java +1 −1 Original line number Diff line number Diff line Loading @@ -131,7 +131,7 @@ public class PipAccessibilityInteractionConnection result = true; break; case AccessibilityNodeInfo.ACTION_EXPAND: mMotionHelper.expandPipToFullscreen(); mMotionHelper.expandLeavePip(); result = true; break; default: Loading packages/SystemUI/src/com/android/systemui/pip/phone/PipManager.java +2 −2 Original line number Diff line number Diff line Loading @@ -181,7 +181,7 @@ public class PipManager implements BasePipManager, PipTaskOrganizer.PipTransitio != WINDOWING_MODE_PINNED) { return; } mTouchHandler.getMotionHelper().expandPipToFullscreen(clearedTask /* skipAnimation */); mTouchHandler.getMotionHelper().expandLeavePip(clearedTask /* skipAnimation */); } }; Loading Loading @@ -318,7 +318,7 @@ public class PipManager implements BasePipManager, PipTaskOrganizer.PipTransitio */ @Override public void expandPip() { mTouchHandler.getMotionHelper().expandPipToFullscreen(false /* skipAnimation */); mTouchHandler.getMotionHelper().expandLeavePip(false /* skipAnimation */); } /** Loading packages/SystemUI/src/com/android/systemui/pip/phone/PipMotionHelper.java +9 −7 Original line number Diff line number Diff line Loading @@ -54,7 +54,7 @@ public class PipMotionHelper implements PipAppOpsListener.Callback, private static final int SHRINK_STACK_FROM_MENU_DURATION = 250; private static final int EXPAND_STACK_TO_MENU_DURATION = 250; private static final int EXPAND_STACK_TO_FULLSCREEN_DURATION = 300; private static final int LEAVE_PIP_DURATION = 300; private static final int SHIFT_DURATION = 300; /** Friction to use for PIP when it moves via physics fling animations. */ Loading Loading @@ -304,16 +304,18 @@ public class PipMotionHelper implements PipAppOpsListener.Callback, } /** * Resizes the pinned stack back to fullscreen. * Resizes the pinned stack back to unknown windowing mode, which could be freeform or * * fullscreen depending on the display area's windowing mode. */ void expandPipToFullscreen() { expandPipToFullscreen(false /* skipAnimation */); void expandLeavePip() { expandLeavePip(false /* skipAnimation */); } /** * Resizes the pinned stack back to fullscreen. * Resizes the pinned stack back to unknown windowing mode, which could be freeform or * fullscreen depending on the display area's windowing mode. */ void expandPipToFullscreen(boolean skipAnimation) { void expandLeavePip(boolean skipAnimation) { if (DEBUG) { Log.d(TAG, "exitPip: skipAnimation=" + skipAnimation + " callers=\n" + Debug.getCallers(5, " ")); Loading @@ -323,7 +325,7 @@ public class PipMotionHelper implements PipAppOpsListener.Callback, mPipTaskOrganizer.getUpdateHandler().post(() -> { mPipTaskOrganizer.exitPip(skipAnimation ? 0 : EXPAND_STACK_TO_FULLSCREEN_DURATION); : LEAVE_PIP_DURATION); }); } Loading Loading
packages/SystemUI/src/com/android/systemui/pip/PipAnimationController.java +6 −6 Original line number Diff line number Diff line Loading @@ -53,16 +53,16 @@ public class PipAnimationController { public static final int TRANSITION_DIRECTION_NONE = 0; public static final int TRANSITION_DIRECTION_SAME = 1; public static final int TRANSITION_DIRECTION_TO_PIP = 2; public static final int TRANSITION_DIRECTION_TO_FULLSCREEN = 3; public static final int TRANSITION_DIRECTION_TO_SPLIT_SCREEN = 4; public static final int TRANSITION_DIRECTION_LEAVE_PIP = 3; public static final int TRANSITION_DIRECTION_LEAVE_PIP_TO_SPLIT_SCREEN = 4; public static final int TRANSITION_DIRECTION_REMOVE_STACK = 5; @IntDef(prefix = { "TRANSITION_DIRECTION_" }, value = { TRANSITION_DIRECTION_NONE, TRANSITION_DIRECTION_SAME, TRANSITION_DIRECTION_TO_PIP, TRANSITION_DIRECTION_TO_FULLSCREEN, TRANSITION_DIRECTION_TO_SPLIT_SCREEN, TRANSITION_DIRECTION_LEAVE_PIP, TRANSITION_DIRECTION_LEAVE_PIP_TO_SPLIT_SCREEN, TRANSITION_DIRECTION_REMOVE_STACK }) @Retention(RetentionPolicy.SOURCE) Loading @@ -73,8 +73,8 @@ public class PipAnimationController { } public static boolean isOutPipDirection(@TransitionDirection int direction) { return direction == TRANSITION_DIRECTION_TO_FULLSCREEN || direction == TRANSITION_DIRECTION_TO_SPLIT_SCREEN; return direction == TRANSITION_DIRECTION_LEAVE_PIP || direction == TRANSITION_DIRECTION_LEAVE_PIP_TO_SPLIT_SCREEN; } private final PipSurfaceTransactionHelper mSurfaceTransactionHelper; Loading
packages/SystemUI/src/com/android/systemui/pip/PipTaskOrganizer.java +10 −7 Original line number Diff line number Diff line Loading @@ -23,12 +23,12 @@ import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED; import static com.android.systemui.pip.PipAnimationController.ANIM_TYPE_ALPHA; import static com.android.systemui.pip.PipAnimationController.ANIM_TYPE_BOUNDS; import static com.android.systemui.pip.PipAnimationController.TRANSITION_DIRECTION_LEAVE_PIP; import static com.android.systemui.pip.PipAnimationController.TRANSITION_DIRECTION_LEAVE_PIP_TO_SPLIT_SCREEN; import static com.android.systemui.pip.PipAnimationController.TRANSITION_DIRECTION_NONE; import static com.android.systemui.pip.PipAnimationController.TRANSITION_DIRECTION_REMOVE_STACK; import static com.android.systemui.pip.PipAnimationController.TRANSITION_DIRECTION_SAME; import static com.android.systemui.pip.PipAnimationController.TRANSITION_DIRECTION_TO_FULLSCREEN; import static com.android.systemui.pip.PipAnimationController.TRANSITION_DIRECTION_TO_PIP; import static com.android.systemui.pip.PipAnimationController.TRANSITION_DIRECTION_TO_SPLIT_SCREEN; import static com.android.systemui.pip.PipAnimationController.isInPipDirection; import static com.android.systemui.pip.PipAnimationController.isOutPipDirection; Loading Loading @@ -285,8 +285,8 @@ public class PipTaskOrganizer extends TaskOrganizer implements final WindowContainerTransaction wct = new WindowContainerTransaction(); final Rect destinationBounds = initialConfig.windowConfiguration.getBounds(); final int direction = syncWithSplitScreenBounds(destinationBounds) ? TRANSITION_DIRECTION_TO_SPLIT_SCREEN : TRANSITION_DIRECTION_TO_FULLSCREEN; ? TRANSITION_DIRECTION_LEAVE_PIP_TO_SPLIT_SCREEN : TRANSITION_DIRECTION_LEAVE_PIP; if (orientationDiffers) { // Send started callback though animation is ignored. sendOnPipTransitionStarted(direction); Loading @@ -303,7 +303,10 @@ public class PipTaskOrganizer extends TaskOrganizer implements mSurfaceTransactionHelper.scale(tx, mLeash, destinationBounds, mLastReportedBounds); tx.setWindowCrop(mLeash, destinationBounds.width(), destinationBounds.height()); wct.setActivityWindowingMode(mToken, direction == TRANSITION_DIRECTION_TO_SPLIT_SCREEN // We set to fullscreen here for now, but later it will be set to UNDEFINED for // the proper windowing mode to take place. See #applyWindowingModeChangeOnExit. wct.setActivityWindowingMode(mToken, direction == TRANSITION_DIRECTION_LEAVE_PIP_TO_SPLIT_SCREEN ? WINDOWING_MODE_SPLIT_SCREEN_SECONDARY : WINDOWING_MODE_FULLSCREEN); wct.setBounds(mToken, destinationBounds); Loading @@ -327,7 +330,7 @@ public class PipTaskOrganizer extends TaskOrganizer implements wct.setWindowingMode(mToken, getOutPipWindowingMode()); // Simply reset the activity mode set prior to the animation running. wct.setActivityWindowingMode(mToken, WINDOWING_MODE_UNDEFINED); if (mSplitDivider != null && direction == TRANSITION_DIRECTION_TO_SPLIT_SCREEN) { if (mSplitDivider != null && direction == TRANSITION_DIRECTION_LEAVE_PIP_TO_SPLIT_SCREEN) { wct.reparent(mToken, mSplitDivider.getSecondaryRoot(), true /* onTop */); } } Loading Loading @@ -842,7 +845,7 @@ public class PipTaskOrganizer extends TaskOrganizer implements } else if (isOutPipDirection(direction)) { // If we are animating to fullscreen, then we need to reset the override bounds // on the task to ensure that the task "matches" the parent's bounds. taskBounds = (direction == TRANSITION_DIRECTION_TO_FULLSCREEN) taskBounds = (direction == TRANSITION_DIRECTION_LEAVE_PIP) ? null : destinationBounds; applyWindowingModeChangeOnExit(wct, direction); } else { Loading
packages/SystemUI/src/com/android/systemui/pip/phone/PipAccessibilityInteractionConnection.java +1 −1 Original line number Diff line number Diff line Loading @@ -131,7 +131,7 @@ public class PipAccessibilityInteractionConnection result = true; break; case AccessibilityNodeInfo.ACTION_EXPAND: mMotionHelper.expandPipToFullscreen(); mMotionHelper.expandLeavePip(); result = true; break; default: Loading
packages/SystemUI/src/com/android/systemui/pip/phone/PipManager.java +2 −2 Original line number Diff line number Diff line Loading @@ -181,7 +181,7 @@ public class PipManager implements BasePipManager, PipTaskOrganizer.PipTransitio != WINDOWING_MODE_PINNED) { return; } mTouchHandler.getMotionHelper().expandPipToFullscreen(clearedTask /* skipAnimation */); mTouchHandler.getMotionHelper().expandLeavePip(clearedTask /* skipAnimation */); } }; Loading Loading @@ -318,7 +318,7 @@ public class PipManager implements BasePipManager, PipTaskOrganizer.PipTransitio */ @Override public void expandPip() { mTouchHandler.getMotionHelper().expandPipToFullscreen(false /* skipAnimation */); mTouchHandler.getMotionHelper().expandLeavePip(false /* skipAnimation */); } /** Loading
packages/SystemUI/src/com/android/systemui/pip/phone/PipMotionHelper.java +9 −7 Original line number Diff line number Diff line Loading @@ -54,7 +54,7 @@ public class PipMotionHelper implements PipAppOpsListener.Callback, private static final int SHRINK_STACK_FROM_MENU_DURATION = 250; private static final int EXPAND_STACK_TO_MENU_DURATION = 250; private static final int EXPAND_STACK_TO_FULLSCREEN_DURATION = 300; private static final int LEAVE_PIP_DURATION = 300; private static final int SHIFT_DURATION = 300; /** Friction to use for PIP when it moves via physics fling animations. */ Loading Loading @@ -304,16 +304,18 @@ public class PipMotionHelper implements PipAppOpsListener.Callback, } /** * Resizes the pinned stack back to fullscreen. * Resizes the pinned stack back to unknown windowing mode, which could be freeform or * * fullscreen depending on the display area's windowing mode. */ void expandPipToFullscreen() { expandPipToFullscreen(false /* skipAnimation */); void expandLeavePip() { expandLeavePip(false /* skipAnimation */); } /** * Resizes the pinned stack back to fullscreen. * Resizes the pinned stack back to unknown windowing mode, which could be freeform or * fullscreen depending on the display area's windowing mode. */ void expandPipToFullscreen(boolean skipAnimation) { void expandLeavePip(boolean skipAnimation) { if (DEBUG) { Log.d(TAG, "exitPip: skipAnimation=" + skipAnimation + " callers=\n" + Debug.getCallers(5, " ")); Loading @@ -323,7 +325,7 @@ public class PipMotionHelper implements PipAppOpsListener.Callback, mPipTaskOrganizer.getUpdateHandler().post(() -> { mPipTaskOrganizer.exitPip(skipAnimation ? 0 : EXPAND_STACK_TO_FULLSCREEN_DURATION); : LEAVE_PIP_DURATION); }); } Loading