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

Commit 93e6471c authored by Massimo Carli's avatar Massimo Carli Committed by Android (Google) Code Review
Browse files

Merge "[32/n] Delete LetterboxUiController and move dump()" into main

parents f4c52eab 4575a97d
Loading
Loading
Loading
Loading
+3 −7
Original line number Diff line number Diff line
@@ -789,8 +789,6 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
     */
    private boolean mWillCloseOrEnterPip;

    final LetterboxUiController mLetterboxUiController;

    /**
     * App Compat Facade
     */
@@ -1324,7 +1322,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
            pw.print(prefix); pw.println("mWaitForEnteringPinnedMode=true");
        }

        mLetterboxUiController.dump(pw, prefix);
        mAppCompatController.dump(pw, prefix);
    }

    static boolean dumpActivity(FileDescriptor fd, PrintWriter pw, int index, ActivityRecord r,
@@ -1988,12 +1986,10 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
        }

        // Don't move below setActivityType since it triggers onConfigurationChange ->
        // resolveOverrideConfiguration that requires having mLetterboxUiController initialised.
        // resolveOverrideConfiguration that requires having mAppCompatController initialised.
        // Don't move below setOrientation(info.screenOrientation) since it triggers
        // getOverrideOrientation that requires having mLetterboxUiController
        // initialised.
        // getOverrideOrientation that requires having mAppCompatController initialised.
        mAppCompatController = new AppCompatController(mWmService, this);
        mLetterboxUiController = new LetterboxUiController(mWmService, this);
        mResolveConfigHint = new TaskFragment.ConfigOverrideHint();
        if (mWmService.mFlags.mInsetsDecoupledConfiguration) {
            // When the stable configuration is the default behavior, override for the legacy apps
+21 −0
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ import com.android.internal.R;
import com.android.internal.annotations.VisibleForTesting;
import com.android.server.wm.utils.DimenPxIntSupplier;

import java.io.PrintWriter;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.function.Function;
@@ -1382,6 +1383,26 @@ final class AppCompatConfiguration {
        setUserAppAspectRatioFullscreenOverrideEnabled(false);
    }

    void dump(@NonNull PrintWriter pw, @NonNull String prefix) {
        // TODO(b/359438445): Add more useful information to dump().
        pw.println(prefix + "  letterboxPositionForHorizontalReachability="
                + letterboxHorizontalReachabilityPositionToString(
                    getLetterboxPositionForHorizontalReachability(
                            /* isInFullScreenBookMode */ false)));
        pw.println(prefix + "  letterboxPositionForVerticalReachability="
                + letterboxVerticalReachabilityPositionToString(
                    getLetterboxPositionForVerticalReachability(
                            /* isInFullScreenTabletopMode */ false)));
        pw.println(prefix + "  fixedOrientationLetterboxAspectRatio="
                + getFixedOrientationLetterboxAspectRatio());
        pw.println(prefix + "  defaultMinAspectRatioForUnresizableApps="
                + getDefaultMinAspectRatioForUnresizableApps());
        pw.println(prefix + "  isSplitScreenAspectRatioForUnresizableAppsEnabled="
                + getIsSplitScreenAspectRatioForUnresizableAppsEnabled());
        pw.println(prefix + "  isDisplayAspectRatioEnabledForFixedOrientationLetterbox="
                + getIsDisplayAspectRatioEnabledForFixedOrientationLetterbox());
    }

    /**
     * Checks whether the multiplier is between [0,1].
     *
+9 −1
Original line number Diff line number Diff line
@@ -21,6 +21,8 @@ import android.content.pm.PackageManager;

import com.android.server.wm.utils.OptPropFactory;

import java.io.PrintWriter;

/**
 * Allows the interaction with all the app compat policies and configurations
 */
@@ -59,7 +61,8 @@ class AppCompatController {
                mTransparentPolicy, mAppCompatOverrides);
        mAppCompatReachabilityPolicy = new AppCompatReachabilityPolicy(mActivityRecord,
                wmService.mAppCompatConfiguration);
        mAppCompatLetterboxPolicy = new AppCompatLetterboxPolicy(mActivityRecord);
        mAppCompatLetterboxPolicy = new AppCompatLetterboxPolicy(mActivityRecord,
                wmService.mAppCompatConfiguration);
    }

    @NonNull
@@ -140,4 +143,9 @@ class AppCompatController {
        return mAppCompatOverrides.getAppCompatLetterboxOverrides();
    }

    void dump(@NonNull PrintWriter pw, @NonNull String prefix) {
        getTransparentPolicy().dump(pw, prefix);
        getAppCompatLetterboxPolicy().dump(pw, prefix);
    }

}
+40 −1
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_STARTING;
import static android.view.WindowManager.LayoutParams.TYPE_BASE_APPLICATION;

import static com.android.server.wm.AppCompatConfiguration.LETTERBOX_BACKGROUND_WALLPAPER;
import static com.android.server.wm.AppCompatConfiguration.letterboxBackgroundTypeToString;

import android.annotation.NonNull;
import android.annotation.Nullable;
@@ -32,6 +33,8 @@ import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.statusbar.LetterboxDetails;
import com.android.server.wm.AppCompatConfiguration.LetterboxBackgroundType;

import java.io.PrintWriter;

/**
 * Encapsulates the logic for the Letterboxing policy.
 */
@@ -43,15 +46,19 @@ class AppCompatLetterboxPolicy {
    private final LetterboxPolicyState mLetterboxPolicyState;
    @NonNull
    private final AppCompatRoundedCorners mAppCompatRoundedCorners;
    @NonNull
    private final AppCompatConfiguration mAppCompatConfiguration;

    private boolean mLastShouldShowLetterboxUi;

    AppCompatLetterboxPolicy(@NonNull ActivityRecord  activityRecord) {
    AppCompatLetterboxPolicy(@NonNull ActivityRecord  activityRecord,
            @NonNull AppCompatConfiguration appCompatConfiguration) {
        mActivityRecord = activityRecord;
        mLetterboxPolicyState = new LetterboxPolicyState();
        // TODO (b/358334569) Improve cutout logic dependency on app compat.
        mAppCompatRoundedCorners = new AppCompatRoundedCorners(mActivityRecord,
                this::isLetterboxedNotForDisplayCutout);
        mAppCompatConfiguration = appCompatConfiguration;
    }

    /** Cleans up {@link Letterbox} if it exists.*/
@@ -156,6 +163,38 @@ class AppCompatLetterboxPolicy {
        return mAppCompatRoundedCorners.getRoundedCornersRadius(mainWindow);
    }

    void dump(@NonNull PrintWriter pw, @NonNull String prefix) {
        final WindowState mainWin = mActivityRecord.findMainWindow();
        if (mainWin == null) {
            return;
        }
        boolean areBoundsLetterboxed = mainWin.areAppWindowBoundsLetterboxed();
        pw.println(prefix + "areBoundsLetterboxed=" + areBoundsLetterboxed);
        pw.println(prefix + "isLetterboxRunning=" + isRunning());
        if (!areBoundsLetterboxed) {
            return;
        }
        pw.println(prefix + "  letterboxReason="
                + AppCompatUtils.getLetterboxReasonString(mActivityRecord, mainWin));
        mActivityRecord.mAppCompatController.getAppCompatReachabilityPolicy().dump(pw, prefix);
        final AppCompatLetterboxOverrides letterboxOverride = mActivityRecord.mAppCompatController
                .getAppCompatLetterboxOverrides();
        pw.println(prefix + "  letterboxBackgroundColor=" + Integer.toHexString(
                letterboxOverride.getLetterboxBackgroundColor().toArgb()));
        pw.println(prefix + "  letterboxBackgroundType="
                + letterboxBackgroundTypeToString(letterboxOverride.getLetterboxBackgroundType()));
        pw.println(prefix + "  letterboxCornerRadius=" + getRoundedCornersRadius(mainWin));
        if (letterboxOverride.getLetterboxBackgroundType() == LETTERBOX_BACKGROUND_WALLPAPER) {
            pw.println(prefix + "  isLetterboxWallpaperBlurSupported="
                    + letterboxOverride.isLetterboxWallpaperBlurSupported());
            pw.println(prefix + "  letterboxBackgroundWallpaperDarkScrimAlpha="
                    + letterboxOverride.getLetterboxWallpaperDarkScrimAlpha());
            pw.println(prefix + "  letterboxBackgroundWallpaperBlurRadius="
                    + letterboxOverride.getLetterboxWallpaperBlurRadiusPx());
        }
        mAppCompatConfiguration.dump(pw, prefix);
    }

    private void updateWallpaperForLetterbox(@NonNull WindowState mainWindow) {
        final AppCompatLetterboxOverrides letterboxOverrides = mActivityRecord
                .mAppCompatController.getAppCompatLetterboxOverrides();
+20 −0
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ import android.graphics.Rect;

import com.android.internal.annotations.VisibleForTesting;

import java.io.PrintWriter;
import java.util.function.Supplier;

/**
@@ -74,6 +75,25 @@ class AppCompatReachabilityPolicy {
        handleVerticalDoubleTap(y);
    }

    void dump(@NonNull PrintWriter pw, @NonNull String prefix) {
        final AppCompatReachabilityOverrides reachabilityOverrides =
                mActivityRecord.mAppCompatController.getAppCompatReachabilityOverrides();
        pw.println(prefix + "  isVerticalThinLetterboxed=" + reachabilityOverrides
                .isVerticalThinLetterboxed());
        pw.println(prefix + "  isHorizontalThinLetterboxed=" + reachabilityOverrides
                .isHorizontalThinLetterboxed());
        pw.println(prefix + "  isHorizontalReachabilityEnabled="
                + reachabilityOverrides.isHorizontalReachabilityEnabled());
        pw.println(prefix + "  isVerticalReachabilityEnabled="
                + reachabilityOverrides.isVerticalReachabilityEnabled());
        pw.println(prefix + "  letterboxHorizontalPositionMultiplier="
                + reachabilityOverrides.getHorizontalPositionMultiplier(
                mActivityRecord.getParent().getConfiguration()));
        pw.println(prefix + "  letterboxVerticalPositionMultiplier="
                + reachabilityOverrides.getVerticalPositionMultiplier(
                mActivityRecord.getParent().getConfiguration()));
    }

    private void handleHorizontalDoubleTap(int x) {
        final AppCompatReachabilityOverrides reachabilityOverrides =
                mActivityRecord.mAppCompatController.getAppCompatReachabilityOverrides();
Loading