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

Commit 52784190 authored by Vladimir Komsiyski's avatar Vladimir Komsiyski Committed by Android (Google) Code Review
Browse files

Merge "Display-aware windowing modes." into main

parents a95895ed 65266ce1
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -184,7 +184,9 @@ public class ActivityOptions extends ComponentOptions {
     * If the key is not found, previous bounds will be preserved.
     * NOTE: This value is ignored on devices that don't have
     * {@link android.content.pm.PackageManager#FEATURE_FREEFORM_WINDOW_MANAGEMENT} or
     * {@link android.content.pm.PackageManager#FEATURE_PICTURE_IN_PICTURE} enabled.
     * {@link android.content.pm.PackageManager#FEATURE_PICTURE_IN_PICTURE} enabled, and on displays
     * that don't support {@link WindowConfiguration#WINDOWING_MODE_FREEFORM} and
     * {@link WindowConfiguration#WINDOWING_MODE_PINNED}.
     * @hide
     */
    public static final String KEY_LAUNCH_BOUNDS = "android:activity.launchBounds";
@@ -1483,7 +1485,8 @@ public class ActivityOptions extends ComponentOptions {
     * <p>
     * <strong>NOTE:</strong> This value is ignored on devices that don't have
     * {@link android.content.pm.PackageManager#FEATURE_FREEFORM_WINDOW_MANAGEMENT} or
     * {@link android.content.pm.PackageManager#FEATURE_PICTURE_IN_PICTURE} enabled.
     * {@link android.content.pm.PackageManager#FEATURE_PICTURE_IN_PICTURE} enabled, and on displays
     * that don't support freeform and PiP windows.
     * @param screenSpacePixelRect launch bounds
     * @return {@code this} {@link ActivityOptions} instance
     */
+3 −1
Original line number Diff line number Diff line
@@ -68,9 +68,11 @@ public abstract class DisplayWindowPolicyController {
    public DisplayWindowPolicyController() {
        synchronized (mSupportedWindowingModes) {
            mSupportedWindowingModes.add(WindowConfiguration.WINDOWING_MODE_FULLSCREEN);
            if (!android.companion.virtualdevice.flags.Flags.gwpcAwareWindowingMode()) {
                mSupportedWindowingModes.add(WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW);
            }
        }
    }

    /**
     * Returns {@code true} if the given window flags contain the flags that we're interested in.
+0 −13
Original line number Diff line number Diff line
@@ -33,7 +33,6 @@ import android.app.WindowConfiguration;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.UserInfo;
import android.os.Bundle;
import android.os.IBinder;
@@ -309,18 +308,6 @@ public class ActivityManagerWrapper {
        }
    }

    /**
     * Returns true if the system supports freeform multi-window.
     */
    public boolean supportsFreeformMultiWindow(Context context) {
        final boolean freeformDevOption = Settings.Global.getInt(context.getContentResolver(),
                Settings.Global.DEVELOPMENT_ENABLE_FREEFORM_WINDOWS_SUPPORT, 0) != 0;
        return ActivityTaskManager.supportsMultiWindow(context)
                && (context.getPackageManager().hasSystemFeature(
                PackageManager.FEATURE_FREEFORM_WINDOW_MANAGEMENT)
                || freeformDevOption);
    }

    /**
     * Returns true if the running task represents the home task
     */
+2 −1
Original line number Diff line number Diff line
@@ -316,7 +316,8 @@ public class GenericWindowPolicyController extends DisplayWindowPolicyController
            logActivityLaunchBlocked("Mirror virtual displays cannot contain activities.");
            return false;
        }
        if (!isWindowingModeSupported(windowingMode)) {
        if (!android.companion.virtualdevice.flags.Flags.gwpcAwareWindowingMode()
                && !isWindowingModeSupported(windowingMode)) {
            logActivityLaunchBlocked(
                    "Virtual device doesn't support windowing mode " + windowingMode);
            return false;
+6 −1
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ import static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED;
import static android.app.WindowConfiguration.ROTATION_UNDEFINED;
import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
import static android.app.WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW;
import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED;
@@ -3224,7 +3225,11 @@ final class ActivityRecord extends WindowToken {
     *         windowing mode if it is in the given {@link TaskDisplayArea}.
     */
    boolean supportsFreeformInDisplayArea(@Nullable TaskDisplayArea tda) {
        return mAtmService.mSupportsFreeformWindowManagement
        return tda != null
                && tda.isWindowingModeSupported(WINDOWING_MODE_FREEFORM,
                        mAtmService.mSupportsMultiWindow,
                        mAtmService.mSupportsFreeformWindowManagement,
                        mAtmService.mSupportsPictureInPicture)
                && supportsMultiWindowInDisplayArea(tda);
    }

Loading