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

Commit 25789068 authored by Chris Li's avatar Chris Li Committed by Automerger Merge Worker
Browse files

Merge "Check app targetSdkVersion when check minWidth/Height for multi window"...

Merge "Check app targetSdkVersion when check minWidth/Height for multi window" into sc-v2-dev am: 73da25c9 am: 4a955cf3

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/16169728

Change-Id: If37464995f0b0bcc1f43034f1d063e3743c1a2d1
parents 915736a9 4a955cf3
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import android.app.Activity;
import android.app.compat.CompatChanges;
import android.compat.annotation.ChangeId;
import android.compat.annotation.Disabled;
import android.compat.annotation.EnabledSince;
import android.compat.annotation.Overridable;
import android.compat.annotation.UnsupportedAppUsage;
import android.content.ComponentName;
@@ -1041,6 +1042,14 @@ public class ActivityInfo extends ComponentInfo implements Parcelable {
    @TestApi
    public static final float OVERRIDE_MIN_ASPECT_RATIO_LARGE_VALUE = 16 / 9f;

    /**
     * Compares activity window layout min width/height with require space for multi window to
     * determine if it can be put into multi window mode.
     */
    @ChangeId
    @EnabledSince(targetSdkVersion = Build.VERSION_CODES.S)
    private static final long CHECK_MIN_WIDTH_HEIGHT_FOR_MULTI_WINDOW = 197654537L;

    /**
     * Convert Java change bits to native.
     *
@@ -1481,6 +1490,17 @@ public class ActivityInfo extends ComponentInfo implements Parcelable {
        }
    }

    /**
     * Whether we should compare activity window layout min width/height with require space for
     * multi window to determine if it can be put into multi window mode.
     * @hide
     */
    public boolean shouldCheckMinWidthHeightForMultiWindow() {
        return CompatChanges.isChangeEnabled(CHECK_MIN_WIDTH_HEIGHT_FOR_MULTI_WINDOW,
                applicationInfo.packageName,
                UserHandle.getUserHandleForUid(applicationInfo.uid));
    }

    public void dump(Printer pw, String prefix) {
        dump(pw, prefix, DUMP_FLAG_ALL);
    }
+1 −1
Original line number Diff line number Diff line
@@ -2710,7 +2710,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
        final ActivityInfo.WindowLayout windowLayout = info.windowLayout;
        return windowLayout == null
                || tda.supportsActivityMinWidthHeightMultiWindow(windowLayout.minWidth,
                windowLayout.minHeight);
                windowLayout.minHeight, info);
    }

    /**
+8 −3
Original line number Diff line number Diff line
@@ -46,6 +46,7 @@ import android.annotation.ColorInt;
import android.annotation.Nullable;
import android.app.ActivityOptions;
import android.app.WindowConfiguration;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.os.UserHandle;
import android.util.IntArray;
@@ -1633,13 +1634,17 @@ final class TaskDisplayArea extends DisplayArea<WindowContainer> {
     * Whether we can show activity requesting the given min width/height in multi window below
     * this {@link TaskDisplayArea}.
     */
    boolean supportsActivityMinWidthHeightMultiWindow(int minWidth, int minHeight) {
        final int configRespectsActivityMinWidthHeightMultiWindow =
                mAtmService.mRespectsActivityMinWidthHeightMultiWindow;
    boolean supportsActivityMinWidthHeightMultiWindow(int minWidth, int minHeight,
            @Nullable ActivityInfo activityInfo) {
        if (activityInfo != null && !activityInfo.shouldCheckMinWidthHeightForMultiWindow()) {
            return true;
        }
        if (minWidth <= 0 && minHeight <= 0) {
            // No request min width/height.
            return true;
        }
        final int configRespectsActivityMinWidthHeightMultiWindow =
                mAtmService.mRespectsActivityMinWidthHeightMultiWindow;
        if (configRespectsActivityMinWidthHeightMultiWindow == -1) {
            // Device override to ignore min width/height.
            return true;
+3 −1
Original line number Diff line number Diff line
@@ -1768,7 +1768,9 @@ class TaskFragment extends WindowContainer<WindowContainer> {
            return false;
        }

        return tda.supportsActivityMinWidthHeightMultiWindow(mMinWidth, mMinHeight);
        final ActivityRecord rootActivity = getTask().getRootActivity();
        return tda.supportsActivityMinWidthHeightMultiWindow(mMinWidth, mMinHeight,
                rootActivity != null ? rootActivity.info : null);
    }

    private int getTaskId() {