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

Commit f73a7285 authored by Fiona Campbell's avatar Fiona Campbell
Browse files

Add constraints to animation duration scales

Ensure that all uses of ANIMATOR_DURATION_SCALE are bounded between 0
and 20.

Bug: 238178261
Test: adb shell dumpsys window windows | grep "Animation setting"
Change-Id: I1f3797c5cf708f5c02ba8644ea9f703244d229a9
parent 43ca1914
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -170,9 +170,9 @@ public final class InlineTooltipUi extends PopupWindow implements AutoCloseable

            int delayTimeMs = mShowDelayConfigMs;
            try {
                final float scale = Settings.Global.getFloat(
                final float scale = WindowManager.fixScale(Settings.Global.getFloat(
                        anchor.getContext().getContentResolver(),
                        Settings.Global.ANIMATOR_DURATION_SCALE);
                        Settings.Global.ANIMATOR_DURATION_SCALE));
                delayTimeMs *= scale;
            } catch (Settings.SettingNotFoundException e) {
                // do nothing
+3 −2
Original line number Diff line number Diff line
@@ -10,6 +10,7 @@ import android.os.PowerManager
import android.provider.Settings
import android.view.Surface
import android.view.View
import android.view.WindowManager.fixScale
import com.android.internal.jank.InteractionJankMonitor
import com.android.internal.jank.InteractionJankMonitor.CUJ_SCREEN_OFF
import com.android.internal.jank.InteractionJankMonitor.CUJ_SCREEN_OFF_SHOW_AOD
@@ -138,8 +139,8 @@ class UnlockedScreenOffAnimationController @Inject constructor(
    }

    fun updateAnimatorDurationScale() {
        animatorDurationScale =
                globalSettings.getFloat(Settings.Global.ANIMATOR_DURATION_SCALE, 1f)
        animatorDurationScale = fixScale(
                globalSettings.getFloat(Settings.Global.ANIMATOR_DURATION_SCALE, 1f))
    }

    override fun shouldDelayKeyguardShow(): Boolean =
+7 −6
Original line number Diff line number Diff line
@@ -1328,8 +1328,7 @@ public class WindowManagerService extends IWindowManager.Stub
                Settings.Global.WINDOW_ANIMATION_SCALE, mWindowAnimationScaleSetting);
        mTransitionAnimationScaleSetting = getTransitionAnimationScaleSetting();

        setAnimatorDurationScale(Settings.Global.getFloat(resolver,
                Settings.Global.ANIMATOR_DURATION_SCALE, mAnimatorDurationScaleSetting));
        setAnimatorDurationScale(getAnimatorDurationScaleSetting());

        mForceDesktopModeOnExternalDisplays = Settings.Global.getInt(resolver,
                DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS, 0) != 0;
@@ -1409,6 +1408,11 @@ public class WindowManagerService extends IWindowManager.Stub
                                R.dimen.config_appTransitionAnimationDurationScaleDefault)));
    }

    private float getAnimatorDurationScaleSetting() {
        return fixScale(Settings.Global.getFloat(mContext.getContentResolver(),
                Settings.Global.ANIMATOR_DURATION_SCALE, mAnimatorDurationScaleSetting));
    }

    /**
     * Called after all entities (such as the {@link ActivityManagerService}) have been set up and
     * associated with the {@link WindowManagerService}.
@@ -5335,10 +5339,7 @@ public class WindowManagerService extends IWindowManager.Stub
                            break;
                        }
                        case ANIMATION_DURATION_SCALE: {
                            mAnimatorDurationScaleSetting = Settings.Global.getFloat(
                                    mContext.getContentResolver(),
                                    Settings.Global.ANIMATOR_DURATION_SCALE,
                                    mAnimatorDurationScaleSetting);
                            mAnimatorDurationScaleSetting = getAnimatorDurationScaleSetting();
                            dispatchNewAnimatorScaleLocked(null);
                            break;
                        }