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

Commit e45265bb authored by Tom Natan's avatar Tom Natan Committed by Automerger Merge Worker
Browse files

Merge "Add letterbox information in ActivityRecord#dump" into sc-dev am: c99e9aff

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

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I1cbedf49f52543b5d4a8ce6f40990306002b27a0
parents 7a58f264 c99e9aff
Loading
Loading
Loading
Loading
+54 −2
Original line number Diff line number Diff line
@@ -214,6 +214,7 @@ import static com.android.server.wm.WindowManagerService.LETTERBOX_BACKGROUND_SO
import static com.android.server.wm.WindowManagerService.MIN_TASK_LETTERBOX_ASPECT_RATIO;
import static com.android.server.wm.WindowManagerService.UPDATE_FOCUS_NORMAL;
import static com.android.server.wm.WindowManagerService.UPDATE_FOCUS_WILL_PLACE_SURFACES;
import static com.android.server.wm.WindowManagerService.letterboxBackgroundTypeToString;
import static com.android.server.wm.WindowState.LEGACY_POLICY_VISIBILITY;
import static com.android.server.wm.WindowStateAnimator.HAS_DRAWN;
import static com.android.server.wm.WindowStateAnimator.ROOT_TASK_CLIP_BEFORE_ANIM;
@@ -1080,6 +1081,46 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
                pw.println(prefix + "configChanges=0x" + Integer.toHexString(info.configChanges));
            }
        }

        dumpLetterboxInfo(pw, prefix);
    }

    private void dumpLetterboxInfo(PrintWriter pw, String prefix) {
        final WindowState mainWin = findMainWindow();
        if (mainWin == null) {
            return;
        }

        boolean isLetterboxed = isLetterboxed(mainWin);
        pw.println(prefix + "isLetterboxed=" + isLetterboxed);
        if (!isLetterboxed) {
            return;
        }

        pw.println(prefix + "  letterboxReason=" + getLetterboxReasonString(mainWin));
        pw.println(prefix + "  letterboxBackgroundColor=" + Integer.toHexString(
                getLetterboxBackgroundColor().toArgb()));
        pw.println(prefix + "  letterboxBackgroundType="
                + letterboxBackgroundTypeToString(mWmService.getLetterboxBackgroundType()));
        pw.println(prefix + "  letterboxAspectRatio="
                + computeAspectRatio(getBounds()));
    }

    /**
     * Returns a string representing the reason for letterboxing. This method assumes the activity
     * is letterboxed.
     */
    private String getLetterboxReasonString(WindowState mainWin) {
        if (inSizeCompatMode()) {
            return "SIZE_COMPAT_MODE";
        }
        if (isLetterboxedForFixedOrientationAndAspectRatio()) {
            return "FIXED_ORIENTATION";
        }
        if (mainWin.isLetterboxedForDisplayCutout()) {
            return "DISPLAY_CUTOUT";
        }
        return "UNKNOWN_REASON";
    }

    void setAppTimeTracker(AppTimeTracker att) {
@@ -7391,8 +7432,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A

        final int containingAppWidth = containingAppBounds.width();
        final int containingAppHeight = containingAppBounds.height();
        final float containingRatio = Math.max(containingAppWidth, containingAppHeight)
                / (float) Math.min(containingAppWidth, containingAppHeight);
        final float containingRatio = computeAspectRatio(containingAppBounds);

        int activityWidth = containingAppWidth;
        int activityHeight = containingAppHeight;
@@ -7455,6 +7495,18 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
                activityHeight + containingAppBounds.top);
    }

    /**
     * Returns the aspect ratio of the given {@code rect}.
     */
    private static float computeAspectRatio(Rect rect) {
        final int width = rect.width();
        final int height = rect.height();
        if (width == 0 || height == 0) {
            return 0;
        }
        return Math.max(width, height) / (float) Math.min(width, height);
    }

    /**
     * @return {@code true} if this activity was reparented to another display but
     *         {@link #ensureActivityConfiguration} is not called.
+15 −0
Original line number Diff line number Diff line
@@ -3971,6 +3971,21 @@ public class WindowManagerService extends IWindowManager.Stub
                    ? backgroundType : LETTERBOX_BACKGROUND_SOLID_COLOR;
    }

    /** Returns a string representing the given {@link LetterboxBackgroundType}. */
    static String letterboxBackgroundTypeToString(
            @LetterboxBackgroundType int backgroundType) {
        switch (backgroundType) {
            case LETTERBOX_BACKGROUND_SOLID_COLOR:
                return "LETTERBOX_BACKGROUND_SOLID_COLOR";
            case LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND:
                return "LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND";
            case LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND_FLOATING:
                return "LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND_FLOATING";
            default:
                return "unknown=" + backgroundType;
        }
    }

    @Override
    public void setIgnoreOrientationRequest(int displayId, boolean ignoreOrientationRequest) {
        if (!checkCallingPermission(