Loading services/core/java/com/android/server/wm/ActivityRecord.java +3 −3 Original line number Diff line number Diff line Loading @@ -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. Loading Loading @@ -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() { Loading services/core/java/com/android/server/wm/AppCompatController.java +4 −38 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading services/core/java/com/android/server/wm/AppCompatOverrides.java +4 −1 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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) { Loading @@ -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); } Loading services/core/java/com/android/server/wm/AppCompatResizeOverrides.java +38 −0 Original line number Diff line number Diff line Loading @@ -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. */ Loading @@ -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; } } /** Loading Loading @@ -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(); } } Loading
services/core/java/com/android/server/wm/ActivityRecord.java +3 −3 Original line number Diff line number Diff line Loading @@ -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. Loading Loading @@ -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() { Loading
services/core/java/com/android/server/wm/AppCompatController.java +4 −38 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading
services/core/java/com/android/server/wm/AppCompatOverrides.java +4 −1 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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) { Loading @@ -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); } Loading
services/core/java/com/android/server/wm/AppCompatResizeOverrides.java +38 −0 Original line number Diff line number Diff line Loading @@ -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. */ Loading @@ -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; } } /** Loading Loading @@ -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(); } }