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

Commit 063ae10a authored by Steven Terrell's avatar Steven Terrell
Browse files

Use System Property to Control Animator Pausing

This change sets the default behavior of animator pausing by checking if
a system property is set and useing that value if present else it
defaults to true. This should allow the use of build properties to be
able to toggle the behavior.

Bug: 233391022

Test: Manual, adding logging to verify the values being set by the call
      to the sysprop library.

Ignore-AOSP-First: Testing internal change, will cherry pick to AOSP.
Change-Id: Ib1b34585c564bf4f310441c6856412a798022900
parent 506ca241
Loading
Loading
Loading
Loading
+31 −1
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package android.animation;

import android.os.SystemClock;
import android.os.SystemProperties;
import android.util.ArrayMap;
import android.util.ArraySet;
import android.util.Log;
@@ -54,7 +55,10 @@ public class AnimationHandler {
    private AnimationFrameCallbackProvider mProvider;

    // Static flag which allows the pausing behavior to be globally disabled/enabled.
    private static boolean sAnimatorPausingEnabled = true;
    private static boolean sAnimatorPausingEnabled = isPauseBgAnimationsEnabledInSystemProperties();

    // Static flag which prevents the system property from overriding sAnimatorPausingEnabled field.
    private static boolean sOverrideAnimatorPausingSystemProperty = false;

    /**
     * This paused list is used to store animators forcibly paused when the activity
@@ -96,6 +100,18 @@ public class AnimationHandler {
        return sAnimatorHandler.get();
    }

    /**
     * System property that controls the behavior of pausing infinite animators when an app
     * is moved to the background.
     *
     * @return the value of 'framework.pause_bg_animations.enabled' system property
     */
    private static boolean isPauseBgAnimationsEnabledInSystemProperties() {
        if (sOverrideAnimatorPausingSystemProperty) return sAnimatorPausingEnabled;
        return SystemProperties
                .getBoolean("framework.pause_bg_animations.enabled", true);
    }

    /**
     * Disable the default behavior of pausing infinite animators when
     * apps go into the background.
@@ -106,6 +122,19 @@ public class AnimationHandler {
        sAnimatorPausingEnabled = enable;
    }

    /**
     * Prevents the setAnimatorPausingEnabled behavior from being overridden
     * by the 'framework.pause_bg_animations.enabled' system property value.
     *
     * This is for testing purposes only.
     *
     * @param enable Enable or disable (default behavior) overriding the system
     *               property.
     */
    public static void setOverrideAnimatorPausingSystemProperty(boolean enable) {
        sOverrideAnimatorPausingSystemProperty = enable;
    }

    /**
     * This is called when a window goes away. We should remove
     * it from the requestors list to ensure that we are counting requests correctly and not
@@ -143,6 +172,7 @@ public class AnimationHandler {

    private void requestAnimatorsEnabledImpl(boolean enable, Object requestor) {
        boolean wasEmpty = mAnimatorRequestors.isEmpty();
        setAnimatorPausingEnabled(isPauseBgAnimationsEnabledInSystemProperties());
        if (enable) {
            mAnimatorRequestors.add(requestor);
        } else {
+1 −0
Original line number Diff line number Diff line
@@ -104,6 +104,7 @@ public abstract class Animator implements Cloneable {
    @TestApi
    public static void setAnimatorPausingEnabled(boolean enable) {
        AnimationHandler.setAnimatorPausingEnabled(enable);
        AnimationHandler.setOverrideAnimatorPausingSystemProperty(!enable);
    }

    /**