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

Commit 80fa2d88 authored by Winson Chung's avatar Winson Chung
Browse files

Add feature check before entering PIP.

Bug: 72063615
Test: ActivityManagerPinnedStackTests
Change-Id: I4bed3a39c28c62121db47b8a61dda2516e41d245
parent bb2af291
Loading
Loading
Loading
Loading
+16 −2
Original line number Diff line number Diff line
@@ -2136,11 +2136,15 @@ public class Activity extends ContextThemeWrapper
     * @param params non-null parameters to be combined with previously set parameters when entering
     * picture-in-picture.
     *
     * @return true if the system puts this activity into picture-in-picture mode or was already
     * in picture-in-picture mode (@see {@link #isInPictureInPictureMode())
     * @return true if the system successfully put this activity into picture-in-picture mode or was
     * already in picture-in-picture mode (@see {@link #isInPictureInPictureMode()). If the device
     * does not support picture-in-picture, return false.
     */
    public boolean enterPictureInPictureMode(@NonNull PictureInPictureParams params) {
        try {
            if (!deviceSupportsPictureInPictureMode()) {
                return false;
            }
            if (params == null) {
                throw new IllegalArgumentException("Expected non-null picture-in-picture params");
            }
@@ -2168,6 +2172,9 @@ public class Activity extends ContextThemeWrapper
     */
    public void setPictureInPictureParams(@NonNull PictureInPictureParams params) {
        try {
            if (!deviceSupportsPictureInPictureMode()) {
                return;
            }
            if (params == null) {
                throw new IllegalArgumentException("Expected non-null picture-in-picture params");
            }
@@ -2190,6 +2197,13 @@ public class Activity extends ContextThemeWrapper
        }
    }

    /**
     * @return Whether this device supports picture-in-picture.
     */
    private boolean deviceSupportsPictureInPictureMode() {
        return getPackageManager().hasSystemFeature(PackageManager.FEATURE_PICTURE_IN_PICTURE);
    }

    void dispatchMovedToDisplay(int displayId, Configuration config) {
        updateDisplay(displayId);
        onMovedToDisplay(displayId, config);