Back up the smooth display setting

- Convert "Smooth display" and "Force peak refresh rate" to a boolean. If they are a boolean, they can be backed up without being device-specific.
- Back up "Smooth display" and add a validator
- Upgrade the settings in SettingsProvider
- Create a utils class - RefreshRateSettingsUtils

Bug: 211737588
Test: atest DisplayModeDirectorTest
Test: atest ForcePeakRefreshRatePreferenceControllerTest
Test: atest PeakRefreshRatePreferenceControllerTest
Test: atest SettingsBackupTest
Test: atest SettingsProviderTest
Change-Id: Ib2cb2dd100f06f5452083b7606109a486e795a0e
Merged-In: Ib2cb2dd100f06f5452083b7606109a486e795a0e
This commit is contained in:
Piotr Wilczyński
2023-03-10 16:25:39 +00:00
parent bc12caac88
commit 5c42659602
4 changed files with 44 additions and 133 deletions

View File

@@ -16,15 +16,14 @@
package com.android.settings.display;
import static com.android.internal.display.RefreshRateSettingsUtils.DEFAULT_REFRESH_RATE;
import static com.android.settings.core.BasePreferenceController.AVAILABLE;
import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_DEVICE;
import static com.android.settings.display.PeakRefreshRatePreferenceController.DEFAULT_REFRESH_RATE;
import static com.google.common.truth.Truth.assertThat;
import android.content.Context;
import android.provider.Settings;
import android.view.Display;
import androidx.preference.SwitchPreference;
@@ -70,23 +69,21 @@ public class PeakRefreshRatePreferenceControllerTest {
}
@Test
public void setChecked_enableSmoothDisplay_setCurrentRefreshRate() {
mController.mPeakRefreshRate = 88f;
public void setChecked_enableSmoothDisplay() {
mController.setChecked(true);
assertThat(Settings.System.getFloat(mContext.getContentResolver(),
Settings.System.PEAK_REFRESH_RATE, DEFAULT_REFRESH_RATE))
.isEqualTo(88.0f);
assertThat(Settings.System.getInt(mContext.getContentResolver(),
Settings.System.SMOOTH_DISPLAY, -1))
.isEqualTo(1);
}
@Test
public void setChecked_disableSmoothDisplay_setDefaultRefreshRate() {
mController.mPeakRefreshRate = 88f;
public void setChecked_disableSmoothDisplay() {
mController.setChecked(false);
assertThat(Settings.System.getFloat(mContext.getContentResolver(),
Settings.System.PEAK_REFRESH_RATE, DEFAULT_REFRESH_RATE))
.isEqualTo(DEFAULT_REFRESH_RATE);
assertThat(Settings.System.getInt(mContext.getContentResolver(),
Settings.System.SMOOTH_DISPLAY, -1))
.isEqualTo(0);
}
@Test
@@ -103,36 +100,21 @@ public class PeakRefreshRatePreferenceControllerTest {
assertThat(mController.isChecked()).isFalse();
}
@Test
public void findPeakRefreshRate_moreThanOneHigherThanDefault() {
Display.Mode lower = new Display.Mode(0, 0, 0, DEFAULT_REFRESH_RATE - 1);
Display.Mode def = new Display.Mode(0, 0, 0, DEFAULT_REFRESH_RATE);
Display.Mode higher = new Display.Mode(0, 0, 0, DEFAULT_REFRESH_RATE + 1);
Display.Mode higher1 = new Display.Mode(0, 0, 0, DEFAULT_REFRESH_RATE + 2);
assertThat(mController.findPeakRefreshRate(
new Display.Mode[] {lower, def, higher, higher1}))
.isEqualTo(DEFAULT_REFRESH_RATE + 2);
assertThat(mController.findPeakRefreshRate(
new Display.Mode[] {lower, def, higher1, higher}))
.isEqualTo(DEFAULT_REFRESH_RATE + 2);
}
private void enableSmoothDisplayPreference() {
mController.mPeakRefreshRate = 88f;
Settings.System.putFloat(
Settings.System.putInt(
mContext.getContentResolver(),
Settings.System.PEAK_REFRESH_RATE,
mController.mPeakRefreshRate);
Settings.System.SMOOTH_DISPLAY,
1);
}
private void disableSmoothDisplayPreference() {
mController.mPeakRefreshRate = 88f;
Settings.System.putFloat(
Settings.System.putInt(
mContext.getContentResolver(),
Settings.System.PEAK_REFRESH_RATE,
DEFAULT_REFRESH_RATE);
Settings.System.SMOOTH_DISPLAY,
0);
}
}