Cleanup debug_allow_non_native_refresh_rate_override

This sysprop is defaulted to true, and there is no reason
to keep the behavior for the false case.

Bug: 251493618
Test: atest DisplayManagerServiceTest
Change-Id: Idcebad6f34fc00215a1576dfb98273b00f5625ac
This commit is contained in:
Ady Abraham
2022-11-28 15:47:25 -08:00
parent bd5932e3c6
commit 585e6022e0
2 changed files with 41 additions and 86 deletions

View File

@@ -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

View File

@@ -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;
@@ -1044,13 +1028,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);
}
/**
@@ -1078,10 +1081,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);
}
/**
@@ -1090,10 +1090,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);
}
/**
@@ -1316,10 +1313,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);
@@ -1341,40 +1337,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,