diff --git a/src/com/android/settings/development/ForcePeakRefreshRatePreferenceController.java b/src/com/android/settings/development/ForcePeakRefreshRatePreferenceController.java index 80b295c60fd..abeb94991fb 100644 --- a/src/com/android/settings/development/ForcePeakRefreshRatePreferenceController.java +++ b/src/com/android/settings/development/ForcePeakRefreshRatePreferenceController.java @@ -28,6 +28,7 @@ import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import androidx.preference.TwoStatePreference; +import com.android.server.display.feature.flags.Flags; import com.android.settings.R; import com.android.settings.core.PreferenceControllerMixin; import com.android.settingslib.development.DeveloperOptionsPreferenceController; @@ -95,7 +96,9 @@ public class ForcePeakRefreshRatePreferenceController extends DeveloperOptionsPr @VisibleForTesting void forcePeakRefreshRate(boolean enable) { - final float peakRefreshRate = enable ? Float.POSITIVE_INFINITY : NO_CONFIG; + final float valueIfEnabled = Flags.backUpSmoothDisplayAndForcePeakRefreshRate() + ? Float.POSITIVE_INFINITY : mPeakRefreshRate; + final float peakRefreshRate = enable ? valueIfEnabled : NO_CONFIG; Settings.System.putFloat(mContext.getContentResolver(), Settings.System.MIN_REFRESH_RATE, peakRefreshRate); } diff --git a/src/com/android/settings/display/PeakRefreshRatePreferenceController.java b/src/com/android/settings/display/PeakRefreshRatePreferenceController.java index dfe571aeb26..17d763ac42a 100644 --- a/src/com/android/settings/display/PeakRefreshRatePreferenceController.java +++ b/src/com/android/settings/display/PeakRefreshRatePreferenceController.java @@ -30,6 +30,7 @@ import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; +import com.android.server.display.feature.flags.Flags; import com.android.settings.R; import com.android.settings.core.TogglePreferenceController; import com.android.settingslib.core.lifecycle.LifecycleObserver; @@ -107,7 +108,9 @@ public class PeakRefreshRatePreferenceController extends TogglePreferenceControl @Override public boolean setChecked(boolean isChecked) { - final float peakRefreshRate = isChecked ? Float.POSITIVE_INFINITY : DEFAULT_REFRESH_RATE; + final float valueIfChecked = Flags.backUpSmoothDisplayAndForcePeakRefreshRate() + ? Float.POSITIVE_INFINITY : mPeakRefreshRate; + final float peakRefreshRate = isChecked ? valueIfChecked : DEFAULT_REFRESH_RATE; Log.d(TAG, "setChecked to : " + peakRefreshRate); return Settings.System.putFloat( diff --git a/tests/robotests/src/com/android/settings/development/ForcePeakRefreshRatePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/ForcePeakRefreshRatePreferenceControllerTest.java index c5cc8564cd7..314120aa126 100644 --- a/tests/robotests/src/com/android/settings/development/ForcePeakRefreshRatePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/development/ForcePeakRefreshRatePreferenceControllerTest.java @@ -25,12 +25,19 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.content.Context; +import android.platform.test.annotations.RequiresFlagsDisabled; +import android.platform.test.annotations.RequiresFlagsEnabled; +import android.platform.test.flag.junit.CheckFlagsRule; +import android.platform.test.flag.junit.DeviceFlagsValueProvider; import android.provider.Settings; import androidx.preference.PreferenceScreen; import androidx.preference.SwitchPreference; +import com.android.server.display.feature.flags.Flags; + import org.junit.Before; +import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; @@ -50,6 +57,9 @@ public class ForcePeakRefreshRatePreferenceControllerTest { private Context mContext; private ForcePeakRefreshRatePreferenceController mController; + @Rule + public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule(); + @Before public void setUp() { MockitoAnnotations.initMocks(this); @@ -61,7 +71,19 @@ public class ForcePeakRefreshRatePreferenceControllerTest { } @Test - public void onPreferenceChange_preferenceChecked_shouldEnableForcePeak() { + @RequiresFlagsDisabled(Flags.FLAG_BACK_UP_SMOOTH_DISPLAY_AND_FORCE_PEAK_REFRESH_RATE) + public void onPreferenceChange_preferenceChecked_shouldEnableForcePeak_featureFlagOff() { + mController.mPeakRefreshRate = 88f; + + mController.onPreferenceChange(mPreference, true); + + assertThat(Settings.System.getFloat(mContext.getContentResolver(), + Settings.System.MIN_REFRESH_RATE, NO_CONFIG)).isEqualTo(88f); + } + + @Test + @RequiresFlagsEnabled(Flags.FLAG_BACK_UP_SMOOTH_DISPLAY_AND_FORCE_PEAK_REFRESH_RATE) + public void onPreferenceChange_preferenceChecked_shouldEnableForcePeak_featureFlagOn() { mController.mPeakRefreshRate = 88f; mController.onPreferenceChange(mPreference, true); @@ -88,6 +110,7 @@ public class ForcePeakRefreshRatePreferenceControllerTest { mController.updateState(mPreference); verify(mPreference).setChecked(true); + assertThat(mController.isForcePeakRefreshRateEnabled()).isTrue(); } @Test @@ -98,6 +121,7 @@ public class ForcePeakRefreshRatePreferenceControllerTest { mController.updateState(mPreference); verify(mPreference).setChecked(false); + assertThat(mController.isForcePeakRefreshRateEnabled()).isFalse(); } @Test diff --git a/tests/robotests/src/com/android/settings/display/PeakRefreshRatePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/PeakRefreshRatePreferenceControllerTest.java index 8b2c4454a18..cb0963b19ba 100644 --- a/tests/robotests/src/com/android/settings/display/PeakRefreshRatePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/display/PeakRefreshRatePreferenceControllerTest.java @@ -25,11 +25,18 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.when; import android.content.Context; +import android.platform.test.annotations.RequiresFlagsDisabled; +import android.platform.test.annotations.RequiresFlagsEnabled; +import android.platform.test.flag.junit.CheckFlagsRule; +import android.platform.test.flag.junit.DeviceFlagsValueProvider; import android.provider.Settings; import androidx.preference.SwitchPreference; +import com.android.server.display.feature.flags.Flags; + import org.junit.Before; +import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; @@ -49,6 +56,9 @@ public class PeakRefreshRatePreferenceControllerTest { private PeakRefreshRatePreferenceController.DeviceConfigDisplaySettings mDeviceConfigDisplaySettings; + @Rule + public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule(); + @Before public void setUp() { MockitoAnnotations.initMocks(this); @@ -79,7 +89,19 @@ public class PeakRefreshRatePreferenceControllerTest { } @Test - public void setChecked_enableSmoothDisplay_setRefreshRateToInfinity() { + @RequiresFlagsDisabled(Flags.FLAG_BACK_UP_SMOOTH_DISPLAY_AND_FORCE_PEAK_REFRESH_RATE) + public void setChecked_enableSmoothDisplay_featureFlagOff() { + mController.mPeakRefreshRate = 88f; + mController.setChecked(true); + + assertThat(Settings.System.getFloat(mContext.getContentResolver(), + Settings.System.PEAK_REFRESH_RATE, DEFAULT_REFRESH_RATE)) + .isEqualTo(88f); + } + + @Test + @RequiresFlagsEnabled(Flags.FLAG_BACK_UP_SMOOTH_DISPLAY_AND_FORCE_PEAK_REFRESH_RATE) + public void setChecked_enableSmoothDisplay_featureFlagOn() { mController.mPeakRefreshRate = 88f; mController.setChecked(true); @@ -100,14 +122,16 @@ public class PeakRefreshRatePreferenceControllerTest { @Test public void isChecked_enableSmoothDisplay_returnTrue() { - enableSmoothDisplayPreference(); + mController.mPeakRefreshRate = 88f; + mController.setChecked(true); assertThat(mController.isChecked()).isTrue(); } @Test public void isChecked_disableSmoothDisplay_returnFalse() { - disableSmoothDisplayPreference(); + mController.mPeakRefreshRate = 88f; + mController.setChecked(false); assertThat(mController.isChecked()).isFalse(); } @@ -128,22 +152,4 @@ public class PeakRefreshRatePreferenceControllerTest { assertThat(mController.isChecked()).isFalse(); } - - private void enableSmoothDisplayPreference() { - mController.mPeakRefreshRate = 88f; - - Settings.System.putFloat( - mContext.getContentResolver(), - Settings.System.PEAK_REFRESH_RATE, - mController.mPeakRefreshRate); - } - - private void disableSmoothDisplayPreference() { - mController.mPeakRefreshRate = 88f; - - Settings.System.putFloat( - mContext.getContentResolver(), - Settings.System.PEAK_REFRESH_RATE, - DEFAULT_REFRESH_RATE); - } }