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

Commit a1d73ee7 authored by Liana Kazanova (xWF)'s avatar Liana Kazanova (xWF) Committed by Android (Google) Code Review
Browse files

Merge "Revert "[ARR] Make the scroll frame rate always Max"" into main

parents 8b35e102 82759ec9
Loading
Loading
Loading
Loading
+0 −20
Original line number Diff line number Diff line
@@ -50,7 +50,6 @@ import static android.view.flags.Flags.enableUseMeasureCacheDuringForceLayout;
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.toolkitScrollMaxFrameRate;
import static android.view.flags.Flags.toolkitSetFrameRateReadOnly;
import static android.view.flags.Flags.toolkitViewgroupSetRequestedFrameRateApi;
import static android.view.flags.Flags.viewVelocityApi;
@@ -2468,8 +2467,6 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
            toolkitFrameRateBySizeReadOnly();
    private static boolean sToolkitViewGroupFrameRateApiFlagValue =
            toolkitViewgroupSetRequestedFrameRateApi();
    private static boolean sToolkitScrollMaxFrameRateFlagValue =
            toolkitScrollMaxFrameRate();
    // Used to set frame rate compatibility.
    @Surface.FrameRateCompatibility int mFrameRateCompatibility =
@@ -34414,23 +34411,6 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
    }
    private float convertVelocityToFrameRate(float velocityPps) {
        // b/404936438 Remove this logic when 240 TE is re-enabled
        // or sysprop is available for scrolling
        if (sToolkitScrollMaxFrameRateFlagValue) {
            boolean has80Hz = false;
            if (getDisplay() != null) {
                for (float rate : getDisplay().getSupportedRefreshRates()) {
                    if (Math.abs(rate - 80.0f) < 0.1f) {
                        has80Hz = true;
                        break;
                    }
                }
            }
            if (!has80Hz) {
                return MAX_FRAME_RATE;
            }
        }
        // Internal testing has shown that this gives a premium experience:
        // above 300dp/s => 120fps
        // between 300dp/s and 125fps => 80fps
+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"
}
 No newline at end of file

flag {
    name: "toolkit_scroll_max_frame_rate"
    namespace: "toolkit"
    description: "Feature flag to always return max frame rate for scrolling"
    bug: "404936438"
    metadata {
        purpose: PURPOSE_BUGFIX
    }
}
 No newline at end of file
+3 −42
Original line number Diff line number Diff line
@@ -27,7 +27,6 @@ import static android.view.flags.Flags.FLAG_TOOLKIT_INITIAL_TOUCH_BOOST;
import static android.view.flags.Flags.FLAG_TOOLKIT_SET_FRAME_RATE_READ_ONLY;
import static android.view.flags.Flags.FLAG_VIEW_VELOCITY_API;
import static android.view.flags.Flags.toolkitFrameRateBySizeReadOnly;
import static android.view.flags.Flags.toolkitScrollMaxFrameRate;

import static junit.framework.Assert.assertEquals;

@@ -416,22 +415,9 @@ public class ViewFrameRateTest {
        });
        waitForFrameRateCategoryToSettle();
        mActivityRule.runOnUiThread(() -> {
            Display display = mMovingView.getDisplay();
            boolean has80Hz = false;
            if (display != null) {
                for (float rate : display.getSupportedRefreshRates()) {
                    if (Math.abs(rate - 80.0f) < 0.1f) {
                        has80Hz = true;
                        break;
                    }
                }
            }
            float expectedFrameRate = (toolkitScrollMaxFrameRate() && !has80Hz) ? 120f : 60f;

            mMovingView.setFrameContentVelocity(1f);
            mMovingView.invalidate();
            runAfterDraw(() -> assertEquals(expectedFrameRate,
                    mViewRoot.getLastPreferredFrameRate(), 0f));
            runAfterDraw(() -> assertEquals(60f, mViewRoot.getLastPreferredFrameRate(), 0f));
        });
        waitForAfterDraw();
    }
@@ -450,23 +436,11 @@ public class ViewFrameRateTest {
        });
        waitForFrameRateCategoryToSettle();
        mActivityRule.runOnUiThread(() -> {
            Display display = mMovingView.getDisplay();
            boolean has80Hz = false;
            if (display != null) {
                for (float rate : display.getSupportedRefreshRates()) {
                    if (Math.abs(rate - 80.0f) < 0.1f) {
                        has80Hz = true;
                        break;
                    }
                }
            }
            float expectedFrameRate = (toolkitScrollMaxFrameRate() && !has80Hz) ? 120f : 80f;
            float midSpeed =
                    200f * mMovingView.getContext().getResources().getDisplayMetrics().density;
            mMovingView.setFrameContentVelocity(midSpeed);
            mMovingView.invalidate();
            runAfterDraw(() -> assertEquals(expectedFrameRate,
                    mViewRoot.getLastPreferredFrameRate(), 0f));
            runAfterDraw(() -> assertEquals(80f, mViewRoot.getLastPreferredFrameRate(), 0f));
        });
        waitForAfterDraw();
    }
@@ -490,23 +464,10 @@ public class ViewFrameRateTest {
        });
        waitForFrameRateCategoryToSettle();
        mActivityRule.runOnUiThread(() -> {
            Display display = mMovingView.getDisplay();
            boolean has80Hz = false;
            if (display != null) {
                for (float rate : display.getSupportedRefreshRates()) {
                    if (Math.abs(rate - 80.0f) < 0.1f) {
                        has80Hz = true;
                        break;
                    }
                }
            }
            float expectedFrameRate = (toolkitScrollMaxFrameRate() && !has80Hz) ? 120f : 60f;

            frameLayout.setFrameContentVelocity(1f);
            mMovingView.offsetTopAndBottom(100);
            frameLayout.invalidate();
            runAfterDraw(() -> assertEquals(expectedFrameRate,
                    mViewRoot.getLastPreferredFrameRate(), 0f));
            runAfterDraw(() -> assertEquals(60f, mViewRoot.getLastPreferredFrameRate(), 0f));
        });
        waitForAfterDraw();
    }