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

Commit c9fc8857 authored by Massimo Carli's avatar Massimo Carli
Browse files

[38/n] Move allowRestrictedResizability to AppCompatResizeOverrides

Flag: EXEMPT Renaming and small refactoring
Bug: 384473893
Test: atest WmTests

Change-Id: Ifbfa841f2c6061ec18e1e501925084d6065c0c3f
parent f4032b0f
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -3209,7 +3209,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
                true /* forActivity */)) {
            return false;
        }
        if (mAppCompatController.mAllowRestrictedResizability.getAsBoolean()) {
        if (mAppCompatController.getAppCompatResizeOverrides().allowRestrictedResizability()) {
            return false;
        }
        // If the user preference respects aspect ratio, then it becomes non-resizable.
@@ -3240,8 +3240,8 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
            // The caller will check both application and activity level property.
            return true;
        }
        return !AppCompatController.allowRestrictedResizability(wms.mContext.getPackageManager(),
                appInfo.packageName);
        return !AppCompatResizeOverrides.allowRestrictedResizability(
                wms.mContext.getPackageManager(), appInfo.packageName);
    }

    boolean isResizeable() {
+4 −38
Original line number Diff line number Diff line
@@ -15,23 +15,17 @@
 */
package com.android.server.wm;

import static android.view.WindowManager.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY;

import android.annotation.NonNull;
import android.content.pm.PackageManager;

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

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

/**
 * Allows the interaction with all the app compat policies and configurations
 */
class AppCompatController {

    @NonNull
    private final ActivityRecord mActivityRecord;
    @NonNull
    private final TransparentPolicy mTransparentPolicy;
    @NonNull
@@ -50,56 +44,28 @@ class AppCompatController {
    private final AppCompatLetterboxPolicy mAppCompatLetterboxPolicy;
    @NonNull
    private final AppCompatSizeCompatModePolicy mAppCompatSizeCompatModePolicy;
    @NonNull
    final BooleanSupplier mAllowRestrictedResizability;

    AppCompatController(@NonNull WindowManagerService wmService,
                        @NonNull ActivityRecord activityRecord) {
        mActivityRecord = activityRecord;
        final PackageManager packageManager = wmService.mContext.getPackageManager();
        final OptPropFactory optPropBuilder = new OptPropFactory(packageManager,
                activityRecord.packageName);
        mAppCompatDeviceStateQuery = new AppCompatDeviceStateQuery(activityRecord);
        mTransparentPolicy = new TransparentPolicy(activityRecord,
                wmService.mAppCompatConfiguration);
        mAppCompatOverrides = new AppCompatOverrides(activityRecord,
        mAppCompatOverrides = new AppCompatOverrides(activityRecord, packageManager,
                wmService.mAppCompatConfiguration, optPropBuilder, mAppCompatDeviceStateQuery);
        mOrientationPolicy = new AppCompatOrientationPolicy(activityRecord, mAppCompatOverrides);
        mAppCompatAspectRatioPolicy = new AppCompatAspectRatioPolicy(activityRecord,
                mTransparentPolicy, mAppCompatOverrides);
        mAppCompatReachabilityPolicy = new AppCompatReachabilityPolicy(mActivityRecord,
        mAppCompatReachabilityPolicy = new AppCompatReachabilityPolicy(activityRecord,
                wmService.mAppCompatConfiguration);
        mAppCompatLetterboxPolicy = new AppCompatLetterboxPolicy(mActivityRecord,
        mAppCompatLetterboxPolicy = new AppCompatLetterboxPolicy(activityRecord,
                wmService.mAppCompatConfiguration);
        mDesktopAppCompatAspectRatioPolicy = new DesktopAppCompatAspectRatioPolicy(activityRecord,
                mAppCompatOverrides, mTransparentPolicy, wmService.mAppCompatConfiguration);
        mAppCompatSizeCompatModePolicy = new AppCompatSizeCompatModePolicy(mActivityRecord,
        mAppCompatSizeCompatModePolicy = new AppCompatSizeCompatModePolicy(activityRecord,
                mAppCompatOverrides);
        mAllowRestrictedResizability = AppCompatUtils.asLazy(() -> {
            // Application level.
            if (allowRestrictedResizability(packageManager, mActivityRecord.packageName)) {
                return true;
            }
            // Activity level.
            try {
                return packageManager.getPropertyAsUser(
                        PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY,
                        mActivityRecord.mActivityComponent.getPackageName(),
                        mActivityRecord.mActivityComponent.getClassName(),
                        mActivityRecord.mUserId).getBoolean();
            } catch (PackageManager.NameNotFoundException e) {
                return false;
            }
        });
    }

    static boolean allowRestrictedResizability(PackageManager pm, String packageName) {
        try {
            return pm.getProperty(PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY, packageName)
                    .getBoolean();
        } catch (PackageManager.NameNotFoundException e) {
            return false;
        }
    }

    @NonNull
+4 −1
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.server.wm;

import android.annotation.NonNull;
import android.content.pm.PackageManager;

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

@@ -41,6 +42,7 @@ public class AppCompatOverrides {
    private final AppCompatLetterboxOverrides mAppCompatLetterboxOverrides;

    AppCompatOverrides(@NonNull ActivityRecord activityRecord,
            @NonNull PackageManager packageManager,
            @NonNull AppCompatConfiguration appCompatConfiguration,
            @NonNull OptPropFactory optPropBuilder,
            @NonNull AppCompatDeviceStateQuery appCompatDeviceStateQuery) {
@@ -55,7 +57,8 @@ public class AppCompatOverrides {
                mAppCompatReachabilityOverrides);
        mAppCompatFocusOverrides = new AppCompatFocusOverrides(activityRecord,
                appCompatConfiguration, optPropBuilder);
        mAppCompatResizeOverrides = new AppCompatResizeOverrides(activityRecord, optPropBuilder);
        mAppCompatResizeOverrides = new AppCompatResizeOverrides(activityRecord, packageManager,
                optPropBuilder);
        mAppCompatLetterboxOverrides = new AppCompatLetterboxOverrides(activityRecord,
                appCompatConfiguration);
    }
+38 −0
Original line number Diff line number Diff line
@@ -19,13 +19,17 @@ package com.android.server.wm;
import static android.content.pm.ActivityInfo.FORCE_NON_RESIZE_APP;
import static android.content.pm.ActivityInfo.FORCE_RESIZE_APP;
import static android.view.WindowManager.PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES;
import static android.view.WindowManager.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY;

import static com.android.server.wm.AppCompatUtils.isChangeEnabled;

import android.annotation.NonNull;
import android.content.pm.PackageManager;

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

import java.util.function.BooleanSupplier;

/**
 * Encapsulate app compat logic about resizability.
 */
@@ -37,11 +41,40 @@ class AppCompatResizeOverrides {
    @NonNull
    private final OptPropFactory.OptProp mAllowForceResizeOverrideOptProp;

    @NonNull
    private final BooleanSupplier mAllowRestrictedResizability;

    AppCompatResizeOverrides(@NonNull ActivityRecord activityRecord,
            @NonNull PackageManager packageManager,
            @NonNull OptPropFactory optPropBuilder) {
        mActivityRecord = activityRecord;
        mAllowForceResizeOverrideOptProp = optPropBuilder.create(
                PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES);
        mAllowRestrictedResizability = AppCompatUtils.asLazy(() -> {
            // Application level.
            if (allowRestrictedResizability(packageManager, mActivityRecord.packageName)) {
                return true;
            }
            // Activity level.
            try {
                return packageManager.getPropertyAsUser(
                        PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY,
                        mActivityRecord.mActivityComponent.getPackageName(),
                        mActivityRecord.mActivityComponent.getClassName(),
                        mActivityRecord.mUserId).getBoolean();
            } catch (PackageManager.NameNotFoundException e) {
                return false;
            }
        });
    }

    static boolean allowRestrictedResizability(PackageManager pm, String packageName) {
        try {
            return pm.getProperty(PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY, packageName)
                    .getBoolean();
        } catch (PackageManager.NameNotFoundException e) {
            return false;
        }
    }

    /**
@@ -75,4 +108,9 @@ class AppCompatResizeOverrides {
        return mAllowForceResizeOverrideOptProp.shouldEnableWithOptInOverrideAndOptOutProperty(
                isChangeEnabled(mActivityRecord, FORCE_NON_RESIZE_APP));
    }

    /** @see android.view.WindowManager#PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY */
    boolean allowRestrictedResizability() {
        return mAllowRestrictedResizability.getAsBoolean();
    }
}