Loading services/core/java/com/android/server/wm/ActivityRecord.java +4 −2 Original line number Diff line number Diff line Loading @@ -4294,7 +4294,8 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A } void finishRelaunching() { mLetterboxUiController.setRelaunchingAfterRequestedOrientationChanged(false); mAppCompatController.getAppCompatOrientationOverrides() .setRelaunchingAfterRequestedOrientationChanged(false); mTaskSupervisor.getActivityMetricsLogger().notifyActivityRelaunched(this); if (mPendingRelaunchCount > 0) { Loading Loading @@ -8185,7 +8186,8 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A mLastReportedConfiguration.getMergedConfiguration())) { ensureActivityConfiguration(false /* ignoreVisibility */); if (mPendingRelaunchCount > originalRelaunchingCount) { mLetterboxUiController.setRelaunchingAfterRequestedOrientationChanged(true); mAppCompatController.getAppCompatOrientationOverrides() .setRelaunchingAfterRequestedOrientationChanged(true); } if (mTransitionController.inPlayingTransition(this)) { mTransitionController.mValidateActivityCompat.add(this); Loading services/core/java/com/android/server/wm/AppCompatAspectRatioOverrides.java +3 −6 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_ATM; import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_WITH_CLASS_NAME; import static com.android.server.wm.AppCompatConfiguration.LETTERBOX_POSITION_MULTIPLIER_CENTER; import static com.android.server.wm.AppCompatConfiguration.MIN_FIXED_ORIENTATION_LETTERBOX_ASPECT_RATIO; import static com.android.server.wm.AppCompatUtils.isChangeEnabled; import android.annotation.NonNull; import android.content.pm.PackageManager; Loading Loading @@ -115,7 +116,7 @@ class AppCompatAspectRatioOverrides { */ boolean shouldOverrideMinAspectRatio() { return mAllowMinAspectRatioOverrideOptProp.shouldEnableWithOptInOverrideAndOptOutProperty( isCompatChangeEnabled(OVERRIDE_MIN_ASPECT_RATIO)); isChangeEnabled(mActivityRecord, OVERRIDE_MIN_ASPECT_RATIO)); } /** Loading Loading @@ -154,7 +155,7 @@ class AppCompatAspectRatioOverrides { } boolean isSystemOverrideToFullscreenEnabled() { return isCompatChangeEnabled(OVERRIDE_ANY_ORIENTATION_TO_USER) return isChangeEnabled(mActivityRecord, OVERRIDE_ANY_ORIENTATION_TO_USER) && !mAllowOrientationOverrideOptProp.isFalse() && (mUserAspectRatioState.mUserAspectRatio == USER_MIN_ASPECT_RATIO_UNSET || mUserAspectRatioState.mUserAspectRatio == USER_MIN_ASPECT_RATIO_FULLSCREEN); Loading Loading @@ -302,10 +303,6 @@ class AppCompatAspectRatioOverrides { private int mUserAspectRatio = USER_MIN_ASPECT_RATIO_UNSET; } private boolean isCompatChangeEnabled(long overrideChangeId) { return mActivityRecord.info.isChangeEnabled(overrideChangeId); } private Resources getResources() { return mActivityRecord.mWmService.mContext.getResources(); } Loading services/core/java/com/android/server/wm/AppCompatCameraOverrides.java +8 −10 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ import static android.view.WindowManager.PROPERTY_COMPAT_ALLOW_MIN_ASPECT_RATIO_ import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_ATM; import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_WITH_CLASS_NAME; import static com.android.server.wm.AppCompatUtils.isChangeEnabled; import android.annotation.NonNull; import android.app.CameraCompatTaskInfo.FreeformCameraCompatMode; Loading Loading @@ -99,7 +100,8 @@ class AppCompatCameraOverrides { boolean shouldOverrideMinAspectRatioForCamera() { return isCameraActive() && mAllowMinAspectRatioOverrideOptProp .shouldEnableWithOptInOverrideAndOptOutProperty( isCompatChangeEnabled(OVERRIDE_MIN_ASPECT_RATIO_ONLY_FOR_CAMERA)); isChangeEnabled(mActivityRecord, OVERRIDE_MIN_ASPECT_RATIO_ONLY_FOR_CAMERA)); } /** Loading @@ -115,7 +117,7 @@ class AppCompatCameraOverrides { */ boolean shouldRefreshActivityForCameraCompat() { return mCameraCompatAllowRefreshOptProp.shouldEnableWithOptOutOverrideAndProperty( isCompatChangeEnabled(OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH)); isChangeEnabled(mActivityRecord, OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH)); } /** Loading @@ -134,7 +136,7 @@ class AppCompatCameraOverrides { */ boolean shouldRefreshActivityViaPauseForCameraCompat() { return mCameraCompatEnableRefreshViaPauseOptProp.shouldEnableWithOverrideAndProperty( isCompatChangeEnabled(OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE)); isChangeEnabled(mActivityRecord, OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE)); } /** Loading @@ -150,7 +152,7 @@ class AppCompatCameraOverrides { */ boolean shouldForceRotateForCameraCompat() { return mCameraCompatAllowForceRotationOptProp.shouldEnableWithOptOutOverrideAndProperty( isCompatChangeEnabled(OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION)); isChangeEnabled(mActivityRecord, OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION)); } /** Loading @@ -168,7 +170,7 @@ class AppCompatCameraOverrides { * </ul> */ boolean shouldApplyFreeformTreatmentForCameraCompat() { return Flags.cameraCompatForFreeform() && !isCompatChangeEnabled( return Flags.cameraCompatForFreeform() && !isChangeEnabled(mActivityRecord, OVERRIDE_CAMERA_COMPAT_DISABLE_FREEFORM_WINDOWING_TREATMENT); } Loading @@ -191,7 +193,7 @@ class AppCompatCameraOverrides { } boolean isOverrideOrientationOnlyForCameraEnabled() { return isCompatChangeEnabled(OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA); return isChangeEnabled(mActivityRecord, OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA); } /** Loading Loading @@ -227,10 +229,6 @@ class AppCompatCameraOverrides { mAppCompatCameraOverridesState.mFreeformCameraCompatMode = freeformCameraCompatMode; } private boolean isCompatChangeEnabled(long overrideChangeId) { return mActivityRecord.info.isChangeEnabled(overrideChangeId); } static class AppCompatCameraOverridesState { // Whether activity "refresh" was requested but not finished in // ActivityRecord#activityResumedLocked following the camera compat force rotation in Loading services/core/java/com/android/server/wm/AppCompatOrientationOverrides.java +49 −0 Original line number Diff line number Diff line Loading @@ -20,14 +20,20 @@ import static android.content.pm.ActivityInfo.OVERRIDE_ANY_ORIENTATION; import static android.content.pm.ActivityInfo.OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED; import static android.content.pm.ActivityInfo.OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION; import static android.content.pm.ActivityInfo.OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE; import static android.content.pm.ActivityInfo.OVERRIDE_RESPECT_REQUESTED_ORIENTATION; import static android.content.pm.ActivityInfo.OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR; import static android.content.pm.ActivityInfo.OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT; import static android.content.pm.ActivityInfo.OVERRIDE_USE_DISPLAY_LANDSCAPE_NATURAL_ORIENTATION; import static android.content.res.Configuration.ORIENTATION_LANDSCAPE; import static android.view.WindowManager.PROPERTY_COMPAT_ALLOW_DISPLAY_ORIENTATION_OVERRIDE; import static android.view.WindowManager.PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED; import static android.view.WindowManager.PROPERTY_COMPAT_ALLOW_ORIENTATION_OVERRIDE; import static android.view.WindowManager.PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION; import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_ATM; import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_WITH_CLASS_NAME; import static com.android.server.wm.AppCompatUtils.asLazy; import static com.android.server.wm.AppCompatUtils.isChangeEnabled; import android.annotation.NonNull; Loading @@ -54,6 +60,10 @@ class AppCompatOrientationOverrides { private final OptPropFactory.OptProp mIgnoreRequestedOrientationOptProp; @NonNull private final OptPropFactory.OptProp mAllowIgnoringOrientationRequestWhenLoopDetectedOptProp; @NonNull private final OptPropFactory.OptProp mAllowOrientationOverrideOptProp; @NonNull private final OptPropFactory.OptProp mAllowDisplayOrientationOverrideOptProp; @NonNull final OrientationOverridesState mOrientationOverridesState; Loading @@ -74,6 +84,17 @@ class AppCompatOrientationOverrides { mAllowIgnoringOrientationRequestWhenLoopDetectedOptProp = optPropBuilder.create( PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED, isPolicyForIgnoringRequestedOrientationEnabled); mAllowOrientationOverrideOptProp = optPropBuilder.create( PROPERTY_COMPAT_ALLOW_ORIENTATION_OVERRIDE); mAllowDisplayOrientationOverrideOptProp = optPropBuilder.create( PROPERTY_COMPAT_ALLOW_DISPLAY_ORIENTATION_OVERRIDE, () -> mActivityRecord.mDisplayContent != null && mActivityRecord.getTask() != null && mActivityRecord.mDisplayContent.getIgnoreOrientationRequest() && !mActivityRecord.getTask().inMultiWindowMode() && mActivityRecord.mDisplayContent.getNaturalOrientation() == ORIENTATION_LANDSCAPE ); } boolean shouldEnableIgnoreOrientationRequest() { Loading @@ -81,6 +102,10 @@ class AppCompatOrientationOverrides { isCompatChangeEnabled(OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION)); } boolean isOverrideRespectRequestedOrientationEnabled() { return isChangeEnabled(mActivityRecord, OVERRIDE_RESPECT_REQUESTED_ORIENTATION); } /** * Whether an app is calling {@link android.app.Activity#setRequestedOrientation} * in a loop and orientation request should be ignored. Loading Loading @@ -112,6 +137,26 @@ class AppCompatOrientationOverrides { .isLetterboxedForFixedOrientationAndAspectRatio(); } /** * Whether should fix display orientation to landscape natural orientation when a task is * fullscreen and the display is ignoring orientation requests. * * <p>This treatment is enabled when the following conditions are met: * <ul> * <li>Opt-out component property isn't enabled * <li>Opt-in per-app override is enabled * <li>Task is in fullscreen. * <li>{@link DisplayContent#getIgnoreOrientationRequest} is enabled * <li>Natural orientation of the display is landscape. * </ul> */ boolean shouldUseDisplayLandscapeNaturalOrientation() { return mAllowDisplayOrientationOverrideOptProp .shouldEnableWithOptInOverrideAndOptOutProperty( isChangeEnabled(mActivityRecord, OVERRIDE_USE_DISPLAY_LANDSCAPE_NATURAL_ORIENTATION)); } /** * Sets whether an activity is relaunching after the app has called {@link * android.app.Activity#setRequestedOrientation}. Loading @@ -125,6 +170,10 @@ class AppCompatOrientationOverrides { return mOrientationOverridesState.mIsRelaunchingAfterRequestedOrientationChanged; } boolean isAllowOrientationOverrideOptOut() { return mAllowOrientationOverrideOptProp.isFalse(); } @VisibleForTesting int getSetOrientationRequestCounter() { return mOrientationOverridesState.mSetOrientationRequestCounter; Loading services/core/java/com/android/server/wm/AppCompatOrientationPolicy.java +2 −1 Original line number Diff line number Diff line Loading @@ -86,7 +86,8 @@ class AppCompatOrientationPolicy { return SCREEN_ORIENTATION_PORTRAIT; } if (mAppCompatOverrides.isAllowOrientationOverrideOptOut()) { if (mAppCompatOverrides.getAppCompatOrientationOverrides() .isAllowOrientationOverrideOptOut()) { return candidate; } Loading Loading
services/core/java/com/android/server/wm/ActivityRecord.java +4 −2 Original line number Diff line number Diff line Loading @@ -4294,7 +4294,8 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A } void finishRelaunching() { mLetterboxUiController.setRelaunchingAfterRequestedOrientationChanged(false); mAppCompatController.getAppCompatOrientationOverrides() .setRelaunchingAfterRequestedOrientationChanged(false); mTaskSupervisor.getActivityMetricsLogger().notifyActivityRelaunched(this); if (mPendingRelaunchCount > 0) { Loading Loading @@ -8185,7 +8186,8 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A mLastReportedConfiguration.getMergedConfiguration())) { ensureActivityConfiguration(false /* ignoreVisibility */); if (mPendingRelaunchCount > originalRelaunchingCount) { mLetterboxUiController.setRelaunchingAfterRequestedOrientationChanged(true); mAppCompatController.getAppCompatOrientationOverrides() .setRelaunchingAfterRequestedOrientationChanged(true); } if (mTransitionController.inPlayingTransition(this)) { mTransitionController.mValidateActivityCompat.add(this); Loading
services/core/java/com/android/server/wm/AppCompatAspectRatioOverrides.java +3 −6 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_ATM; import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_WITH_CLASS_NAME; import static com.android.server.wm.AppCompatConfiguration.LETTERBOX_POSITION_MULTIPLIER_CENTER; import static com.android.server.wm.AppCompatConfiguration.MIN_FIXED_ORIENTATION_LETTERBOX_ASPECT_RATIO; import static com.android.server.wm.AppCompatUtils.isChangeEnabled; import android.annotation.NonNull; import android.content.pm.PackageManager; Loading Loading @@ -115,7 +116,7 @@ class AppCompatAspectRatioOverrides { */ boolean shouldOverrideMinAspectRatio() { return mAllowMinAspectRatioOverrideOptProp.shouldEnableWithOptInOverrideAndOptOutProperty( isCompatChangeEnabled(OVERRIDE_MIN_ASPECT_RATIO)); isChangeEnabled(mActivityRecord, OVERRIDE_MIN_ASPECT_RATIO)); } /** Loading Loading @@ -154,7 +155,7 @@ class AppCompatAspectRatioOverrides { } boolean isSystemOverrideToFullscreenEnabled() { return isCompatChangeEnabled(OVERRIDE_ANY_ORIENTATION_TO_USER) return isChangeEnabled(mActivityRecord, OVERRIDE_ANY_ORIENTATION_TO_USER) && !mAllowOrientationOverrideOptProp.isFalse() && (mUserAspectRatioState.mUserAspectRatio == USER_MIN_ASPECT_RATIO_UNSET || mUserAspectRatioState.mUserAspectRatio == USER_MIN_ASPECT_RATIO_FULLSCREEN); Loading Loading @@ -302,10 +303,6 @@ class AppCompatAspectRatioOverrides { private int mUserAspectRatio = USER_MIN_ASPECT_RATIO_UNSET; } private boolean isCompatChangeEnabled(long overrideChangeId) { return mActivityRecord.info.isChangeEnabled(overrideChangeId); } private Resources getResources() { return mActivityRecord.mWmService.mContext.getResources(); } Loading
services/core/java/com/android/server/wm/AppCompatCameraOverrides.java +8 −10 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ import static android.view.WindowManager.PROPERTY_COMPAT_ALLOW_MIN_ASPECT_RATIO_ import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_ATM; import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_WITH_CLASS_NAME; import static com.android.server.wm.AppCompatUtils.isChangeEnabled; import android.annotation.NonNull; import android.app.CameraCompatTaskInfo.FreeformCameraCompatMode; Loading Loading @@ -99,7 +100,8 @@ class AppCompatCameraOverrides { boolean shouldOverrideMinAspectRatioForCamera() { return isCameraActive() && mAllowMinAspectRatioOverrideOptProp .shouldEnableWithOptInOverrideAndOptOutProperty( isCompatChangeEnabled(OVERRIDE_MIN_ASPECT_RATIO_ONLY_FOR_CAMERA)); isChangeEnabled(mActivityRecord, OVERRIDE_MIN_ASPECT_RATIO_ONLY_FOR_CAMERA)); } /** Loading @@ -115,7 +117,7 @@ class AppCompatCameraOverrides { */ boolean shouldRefreshActivityForCameraCompat() { return mCameraCompatAllowRefreshOptProp.shouldEnableWithOptOutOverrideAndProperty( isCompatChangeEnabled(OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH)); isChangeEnabled(mActivityRecord, OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH)); } /** Loading @@ -134,7 +136,7 @@ class AppCompatCameraOverrides { */ boolean shouldRefreshActivityViaPauseForCameraCompat() { return mCameraCompatEnableRefreshViaPauseOptProp.shouldEnableWithOverrideAndProperty( isCompatChangeEnabled(OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE)); isChangeEnabled(mActivityRecord, OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE)); } /** Loading @@ -150,7 +152,7 @@ class AppCompatCameraOverrides { */ boolean shouldForceRotateForCameraCompat() { return mCameraCompatAllowForceRotationOptProp.shouldEnableWithOptOutOverrideAndProperty( isCompatChangeEnabled(OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION)); isChangeEnabled(mActivityRecord, OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION)); } /** Loading @@ -168,7 +170,7 @@ class AppCompatCameraOverrides { * </ul> */ boolean shouldApplyFreeformTreatmentForCameraCompat() { return Flags.cameraCompatForFreeform() && !isCompatChangeEnabled( return Flags.cameraCompatForFreeform() && !isChangeEnabled(mActivityRecord, OVERRIDE_CAMERA_COMPAT_DISABLE_FREEFORM_WINDOWING_TREATMENT); } Loading @@ -191,7 +193,7 @@ class AppCompatCameraOverrides { } boolean isOverrideOrientationOnlyForCameraEnabled() { return isCompatChangeEnabled(OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA); return isChangeEnabled(mActivityRecord, OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA); } /** Loading Loading @@ -227,10 +229,6 @@ class AppCompatCameraOverrides { mAppCompatCameraOverridesState.mFreeformCameraCompatMode = freeformCameraCompatMode; } private boolean isCompatChangeEnabled(long overrideChangeId) { return mActivityRecord.info.isChangeEnabled(overrideChangeId); } static class AppCompatCameraOverridesState { // Whether activity "refresh" was requested but not finished in // ActivityRecord#activityResumedLocked following the camera compat force rotation in Loading
services/core/java/com/android/server/wm/AppCompatOrientationOverrides.java +49 −0 Original line number Diff line number Diff line Loading @@ -20,14 +20,20 @@ import static android.content.pm.ActivityInfo.OVERRIDE_ANY_ORIENTATION; import static android.content.pm.ActivityInfo.OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED; import static android.content.pm.ActivityInfo.OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION; import static android.content.pm.ActivityInfo.OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE; import static android.content.pm.ActivityInfo.OVERRIDE_RESPECT_REQUESTED_ORIENTATION; import static android.content.pm.ActivityInfo.OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR; import static android.content.pm.ActivityInfo.OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT; import static android.content.pm.ActivityInfo.OVERRIDE_USE_DISPLAY_LANDSCAPE_NATURAL_ORIENTATION; import static android.content.res.Configuration.ORIENTATION_LANDSCAPE; import static android.view.WindowManager.PROPERTY_COMPAT_ALLOW_DISPLAY_ORIENTATION_OVERRIDE; import static android.view.WindowManager.PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED; import static android.view.WindowManager.PROPERTY_COMPAT_ALLOW_ORIENTATION_OVERRIDE; import static android.view.WindowManager.PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION; import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_ATM; import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_WITH_CLASS_NAME; import static com.android.server.wm.AppCompatUtils.asLazy; import static com.android.server.wm.AppCompatUtils.isChangeEnabled; import android.annotation.NonNull; Loading @@ -54,6 +60,10 @@ class AppCompatOrientationOverrides { private final OptPropFactory.OptProp mIgnoreRequestedOrientationOptProp; @NonNull private final OptPropFactory.OptProp mAllowIgnoringOrientationRequestWhenLoopDetectedOptProp; @NonNull private final OptPropFactory.OptProp mAllowOrientationOverrideOptProp; @NonNull private final OptPropFactory.OptProp mAllowDisplayOrientationOverrideOptProp; @NonNull final OrientationOverridesState mOrientationOverridesState; Loading @@ -74,6 +84,17 @@ class AppCompatOrientationOverrides { mAllowIgnoringOrientationRequestWhenLoopDetectedOptProp = optPropBuilder.create( PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED, isPolicyForIgnoringRequestedOrientationEnabled); mAllowOrientationOverrideOptProp = optPropBuilder.create( PROPERTY_COMPAT_ALLOW_ORIENTATION_OVERRIDE); mAllowDisplayOrientationOverrideOptProp = optPropBuilder.create( PROPERTY_COMPAT_ALLOW_DISPLAY_ORIENTATION_OVERRIDE, () -> mActivityRecord.mDisplayContent != null && mActivityRecord.getTask() != null && mActivityRecord.mDisplayContent.getIgnoreOrientationRequest() && !mActivityRecord.getTask().inMultiWindowMode() && mActivityRecord.mDisplayContent.getNaturalOrientation() == ORIENTATION_LANDSCAPE ); } boolean shouldEnableIgnoreOrientationRequest() { Loading @@ -81,6 +102,10 @@ class AppCompatOrientationOverrides { isCompatChangeEnabled(OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION)); } boolean isOverrideRespectRequestedOrientationEnabled() { return isChangeEnabled(mActivityRecord, OVERRIDE_RESPECT_REQUESTED_ORIENTATION); } /** * Whether an app is calling {@link android.app.Activity#setRequestedOrientation} * in a loop and orientation request should be ignored. Loading Loading @@ -112,6 +137,26 @@ class AppCompatOrientationOverrides { .isLetterboxedForFixedOrientationAndAspectRatio(); } /** * Whether should fix display orientation to landscape natural orientation when a task is * fullscreen and the display is ignoring orientation requests. * * <p>This treatment is enabled when the following conditions are met: * <ul> * <li>Opt-out component property isn't enabled * <li>Opt-in per-app override is enabled * <li>Task is in fullscreen. * <li>{@link DisplayContent#getIgnoreOrientationRequest} is enabled * <li>Natural orientation of the display is landscape. * </ul> */ boolean shouldUseDisplayLandscapeNaturalOrientation() { return mAllowDisplayOrientationOverrideOptProp .shouldEnableWithOptInOverrideAndOptOutProperty( isChangeEnabled(mActivityRecord, OVERRIDE_USE_DISPLAY_LANDSCAPE_NATURAL_ORIENTATION)); } /** * Sets whether an activity is relaunching after the app has called {@link * android.app.Activity#setRequestedOrientation}. Loading @@ -125,6 +170,10 @@ class AppCompatOrientationOverrides { return mOrientationOverridesState.mIsRelaunchingAfterRequestedOrientationChanged; } boolean isAllowOrientationOverrideOptOut() { return mAllowOrientationOverrideOptProp.isFalse(); } @VisibleForTesting int getSetOrientationRequestCounter() { return mOrientationOverridesState.mSetOrientationRequestCounter; Loading
services/core/java/com/android/server/wm/AppCompatOrientationPolicy.java +2 −1 Original line number Diff line number Diff line Loading @@ -86,7 +86,8 @@ class AppCompatOrientationPolicy { return SCREEN_ORIENTATION_PORTRAIT; } if (mAppCompatOverrides.isAllowOrientationOverrideOptOut()) { if (mAppCompatOverrides.getAppCompatOrientationOverrides() .isAllowOrientationOverrideOptOut()) { return candidate; } Loading