Merge "Back up the smooth display setting" into udc-dev
diff --git a/src/com/android/settings/development/ForcePeakRefreshRatePreferenceController.java b/src/com/android/settings/development/ForcePeakRefreshRatePreferenceController.java
index d5d4025..2e0a6b4 100644
--- a/src/com/android/settings/development/ForcePeakRefreshRatePreferenceController.java
+++ b/src/com/android/settings/development/ForcePeakRefreshRatePreferenceController.java
@@ -16,17 +16,18 @@
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;
@@ -35,12 +36,6 @@
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";
@@ -48,17 +43,8 @@
public ForcePeakRefreshRatePreferenceController(Context context) {
super(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());
- }
-
+ mPeakRefreshRate =
+ RefreshRateSettingsUtils.findHighestRefreshRateForDefaultDisplay(context);
Log.d(TAG, "DEFAULT_REFRESH_RATE : " + DEFAULT_REFRESH_RATE
+ " mPeakRefreshRate : " + mPeakRefreshRate);
}
@@ -99,34 +85,20 @@
@Override
protected void onDeveloperOptionsSwitchDisabled() {
super.onDeveloperOptionsSwitchDisabled();
- Settings.System.putFloat(mContext.getContentResolver(),
- Settings.System.MIN_REFRESH_RATE, NO_CONFIG);
+ Settings.System.putInt(mContext.getContentResolver(),
+ Settings.System.FORCE_PEAK_REFRESH_RATE, 0);
((SwitchPreference) mPreference).setChecked(false);
}
@VisibleForTesting
void forcePeakRefreshRate(boolean enable) {
- final float peakRefreshRate = enable ? mPeakRefreshRate : NO_CONFIG;
- Settings.System.putFloat(mContext.getContentResolver(),
- Settings.System.MIN_REFRESH_RATE, peakRefreshRate);
+ Settings.System.putInt(mContext.getContentResolver(),
+ Settings.System.FORCE_PEAK_REFRESH_RATE, enable ? 1 : 0);
}
boolean isForcePeakRefreshRateEnabled() {
- 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;
+ return Settings.System.getInt(mContext.getContentResolver(),
+ Settings.System.FORCE_PEAK_REFRESH_RATE, 0) == 1;
}
}
diff --git a/src/com/android/settings/display/PeakRefreshRatePreferenceController.java b/src/com/android/settings/display/PeakRefreshRatePreferenceController.java
index dfcc601..72eca5b 100644
--- a/src/com/android/settings/display/PeakRefreshRatePreferenceController.java
+++ b/src/com/android/settings/display/PeakRefreshRatePreferenceController.java
@@ -16,18 +16,20 @@
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;
@@ -39,8 +41,6 @@
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,17 +65,8 @@
updateState(mPreference);
}
};
-
- 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());
- }
-
+ mPeakRefreshRate =
+ RefreshRateSettingsUtils.findHighestRefreshRateForDefaultDisplay(context);
Log.d(
TAG,
"DEFAULT_REFRESH_RATE : "
@@ -106,21 +97,15 @@
@Override
public boolean isChecked() {
- final float peakRefreshRate =
- Settings.System.getFloat(
- mContext.getContentResolver(),
- Settings.System.PEAK_REFRESH_RATE,
- getDefaultPeakRefreshRate());
- return Math.round(peakRefreshRate) == Math.round(mPeakRefreshRate);
+ return Settings.System.getInt(mContext.getContentResolver(), Settings.System.SMOOTH_DISPLAY,
+ 0) == 1;
}
@Override
public boolean setChecked(boolean isChecked) {
- 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);
+ Log.d(TAG, "setChecked to : " + isChecked);
+ return Settings.System.putInt(
+ mContext.getContentResolver(), Settings.System.SMOOTH_DISPLAY, isChecked ? 1 : 0);
}
@Override
@@ -138,17 +123,6 @@
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() {
@@ -191,15 +165,4 @@
}
}
}
-
- 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 2e93d5e..7dfde38 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.settings.development.ForcePeakRefreshRatePreferenceController.DEFAULT_REFRESH_RATE;
-import static com.android.settings.development.ForcePeakRefreshRatePreferenceController.NO_CONFIG;
+import static com.android.internal.display.RefreshRateSettingsUtils.DEFAULT_REFRESH_RATE;
+
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.verify;
@@ -38,8 +38,6 @@
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
-import android.util.Log;
-
@RunWith(RobolectricTestRunner.class)
public class ForcePeakRefreshRatePreferenceControllerTest {
@@ -63,22 +61,18 @@
@Test
public void onPreferenceChange_preferenceChecked_shouldEnableForcePeak() {
- mController.mPeakRefreshRate = 88f;
-
mController.onPreferenceChange(mPreference, true);
- assertThat(Settings.System.getFloat(mContext.getContentResolver(),
- Settings.System.MIN_REFRESH_RATE, NO_CONFIG)).isEqualTo(88f);
+ assertThat(Settings.System.getInt(mContext.getContentResolver(),
+ Settings.System.FORCE_PEAK_REFRESH_RATE, -1)).isEqualTo(1);
}
@Test
public void onPreferenceChange_preferenceUnchecked_shouldDisableForcePeak() {
- mController.mPeakRefreshRate = 88f;
-
mController.onPreferenceChange(mPreference, false);
- assertThat(Settings.System.getFloat(mContext.getContentResolver(),
- Settings.System.MIN_REFRESH_RATE, NO_CONFIG)).isEqualTo(NO_CONFIG);
+ assertThat(Settings.System.getInt(mContext.getContentResolver(),
+ Settings.System.FORCE_PEAK_REFRESH_RATE, -1)).isEqualTo(0);
}
@Test
@@ -125,8 +119,8 @@
public void onDeveloperOptionsDisabled_shouldDisablePreference() {
mController.onDeveloperOptionsSwitchDisabled();
- assertThat(Settings.System.getFloat(mContext.getContentResolver(),
- Settings.System.MIN_REFRESH_RATE, -1f)).isEqualTo(NO_CONFIG);
+ assertThat(Settings.System.getInt(mContext.getContentResolver(),
+ Settings.System.FORCE_PEAK_REFRESH_RATE, -1)).isEqualTo(0);
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 aaeeea4..9c3644e 100644
--- a/tests/robotests/src/com/android/settings/display/PeakRefreshRatePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/display/PeakRefreshRatePreferenceControllerTest.java
@@ -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 @@
}
@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 @@
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);
}
}