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

Commit 72aff073 authored by George Mount's avatar George Mount
Browse files

Enable default NORMAL refresh rate

Bug: 329156944

Step 2 makes NORMAL the default refresh rate instead
of HIGH.

Test: new test, modified tests

Change-Id: Ifee3b9a15aa1359d9f81a4a17eabc5d2f36c6bc6
parent e32f8861
Loading
Loading
Loading
Loading
+8 −3
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@ 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.enableUseMeasureCacheDuringForceLayout;
import static android.view.flags.Flags.sensitiveContentAppProtection;
import static android.view.flags.Flags.toolkitFrameRateDefaultNormalReadOnly;
import static android.view.flags.Flags.toolkitMetricsForFrameRateDecision;
import static android.view.flags.Flags.toolkitSetFrameRateReadOnly;
import static android.view.flags.Flags.viewVelocityApi;
@@ -33772,7 +33773,9 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
                    && heightDp <= FRAME_RATE_SMALL_SIZE_THRESHOLD)) {
                return FRAME_RATE_CATEGORY_NORMAL | FRAME_RATE_CATEGORY_REASON_SMALL;
            } else {
                return FRAME_RATE_CATEGORY_HIGH | FRAME_RATE_CATEGORY_REASON_LARGE;
                int category = toolkitFrameRateDefaultNormalReadOnly()
                        ? FRAME_RATE_CATEGORY_NORMAL : FRAME_RATE_CATEGORY_HIGH;
                return category | FRAME_RATE_CATEGORY_REASON_LARGE;
            }
        }
@@ -33820,8 +33823,10 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
                    frameRateCategory = FRAME_RATE_CATEGORY_HIGH
                            | FRAME_RATE_CATEGORY_REASON_REQUESTED;
                } else {
                    // invalid frame rate, default to HIGH
                    frameRateCategory = FRAME_RATE_CATEGORY_HIGH
                    // invalid frame rate, use default
                    int category = toolkitFrameRateDefaultNormalReadOnly()
                            ? FRAME_RATE_CATEGORY_NORMAL : FRAME_RATE_CATEGORY_HIGH;
                    frameRateCategory = category
                            | FRAME_RATE_CATEGORY_REASON_INVALID;
                }
            } else {
+25 −3
Original line number Diff line number Diff line
@@ -16,7 +16,10 @@

package android.view;

import static android.view.flags.Flags.FLAG_TOOLKIT_FRAME_RATE_DEFAULT_NORMAL_READ_ONLY;
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.toolkitFrameRateDefaultNormalReadOnly;

import static junit.framework.Assert.assertEquals;

@@ -124,6 +127,7 @@ public class ViewFrameRateTest {
    }

    @Test
    @RequiresFlagsEnabled(FLAG_TOOLKIT_SET_FRAME_RATE_READ_ONLY)
    public void noVelocityUsesCategorySmall() throws Throwable {
        final CountDownLatch drawLatch1 = new CountDownLatch(1);
        mActivityRule.runOnUiThread(() -> {
@@ -147,6 +151,7 @@ public class ViewFrameRateTest {
    }

    @Test
    @RequiresFlagsEnabled(FLAG_TOOLKIT_SET_FRAME_RATE_READ_ONLY)
    public void noVelocityUsesCategoryNarrowWidth() throws Throwable {
        final CountDownLatch drawLatch1 = new CountDownLatch(1);
        mActivityRule.runOnUiThread(() -> {
@@ -170,6 +175,7 @@ public class ViewFrameRateTest {
    }

    @Test
    @RequiresFlagsEnabled(FLAG_TOOLKIT_SET_FRAME_RATE_READ_ONLY)
    public void noVelocityUsesCategoryNarrowHeight() throws Throwable {
        final CountDownLatch drawLatch1 = new CountDownLatch(1);
        mActivityRule.runOnUiThread(() -> {
@@ -193,6 +199,7 @@ public class ViewFrameRateTest {
    }

    @Test
    @RequiresFlagsEnabled(FLAG_TOOLKIT_SET_FRAME_RATE_READ_ONLY)
    public void noVelocityUsesCategoryLargeWidth() throws Throwable {
        final CountDownLatch drawLatch1 = new CountDownLatch(1);
        mActivityRule.runOnUiThread(() -> {
@@ -210,12 +217,14 @@ public class ViewFrameRateTest {
        // Now that it is small, any invalidation should have a high category
        mActivityRule.runOnUiThread(() -> {
            mMovingView.invalidate();
            assertEquals(Surface.FRAME_RATE_CATEGORY_HIGH,
                    mViewRoot.getPreferredFrameRateCategory());
            int expected = toolkitFrameRateDefaultNormalReadOnly()
                    ? Surface.FRAME_RATE_CATEGORY_NORMAL : Surface.FRAME_RATE_CATEGORY_HIGH;
            assertEquals(expected, mViewRoot.getPreferredFrameRateCategory());
        });
    }

    @Test
    @RequiresFlagsEnabled(FLAG_TOOLKIT_SET_FRAME_RATE_READ_ONLY)
    public void noVelocityUsesCategoryLargeHeight() throws Throwable {
        final CountDownLatch drawLatch1 = new CountDownLatch(1);
        mActivityRule.runOnUiThread(() -> {
@@ -233,7 +242,20 @@ public class ViewFrameRateTest {
        // Now that it is small, any invalidation should have a high category
        mActivityRule.runOnUiThread(() -> {
            mMovingView.invalidate();
            assertEquals(Surface.FRAME_RATE_CATEGORY_HIGH,
            int expected = toolkitFrameRateDefaultNormalReadOnly()
                    ? Surface.FRAME_RATE_CATEGORY_NORMAL : Surface.FRAME_RATE_CATEGORY_HIGH;
            assertEquals(expected, mViewRoot.getPreferredFrameRateCategory());
        });
    }

    @Test
    @RequiresFlagsEnabled({FLAG_TOOLKIT_SET_FRAME_RATE_READ_ONLY,
            FLAG_TOOLKIT_FRAME_RATE_DEFAULT_NORMAL_READ_ONLY})
    public void defaultNormal() throws Throwable {
        waitForFrameRateCategoryToSettle();
        mActivityRule.runOnUiThread(() -> {
            mMovingView.invalidate();
            assertEquals(Surface.FRAME_RATE_CATEGORY_NORMAL,
                    mViewRoot.getPreferredFrameRateCategory());
        });
    }
+15 −8
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION;
import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
import static android.view.WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
import static android.view.WindowManager.LayoutParams.TYPE_TOAST;
import static android.view.flags.Flags.toolkitFrameRateDefaultNormalReadOnly;

import static com.google.common.truth.Truth.assertThat;
import static com.google.common.truth.Truth.assertWithMessage;
@@ -587,8 +588,9 @@ public class ViewRootImplTest {
        sInstrumentation.runOnMainSync(() -> {
            view.setVisibility(View.VISIBLE);
            view.invalidate();
            assertEquals(viewRootImpl.getPreferredFrameRateCategory(),
                    FRAME_RATE_CATEGORY_HIGH);
            int expected = toolkitFrameRateDefaultNormalReadOnly()
                    ? FRAME_RATE_CATEGORY_NORMAL : FRAME_RATE_CATEGORY_HIGH;
            assertEquals(expected, viewRootImpl.getPreferredFrameRateCategory());
        });
        sInstrumentation.waitForIdleSync();

@@ -650,7 +652,9 @@ public class ViewRootImplTest {
        ViewRootImpl viewRootImpl = view.getViewRootImpl();
        sInstrumentation.runOnMainSync(() -> {
            view.invalidate();
            assertEquals(viewRootImpl.getPreferredFrameRateCategory(), FRAME_RATE_CATEGORY_HIGH);
            int expected = toolkitFrameRateDefaultNormalReadOnly()
                    ? FRAME_RATE_CATEGORY_NORMAL : FRAME_RATE_CATEGORY_HIGH;
            assertEquals(expected, viewRootImpl.getPreferredFrameRateCategory());
        });
    }

@@ -1000,11 +1004,13 @@ public class ViewRootImplTest {

        ViewRootImpl viewRootImpl = view.getViewRootImpl();

        // In transistion from frequent update to infrequent update
        // In transition from frequent update to infrequent update
        Thread.sleep(delay);
        sInstrumentation.runOnMainSync(() -> {
            view.invalidate();
            assertEquals(viewRootImpl.getPreferredFrameRateCategory(), FRAME_RATE_CATEGORY_HIGH);
            int expected = toolkitFrameRateDefaultNormalReadOnly()
                    ? FRAME_RATE_CATEGORY_NORMAL : FRAME_RATE_CATEGORY_HIGH;
            assertEquals(expected, viewRootImpl.getPreferredFrameRateCategory());
        });

        // reset the frame rate category counts
@@ -1016,7 +1022,7 @@ public class ViewRootImplTest {
            sInstrumentation.waitForIdleSync();
        }

        // In transistion from frequent update to infrequent update
        // In transition from frequent update to infrequent update
        Thread.sleep(delay);
        sInstrumentation.runOnMainSync(() -> {
            view.setRequestedFrameRate(view.REQUESTED_FRAME_RATE_CATEGORY_NO_PREFERENCE);
@@ -1081,8 +1087,9 @@ public class ViewRootImplTest {
            assertEquals(viewRootImpl.getPreferredFrameRateCategory(),
                    FRAME_RATE_CATEGORY_NO_PREFERENCE);
            view.invalidate();
            assertEquals(viewRootImpl.getPreferredFrameRateCategory(),
                    FRAME_RATE_CATEGORY_HIGH);
            int expected = toolkitFrameRateDefaultNormalReadOnly()
                    ? FRAME_RATE_CATEGORY_NORMAL : FRAME_RATE_CATEGORY_HIGH;
            assertEquals(expected, viewRootImpl.getPreferredFrameRateCategory());
        });

         // reset the frame rate category counts