Revert "Back up the smooth display setting"
Revert submission 22741921-cherrypick-bug-211737588-lp9s6r5vn3
Reason for revert: b/279215664
Reverted changes: /q/submissionid:22741921-cherrypick-bug-211737588-lp9s6r5vn3
Change-Id: I9b50aa0e2c5a7d328c4aa70b049c37c81e49e89b
Merged-In: I9b50aa0e2c5a7d328c4aa70b049c37c81e49e89b
diff --git a/src/com/android/settings/development/ForcePeakRefreshRatePreferenceController.java b/src/com/android/settings/development/ForcePeakRefreshRatePreferenceController.java
index 2e0a6b4..d5d4025 100644
--- a/src/com/android/settings/development/ForcePeakRefreshRatePreferenceController.java
+++ b/src/com/android/settings/development/ForcePeakRefreshRatePreferenceController.java
@@ -16,18 +16,17 @@
package com.android.settings.development;
-import static com.android.internal.display.RefreshRateSettingsUtils.DEFAULT_REFRESH_RATE;
-
import android.content.Context;
+import android.hardware.display.DisplayManager;
import android.provider.Settings;
import android.util.Log;
+import android.view.Display;
import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
import androidx.preference.SwitchPreference;
-import com.android.internal.display.RefreshRateSettingsUtils;
import com.android.settings.R;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settingslib.development.DeveloperOptionsPreferenceController;
@@ -36,6 +35,12 @@
implements Preference.OnPreferenceChangeListener, PreferenceControllerMixin {
@VisibleForTesting
+ static float DEFAULT_REFRESH_RATE = 60f;
+
+ @VisibleForTesting
+ static float NO_CONFIG = 0f;
+
+ @VisibleForTesting
float mPeakRefreshRate;
private static final String TAG = "ForcePeakRefreshRateCtr";
@@ -43,8 +48,17 @@
public ForcePeakRefreshRatePreferenceController(Context context) {
super(context);
- mPeakRefreshRate =
- RefreshRateSettingsUtils.findHighestRefreshRateForDefaultDisplay(context);
+
+ final DisplayManager dm = context.getSystemService(DisplayManager.class);
+ final Display display = dm.getDisplay(Display.DEFAULT_DISPLAY);
+
+ if (display == null) {
+ Log.w(TAG, "No valid default display device");
+ mPeakRefreshRate = DEFAULT_REFRESH_RATE;
+ } else {
+ mPeakRefreshRate = findPeakRefreshRate(display.getSupportedModes());
+ }
+
Log.d(TAG, "DEFAULT_REFRESH_RATE : " + DEFAULT_REFRESH_RATE
+ " mPeakRefreshRate : " + mPeakRefreshRate);
}
@@ -85,20 +99,34 @@
@Override
protected void onDeveloperOptionsSwitchDisabled() {
super.onDeveloperOptionsSwitchDisabled();
- Settings.System.putInt(mContext.getContentResolver(),
- Settings.System.FORCE_PEAK_REFRESH_RATE, 0);
+ Settings.System.putFloat(mContext.getContentResolver(),
+ Settings.System.MIN_REFRESH_RATE, NO_CONFIG);
((SwitchPreference) mPreference).setChecked(false);
}
@VisibleForTesting
void forcePeakRefreshRate(boolean enable) {
- Settings.System.putInt(mContext.getContentResolver(),
- Settings.System.FORCE_PEAK_REFRESH_RATE, enable ? 1 : 0);
+ final float peakRefreshRate = enable ? mPeakRefreshRate : NO_CONFIG;
+ Settings.System.putFloat(mContext.getContentResolver(),
+ Settings.System.MIN_REFRESH_RATE, peakRefreshRate);
}
boolean isForcePeakRefreshRateEnabled() {
- return Settings.System.getInt(mContext.getContentResolver(),
- Settings.System.FORCE_PEAK_REFRESH_RATE, 0) == 1;
+ final float peakRefreshRate = Settings.System.getFloat(mContext.getContentResolver(),
+ Settings.System.MIN_REFRESH_RATE, NO_CONFIG);
+
+ return peakRefreshRate >= mPeakRefreshRate;
+ }
+
+ private float findPeakRefreshRate(Display.Mode[] modes) {
+ float peakRefreshRate = DEFAULT_REFRESH_RATE;
+ for (Display.Mode mode : modes) {
+ if (Math.round(mode.getRefreshRate()) > peakRefreshRate) {
+ peakRefreshRate = mode.getRefreshRate();
+ }
+ }
+
+ return peakRefreshRate;
}
}
diff --git a/src/com/android/settings/display/PeakRefreshRatePreferenceController.java b/src/com/android/settings/display/PeakRefreshRatePreferenceController.java
index 72eca5b..dfcc601 100644
--- a/src/com/android/settings/display/PeakRefreshRatePreferenceController.java
+++ b/src/com/android/settings/display/PeakRefreshRatePreferenceController.java
@@ -16,20 +16,18 @@
package com.android.settings.display;
-import static com.android.internal.display.RefreshRateSettingsUtils.DEFAULT_REFRESH_RATE;
-
import android.content.Context;
import android.hardware.display.DisplayManager;
import android.os.Handler;
import android.provider.DeviceConfig;
import android.provider.Settings;
import android.util.Log;
+import android.view.Display;
import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
-import com.android.internal.display.RefreshRateSettingsUtils;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
@@ -41,6 +39,8 @@
public class PeakRefreshRatePreferenceController extends TogglePreferenceController
implements LifecycleObserver, OnStart, OnStop {
+ @VisibleForTesting static float DEFAULT_REFRESH_RATE = 60f;
+
@VisibleForTesting float mPeakRefreshRate;
private static final String TAG = "RefreshRatePrefCtr";
@@ -65,8 +65,17 @@
updateState(mPreference);
}
};
- mPeakRefreshRate =
- RefreshRateSettingsUtils.findHighestRefreshRateForDefaultDisplay(context);
+
+ final DisplayManager dm = mContext.getSystemService(DisplayManager.class);
+ final Display display = dm.getDisplay(Display.DEFAULT_DISPLAY);
+
+ if (display == null) {
+ Log.w(TAG, "No valid default display device");
+ mPeakRefreshRate = DEFAULT_REFRESH_RATE;
+ } else {
+ mPeakRefreshRate = findPeakRefreshRate(display.getSupportedModes());
+ }
+
Log.d(
TAG,
"DEFAULT_REFRESH_RATE : "
@@ -97,15 +106,21 @@
@Override
public boolean isChecked() {
- return Settings.System.getInt(mContext.getContentResolver(), Settings.System.SMOOTH_DISPLAY,
- 0) == 1;
+ final float peakRefreshRate =
+ Settings.System.getFloat(
+ mContext.getContentResolver(),
+ Settings.System.PEAK_REFRESH_RATE,
+ getDefaultPeakRefreshRate());
+ return Math.round(peakRefreshRate) == Math.round(mPeakRefreshRate);
}
@Override
public boolean setChecked(boolean isChecked) {
- Log.d(TAG, "setChecked to : " + isChecked);
- return Settings.System.putInt(
- mContext.getContentResolver(), Settings.System.SMOOTH_DISPLAY, isChecked ? 1 : 0);
+ final float peakRefreshRate = isChecked ? mPeakRefreshRate : DEFAULT_REFRESH_RATE;
+ Log.d(TAG, "setChecked to : " + peakRefreshRate);
+
+ return Settings.System.putFloat(
+ mContext.getContentResolver(), Settings.System.PEAK_REFRESH_RATE, peakRefreshRate);
}
@Override
@@ -123,6 +138,17 @@
mDeviceConfigDisplaySettings.stopListening();
}
+ @VisibleForTesting
+ float findPeakRefreshRate(Display.Mode[] modes) {
+ float peakRefreshRate = DEFAULT_REFRESH_RATE;
+ for (Display.Mode mode : modes) {
+ if (Math.round(mode.getRefreshRate()) > peakRefreshRate) {
+ peakRefreshRate = mode.getRefreshRate();
+ }
+ }
+ return peakRefreshRate;
+ }
+
private class DeviceConfigDisplaySettings
implements DeviceConfig.OnPropertiesChangedListener, Executor {
public void startListening() {
@@ -165,4 +191,15 @@
}
}
}
+
+ private float getDefaultPeakRefreshRate() {
+ float defaultPeakRefreshRate = mDeviceConfigDisplaySettings.getDefaultPeakRefreshRate();
+ if (defaultPeakRefreshRate == INVALIDATE_REFRESH_RATE) {
+ defaultPeakRefreshRate = (float) mContext.getResources().getInteger(
+ com.android.internal.R.integer.config_defaultPeakRefreshRate);
+ }
+
+ Log.d(TAG, "DeviceConfig getDefaultPeakRefreshRate : " + defaultPeakRefreshRate);
+ return defaultPeakRefreshRate;
+ }
}
diff --git a/tests/robotests/src/com/android/settings/development/ForcePeakRefreshRatePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/ForcePeakRefreshRatePreferenceControllerTest.java
index 7dfde38..2e93d5e 100644
--- a/tests/robotests/src/com/android/settings/development/ForcePeakRefreshRatePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/development/ForcePeakRefreshRatePreferenceControllerTest.java
@@ -16,8 +16,8 @@
package com.android.settings.development;
-import static com.android.internal.display.RefreshRateSettingsUtils.DEFAULT_REFRESH_RATE;
-
+import static com.android.settings.development.ForcePeakRefreshRatePreferenceController.DEFAULT_REFRESH_RATE;
+import static com.android.settings.development.ForcePeakRefreshRatePreferenceController.NO_CONFIG;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.verify;
@@ -38,6 +38,8 @@
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
+import android.util.Log;
+
@RunWith(RobolectricTestRunner.class)
public class ForcePeakRefreshRatePreferenceControllerTest {
@@ -61,18 +63,22 @@
@Test
public void onPreferenceChange_preferenceChecked_shouldEnableForcePeak() {
+ mController.mPeakRefreshRate = 88f;
+
mController.onPreferenceChange(mPreference, true);
- assertThat(Settings.System.getInt(mContext.getContentResolver(),
- Settings.System.FORCE_PEAK_REFRESH_RATE, -1)).isEqualTo(1);
+ assertThat(Settings.System.getFloat(mContext.getContentResolver(),
+ Settings.System.MIN_REFRESH_RATE, NO_CONFIG)).isEqualTo(88f);
}
@Test
public void onPreferenceChange_preferenceUnchecked_shouldDisableForcePeak() {
+ mController.mPeakRefreshRate = 88f;
+
mController.onPreferenceChange(mPreference, false);
- assertThat(Settings.System.getInt(mContext.getContentResolver(),
- Settings.System.FORCE_PEAK_REFRESH_RATE, -1)).isEqualTo(0);
+ assertThat(Settings.System.getFloat(mContext.getContentResolver(),
+ Settings.System.MIN_REFRESH_RATE, NO_CONFIG)).isEqualTo(NO_CONFIG);
}
@Test
@@ -119,8 +125,8 @@
public void onDeveloperOptionsDisabled_shouldDisablePreference() {
mController.onDeveloperOptionsSwitchDisabled();
- assertThat(Settings.System.getInt(mContext.getContentResolver(),
- Settings.System.FORCE_PEAK_REFRESH_RATE, -1)).isEqualTo(0);
+ assertThat(Settings.System.getFloat(mContext.getContentResolver(),
+ Settings.System.MIN_REFRESH_RATE, -1f)).isEqualTo(NO_CONFIG);
assertThat(mPreference.isChecked()).isFalse();
assertThat(mPreference.isEnabled()).isFalse();
}
diff --git a/tests/robotests/src/com/android/settings/display/PeakRefreshRatePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/PeakRefreshRatePreferenceControllerTest.java
index 9c3644e..aaeeea4 100644
--- a/tests/robotests/src/com/android/settings/display/PeakRefreshRatePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/display/PeakRefreshRatePreferenceControllerTest.java
@@ -16,14 +16,15 @@
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;
@@ -69,21 +70,23 @@
}
@Test
- public void setChecked_enableSmoothDisplay() {
+ public void setChecked_enableSmoothDisplay_setCurrentRefreshRate() {
+ mController.mPeakRefreshRate = 88f;
mController.setChecked(true);
- assertThat(Settings.System.getInt(mContext.getContentResolver(),
- Settings.System.SMOOTH_DISPLAY, -1))
- .isEqualTo(1);
+ assertThat(Settings.System.getFloat(mContext.getContentResolver(),
+ Settings.System.PEAK_REFRESH_RATE, DEFAULT_REFRESH_RATE))
+ .isEqualTo(88.0f);
}
@Test
- public void setChecked_disableSmoothDisplay() {
+ public void setChecked_disableSmoothDisplay_setDefaultRefreshRate() {
+ mController.mPeakRefreshRate = 88f;
mController.setChecked(false);
- assertThat(Settings.System.getInt(mContext.getContentResolver(),
- Settings.System.SMOOTH_DISPLAY, -1))
- .isEqualTo(0);
+ assertThat(Settings.System.getFloat(mContext.getContentResolver(),
+ Settings.System.PEAK_REFRESH_RATE, DEFAULT_REFRESH_RATE))
+ .isEqualTo(DEFAULT_REFRESH_RATE);
}
@Test
@@ -100,21 +103,36 @@
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.putInt(
+ Settings.System.putFloat(
mContext.getContentResolver(),
- Settings.System.SMOOTH_DISPLAY,
- 1);
+ Settings.System.PEAK_REFRESH_RATE,
+ mController.mPeakRefreshRate);
}
private void disableSmoothDisplayPreference() {
mController.mPeakRefreshRate = 88f;
- Settings.System.putInt(
+ Settings.System.putFloat(
mContext.getContentResolver(),
- Settings.System.SMOOTH_DISPLAY,
- 0);
+ Settings.System.PEAK_REFRESH_RATE,
+ DEFAULT_REFRESH_RATE);
}
}