Merge "Don't back up Smooth Display if feature flag off" into main

This commit is contained in:
Piotr Wilczyński
2024-01-05 12:48:32 +00:00
committed by Android (Google) Code Review
4 changed files with 60 additions and 24 deletions

View File

@@ -28,6 +28,7 @@ import androidx.preference.Preference;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
import androidx.preference.TwoStatePreference; import androidx.preference.TwoStatePreference;
import com.android.server.display.feature.flags.Flags;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.core.PreferenceControllerMixin;
import com.android.settingslib.development.DeveloperOptionsPreferenceController; import com.android.settingslib.development.DeveloperOptionsPreferenceController;
@@ -95,7 +96,9 @@ public class ForcePeakRefreshRatePreferenceController extends DeveloperOptionsPr
@VisibleForTesting @VisibleForTesting
void forcePeakRefreshRate(boolean enable) { 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.putFloat(mContext.getContentResolver(),
Settings.System.MIN_REFRESH_RATE, peakRefreshRate); Settings.System.MIN_REFRESH_RATE, peakRefreshRate);
} }

View File

@@ -30,6 +30,7 @@ import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference; import androidx.preference.Preference;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
import com.android.server.display.feature.flags.Flags;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController; import com.android.settings.core.TogglePreferenceController;
import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.LifecycleObserver;
@@ -107,7 +108,9 @@ public class PeakRefreshRatePreferenceController extends TogglePreferenceControl
@Override @Override
public boolean setChecked(boolean isChecked) { 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); Log.d(TAG, "setChecked to : " + peakRefreshRate);
return Settings.System.putFloat( return Settings.System.putFloat(

View File

@@ -25,12 +25,19 @@ import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
import android.content.Context; 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 android.provider.Settings;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
import androidx.preference.SwitchPreference; import androidx.preference.SwitchPreference;
import com.android.server.display.feature.flags.Flags;
import org.junit.Before; import org.junit.Before;
import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.Mock; import org.mockito.Mock;
@@ -50,6 +57,9 @@ public class ForcePeakRefreshRatePreferenceControllerTest {
private Context mContext; private Context mContext;
private ForcePeakRefreshRatePreferenceController mController; private ForcePeakRefreshRatePreferenceController mController;
@Rule
public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule();
@Before @Before
public void setUp() { public void setUp() {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
@@ -61,7 +71,19 @@ public class ForcePeakRefreshRatePreferenceControllerTest {
} }
@Test @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.mPeakRefreshRate = 88f;
mController.onPreferenceChange(mPreference, true); mController.onPreferenceChange(mPreference, true);
@@ -88,6 +110,7 @@ public class ForcePeakRefreshRatePreferenceControllerTest {
mController.updateState(mPreference); mController.updateState(mPreference);
verify(mPreference).setChecked(true); verify(mPreference).setChecked(true);
assertThat(mController.isForcePeakRefreshRateEnabled()).isTrue();
} }
@Test @Test
@@ -98,6 +121,7 @@ public class ForcePeakRefreshRatePreferenceControllerTest {
mController.updateState(mPreference); mController.updateState(mPreference);
verify(mPreference).setChecked(false); verify(mPreference).setChecked(false);
assertThat(mController.isForcePeakRefreshRateEnabled()).isFalse();
} }
@Test @Test

View File

@@ -25,11 +25,18 @@ import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
import android.content.Context; 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 android.provider.Settings;
import androidx.preference.SwitchPreference; import androidx.preference.SwitchPreference;
import com.android.server.display.feature.flags.Flags;
import org.junit.Before; import org.junit.Before;
import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.Mock; import org.mockito.Mock;
@@ -49,6 +56,9 @@ public class PeakRefreshRatePreferenceControllerTest {
private PeakRefreshRatePreferenceController.DeviceConfigDisplaySettings private PeakRefreshRatePreferenceController.DeviceConfigDisplaySettings
mDeviceConfigDisplaySettings; mDeviceConfigDisplaySettings;
@Rule
public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule();
@Before @Before
public void setUp() { public void setUp() {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
@@ -79,7 +89,19 @@ public class PeakRefreshRatePreferenceControllerTest {
} }
@Test @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.mPeakRefreshRate = 88f;
mController.setChecked(true); mController.setChecked(true);
@@ -100,14 +122,16 @@ public class PeakRefreshRatePreferenceControllerTest {
@Test @Test
public void isChecked_enableSmoothDisplay_returnTrue() { public void isChecked_enableSmoothDisplay_returnTrue() {
enableSmoothDisplayPreference(); mController.mPeakRefreshRate = 88f;
mController.setChecked(true);
assertThat(mController.isChecked()).isTrue(); assertThat(mController.isChecked()).isTrue();
} }
@Test @Test
public void isChecked_disableSmoothDisplay_returnFalse() { public void isChecked_disableSmoothDisplay_returnFalse() {
disableSmoothDisplayPreference(); mController.mPeakRefreshRate = 88f;
mController.setChecked(false);
assertThat(mController.isChecked()).isFalse(); assertThat(mController.isChecked()).isFalse();
} }
@@ -128,22 +152,4 @@ public class PeakRefreshRatePreferenceControllerTest {
assertThat(mController.isChecked()).isFalse(); 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);
}
} }