diff options
| author | 2023-04-28 09:58:17 +0000 | |
|---|---|---|
| committer | 2023-04-28 09:58:17 +0000 | |
| commit | 0801b7bed248baf4987f9404c766c82ddc4684d3 (patch) | |
| tree | ba8afb8716182623faffa4885e9030e2856daff0 | |
| parent | a611e650a276d7152514f2ad18e532f00f9d7da6 (diff) | |
| parent | 4477482348165d5759f8cdbe520b9fe7a6f813ff (diff) | |
Merge "Revert "Back up the smooth display setting"" into udc-dev
9 files changed, 56 insertions, 451 deletions
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index 79e7574647b3..4a46beb670de 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -4677,16 +4677,22 @@ public final class Settings { "display_color_mode_vendor_hint"; /** - * Whether or not the peak refresh rate should be forced. 0=no, 1=yes + * The user selected min refresh rate in frames per second. + * + * If this isn't set, 0 will be used. * @hide */ - public static final String FORCE_PEAK_REFRESH_RATE = "force_peak_refresh_rate"; + @Readable + public static final String MIN_REFRESH_RATE = "min_refresh_rate"; /** - * Whether or not the peak refresh rate should be used for some content. 0=no, 1=yes + * The user selected peak refresh rate in frames per second. + * + * If this isn't set, the system falls back to a device specific default. * @hide */ - public static final String SMOOTH_DISPLAY = "smooth_display"; + @Readable + public static final String PEAK_REFRESH_RATE = "peak_refresh_rate"; /** * The amount of time in milliseconds before the device goes to sleep or begins diff --git a/core/java/com/android/internal/display/RefreshRateSettingsUtils.java b/core/java/com/android/internal/display/RefreshRateSettingsUtils.java deleted file mode 100644 index 39d8380c7e95..000000000000 --- a/core/java/com/android/internal/display/RefreshRateSettingsUtils.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright (C) 2023 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.internal.display; - -import android.content.ContentResolver; -import android.content.Context; -import android.hardware.display.DisplayManager; -import android.provider.Settings; -import android.util.Log; -import android.view.Display; - -/** - * Constants and utility methods for refresh rate settings. - */ -public class RefreshRateSettingsUtils { - - private static final String TAG = "RefreshRateSettingsUtils"; - - public static final float DEFAULT_REFRESH_RATE = 60f; - - /** - * Find the highest refresh rate among all the modes of the default display. - * @param context The context - * @return The highest refresh rate - */ - public static float findHighestRefreshRateForDefaultDisplay(Context 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"); - return DEFAULT_REFRESH_RATE; - } - - float maxRefreshRate = DEFAULT_REFRESH_RATE; - for (Display.Mode mode : display.getSupportedModes()) { - if (Math.round(mode.getRefreshRate()) > maxRefreshRate) { - maxRefreshRate = mode.getRefreshRate(); - } - } - return maxRefreshRate; - } - - /** - * Get the min refresh rate which is determined by - * {@link Settings.System.FORCE_PEAK_REFRESH_RATE}. - * @param context The context - * @return The min refresh rate - */ - public static float getMinRefreshRate(Context context) { - final ContentResolver cr = context.getContentResolver(); - int forcePeakRefreshRateSetting = Settings.System.getIntForUser(cr, - Settings.System.FORCE_PEAK_REFRESH_RATE, -1, cr.getUserId()); - return forcePeakRefreshRateSetting == 1 - ? findHighestRefreshRateForDefaultDisplay(context) - : 0; - } - - /** - * Get the peak refresh rate which is determined by {@link Settings.System.SMOOTH_DISPLAY}. - * @param context The context - * @param defaultPeakRefreshRate The refresh rate to return if the setting doesn't have a value - * @return The peak refresh rate - */ - public static float getPeakRefreshRate(Context context, float defaultPeakRefreshRate) { - final ContentResolver cr = context.getContentResolver(); - int smoothDisplaySetting = Settings.System.getIntForUser(cr, - Settings.System.SMOOTH_DISPLAY, -1, cr.getUserId()); - switch (smoothDisplaySetting) { - case 0: - return DEFAULT_REFRESH_RATE; - case 1: - return findHighestRefreshRateForDefaultDisplay(context); - default: - return defaultPeakRefreshRate; - } - } -} diff --git a/packages/SettingsProvider/src/android/provider/settings/backup/SystemSettings.java b/packages/SettingsProvider/src/android/provider/settings/backup/SystemSettings.java index e4cc9f15aea1..6a5535d345db 100644 --- a/packages/SettingsProvider/src/android/provider/settings/backup/SystemSettings.java +++ b/packages/SettingsProvider/src/android/provider/settings/backup/SystemSettings.java @@ -100,6 +100,5 @@ public class SystemSettings { Settings.System.CAMERA_FLASH_NOTIFICATION, Settings.System.SCREEN_FLASH_NOTIFICATION, Settings.System.SCREEN_FLASH_NOTIFICATION_COLOR, - Settings.System.SMOOTH_DISPLAY }; } diff --git a/packages/SettingsProvider/src/android/provider/settings/validators/SystemSettingsValidators.java b/packages/SettingsProvider/src/android/provider/settings/validators/SystemSettingsValidators.java index 4b720636c1d4..85623b26c589 100644 --- a/packages/SettingsProvider/src/android/provider/settings/validators/SystemSettingsValidators.java +++ b/packages/SettingsProvider/src/android/provider/settings/validators/SystemSettingsValidators.java @@ -226,6 +226,5 @@ public class SystemSettingsValidators { VALIDATORS.put(System.CAMERA_FLASH_NOTIFICATION, BOOLEAN_VALIDATOR); VALIDATORS.put(System.SCREEN_FLASH_NOTIFICATION, BOOLEAN_VALIDATOR); VALIDATORS.put(System.SCREEN_FLASH_NOTIFICATION_COLOR, ANY_INTEGER_VALIDATOR); - VALIDATORS.put(System.SMOOTH_DISPLAY, BOOLEAN_VALIDATOR); } } diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java index d1bd5e661072..46b45d12efc8 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java @@ -34,7 +34,6 @@ import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_GESTURAL_OV import static com.android.internal.accessibility.AccessibilityShortcutController.MAGNIFICATION_CONTROLLER_NAME; import static com.android.internal.accessibility.util.AccessibilityUtils.ACCESSIBILITY_MENU_IN_SYSTEM; -import static com.android.internal.display.RefreshRateSettingsUtils.DEFAULT_REFRESH_RATE; import static com.android.providers.settings.SettingsState.FALLBACK_FILE_SUFFIX; import static com.android.providers.settings.SettingsState.getTypeFromKey; import static com.android.providers.settings.SettingsState.getUserIdFromKey; @@ -5674,7 +5673,7 @@ public class SettingsProvider extends ContentProvider { providers.addAll(Arrays.asList(resources.getStringArray(resourceId))); } catch (Resources.NotFoundException e) { Slog.w(LOG_TAG, - "Get default array Cred Provider not found: " + e.toString()); + "Get default array Cred Provider not found: " + e.toString()); } try { final String storedValue = resources.getString(resourceId); @@ -5683,7 +5682,7 @@ public class SettingsProvider extends ContentProvider { } } catch (Resources.NotFoundException e) { Slog.w(LOG_TAG, - "Get default Cred Provider not found: " + e.toString()); + "Get default Cred Provider not found: " + e.toString()); } if (!providers.isEmpty()) { @@ -5732,8 +5731,8 @@ public class SettingsProvider extends ContentProvider { final Setting currentSetting = secureSettings .getSettingLocked(Settings.Secure.CREDENTIAL_SERVICE); if (currentSetting.isNull()) { - final int resourceId = com.android.internal.R.array - .config_defaultCredentialProviderService; + final int resourceId = + com.android.internal.R.array.config_defaultCredentialProviderService; final Resources resources = getContext().getResources(); // If the config has not be defined we might get an exception. final List<String> providers = new ArrayList<>(); @@ -5741,7 +5740,7 @@ public class SettingsProvider extends ContentProvider { providers.addAll(Arrays.asList(resources.getStringArray(resourceId))); } catch (Resources.NotFoundException e) { Slog.w(LOG_TAG, - "Get default array Cred Provider not found: " + e.toString()); + "Get default array Cred Provider not found: " + e.toString()); } if (!providers.isEmpty()) { @@ -5840,44 +5839,12 @@ public class SettingsProvider extends ContentProvider { currentVersion = 218; } - // v218: Convert Smooth Display and Force Peak Refresh Rate to a boolean if (currentVersion == 218) { - final String peakRefreshRateSettingName = "peak_refresh_rate"; - final String minRefreshRateSettingName = "min_refresh_rate"; - - final SettingsState systemSettings = getSystemSettingsLocked(userId); - final Setting peakRefreshRateSetting = - systemSettings.getSettingLocked(peakRefreshRateSettingName); - final Setting minRefreshRateSetting = - systemSettings.getSettingLocked(minRefreshRateSettingName); - - float peakRefreshRate = DEFAULT_REFRESH_RATE; - float minRefreshRate = 0; - try { - if (!peakRefreshRateSetting.isNull()) { - peakRefreshRate = Float.parseFloat(peakRefreshRateSetting.getValue()); - } - } catch (NumberFormatException e) { - // Do nothing. Overwrite with default value. - } - try { - if (!minRefreshRateSetting.isNull()) { - minRefreshRate = Float.parseFloat(minRefreshRateSetting.getValue()); - } - } catch (NumberFormatException e) { - // Do nothing. Overwrite with default value. - } - - systemSettings.deleteSettingLocked(peakRefreshRateSettingName); - systemSettings.deleteSettingLocked(minRefreshRateSettingName); - - systemSettings.insertSettingLocked(Settings.System.SMOOTH_DISPLAY, - peakRefreshRate > DEFAULT_REFRESH_RATE ? "1" : "0", /* tag= */ null, - /* makeDefault= */ false, SettingsState.SYSTEM_PACKAGE_NAME); - systemSettings.insertSettingLocked(Settings.System.FORCE_PEAK_REFRESH_RATE, - minRefreshRate > 0 ? "1" : "0", /* tag= */ null, - /* makeDefault= */ false, SettingsState.SYSTEM_PACKAGE_NAME); - + // Version 219: Removed + // TODO(b/211737588): Back up the Smooth Display setting + // Future upgrades to the `peak_refresh_rate` and `min_refresh_rate` settings + // should account for the database in a non-upgraded and upgraded (change id: + // Ib2cb2dd100f06f5452083b7606109a486e795a0e) state. currentVersion = 219; } diff --git a/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java b/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java index 36aa2ac74406..706666cbebab 100644 --- a/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java +++ b/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java @@ -97,7 +97,8 @@ public class SettingsBackupTest { Settings.System.WHEN_TO_MAKE_WIFI_CALLS, // bug? Settings.System.WINDOW_ORIENTATION_LISTENER_LOG, // used for debugging only Settings.System.DESKTOP_MODE, // developer setting for internal prototyping - Settings.System.FORCE_PEAK_REFRESH_RATE, // depends on hardware capabilities + Settings.System.MIN_REFRESH_RATE, // depends on hardware capabilities + Settings.System.PEAK_REFRESH_RATE, // depends on hardware capabilities Settings.System.SCREEN_BRIGHTNESS_FLOAT, Settings.System.SCREEN_AUTO_BRIGHTNESS_ADJ, Settings.System.MULTI_AUDIO_FOCUS_ENABLED // form-factor/OEM specific diff --git a/services/core/java/com/android/server/display/mode/DisplayModeDirector.java b/services/core/java/com/android/server/display/mode/DisplayModeDirector.java index fd94be9a2921..17f928af1c09 100644 --- a/services/core/java/com/android/server/display/mode/DisplayModeDirector.java +++ b/services/core/java/com/android/server/display/mode/DisplayModeDirector.java @@ -65,7 +65,6 @@ import com.android.internal.R; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.display.BrightnessSynchronizer; -import com.android.internal.display.RefreshRateSettingsUtils; import com.android.internal.os.BackgroundThread; import com.android.server.LocalServices; import com.android.server.display.DisplayDeviceConfig; @@ -1067,10 +1066,10 @@ public class DisplayModeDirector { @VisibleForTesting final class SettingsObserver extends ContentObserver { - private final Uri mSmoothDisplaySetting = - Settings.System.getUriFor(Settings.System.SMOOTH_DISPLAY); - private final Uri mForcePeakRefreshRateSetting = - Settings.System.getUriFor(Settings.System.FORCE_PEAK_REFRESH_RATE); + private final Uri mPeakRefreshRateSetting = + Settings.System.getUriFor(Settings.System.PEAK_REFRESH_RATE); + private final Uri mMinRefreshRateSetting = + Settings.System.getUriFor(Settings.System.MIN_REFRESH_RATE); private final Uri mLowPowerModeSetting = Settings.Global.getUriFor(Settings.Global.LOW_POWER_MODE); private final Uri mMatchContentFrameRateSetting = @@ -1106,8 +1105,9 @@ public class DisplayModeDirector { public void observe() { final ContentResolver cr = mContext.getContentResolver(); - mInjector.registerSmoothDisplayObserver(cr, this); - mInjector.registerForcePeakRefreshRateObserver(cr, this); + mInjector.registerPeakRefreshRateObserver(cr, this); + cr.registerContentObserver(mMinRefreshRateSetting, false /*notifyDescendants*/, this, + UserHandle.USER_SYSTEM); cr.registerContentObserver(mLowPowerModeSetting, false /*notifyDescendants*/, this, UserHandle.USER_SYSTEM); cr.registerContentObserver(mMatchContentFrameRateSetting, false /*notifyDescendants*/, @@ -1149,8 +1149,8 @@ public class DisplayModeDirector { @Override public void onChange(boolean selfChange, Uri uri, int userId) { synchronized (mLock) { - if (mSmoothDisplaySetting.equals(uri) - || mForcePeakRefreshRateSetting.equals(uri)) { + if (mPeakRefreshRateSetting.equals(uri) + || mMinRefreshRateSetting.equals(uri)) { updateRefreshRateSettingLocked(); } else if (mLowPowerModeSetting.equals(uri)) { updateLowPowerModeSettingLocked(); @@ -1205,9 +1205,12 @@ public class DisplayModeDirector { } private void updateRefreshRateSettingLocked() { - updateRefreshRateSettingLocked(RefreshRateSettingsUtils.getMinRefreshRate(mContext), - RefreshRateSettingsUtils.getPeakRefreshRate(mContext, mDefaultPeakRefreshRate), - mDefaultRefreshRate); + final ContentResolver cr = mContext.getContentResolver(); + float minRefreshRate = Settings.System.getFloatForUser(cr, + Settings.System.MIN_REFRESH_RATE, 0f, cr.getUserId()); + float peakRefreshRate = Settings.System.getFloatForUser(cr, + Settings.System.PEAK_REFRESH_RATE, mDefaultPeakRefreshRate, cr.getUserId()); + updateRefreshRateSettingLocked(minRefreshRate, peakRefreshRate, mDefaultRefreshRate); } private void updateRefreshRateSettingLocked( @@ -2840,17 +2843,12 @@ public class DisplayModeDirector { } interface Injector { - Uri SMOOTH_DISPLAY_URI = Settings.System.getUriFor(Settings.System.SMOOTH_DISPLAY); - Uri FORCE_PEAK_REFRESH_RATE_URI = - Settings.System.getUriFor(Settings.System.FORCE_PEAK_REFRESH_RATE); + Uri PEAK_REFRESH_RATE_URI = Settings.System.getUriFor(Settings.System.PEAK_REFRESH_RATE); @NonNull DeviceConfigInterface getDeviceConfig(); - void registerSmoothDisplayObserver(@NonNull ContentResolver cr, - @NonNull ContentObserver observer); - - void registerForcePeakRefreshRateObserver(@NonNull ContentResolver cr, + void registerPeakRefreshRateObserver(@NonNull ContentResolver cr, @NonNull ContentObserver observer); void registerDisplayListener(@NonNull DisplayManager.DisplayListener listener, @@ -2890,16 +2888,9 @@ public class DisplayModeDirector { } @Override - public void registerSmoothDisplayObserver(@NonNull ContentResolver cr, - @NonNull ContentObserver observer) { - cr.registerContentObserver(SMOOTH_DISPLAY_URI, false /*notifyDescendants*/, - observer, UserHandle.USER_SYSTEM); - } - - @Override - public void registerForcePeakRefreshRateObserver(@NonNull ContentResolver cr, + public void registerPeakRefreshRateObserver(@NonNull ContentResolver cr, @NonNull ContentObserver observer) { - cr.registerContentObserver(FORCE_PEAK_REFRESH_RATE_URI, false /*notifyDescendants*/, + cr.registerContentObserver(PEAK_REFRESH_RATE_URI, false /*notifyDescendants*/, observer, UserHandle.USER_SYSTEM); } diff --git a/services/tests/mockingservicestests/src/com/android/server/display/RefreshRateSettingsUtilsTest.java b/services/tests/mockingservicestests/src/com/android/server/display/RefreshRateSettingsUtilsTest.java deleted file mode 100644 index 17fba9f43707..000000000000 --- a/services/tests/mockingservicestests/src/com/android/server/display/RefreshRateSettingsUtilsTest.java +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Copyright (C) 2023 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.server.display; - -import static com.android.internal.display.RefreshRateSettingsUtils.DEFAULT_REFRESH_RATE; - -import static org.junit.Assert.assertEquals; -import static org.mockito.Mockito.when; - -import android.hardware.display.DisplayManager; -import android.provider.Settings; -import android.testing.TestableContext; -import android.view.Display; - -import androidx.test.filters.SmallTest; -import androidx.test.platform.app.InstrumentationRegistry; -import androidx.test.runner.AndroidJUnit4; - -import com.android.internal.display.RefreshRateSettingsUtils; - -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; - -@SmallTest -@RunWith(AndroidJUnit4.class) -public class RefreshRateSettingsUtilsTest { - - @Rule - public final TestableContext mContext = new TestableContext( - InstrumentationRegistry.getInstrumentation().getContext()); - - @Mock - private DisplayManager mDisplayManagerMock; - @Mock - private Display mDisplayMock; - - @Before - public void setUp() { - MockitoAnnotations.initMocks(this); - - mContext.addMockSystemService(DisplayManager.class, mDisplayManagerMock); - - Display.Mode[] modes = new Display.Mode[] { - new Display.Mode(/* modeId= */ 0, /* width= */ 800, /* height= */ 600, - /* refreshRate= */ 60), - new Display.Mode(/* modeId= */ 0, /* width= */ 800, /* height= */ 600, - /* refreshRate= */ 120), - new Display.Mode(/* modeId= */ 0, /* width= */ 800, /* height= */ 600, - /* refreshRate= */ 90) - }; - - when(mDisplayManagerMock.getDisplay(Display.DEFAULT_DISPLAY)).thenReturn(mDisplayMock); - when(mDisplayMock.getSupportedModes()).thenReturn(modes); - } - - @Test - public void testFindHighestRefreshRateForDefaultDisplay() { - when(mDisplayManagerMock.getDisplay(Display.DEFAULT_DISPLAY)).thenReturn(null); - assertEquals(DEFAULT_REFRESH_RATE, - RefreshRateSettingsUtils.findHighestRefreshRateForDefaultDisplay(mContext), - /* delta= */ 0); - - when(mDisplayManagerMock.getDisplay(Display.DEFAULT_DISPLAY)).thenReturn(mDisplayMock); - assertEquals(120, - RefreshRateSettingsUtils.findHighestRefreshRateForDefaultDisplay(mContext), - /* delta= */ 0); - } - - @Test - public void testGetMinRefreshRate() { - Settings.System.putInt(mContext.getContentResolver(), - Settings.System.FORCE_PEAK_REFRESH_RATE, -1); - assertEquals(0, RefreshRateSettingsUtils.getMinRefreshRate(mContext), /* delta= */ 0); - - Settings.System.putInt(mContext.getContentResolver(), - Settings.System.FORCE_PEAK_REFRESH_RATE, 0); - assertEquals(0, RefreshRateSettingsUtils.getMinRefreshRate(mContext), /* delta= */ 0); - - Settings.System.putInt(mContext.getContentResolver(), - Settings.System.FORCE_PEAK_REFRESH_RATE, 1); - assertEquals(120, RefreshRateSettingsUtils.getMinRefreshRate(mContext), /* delta= */ 0); - } - - @Test - public void testGetPeakRefreshRate() { - float defaultPeakRefreshRate = 100; - - Settings.System.putInt(mContext.getContentResolver(), Settings.System.SMOOTH_DISPLAY, -1); - assertEquals(defaultPeakRefreshRate, - RefreshRateSettingsUtils.getPeakRefreshRate(mContext, defaultPeakRefreshRate), - /* delta= */ 0); - - Settings.System.putInt(mContext.getContentResolver(), Settings.System.SMOOTH_DISPLAY, 0); - assertEquals(DEFAULT_REFRESH_RATE, - RefreshRateSettingsUtils.getPeakRefreshRate(mContext, defaultPeakRefreshRate), - /* delta= */ 0); - - Settings.System.putInt(mContext.getContentResolver(), Settings.System.SMOOTH_DISPLAY, 1); - assertEquals(120, - RefreshRateSettingsUtils.getPeakRefreshRate(mContext, defaultPeakRefreshRate), - /* delta= */ 0); - } -} diff --git a/services/tests/servicestests/src/com/android/server/display/mode/DisplayModeDirectorTest.java b/services/tests/servicestests/src/com/android/server/display/mode/DisplayModeDirectorTest.java index e49225216b6b..b2a3a57cccf8 100644 --- a/services/tests/servicestests/src/com/android/server/display/mode/DisplayModeDirectorTest.java +++ b/services/tests/servicestests/src/com/android/server/display/mode/DisplayModeDirectorTest.java @@ -84,7 +84,6 @@ import androidx.test.filters.SmallTest; import com.android.internal.R; import com.android.internal.display.BrightnessSynchronizer; -import com.android.internal.display.RefreshRateSettingsUtils; import com.android.internal.os.BackgroundThread; import com.android.internal.util.Preconditions; import com.android.internal.util.test.FakeSettingsProvider; @@ -159,9 +158,6 @@ public class DisplayModeDirectorTest { LocalServices.addService(SensorManagerInternal.class, mSensorManagerInternalMock); LocalServices.removeServiceForTest(DisplayManagerInternal.class); LocalServices.addService(DisplayManagerInternal.class, mDisplayManagerInternalMock); - - clearSmoothDisplaySetting(); - clearForcePeakRefreshRateSetting(); } private DisplayModeDirector createDirectorFromRefreshRateArray( @@ -922,6 +918,7 @@ public class DisplayModeDirectorTest { public void testLockFpsForLowZone() throws Exception { DisplayModeDirector director = createDirectorFromRefreshRateArray(new float[] {60.f, 90.f}, 0); + setPeakRefreshRate(90); director.getSettingsObserver().setDefaultRefreshRate(90); director.getBrightnessObserver().setDefaultDisplayState(Display.STATE_ON); @@ -929,7 +926,6 @@ public class DisplayModeDirectorTest { config.setRefreshRateInLowZone(90); config.setLowDisplayBrightnessThresholds(new int[] { 10 }); config.setLowAmbientBrightnessThresholds(new int[] { 20 }); - config.setDefaultPeakRefreshRate(90); Sensor lightSensor = createLightSensor(); SensorManager sensorManager = createMockSensorManager(lightSensor); @@ -980,6 +976,7 @@ public class DisplayModeDirectorTest { public void testLockFpsForHighZone() throws Exception { DisplayModeDirector director = createDirectorFromRefreshRateArray(new float[] {60.f, 90.f}, 0); + setPeakRefreshRate(90 /*fps*/); director.getSettingsObserver().setDefaultRefreshRate(90); director.getBrightnessObserver().setDefaultDisplayState(Display.STATE_ON); @@ -987,7 +984,6 @@ public class DisplayModeDirectorTest { config.setRefreshRateInHighZone(60); config.setHighDisplayBrightnessThresholds(new int[] { 255 }); config.setHighAmbientBrightnessThresholds(new int[] { 8000 }); - config.setDefaultPeakRefreshRate(90); Sensor lightSensor = createLightSensor(); SensorManager sensorManager = createMockSensorManager(lightSensor); @@ -1035,123 +1031,16 @@ public class DisplayModeDirectorTest { } @Test - public void testSmoothDisplay() { - float defaultRefreshRate = 60; - int defaultPeakRefreshRate = 100; - DisplayModeDirector director = - createDirectorFromRefreshRateArray(new float[] {60.f, 90.f}, 0); - director.getSettingsObserver().setDefaultRefreshRate(defaultRefreshRate); - director.getBrightnessObserver().setDefaultDisplayState(Display.STATE_ON); - - final FakeDeviceConfig config = mInjector.getDeviceConfig(); - config.setDefaultPeakRefreshRate(defaultPeakRefreshRate); - - Sensor lightSensor = createLightSensor(); - SensorManager sensorManager = createMockSensorManager(lightSensor); - director.start(sensorManager); - - // Default value of the setting - - Vote vote = director.getVote(Display.DEFAULT_DISPLAY, - Vote.PRIORITY_USER_SETTING_PEAK_RENDER_FRAME_RATE); - assertVoteForRenderFrameRateRange(vote, /* frameRateLow= */ 0, /* frameRateHigh= */ - defaultPeakRefreshRate); - vote = director.getVote(Display.DEFAULT_DISPLAY, - Vote.PRIORITY_USER_SETTING_MIN_RENDER_FRAME_RATE); - assertVoteForRenderFrameRateRange(vote, /* frameRateLow= */ 0, /* frameRateHigh= */ - Float.POSITIVE_INFINITY); - vote = director.getVote(Display.DEFAULT_DISPLAY, - Vote.PRIORITY_DEFAULT_RENDER_FRAME_RATE); - assertVoteForRenderFrameRateRange(vote, /* frameRateLow= */ 0, /* frameRateHigh= */ - defaultRefreshRate); - - setSmoothDisplayEnabled(false); - - vote = director.getVote(Display.DEFAULT_DISPLAY, - Vote.PRIORITY_USER_SETTING_PEAK_RENDER_FRAME_RATE); - assertVoteForRenderFrameRateRange(vote, /* frameRateLow= */ 0, /* frameRateHigh= */ - RefreshRateSettingsUtils.DEFAULT_REFRESH_RATE); - vote = director.getVote(Display.DEFAULT_DISPLAY, - Vote.PRIORITY_USER_SETTING_MIN_RENDER_FRAME_RATE); - assertVoteForRenderFrameRateRange(vote, /* frameRateLow= */ 0, /* frameRateHigh= */ - Float.POSITIVE_INFINITY); - vote = director.getVote(Display.DEFAULT_DISPLAY, - Vote.PRIORITY_DEFAULT_RENDER_FRAME_RATE); - assertVoteForRenderFrameRateRange(vote, /* frameRateLow= */ 0, /* frameRateHigh= */ - defaultRefreshRate); - - setSmoothDisplayEnabled(true); - - vote = director.getVote(Display.DEFAULT_DISPLAY, - Vote.PRIORITY_USER_SETTING_PEAK_RENDER_FRAME_RATE); - assertVoteForRenderFrameRateRange(vote, /* frameRateLow= */ 0, /* frameRateHigh= */ - RefreshRateSettingsUtils.findHighestRefreshRateForDefaultDisplay(mContext)); - vote = director.getVote(Display.DEFAULT_DISPLAY, - Vote.PRIORITY_USER_SETTING_MIN_RENDER_FRAME_RATE); - assertVoteForRenderFrameRateRange(vote, /* frameRateLow= */ 0, /* frameRateHigh= */ - Float.POSITIVE_INFINITY); - vote = director.getVote(Display.DEFAULT_DISPLAY, - Vote.PRIORITY_DEFAULT_RENDER_FRAME_RATE); - assertVoteForRenderFrameRateRange(vote, /* frameRateLow= */ 0, /* frameRateHigh= */ - defaultRefreshRate); - } - - @Test - public void testForcePeakRefreshRate() { - float defaultRefreshRate = 60; - DisplayModeDirector director = - createDirectorFromRefreshRateArray(new float[] {60.f, 90.f}, 0); - director.getSettingsObserver().setDefaultRefreshRate(defaultRefreshRate); - director.getBrightnessObserver().setDefaultDisplayState(Display.STATE_ON); - - Sensor lightSensor = createLightSensor(); - SensorManager sensorManager = createMockSensorManager(lightSensor); - director.start(sensorManager); - - setForcePeakRefreshRateEnabled(false); - setSmoothDisplayEnabled(false); - - Vote vote = director.getVote(Display.DEFAULT_DISPLAY, - Vote.PRIORITY_USER_SETTING_PEAK_RENDER_FRAME_RATE); - assertVoteForRenderFrameRateRange(vote, /* frameRateLow= */ 0, /* frameRateHigh= */ - RefreshRateSettingsUtils.DEFAULT_REFRESH_RATE); - vote = director.getVote(Display.DEFAULT_DISPLAY, - Vote.PRIORITY_USER_SETTING_MIN_RENDER_FRAME_RATE); - assertVoteForRenderFrameRateRange(vote, /* frameRateLow= */ 0, - /* frameRateHigh= */ Float.POSITIVE_INFINITY); - vote = director.getVote(Display.DEFAULT_DISPLAY, - Vote.PRIORITY_DEFAULT_RENDER_FRAME_RATE); - assertVoteForRenderFrameRateRange(vote, /* frameRateLow= */ 0, /* frameRateHigh= */ - defaultRefreshRate); - - setForcePeakRefreshRateEnabled(true); - - vote = director.getVote(Display.DEFAULT_DISPLAY, - Vote.PRIORITY_USER_SETTING_PEAK_RENDER_FRAME_RATE); - assertVoteForRenderFrameRateRange(vote, /* frameRateLow= */ 0, /* frameRateHigh= */ - RefreshRateSettingsUtils.findHighestRefreshRateForDefaultDisplay(mContext)); - vote = director.getVote(Display.DEFAULT_DISPLAY, - Vote.PRIORITY_USER_SETTING_MIN_RENDER_FRAME_RATE); - assertVoteForRenderFrameRateRange(vote, /* frameRateLow= */ - RefreshRateSettingsUtils.findHighestRefreshRateForDefaultDisplay(mContext), - /* frameRateHigh= */ Float.POSITIVE_INFINITY); - vote = director.getVote(Display.DEFAULT_DISPLAY, - Vote.PRIORITY_DEFAULT_RENDER_FRAME_RATE); - assertVoteForRenderFrameRateRange(vote, /* frameRateLow= */ 0, /* frameRateHigh= */ - defaultRefreshRate); - } - - @Test public void testSensorRegistration() { // First, configure brightness zones or DMD won't register for sensor data. final FakeDeviceConfig config = mInjector.getDeviceConfig(); config.setRefreshRateInHighZone(60); config.setHighDisplayBrightnessThresholds(new int[] { 255 }); config.setHighAmbientBrightnessThresholds(new int[] { 8000 }); - config.setDefaultPeakRefreshRate(90); DisplayModeDirector director = createDirectorFromRefreshRateArray(new float[] {60.f, 90.f}, 0); + setPeakRefreshRate(90 /*fps*/); director.getSettingsObserver().setDefaultRefreshRate(90); director.getBrightnessObserver().setDefaultDisplayState(Display.STATE_ON); @@ -2527,10 +2416,10 @@ public class DisplayModeDirectorTest { config.setRefreshRateInHighZone(60); config.setHighDisplayBrightnessThresholds(new int[] { 255 }); config.setHighAmbientBrightnessThresholds(new int[] { 8000 }); - config.setDefaultPeakRefreshRate(90); DisplayModeDirector director = createDirectorFromRefreshRateArray(new float[] {60.f, 90.f}, 0); + setPeakRefreshRate(90 /*fps*/); director.getSettingsObserver().setDefaultRefreshRate(90); director.getBrightnessObserver().setDefaultDisplayState(Display.STATE_ON); @@ -2828,30 +2717,10 @@ public class DisplayModeDirectorTest { listener.onDisplayChanged(DISPLAY_ID); } - private void setSmoothDisplayEnabled(boolean enabled) { - Settings.System.putInt(mContext.getContentResolver(), Settings.System.SMOOTH_DISPLAY, - enabled ? 1 : 0); - mInjector.notifySmoothDisplaySettingChanged(); - waitForIdleSync(); - } - - private void clearSmoothDisplaySetting() { - Settings.System.putInt(mContext.getContentResolver(), Settings.System.SMOOTH_DISPLAY, -1); - mInjector.notifySmoothDisplaySettingChanged(); - waitForIdleSync(); - } - - private void setForcePeakRefreshRateEnabled(boolean enabled) { - Settings.System.putInt(mContext.getContentResolver(), - Settings.System.FORCE_PEAK_REFRESH_RATE, enabled ? 1 : 0); - mInjector.notifyForcePeakRefreshRateSettingChanged(); - waitForIdleSync(); - } - - private void clearForcePeakRefreshRateSetting() { - Settings.System.putInt(mContext.getContentResolver(), - Settings.System.FORCE_PEAK_REFRESH_RATE, -1); - mInjector.notifySmoothDisplaySettingChanged(); + private void setPeakRefreshRate(float fps) { + Settings.System.putFloat(mContext.getContentResolver(), Settings.System.PEAK_REFRESH_RATE, + fps); + mInjector.notifyPeakRefreshRateChanged(); waitForIdleSync(); } @@ -2900,8 +2769,7 @@ public class DisplayModeDirectorTest { private final Display mDisplay; private boolean mDisplayInfoValid = true; private ContentObserver mBrightnessObserver; - private ContentObserver mSmoothDisplaySettingObserver; - private ContentObserver mForcePeakRefreshRateSettingObserver; + private ContentObserver mPeakRefreshRateObserver; FakesInjector() { mDeviceConfig = new FakeDeviceConfig(); @@ -2918,15 +2786,9 @@ public class DisplayModeDirectorTest { } @Override - public void registerSmoothDisplayObserver(@NonNull ContentResolver cr, - @NonNull ContentObserver observer) { - mSmoothDisplaySettingObserver = observer; - } - - @Override - public void registerForcePeakRefreshRateObserver(@NonNull ContentResolver cr, + public void registerPeakRefreshRateObserver(@NonNull ContentResolver cr, @NonNull ContentObserver observer) { - mForcePeakRefreshRateSettingObserver = observer; + mPeakRefreshRateObserver = observer; } @Override @@ -2976,17 +2838,10 @@ public class DisplayModeDirectorTest { ApplicationProvider.getApplicationContext().getResources()); } - void notifySmoothDisplaySettingChanged() { - if (mSmoothDisplaySettingObserver != null) { - mSmoothDisplaySettingObserver.dispatchChange(false /*selfChange*/, - SMOOTH_DISPLAY_URI); - } - } - - void notifyForcePeakRefreshRateSettingChanged() { - if (mForcePeakRefreshRateSettingObserver != null) { - mForcePeakRefreshRateSettingObserver.dispatchChange(false /*selfChange*/, - FORCE_PEAK_REFRESH_RATE_URI); + void notifyPeakRefreshRateChanged() { + if (mPeakRefreshRateObserver != null) { + mPeakRefreshRateObserver.dispatchChange(false /*selfChange*/, + PEAK_REFRESH_RATE_URI); } } } |