From ed28faef53a74414f213e9e9d1c524808bfc8aba Mon Sep 17 00:00:00 2001 From: Fiona Campbell Date: Tue, 16 Aug 2022 14:56:01 +0000 Subject: Add constraints to window duration scale Ensure that all uses of WINDOW_DURATION_SCALE are bounded between 0 and 20. Bug: 238178261 Test: adb shell dumpsys window windows | grep "Animation setting" Change-Id: I36ea0ffce662fea7b3e02e9f13caaea9e5ecf54b --- .../java/com/android/server/wm/WindowManagerService.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index bd67f97611b4..8d20270e3a6a 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -1324,8 +1324,7 @@ public class WindowManagerService extends IWindowManager.Stub }, UserHandle.ALL, suspendPackagesFilter, null, null); // Get persisted window scale setting - mWindowAnimationScaleSetting = Settings.Global.getFloat(resolver, - Settings.Global.WINDOW_ANIMATION_SCALE, mWindowAnimationScaleSetting); + mWindowAnimationScaleSetting = getWindowAnimationScaleSetting(); mTransitionAnimationScaleSetting = getTransitionAnimationScaleSetting(); setAnimatorDurationScale(getAnimatorDurationScaleSetting()); @@ -1413,6 +1412,11 @@ public class WindowManagerService extends IWindowManager.Stub Settings.Global.ANIMATOR_DURATION_SCALE, mAnimatorDurationScaleSetting)); } + private float getWindowAnimationScaleSetting() { + return fixScale(Settings.Global.getFloat(mContext.getContentResolver(), + Settings.Global.WINDOW_ANIMATION_SCALE, mWindowAnimationScaleSetting)); + } + /** * Called after all entities (such as the {@link ActivityManagerService}) have been set up and * associated with the {@link WindowManagerService}. @@ -5327,10 +5331,7 @@ public class WindowManagerService extends IWindowManager.Stub final int mode = msg.arg1; switch (mode) { case WINDOW_ANIMATION_SCALE: { - mWindowAnimationScaleSetting = Settings.Global.getFloat( - mContext.getContentResolver(), - Settings.Global.WINDOW_ANIMATION_SCALE, - mWindowAnimationScaleSetting); + mWindowAnimationScaleSetting = getWindowAnimationScaleSetting(); break; } case TRANSITION_ANIMATION_SCALE: { -- cgit v1.2.3-59-g8ed1b