diff --git a/services/core/java/com/android/server/display/DisplayManagerService.java b/services/core/java/com/android/server/display/DisplayManagerService.java index 05cd67f2f808a..c5cb08db934f6 100644 --- a/services/core/java/com/android/server/display/DisplayManagerService.java +++ b/services/core/java/com/android/server/display/DisplayManagerService.java @@ -105,7 +105,6 @@ import android.os.UserHandle; import android.os.UserManager; import android.provider.DeviceConfig; import android.provider.Settings; -import android.sysprop.DisplayProperties; import android.text.TextUtils; import android.util.ArraySet; import android.util.EventLog; @@ -451,8 +450,6 @@ public final class DisplayManagerService extends SystemService { } }; - private final boolean mAllowNonNativeRefreshRateOverride; - private final BrightnessSynchronizer mBrightnessSynchronizer; /** @@ -506,7 +503,6 @@ public final class DisplayManagerService extends SystemService { ColorSpace[] colorSpaces = SurfaceControl.getCompositionColorSpaces(); mWideColorSpace = colorSpaces[1]; mOverlayProperties = SurfaceControl.getOverlaySupport(); - mAllowNonNativeRefreshRateOverride = mInjector.getAllowNonNativeRefreshRateOverride(); mSystemReady = false; } @@ -930,24 +926,20 @@ public final class DisplayManagerService extends SystemService { } } - if (mAllowNonNativeRefreshRateOverride) { - overriddenInfo.refreshRateOverride = frameRateHz; - if (!CompatChanges.isChangeEnabled(DISPLAY_MODE_RETURNS_PHYSICAL_REFRESH_RATE, - callingUid)) { - overriddenInfo.supportedModes = Arrays.copyOf(info.supportedModes, - info.supportedModes.length + 1); - overriddenInfo.supportedModes[overriddenInfo.supportedModes.length - 1] = - new Display.Mode(Display.DISPLAY_MODE_ID_FOR_FRAME_RATE_OVERRIDE, - currentMode.getPhysicalWidth(), currentMode.getPhysicalHeight(), - overriddenInfo.refreshRateOverride); - overriddenInfo.modeId = - overriddenInfo.supportedModes[overriddenInfo.supportedModes.length - 1] - .getModeId(); - } - return overriddenInfo; + overriddenInfo.refreshRateOverride = frameRateHz; + if (!CompatChanges.isChangeEnabled(DISPLAY_MODE_RETURNS_PHYSICAL_REFRESH_RATE, + callingUid)) { + overriddenInfo.supportedModes = Arrays.copyOf(info.supportedModes, + info.supportedModes.length + 1); + overriddenInfo.supportedModes[overriddenInfo.supportedModes.length - 1] = + new Display.Mode(Display.DISPLAY_MODE_ID_FOR_FRAME_RATE_OVERRIDE, + currentMode.getPhysicalWidth(), currentMode.getPhysicalHeight(), + overriddenInfo.refreshRateOverride); + overriddenInfo.modeId = + overriddenInfo.supportedModes[overriddenInfo.supportedModes.length - 1] + .getModeId(); } - - return info; + return overriddenInfo; } private DisplayInfo getDisplayInfoInternal(int displayId, int callingUid) { @@ -2602,11 +2594,6 @@ public final class DisplayManagerService extends SystemService { long getDefaultDisplayDelayTimeout() { return WAIT_FOR_DEFAULT_DISPLAY_TIMEOUT; } - - boolean getAllowNonNativeRefreshRateOverride() { - return DisplayProperties - .debug_allow_non_native_refresh_rate_override().orElse(true); - } } @VisibleForTesting diff --git a/services/tests/servicestests/src/com/android/server/display/DisplayManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/display/DisplayManagerServiceTest.java index 9853b7acaf131..ce35626a51063 100644 --- a/services/tests/servicestests/src/com/android/server/display/DisplayManagerServiceTest.java +++ b/services/tests/servicestests/src/com/android/server/display/DisplayManagerServiceTest.java @@ -171,22 +171,6 @@ public class DisplayManagerServiceTest { private final DisplayManagerService.Injector mBasicInjector = new BasicInjector(); - private final DisplayManagerService.Injector mAllowNonNativeRefreshRateOverrideInjector = - new BasicInjector() { - @Override - boolean getAllowNonNativeRefreshRateOverride() { - return true; - } - }; - - private final DisplayManagerService.Injector mDenyNonNativeRefreshRateOverrideInjector = - new BasicInjector() { - @Override - boolean getAllowNonNativeRefreshRateOverride() { - return false; - } - }; - @Mock InputManagerInternal mMockInputManagerInternal; @Mock VirtualDeviceManagerInternal mMockVirtualDeviceManagerInternal; @Mock IVirtualDisplayCallback.Stub mMockAppToken; @@ -1113,13 +1097,32 @@ public class DisplayManagerServiceTest { } /** - * Tests that the frame rate override is updated accordingly to the - * allowNonNativeRefreshRateOverride policy. + * Tests that the frame rate override is returning the correct value from + * DisplayInfo#getRefreshRate */ @Test public void testDisplayInfoNonNativeFrameRateOverride() throws Exception { - testDisplayInfoNonNativeFrameRateOverride(mDenyNonNativeRefreshRateOverrideInjector); - testDisplayInfoNonNativeFrameRateOverride(mAllowNonNativeRefreshRateOverrideInjector); + DisplayManagerService displayManager = + new DisplayManagerService(mContext, mBasicInjector); + DisplayManagerService.BinderService displayManagerBinderService = + displayManager.new BinderService(); + registerDefaultDisplays(displayManager); + displayManager.onBootPhase(SystemService.PHASE_WAIT_FOR_DEFAULT_DISPLAY); + + FakeDisplayDevice displayDevice = createFakeDisplayDevice(displayManager, + new float[]{60f}); + int displayId = getDisplayIdForDisplayDevice(displayManager, displayManagerBinderService, + displayDevice); + DisplayInfo displayInfo = displayManagerBinderService.getDisplayInfo(displayId); + assertEquals(60f, displayInfo.getRefreshRate(), 0.01f); + + updateFrameRateOverride(displayManager, displayDevice, + new DisplayEventReceiver.FrameRateOverride[]{ + new DisplayEventReceiver.FrameRateOverride( + Process.myUid(), 20f) + }); + displayInfo = displayManagerBinderService.getDisplayInfo(displayId); + assertEquals(20f, displayInfo.getRefreshRate(), 0.01f); } /** @@ -1147,10 +1150,7 @@ public class DisplayManagerServiceTest { @Test @DisableCompatChanges({DisplayManagerService.DISPLAY_MODE_RETURNS_PHYSICAL_REFRESH_RATE}) public void testDisplayInfoNonNativeFrameRateOverrideModeCompat() throws Exception { - testDisplayInfoNonNativeFrameRateOverrideMode(mDenyNonNativeRefreshRateOverrideInjector, - /*compatChangeEnabled*/ false); - testDisplayInfoNonNativeFrameRateOverrideMode(mAllowNonNativeRefreshRateOverrideInjector, - /*compatChangeEnabled*/ false); + testDisplayInfoNonNativeFrameRateOverrideMode(/*compatChangeEnabled*/ false); } /** @@ -1159,10 +1159,7 @@ public class DisplayManagerServiceTest { @Test @EnableCompatChanges({DisplayManagerService.DISPLAY_MODE_RETURNS_PHYSICAL_REFRESH_RATE}) public void testDisplayInfoNonNativeFrameRateOverrideMode() throws Exception { - testDisplayInfoNonNativeFrameRateOverrideMode(mDenyNonNativeRefreshRateOverrideInjector, - /*compatChangeEnabled*/ true); - testDisplayInfoNonNativeFrameRateOverrideMode(mAllowNonNativeRefreshRateOverrideInjector, - /*compatChangeEnabled*/ true); + testDisplayInfoNonNativeFrameRateOverrideMode(/*compatChangeEnabled*/ true); } /** @@ -1385,10 +1382,9 @@ public class DisplayManagerServiceTest { assertEquals(expectedMode, displayInfo.getMode()); } - private void testDisplayInfoNonNativeFrameRateOverrideMode( - DisplayManagerService.Injector injector, boolean compatChangeEnabled) { + private void testDisplayInfoNonNativeFrameRateOverrideMode(boolean compatChangeEnabled) { DisplayManagerService displayManager = - new DisplayManagerService(mContext, injector); + new DisplayManagerService(mContext, mBasicInjector); DisplayManagerService.BinderService displayManagerBinderService = displayManager.new BinderService(); registerDefaultDisplays(displayManager); @@ -1410,40 +1406,12 @@ public class DisplayManagerServiceTest { Display.Mode expectedMode; if (compatChangeEnabled) { expectedMode = new Display.Mode(1, 100, 200, 60f); - } else if (injector.getAllowNonNativeRefreshRateOverride()) { - expectedMode = new Display.Mode(255, 100, 200, 20f); } else { - expectedMode = new Display.Mode(1, 100, 200, 60f); + expectedMode = new Display.Mode(255, 100, 200, 20f); } assertEquals(expectedMode, displayInfo.getMode()); } - private void testDisplayInfoNonNativeFrameRateOverride( - DisplayManagerService.Injector injector) { - DisplayManagerService displayManager = - new DisplayManagerService(mContext, injector); - DisplayManagerService.BinderService displayManagerBinderService = - displayManager.new BinderService(); - registerDefaultDisplays(displayManager); - displayManager.onBootPhase(SystemService.PHASE_WAIT_FOR_DEFAULT_DISPLAY); - - FakeDisplayDevice displayDevice = createFakeDisplayDevice(displayManager, - new float[]{60f}); - int displayId = getDisplayIdForDisplayDevice(displayManager, displayManagerBinderService, - displayDevice); - DisplayInfo displayInfo = displayManagerBinderService.getDisplayInfo(displayId); - assertEquals(60f, displayInfo.getRefreshRate(), 0.01f); - - updateFrameRateOverride(displayManager, displayDevice, - new DisplayEventReceiver.FrameRateOverride[]{ - new DisplayEventReceiver.FrameRateOverride( - Process.myUid(), 20f) - }); - displayInfo = displayManagerBinderService.getDisplayInfo(displayId); - float expectedRefreshRate = injector.getAllowNonNativeRefreshRateOverride() ? 20f : 60f; - assertEquals(expectedRefreshRate, displayInfo.getRefreshRate(), 0.01f); - } - private int getDisplayIdForDisplayDevice( DisplayManagerService displayManager, DisplayManagerService.BinderService displayManagerBinderService,