Loading core/res/res/values/config.xml +4 −0 Original line number Diff line number Diff line Loading @@ -6183,6 +6183,10 @@ is enabled and activity is connected to the camera in fullscreen. --> <bool name="config_isWindowManagerCameraCompatSplitScreenAspectRatioEnabled">false</bool> <!-- Which aspect ratio to use when camera compat treatment is enabled and an activity eligible for treatment is connected to the camera. --> <item name="config_windowManagerCameraCompatAspectRatio" format="float" type="dimen">1.0</item> <!-- Docking is a uiMode configuration change and will cause activities to relaunch if it's not handled. If true, the configuration change will be sent but activities will not be relaunched upon docking. Apps with desk resources will behave like normal, since they may Loading core/res/res/values/symbols.xml +1 −0 Original line number Diff line number Diff line Loading @@ -4778,6 +4778,7 @@ <java-symbol type="bool" name="config_isCompatFakeFocusEnabled" /> <java-symbol type="bool" name="config_isWindowManagerCameraCompatTreatmentEnabled" /> <java-symbol type="bool" name="config_isWindowManagerCameraCompatSplitScreenAspectRatioEnabled" /> <java-symbol type="dimen" name="config_windowManagerCameraCompatAspectRatio" /> <java-symbol type="bool" name="config_skipActivityRelaunchWhenDocking" /> <java-symbol type="bool" name="config_hideDisplayCutoutWithDisplayArea" /> Loading services/core/java/com/android/server/wm/ActivityRecord.java +11 −3 Original line number Diff line number Diff line Loading @@ -6409,7 +6409,11 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A // and the token could be null. return; } r.mDisplayContent.mAppCompatCameraPolicy.onActivityRefreshed(r); final AppCompatCameraPolicy cameraPolicy = AppCompatCameraPolicy .getAppCompatCameraPolicy(r); if (cameraPolicy != null) { cameraPolicy.onActivityRefreshed(r); } } static void splashScreenAttachedLocked(IBinder token) { Loading Loading @@ -9451,8 +9455,12 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A if (!shouldBeResumed(/* activeActivity */ null)) { return; } mDisplayContent.mAppCompatCameraPolicy.onActivityConfigurationChanging( this, newConfig, lastReportedConfig); final AppCompatCameraPolicy cameraPolicy = AppCompatCameraPolicy.getAppCompatCameraPolicy( this); if (cameraPolicy != null) { cameraPolicy.onActivityConfigurationChanging(this, newConfig, lastReportedConfig); } } /** Get process configuration, or global config if the process is not set. */ Loading services/core/java/com/android/server/wm/AppCompatAspectRatioOverrides.java +2 −2 Original line number Diff line number Diff line Loading @@ -255,8 +255,8 @@ class AppCompatAspectRatioOverrides { mActivityRecord.getOverrideOrientation()); final AppCompatCameraOverrides cameraOverrides = mActivityRecord.mAppCompatController.getAppCompatCameraOverrides(); final AppCompatCameraPolicy cameraPolicy = mActivityRecord.mAppCompatController.getAppCompatCameraPolicy(); final AppCompatCameraPolicy cameraPolicy = AppCompatCameraPolicy.getAppCompatCameraPolicy( mActivityRecord); // Don't resize to split screen size when in book mode if letterbox position is centered return (isBookMode && isNotCenteredHorizontally || isTabletopMode && isLandscape) || cameraOverrides.isCameraCompatSplitScreenAspectRatioAllowed() Loading services/core/java/com/android/server/wm/AppCompatAspectRatioPolicy.java +13 −4 Original line number Diff line number Diff line Loading @@ -72,6 +72,15 @@ class AppCompatAspectRatioPolicy { float getDesiredAspectRatio(@NonNull Configuration newParentConfig, @NonNull Rect parentBounds) { // If in camera compat mode, aspect ratio from the camera compat policy has priority over // default letterbox aspect ratio. final AppCompatCameraPolicy cameraPolicy = AppCompatCameraPolicy.getAppCompatCameraPolicy( mActivityRecord); if (cameraPolicy != null && cameraPolicy.shouldCameraCompatControlAspectRatio( mActivityRecord)) { return cameraPolicy.getCameraCompatAspectRatio(mActivityRecord); } final float letterboxAspectRatioOverride = mAppCompatOverrides.getAppCompatAspectRatioOverrides() .getFixedOrientationLetterboxAspectRatio(newParentConfig); Loading Loading @@ -119,10 +128,10 @@ class AppCompatAspectRatioPolicy { if (aspectRatioOverrides.shouldApplyUserMinAspectRatioOverride()) { return aspectRatioOverrides.getUserMinAspectRatio(); } final DisplayContent displayContent = mActivityRecord.getDisplayContent(); final boolean shouldOverrideMinAspectRatioForCamera = displayContent != null && displayContent.mAppCompatCameraPolicy.shouldOverrideMinAspectRatioForCamera( final AppCompatCameraPolicy cameraPolicy = AppCompatCameraPolicy.getAppCompatCameraPolicy( mActivityRecord); final boolean shouldOverrideMinAspectRatioForCamera = cameraPolicy != null && cameraPolicy.shouldOverrideMinAspectRatioForCamera(mActivityRecord); if (!aspectRatioOverrides.shouldOverrideMinAspectRatio() && !shouldOverrideMinAspectRatioForCamera) { if (mActivityRecord.isUniversalResizeable()) { Loading Loading
core/res/res/values/config.xml +4 −0 Original line number Diff line number Diff line Loading @@ -6183,6 +6183,10 @@ is enabled and activity is connected to the camera in fullscreen. --> <bool name="config_isWindowManagerCameraCompatSplitScreenAspectRatioEnabled">false</bool> <!-- Which aspect ratio to use when camera compat treatment is enabled and an activity eligible for treatment is connected to the camera. --> <item name="config_windowManagerCameraCompatAspectRatio" format="float" type="dimen">1.0</item> <!-- Docking is a uiMode configuration change and will cause activities to relaunch if it's not handled. If true, the configuration change will be sent but activities will not be relaunched upon docking. Apps with desk resources will behave like normal, since they may Loading
core/res/res/values/symbols.xml +1 −0 Original line number Diff line number Diff line Loading @@ -4778,6 +4778,7 @@ <java-symbol type="bool" name="config_isCompatFakeFocusEnabled" /> <java-symbol type="bool" name="config_isWindowManagerCameraCompatTreatmentEnabled" /> <java-symbol type="bool" name="config_isWindowManagerCameraCompatSplitScreenAspectRatioEnabled" /> <java-symbol type="dimen" name="config_windowManagerCameraCompatAspectRatio" /> <java-symbol type="bool" name="config_skipActivityRelaunchWhenDocking" /> <java-symbol type="bool" name="config_hideDisplayCutoutWithDisplayArea" /> Loading
services/core/java/com/android/server/wm/ActivityRecord.java +11 −3 Original line number Diff line number Diff line Loading @@ -6409,7 +6409,11 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A // and the token could be null. return; } r.mDisplayContent.mAppCompatCameraPolicy.onActivityRefreshed(r); final AppCompatCameraPolicy cameraPolicy = AppCompatCameraPolicy .getAppCompatCameraPolicy(r); if (cameraPolicy != null) { cameraPolicy.onActivityRefreshed(r); } } static void splashScreenAttachedLocked(IBinder token) { Loading Loading @@ -9451,8 +9455,12 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A if (!shouldBeResumed(/* activeActivity */ null)) { return; } mDisplayContent.mAppCompatCameraPolicy.onActivityConfigurationChanging( this, newConfig, lastReportedConfig); final AppCompatCameraPolicy cameraPolicy = AppCompatCameraPolicy.getAppCompatCameraPolicy( this); if (cameraPolicy != null) { cameraPolicy.onActivityConfigurationChanging(this, newConfig, lastReportedConfig); } } /** Get process configuration, or global config if the process is not set. */ Loading
services/core/java/com/android/server/wm/AppCompatAspectRatioOverrides.java +2 −2 Original line number Diff line number Diff line Loading @@ -255,8 +255,8 @@ class AppCompatAspectRatioOverrides { mActivityRecord.getOverrideOrientation()); final AppCompatCameraOverrides cameraOverrides = mActivityRecord.mAppCompatController.getAppCompatCameraOverrides(); final AppCompatCameraPolicy cameraPolicy = mActivityRecord.mAppCompatController.getAppCompatCameraPolicy(); final AppCompatCameraPolicy cameraPolicy = AppCompatCameraPolicy.getAppCompatCameraPolicy( mActivityRecord); // Don't resize to split screen size when in book mode if letterbox position is centered return (isBookMode && isNotCenteredHorizontally || isTabletopMode && isLandscape) || cameraOverrides.isCameraCompatSplitScreenAspectRatioAllowed() Loading
services/core/java/com/android/server/wm/AppCompatAspectRatioPolicy.java +13 −4 Original line number Diff line number Diff line Loading @@ -72,6 +72,15 @@ class AppCompatAspectRatioPolicy { float getDesiredAspectRatio(@NonNull Configuration newParentConfig, @NonNull Rect parentBounds) { // If in camera compat mode, aspect ratio from the camera compat policy has priority over // default letterbox aspect ratio. final AppCompatCameraPolicy cameraPolicy = AppCompatCameraPolicy.getAppCompatCameraPolicy( mActivityRecord); if (cameraPolicy != null && cameraPolicy.shouldCameraCompatControlAspectRatio( mActivityRecord)) { return cameraPolicy.getCameraCompatAspectRatio(mActivityRecord); } final float letterboxAspectRatioOverride = mAppCompatOverrides.getAppCompatAspectRatioOverrides() .getFixedOrientationLetterboxAspectRatio(newParentConfig); Loading Loading @@ -119,10 +128,10 @@ class AppCompatAspectRatioPolicy { if (aspectRatioOverrides.shouldApplyUserMinAspectRatioOverride()) { return aspectRatioOverrides.getUserMinAspectRatio(); } final DisplayContent displayContent = mActivityRecord.getDisplayContent(); final boolean shouldOverrideMinAspectRatioForCamera = displayContent != null && displayContent.mAppCompatCameraPolicy.shouldOverrideMinAspectRatioForCamera( final AppCompatCameraPolicy cameraPolicy = AppCompatCameraPolicy.getAppCompatCameraPolicy( mActivityRecord); final boolean shouldOverrideMinAspectRatioForCamera = cameraPolicy != null && cameraPolicy.shouldOverrideMinAspectRatioForCamera(mActivityRecord); if (!aspectRatioOverrides.shouldOverrideMinAspectRatio() && !shouldOverrideMinAspectRatioForCamera) { if (mActivityRecord.isUniversalResizeable()) { Loading