Loading services/core/java/com/android/server/wm/ActivityRecord.java +20 −18 Original line number Diff line number Diff line Loading @@ -8436,7 +8436,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A newParentConfiguration = mTmpConfig; } mAppCompatController.getAppCompatAspectRatioPolicy().reset(); mAppCompatController.getAspectRatioPolicy().reset(); mIsEligibleForFixedOrientationLetterbox = false; mResolveConfigHint.resolveTmpOverrides(mDisplayContent, newParentConfiguration, isFixedRotationTransforming()); Loading Loading @@ -8467,7 +8467,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A // If activity in fullscreen mode is letterboxed because of fixed orientation then bounds // are already calculated in resolveFixedOrientationConfiguration. // Don't apply aspect ratio if app is overridden to fullscreen by device user/manufacturer. if (!mAppCompatController.getAppCompatAspectRatioPolicy() if (!mAppCompatController.getAspectRatioPolicy() .isLetterboxedForFixedOrientationAndAspectRatio() && !mAppCompatController.getAppCompatAspectRatioOverrides() .hasFullscreenOverride()) { Loading Loading @@ -8504,7 +8504,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A // Fixed orientation letterboxing is possible on both large screen devices // with ignoreOrientationRequest enabled and on phones in split screen even with // ignoreOrientationRequest disabled. && (mAppCompatController.getAppCompatAspectRatioPolicy() && (mAppCompatController.getAspectRatioPolicy() .isLetterboxedForFixedOrientationAndAspectRatio() // Limiting check for aspect ratio letterboxing to devices with enabled // ignoreOrientationRequest. This avoids affecting phones where apps may Loading @@ -8513,7 +8513,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A // accurate on phones shouldn't make the big difference and is expected // to be already well-tested by apps. || (isIgnoreOrientationRequest && mAppCompatController.getAppCompatAspectRatioPolicy().isAspectRatioApplied()))) { && mAppCompatController.getAspectRatioPolicy().isAspectRatioApplied()))) { // TODO(b/264034555): Use mDisplayContent to calculate smallestScreenWidthDp from all // rotations and only re-calculate if parent bounds have non-orientation size change. resolvedConfig.smallestScreenWidthDp = Loading Loading @@ -8633,13 +8633,13 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A // letterboxed for fixed orientation. Aspect ratio restrictions are also applied if // present. But this doesn't return true when the activity is letterboxed only because // of aspect ratio restrictions. if (mAppCompatController.getAppCompatAspectRatioPolicy() .isLetterboxedForFixedOrientationAndAspectRatio()) { final AppCompatAspectRatioPolicy aspectRatioPolicy = mAppCompatController.getAspectRatioPolicy(); if (aspectRatioPolicy.isLetterboxedForFixedOrientationAndAspectRatio()) { return APP_COMPAT_STATE_CHANGED__STATE__LETTERBOXED_FOR_FIXED_ORIENTATION; } // Letterbox for limited aspect ratio. if (mAppCompatController.getAppCompatAspectRatioPolicy() .isLetterboxedForAspectRatioOnly()) { if (aspectRatioPolicy.isLetterboxedForAspectRatioOnly()) { return APP_COMPAT_STATE_CHANGED__STATE__LETTERBOXED_FOR_ASPECT_RATIO; } Loading Loading @@ -8966,8 +8966,10 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A final Rect prevResolvedBounds = new Rect(resolvedBounds); resolvedBounds.set(containingBounds); mAppCompatController.getAppCompatAspectRatioPolicy() .applyDesiredAspectRatio(newParentConfig, parentBounds, resolvedBounds, final AppCompatAspectRatioPolicy aspectRatioPolicy = mAppCompatController .getAspectRatioPolicy(); aspectRatioPolicy.applyDesiredAspectRatio(newParentConfig, parentBounds, resolvedBounds, containingBoundsWithInsets, containingBounds); if (appCompatDisplayInsets != null) { Loading Loading @@ -8996,8 +8998,8 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A // for comparison with size compat app bounds in {@link resolveSizeCompatModeConfiguration}. mResolveConfigHint.mTmpCompatInsets = appCompatDisplayInsets; computeConfigByResolveHint(getResolvedOverrideConfiguration(), newParentConfig); mAppCompatController.getAppCompatAspectRatioPolicy() .setLetterboxBoundsForFixedOrientationAndAspectRatio(new Rect(resolvedBounds)); aspectRatioPolicy.setLetterboxBoundsForFixedOrientationAndAspectRatio( new Rect(resolvedBounds)); } /** Loading @@ -9014,8 +9016,9 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A // Use tmp bounds to calculate aspect ratio so we can know whether the activity should use // restricted size (resolved bounds may be the requested override bounds). mTmpBounds.setEmpty(); mAppCompatController.getAppCompatAspectRatioPolicy() .applyAspectRatioForLetterbox(mTmpBounds, parentAppBounds, parentBounds); final AppCompatAspectRatioPolicy aspectRatioPolicy = mAppCompatController .getAspectRatioPolicy(); aspectRatioPolicy.applyAspectRatioForLetterbox(mTmpBounds, parentAppBounds, parentBounds); // If the out bounds is not empty, it means the activity cannot fill parent's app bounds, // then they should be aligned later in #updateResolvedBoundsPosition() if (!mTmpBounds.isEmpty()) { Loading @@ -9026,8 +9029,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A // restrict, the bounds should be the requested override bounds. mResolveConfigHint.mTmpOverrideDisplayInfo = getFixedRotationTransformDisplayInfo(); computeConfigByResolveHint(resolvedConfig, newParentConfiguration); mAppCompatController.getAppCompatAspectRatioPolicy() .setLetterboxBoundsForAspectRatio(new Rect(resolvedBounds)); aspectRatioPolicy.setLetterboxBoundsForAspectRatio(new Rect(resolvedBounds)); } } Loading Loading @@ -9277,11 +9279,11 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A * Returns the min aspect ratio of this activity. */ float getMinAspectRatio() { return mAppCompatController.getAppCompatAspectRatioPolicy().getMinAspectRatio(); return mAppCompatController.getAspectRatioPolicy().getMinAspectRatio(); } float getMaxAspectRatio() { return mAppCompatController.getAppCompatAspectRatioPolicy().getMaxAspectRatio(); return mAppCompatController.getAspectRatioPolicy().getMaxAspectRatio(); } /** Loading services/core/java/com/android/server/wm/AppCompatController.java +4 −4 Original line number Diff line number Diff line Loading @@ -31,7 +31,7 @@ class AppCompatController { @NonNull private final AppCompatOrientationPolicy mOrientationPolicy; @NonNull private final AppCompatAspectRatioPolicy mAppCompatAspectRatioPolicy; private final AppCompatAspectRatioPolicy mAspectRatioPolicy; @NonNull private final AppCompatReachabilityPolicy mReachabilityPolicy; @NonNull Loading @@ -56,7 +56,7 @@ class AppCompatController { mAppCompatOverrides = new AppCompatOverrides(activityRecord, packageManager, wmService.mAppCompatConfiguration, optPropBuilder, mAppCompatDeviceStateQuery); mOrientationPolicy = new AppCompatOrientationPolicy(activityRecord, mAppCompatOverrides); mAppCompatAspectRatioPolicy = new AppCompatAspectRatioPolicy(activityRecord, mAspectRatioPolicy = new AppCompatAspectRatioPolicy(activityRecord, mTransparentPolicy, mAppCompatOverrides); mReachabilityPolicy = new AppCompatReachabilityPolicy(activityRecord, wmService.mAppCompatConfiguration); Loading @@ -79,8 +79,8 @@ class AppCompatController { } @NonNull AppCompatAspectRatioPolicy getAppCompatAspectRatioPolicy() { return mAppCompatAspectRatioPolicy; AppCompatAspectRatioPolicy getAspectRatioPolicy() { return mAspectRatioPolicy; } @NonNull Loading services/core/java/com/android/server/wm/AppCompatOrientationOverrides.java +1 −1 Original line number Diff line number Diff line Loading @@ -144,7 +144,7 @@ class AppCompatOrientationOverrides { mOrientationOverridesState.updateOrientationRequestLoopState(); return mOrientationOverridesState.shouldIgnoreRequestInLoop() && !mActivityRecord.mAppCompatController.getAppCompatAspectRatioPolicy() && !mActivityRecord.mAppCompatController.getAspectRatioPolicy() .isLetterboxedForFixedOrientationAndAspectRatio(); } Loading services/core/java/com/android/server/wm/AppCompatSizeCompatModePolicy.java +4 −5 Original line number Diff line number Diff line Loading @@ -204,7 +204,7 @@ class AppCompatSizeCompatModePolicy { // activity will be displayed within them even if it is in size compat mode. They should be // saved here before resolved bounds are overridden below. final AppCompatAspectRatioPolicy aspectRatioPolicy = mActivityRecord.mAppCompatController .getAppCompatAspectRatioPolicy(); .getAspectRatioPolicy(); final boolean useResolvedBounds = aspectRatioPolicy.isAspectRatioApplied(); final Rect containerBounds = useResolvedBounds ? new Rect(resolvedBounds) Loading Loading @@ -249,8 +249,7 @@ class AppCompatSizeCompatModePolicy { resolvedBounds.set(containingBounds); // The size of floating task is fixed (only swap), so the aspect ratio is already correct. if (!appCompatDisplayInsets.mIsFloating) { mActivityRecord.mAppCompatController.getAppCompatAspectRatioPolicy() .applyAspectRatioForLetterbox(resolvedBounds, containingAppBounds, aspectRatioPolicy.applyAspectRatioForLetterbox(resolvedBounds, containingAppBounds, containingBounds); } Loading Loading @@ -364,7 +363,7 @@ class AppCompatSizeCompatModePolicy { } final Rect letterboxedContainerBounds = mActivityRecord.mAppCompatController .getAppCompatAspectRatioPolicy().getLetterboxedContainerBounds(); .getAspectRatioPolicy().getLetterboxedContainerBounds(); // The role of AppCompatDisplayInsets is like the override bounds. mAppCompatDisplayInsets = Loading Loading @@ -446,7 +445,7 @@ class AppCompatSizeCompatModePolicy { } } final AppCompatAspectRatioPolicy aspectRatioPolicy = mActivityRecord.mAppCompatController .getAppCompatAspectRatioPolicy(); .getAspectRatioPolicy(); return !mActivityRecord.isResizeable() && (mActivityRecord.info.isFixedOrientation() || aspectRatioPolicy.hasFixedAspectRatio()) // The configuration of non-standard type should be enforced by system. Loading services/core/java/com/android/server/wm/AppCompatUtils.java +1 −1 Original line number Diff line number Diff line Loading @@ -222,7 +222,7 @@ final class AppCompatUtils { return "SIZE_COMPAT_MODE"; } final AppCompatAspectRatioPolicy aspectRatioPolicy = activityRecord.mAppCompatController .getAppCompatAspectRatioPolicy(); .getAspectRatioPolicy(); if (aspectRatioPolicy.isLetterboxedForFixedOrientationAndAspectRatio()) { return "FIXED_ORIENTATION"; } Loading Loading
services/core/java/com/android/server/wm/ActivityRecord.java +20 −18 Original line number Diff line number Diff line Loading @@ -8436,7 +8436,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A newParentConfiguration = mTmpConfig; } mAppCompatController.getAppCompatAspectRatioPolicy().reset(); mAppCompatController.getAspectRatioPolicy().reset(); mIsEligibleForFixedOrientationLetterbox = false; mResolveConfigHint.resolveTmpOverrides(mDisplayContent, newParentConfiguration, isFixedRotationTransforming()); Loading Loading @@ -8467,7 +8467,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A // If activity in fullscreen mode is letterboxed because of fixed orientation then bounds // are already calculated in resolveFixedOrientationConfiguration. // Don't apply aspect ratio if app is overridden to fullscreen by device user/manufacturer. if (!mAppCompatController.getAppCompatAspectRatioPolicy() if (!mAppCompatController.getAspectRatioPolicy() .isLetterboxedForFixedOrientationAndAspectRatio() && !mAppCompatController.getAppCompatAspectRatioOverrides() .hasFullscreenOverride()) { Loading Loading @@ -8504,7 +8504,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A // Fixed orientation letterboxing is possible on both large screen devices // with ignoreOrientationRequest enabled and on phones in split screen even with // ignoreOrientationRequest disabled. && (mAppCompatController.getAppCompatAspectRatioPolicy() && (mAppCompatController.getAspectRatioPolicy() .isLetterboxedForFixedOrientationAndAspectRatio() // Limiting check for aspect ratio letterboxing to devices with enabled // ignoreOrientationRequest. This avoids affecting phones where apps may Loading @@ -8513,7 +8513,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A // accurate on phones shouldn't make the big difference and is expected // to be already well-tested by apps. || (isIgnoreOrientationRequest && mAppCompatController.getAppCompatAspectRatioPolicy().isAspectRatioApplied()))) { && mAppCompatController.getAspectRatioPolicy().isAspectRatioApplied()))) { // TODO(b/264034555): Use mDisplayContent to calculate smallestScreenWidthDp from all // rotations and only re-calculate if parent bounds have non-orientation size change. resolvedConfig.smallestScreenWidthDp = Loading Loading @@ -8633,13 +8633,13 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A // letterboxed for fixed orientation. Aspect ratio restrictions are also applied if // present. But this doesn't return true when the activity is letterboxed only because // of aspect ratio restrictions. if (mAppCompatController.getAppCompatAspectRatioPolicy() .isLetterboxedForFixedOrientationAndAspectRatio()) { final AppCompatAspectRatioPolicy aspectRatioPolicy = mAppCompatController.getAspectRatioPolicy(); if (aspectRatioPolicy.isLetterboxedForFixedOrientationAndAspectRatio()) { return APP_COMPAT_STATE_CHANGED__STATE__LETTERBOXED_FOR_FIXED_ORIENTATION; } // Letterbox for limited aspect ratio. if (mAppCompatController.getAppCompatAspectRatioPolicy() .isLetterboxedForAspectRatioOnly()) { if (aspectRatioPolicy.isLetterboxedForAspectRatioOnly()) { return APP_COMPAT_STATE_CHANGED__STATE__LETTERBOXED_FOR_ASPECT_RATIO; } Loading Loading @@ -8966,8 +8966,10 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A final Rect prevResolvedBounds = new Rect(resolvedBounds); resolvedBounds.set(containingBounds); mAppCompatController.getAppCompatAspectRatioPolicy() .applyDesiredAspectRatio(newParentConfig, parentBounds, resolvedBounds, final AppCompatAspectRatioPolicy aspectRatioPolicy = mAppCompatController .getAspectRatioPolicy(); aspectRatioPolicy.applyDesiredAspectRatio(newParentConfig, parentBounds, resolvedBounds, containingBoundsWithInsets, containingBounds); if (appCompatDisplayInsets != null) { Loading Loading @@ -8996,8 +8998,8 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A // for comparison with size compat app bounds in {@link resolveSizeCompatModeConfiguration}. mResolveConfigHint.mTmpCompatInsets = appCompatDisplayInsets; computeConfigByResolveHint(getResolvedOverrideConfiguration(), newParentConfig); mAppCompatController.getAppCompatAspectRatioPolicy() .setLetterboxBoundsForFixedOrientationAndAspectRatio(new Rect(resolvedBounds)); aspectRatioPolicy.setLetterboxBoundsForFixedOrientationAndAspectRatio( new Rect(resolvedBounds)); } /** Loading @@ -9014,8 +9016,9 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A // Use tmp bounds to calculate aspect ratio so we can know whether the activity should use // restricted size (resolved bounds may be the requested override bounds). mTmpBounds.setEmpty(); mAppCompatController.getAppCompatAspectRatioPolicy() .applyAspectRatioForLetterbox(mTmpBounds, parentAppBounds, parentBounds); final AppCompatAspectRatioPolicy aspectRatioPolicy = mAppCompatController .getAspectRatioPolicy(); aspectRatioPolicy.applyAspectRatioForLetterbox(mTmpBounds, parentAppBounds, parentBounds); // If the out bounds is not empty, it means the activity cannot fill parent's app bounds, // then they should be aligned later in #updateResolvedBoundsPosition() if (!mTmpBounds.isEmpty()) { Loading @@ -9026,8 +9029,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A // restrict, the bounds should be the requested override bounds. mResolveConfigHint.mTmpOverrideDisplayInfo = getFixedRotationTransformDisplayInfo(); computeConfigByResolveHint(resolvedConfig, newParentConfiguration); mAppCompatController.getAppCompatAspectRatioPolicy() .setLetterboxBoundsForAspectRatio(new Rect(resolvedBounds)); aspectRatioPolicy.setLetterboxBoundsForAspectRatio(new Rect(resolvedBounds)); } } Loading Loading @@ -9277,11 +9279,11 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A * Returns the min aspect ratio of this activity. */ float getMinAspectRatio() { return mAppCompatController.getAppCompatAspectRatioPolicy().getMinAspectRatio(); return mAppCompatController.getAspectRatioPolicy().getMinAspectRatio(); } float getMaxAspectRatio() { return mAppCompatController.getAppCompatAspectRatioPolicy().getMaxAspectRatio(); return mAppCompatController.getAspectRatioPolicy().getMaxAspectRatio(); } /** Loading
services/core/java/com/android/server/wm/AppCompatController.java +4 −4 Original line number Diff line number Diff line Loading @@ -31,7 +31,7 @@ class AppCompatController { @NonNull private final AppCompatOrientationPolicy mOrientationPolicy; @NonNull private final AppCompatAspectRatioPolicy mAppCompatAspectRatioPolicy; private final AppCompatAspectRatioPolicy mAspectRatioPolicy; @NonNull private final AppCompatReachabilityPolicy mReachabilityPolicy; @NonNull Loading @@ -56,7 +56,7 @@ class AppCompatController { mAppCompatOverrides = new AppCompatOverrides(activityRecord, packageManager, wmService.mAppCompatConfiguration, optPropBuilder, mAppCompatDeviceStateQuery); mOrientationPolicy = new AppCompatOrientationPolicy(activityRecord, mAppCompatOverrides); mAppCompatAspectRatioPolicy = new AppCompatAspectRatioPolicy(activityRecord, mAspectRatioPolicy = new AppCompatAspectRatioPolicy(activityRecord, mTransparentPolicy, mAppCompatOverrides); mReachabilityPolicy = new AppCompatReachabilityPolicy(activityRecord, wmService.mAppCompatConfiguration); Loading @@ -79,8 +79,8 @@ class AppCompatController { } @NonNull AppCompatAspectRatioPolicy getAppCompatAspectRatioPolicy() { return mAppCompatAspectRatioPolicy; AppCompatAspectRatioPolicy getAspectRatioPolicy() { return mAspectRatioPolicy; } @NonNull Loading
services/core/java/com/android/server/wm/AppCompatOrientationOverrides.java +1 −1 Original line number Diff line number Diff line Loading @@ -144,7 +144,7 @@ class AppCompatOrientationOverrides { mOrientationOverridesState.updateOrientationRequestLoopState(); return mOrientationOverridesState.shouldIgnoreRequestInLoop() && !mActivityRecord.mAppCompatController.getAppCompatAspectRatioPolicy() && !mActivityRecord.mAppCompatController.getAspectRatioPolicy() .isLetterboxedForFixedOrientationAndAspectRatio(); } Loading
services/core/java/com/android/server/wm/AppCompatSizeCompatModePolicy.java +4 −5 Original line number Diff line number Diff line Loading @@ -204,7 +204,7 @@ class AppCompatSizeCompatModePolicy { // activity will be displayed within them even if it is in size compat mode. They should be // saved here before resolved bounds are overridden below. final AppCompatAspectRatioPolicy aspectRatioPolicy = mActivityRecord.mAppCompatController .getAppCompatAspectRatioPolicy(); .getAspectRatioPolicy(); final boolean useResolvedBounds = aspectRatioPolicy.isAspectRatioApplied(); final Rect containerBounds = useResolvedBounds ? new Rect(resolvedBounds) Loading Loading @@ -249,8 +249,7 @@ class AppCompatSizeCompatModePolicy { resolvedBounds.set(containingBounds); // The size of floating task is fixed (only swap), so the aspect ratio is already correct. if (!appCompatDisplayInsets.mIsFloating) { mActivityRecord.mAppCompatController.getAppCompatAspectRatioPolicy() .applyAspectRatioForLetterbox(resolvedBounds, containingAppBounds, aspectRatioPolicy.applyAspectRatioForLetterbox(resolvedBounds, containingAppBounds, containingBounds); } Loading Loading @@ -364,7 +363,7 @@ class AppCompatSizeCompatModePolicy { } final Rect letterboxedContainerBounds = mActivityRecord.mAppCompatController .getAppCompatAspectRatioPolicy().getLetterboxedContainerBounds(); .getAspectRatioPolicy().getLetterboxedContainerBounds(); // The role of AppCompatDisplayInsets is like the override bounds. mAppCompatDisplayInsets = Loading Loading @@ -446,7 +445,7 @@ class AppCompatSizeCompatModePolicy { } } final AppCompatAspectRatioPolicy aspectRatioPolicy = mActivityRecord.mAppCompatController .getAppCompatAspectRatioPolicy(); .getAspectRatioPolicy(); return !mActivityRecord.isResizeable() && (mActivityRecord.info.isFixedOrientation() || aspectRatioPolicy.hasFixedAspectRatio()) // The configuration of non-standard type should be enforced by system. Loading
services/core/java/com/android/server/wm/AppCompatUtils.java +1 −1 Original line number Diff line number Diff line Loading @@ -222,7 +222,7 @@ final class AppCompatUtils { return "SIZE_COMPAT_MODE"; } final AppCompatAspectRatioPolicy aspectRatioPolicy = activityRecord.mAppCompatController .getAppCompatAspectRatioPolicy(); .getAspectRatioPolicy(); if (aspectRatioPolicy.isLetterboxedForFixedOrientationAndAspectRatio()) { return "FIXED_ORIENTATION"; } Loading