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

Commit 0a113993 authored by ESWAR MAGATAPALLI (xWF)'s avatar ESWAR MAGATAPALLI (xWF) Committed by Android (Google) Code Review
Browse files

Revert "[ARR] Remove android.view.flags.toolkit_velocity_map_sysprop flag"

This reverts commit 1c5b7ecd.

Reason for revert: Droidmonitor created revert due to b/433806999. Will be verifying through ABTD before submission.

Bug : 433806999

Change-Id: Ife6f1670989760c026c02a0fb06ed30754543345
parent 1c5b7ecd
Loading
Loading
Loading
Loading
+91 −81
Original line number Diff line number Diff line
@@ -54,6 +54,7 @@ import static android.view.flags.Flags.sensitiveContentAppProtection;
import static android.view.flags.Flags.toolkitFrameRateBySizeReadOnly;
import static android.view.flags.Flags.toolkitMetricsForFrameRateDecision;
import static android.view.flags.Flags.toolkitSetFrameRateReadOnly;
import static android.view.flags.Flags.toolkitVelocityMapSysprop;
import static android.view.flags.Flags.toolkitViewgroupSetRequestedFrameRateApi;
import static android.view.flags.Flags.viewVelocityApi;
import static android.view.inputmethod.Flags.FLAG_HOME_SCREEN_HANDWRITING_DELEGATOR;
@@ -2476,11 +2477,18 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
    private static boolean sToolkitViewGroupFrameRateApiFlagValue =
            toolkitViewgroupSetRequestedFrameRateApi();
    // The read-write flag toolkitVelocityMapSysprop() cannot be initialized at Zygote. To prevent
    // this, initialize inside this class with special name NoPreloadHolder which prevents
    // initialization at Zygote.
    /** @hide */
    @VisibleForTesting
    static final class NoPreloadHolder {
        private static boolean sToolkitVelocityMapSyspropFlagValue = toolkitVelocityMapSysprop();
        private static String sFrameRateSysProp =
                ViewProperties.vrr_velocity_threshold().orElse("");
        static {
        if (!sFrameRateSysProp.isEmpty()) {
            if (sToolkitVelocityMapSyspropFlagValue && !sFrameRateSysProp.isEmpty()) {
                sFrameRateMappings = parseFrameRateMapping(sFrameRateSysProp);
            }
        }
@@ -2491,7 +2499,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
         * @hide
         */
        @VisibleForTesting
    public static int[][] parseFrameRateMapping(String mappings) {
        static int[][] parseFrameRateMapping(String mappings) {
            if (mappings.isEmpty()) {
                return null;
            }
@@ -2574,6 +2582,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
            Arrays.sort(mappingArray, Comparator.comparingInt(pair -> -pair[0]));
            return mappingArray;
        }
    }
    // Used to set frame rate compatibility.
    @Surface.FrameRateCompatibility int mFrameRateCompatibility =
@@ -34584,7 +34593,8 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
    }
    private float convertVelocityToFrameRate(float velocityPps) {
        if (sFrameRateMappings != null && sFrameRateMappings.length > 0) {
        if (NoPreloadHolder.sToolkitVelocityMapSyspropFlagValue && sFrameRateMappings != null
                && sFrameRateMappings.length > 0) {
            return getFrameRateByVelocity(sFrameRateMappings, (int) velocityPps);
        }
        // Internal testing has shown that this gives a premium experience:
+10 −0
Original line number Diff line number Diff line
@@ -95,3 +95,13 @@ flag {
    description: "Feature flag to ennable ARR debug message"
    bug: "394614443"
}

flag {
    name: "toolkit_velocity_map_sysprop"
    namespace: "toolkit"
    description: "Feature flag to map velocity to frame rate using sysprop"
    bug: "404936438"
    metadata {
        purpose: PURPOSE_BUGFIX
    }
}
+7 −7
Original line number Diff line number Diff line
@@ -1246,33 +1246,33 @@ public class ViewFrameRateTest {
        int[] twoPairs = {800, 80, 300, 30};
        int[] threePairs = {1000, 120, 800, 80, 600, 60};

        int[][] mappings = View.parseFrameRateMapping("");
        int[][] mappings = View.NoPreloadHolder.parseFrameRateMapping("");
        assertTrue(mappings == null);

        mappings = View.parseFrameRateMapping("::");
        mappings = View.NoPreloadHolder.parseFrameRateMapping("::");
        assertTrue(mappings == null);

        mappings = View.parseFrameRateMapping("80@800:30@300");
        mappings = View.NoPreloadHolder.parseFrameRateMapping("80@800:30@300");
        for (int i = 0; i < twoPairs.length; i++) {
            assertEquals(twoPairs[i], mappings[i / 2][i % 2]);
        }

        mappings = View.parseFrameRateMapping("80@800:60@600:120@1000");
        mappings = View.NoPreloadHolder.parseFrameRateMapping("80@800:60@600:120@1000");
        for (int i = 0; i < threePairs.length; i++) {
            assertEquals(threePairs[i], mappings[i / 2][i % 2]);
        }

        mappings = View.parseFrameRateMapping("80@@800:60@@@600:120@1000");
        mappings = View.NoPreloadHolder.parseFrameRateMapping("80@@800:60@@@600:120@1000");
        for (int i = 0; i < threePairs.length; i++) {
            assertEquals(threePairs[i], mappings[i / 2][i % 2]);
        }

        mappings = View.parseFrameRateMapping(":120@1000:::60@600::80@800:");
        mappings = View.NoPreloadHolder.parseFrameRateMapping(":120@1000:::60@600::80@800:");
        for (int i = 0; i < threePairs.length; i++) {
            assertEquals(threePairs[i], mappings[i / 2][i % 2]);
        }

        mappings = View.parseFrameRateMapping(":120@@1000:::60@600::80@@@800:");
        mappings = View.NoPreloadHolder.parseFrameRateMapping(":120@@1000:::60@600::80@@@800:");
        for (int i = 0; i < threePairs.length; i++) {
            assertEquals(threePairs[i], mappings[i / 2][i % 2]);
        }