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.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);
}

View File

@@ -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(

View File

@@ -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

View File

@@ -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);
}
}