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

Commit f3af41ce authored by Jian-Syuan (Shane) Wong's avatar Jian-Syuan (Shane) Wong Committed by Android (Google) Code Review
Browse files

Merge "[ARR] Remove android.view.flags.toolkit_velocity_map_sysprop flag" into main

parents cf4a3b0d 1c5b7ecd
Loading
Loading
Loading
Loading
+81 −91
Original line number Diff line number Diff line
@@ -54,7 +54,6 @@ 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;
@@ -2477,18 +2476,11 @@ 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 (sToolkitVelocityMapSyspropFlagValue && !sFrameRateSysProp.isEmpty()) {
        if (!sFrameRateSysProp.isEmpty()) {
            sFrameRateMappings = parseFrameRateMapping(sFrameRateSysProp);
        }
    }
@@ -2499,7 +2491,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
     * @hide
     */
    @VisibleForTesting
        static int[][] parseFrameRateMapping(String mappings) {
    public static int[][] parseFrameRateMapping(String mappings) {
        if (mappings.isEmpty()) {
            return null;
        }
@@ -2582,7 +2574,6 @@ 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 =
@@ -34687,8 +34678,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
    }
    private float convertVelocityToFrameRate(float velocityPps) {
        if (NoPreloadHolder.sToolkitVelocityMapSyspropFlagValue && sFrameRateMappings != null
                && sFrameRateMappings.length > 0) {
        if (sFrameRateMappings != null && sFrameRateMappings.length > 0) {
            return getFrameRateByVelocity(sFrameRateMappings, (int) velocityPps);
        }
        // Internal testing has shown that this gives a premium experience:
+0 −10
Original line number Diff line number Diff line
@@ -95,13 +95,3 @@ 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.NoPreloadHolder.parseFrameRateMapping("");
        int[][] mappings = View.parseFrameRateMapping("");
        assertTrue(mappings == null);

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

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

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