diff options
| -rw-r--r-- | core/java/android/hardware/display/DisplayManager.java | 1 | ||||
| -rw-r--r-- | services/core/java/com/android/server/wm/DisplayPolicy.java | 2 | ||||
| -rw-r--r-- | services/core/java/com/android/server/wm/HighRefreshRateDenylist.java (renamed from services/core/java/com/android/server/wm/HighRefreshRateBlacklist.java) | 38 | ||||
| -rw-r--r-- | services/core/java/com/android/server/wm/RefreshRatePolicy.java | 8 | ||||
| -rw-r--r-- | services/core/java/com/android/server/wm/WindowManagerService.java | 6 | ||||
| -rw-r--r-- | services/tests/wmtests/src/com/android/server/wm/HighRefreshRateDenylistTest.java (renamed from services/tests/wmtests/src/com/android/server/wm/HighRefreshRateBlacklistTest.java) | 94 | ||||
| -rw-r--r-- | services/tests/wmtests/src/com/android/server/wm/RefreshRatePolicyTest.java | 8 | ||||
| -rw-r--r-- | services/tests/wmtests/src/com/android/server/wm/SystemServicesTestRule.java | 2 |
8 files changed, 80 insertions, 79 deletions
diff --git a/core/java/android/hardware/display/DisplayManager.java b/core/java/android/hardware/display/DisplayManager.java index 8f99edf61ece..dda1890b0757 100644 --- a/core/java/android/hardware/display/DisplayManager.java +++ b/core/java/android/hardware/display/DisplayManager.java @@ -941,6 +941,7 @@ public final class DisplayManager { */ String KEY_PEAK_REFRESH_RATE_DEFAULT = "peak_refresh_rate_default"; + // TODO(b/162536543): rename it once it is proved not harmful for users. /** * Key for controlling which packages are explicitly blocked from running at refresh rates * higher than 60hz. An app may be added to this list if they exhibit performance issues at diff --git a/services/core/java/com/android/server/wm/DisplayPolicy.java b/services/core/java/com/android/server/wm/DisplayPolicy.java index 572c9b306047..6fffde14cf7d 100644 --- a/services/core/java/com/android/server/wm/DisplayPolicy.java +++ b/services/core/java/com/android/server/wm/DisplayPolicy.java @@ -649,7 +649,7 @@ public class DisplayPolicy { mRefreshRatePolicy = new RefreshRatePolicy(mService, mDisplayContent.getDisplayInfo(), - mService.mHighRefreshRateBlacklist); + mService.mHighRefreshRateDenylist); mGestureNavigationSettingsObserver = new GestureNavigationSettingsObserver(mHandler, mContext, () -> { diff --git a/services/core/java/com/android/server/wm/HighRefreshRateBlacklist.java b/services/core/java/com/android/server/wm/HighRefreshRateDenylist.java index aac6b2544c4f..cdc14cd11228 100644 --- a/services/core/java/com/android/server/wm/HighRefreshRateBlacklist.java +++ b/services/core/java/com/android/server/wm/HighRefreshRateDenylist.java @@ -34,62 +34,62 @@ import java.io.PrintWriter; /** * A Denylist for packages that should force the display out of high refresh rate. */ -class HighRefreshRateBlacklist { +class HighRefreshRateDenylist { - private final ArraySet<String> mBlacklistedPackages = new ArraySet<>(); + private final ArraySet<String> mDenylistedPackages = new ArraySet<>(); @NonNull - private final String[] mDefaultBlacklist; + private final String[] mDefaultDenylist; private final Object mLock = new Object(); private DeviceConfigInterface mDeviceConfig; private OnPropertiesChangedListener mListener = new OnPropertiesChangedListener(); - static HighRefreshRateBlacklist create(@NonNull Resources r) { - return new HighRefreshRateBlacklist(r, DeviceConfigInterface.REAL); + static HighRefreshRateDenylist create(@NonNull Resources r) { + return new HighRefreshRateDenylist(r, DeviceConfigInterface.REAL); } @VisibleForTesting - HighRefreshRateBlacklist(Resources r, DeviceConfigInterface deviceConfig) { - mDefaultBlacklist = r.getStringArray(R.array.config_highRefreshRateBlacklist); + HighRefreshRateDenylist(Resources r, DeviceConfigInterface deviceConfig) { + mDefaultDenylist = r.getStringArray(R.array.config_highRefreshRateBlacklist); mDeviceConfig = deviceConfig; mDeviceConfig.addOnPropertiesChangedListener(DeviceConfig.NAMESPACE_DISPLAY_MANAGER, BackgroundThread.getExecutor(), mListener); final String property = mDeviceConfig.getProperty(DeviceConfig.NAMESPACE_DISPLAY_MANAGER, KEY_HIGH_REFRESH_RATE_BLACKLIST); - updateBlacklist(property); + updateDenylist(property); } - private void updateBlacklist(@Nullable String property) { + private void updateDenylist(@Nullable String property) { synchronized (mLock) { - mBlacklistedPackages.clear(); + mDenylistedPackages.clear(); if (property != null) { String[] packages = property.split(","); for (String pkg : packages) { String pkgName = pkg.trim(); if (!pkgName.isEmpty()) { - mBlacklistedPackages.add(pkgName); + mDenylistedPackages.add(pkgName); } } } else { // If there's no config, or the config has been deleted, fallback to the device's // default denylist - for (String pkg : mDefaultBlacklist) { - mBlacklistedPackages.add(pkg); + for (String pkg : mDefaultDenylist) { + mDenylistedPackages.add(pkg); } } } } - boolean isBlacklisted(String packageName) { + boolean isDenylisted(String packageName) { synchronized (mLock) { - return mBlacklistedPackages.contains(packageName); + return mDenylistedPackages.contains(packageName); } } void dump(PrintWriter pw) { - pw.println("High Refresh Rate Blacklist"); + pw.println("High Refresh Rate Denylist"); pw.println(" Packages:"); synchronized (mLock) { - for (String pkg : mBlacklistedPackages) { + for (String pkg : mDenylistedPackages) { pw.println(" " + pkg); } } @@ -100,13 +100,13 @@ class HighRefreshRateBlacklist { void dispose() { mDeviceConfig.removeOnPropertiesChangedListener(mListener); mDeviceConfig = null; - mBlacklistedPackages.clear(); + mDenylistedPackages.clear(); } private class OnPropertiesChangedListener implements DeviceConfig.OnPropertiesChangedListener { public void onPropertiesChanged(@NonNull DeviceConfig.Properties properties) { if (properties.getKeyset().contains(KEY_HIGH_REFRESH_RATE_BLACKLIST)) { - updateBlacklist( + updateDenylist( properties.getString(KEY_HIGH_REFRESH_RATE_BLACKLIST, null /*default*/)); } } diff --git a/services/core/java/com/android/server/wm/RefreshRatePolicy.java b/services/core/java/com/android/server/wm/RefreshRatePolicy.java index 072116f04aac..91014aa69831 100644 --- a/services/core/java/com/android/server/wm/RefreshRatePolicy.java +++ b/services/core/java/com/android/server/wm/RefreshRatePolicy.java @@ -30,7 +30,7 @@ class RefreshRatePolicy { private final int mLowRefreshRateId; private final ArraySet<String> mNonHighRefreshRatePackages = new ArraySet<>(); - private final HighRefreshRateBlacklist mHighRefreshRateBlacklist; + private final HighRefreshRateDenylist mHighRefreshRateDenylist; private final WindowManagerService mWmService; /** @@ -55,9 +55,9 @@ class RefreshRatePolicy { static final int LAYER_PRIORITY_NOT_FOCUSED_WITH_MODE = 2; RefreshRatePolicy(WindowManagerService wmService, DisplayInfo displayInfo, - HighRefreshRateBlacklist blacklist) { + HighRefreshRateDenylist denylist) { mLowRefreshRateId = findLowRefreshRateModeId(displayInfo); - mHighRefreshRateBlacklist = blacklist; + mHighRefreshRateDenylist = denylist; mWmService = wmService; } @@ -108,7 +108,7 @@ class RefreshRatePolicy { } // If app is denylisted using higher refresh rate, return default (lower) refresh rate - if (mHighRefreshRateBlacklist.isBlacklisted(packageName)) { + if (mHighRefreshRateDenylist.isDenylisted(packageName)) { return mLowRefreshRateId; } return 0; diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 8c2619d75201..a680213c52a7 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -1005,7 +1005,7 @@ public class WindowManagerService extends IWindowManager.Stub final Configuration mTempConfiguration = new Configuration(); - final HighRefreshRateBlacklist mHighRefreshRateBlacklist; + final HighRefreshRateDenylist mHighRefreshRateDenylist; // If true, only the core apps and services are being launched because the device // is in a special boot mode, such as being encrypted or waiting for a decryption password. @@ -1302,7 +1302,7 @@ public class WindowManagerService extends IWindowManager.Stub this, mInputManager, mActivityTaskManager, mH.getLooper()); mDragDropController = new DragDropController(this, mH.getLooper()); - mHighRefreshRateBlacklist = HighRefreshRateBlacklist.create(context.getResources()); + mHighRefreshRateDenylist = HighRefreshRateDenylist.create(context.getResources()); mConstants = new WindowManagerConstants(this, DeviceConfigInterface.REAL); mConstants.start(new HandlerExecutor(mH)); @@ -5939,7 +5939,7 @@ public class WindowManagerService extends IWindowManager.Stub private void dumpHighRefreshRateBlacklist(PrintWriter pw) { pw.println("WINDOW MANAGER HIGH REFRESH RATE BLACKLIST (dumpsys window refresh)"); - mHighRefreshRateBlacklist.dump(pw); + mHighRefreshRateDenylist.dump(pw); } private void dumpTraceStatus(PrintWriter pw) { diff --git a/services/tests/wmtests/src/com/android/server/wm/HighRefreshRateBlacklistTest.java b/services/tests/wmtests/src/com/android/server/wm/HighRefreshRateDenylistTest.java index f53894ad9ec5..c3e1922a09cc 100644 --- a/services/tests/wmtests/src/com/android/server/wm/HighRefreshRateBlacklistTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/HighRefreshRateDenylistTest.java @@ -40,107 +40,107 @@ import java.util.concurrent.Executor; /** * Build/Install/Run: - * atest WmTests:HighRefreshRateBlacklistTest + * atest WmTests:HighRefreshRateDenylistTest */ @SmallTest @Presubmit -public class HighRefreshRateBlacklistTest { +public class HighRefreshRateDenylistTest { private static final String APP1 = "com.android.sample1"; private static final String APP2 = "com.android.sample2"; private static final String APP3 = "com.android.sample3"; - private HighRefreshRateBlacklist mBlacklist; + private HighRefreshRateDenylist mDenylist; @After public void tearDown() { - mBlacklist.dispose(); + mDenylist.dispose(); } @Test - public void testDefaultBlacklist() { + public void testDefaultDenylist() { final Resources r = createResources(APP1, APP2); - mBlacklist = new HighRefreshRateBlacklist(r, new FakeDeviceConfig()); + mDenylist = new HighRefreshRateDenylist(r, new FakeDeviceConfig()); - assertTrue(mBlacklist.isBlacklisted(APP1)); - assertTrue(mBlacklist.isBlacklisted(APP2)); - assertFalse(mBlacklist.isBlacklisted(APP3)); + assertTrue(mDenylist.isDenylisted(APP1)); + assertTrue(mDenylist.isDenylisted(APP2)); + assertFalse(mDenylist.isDenylisted(APP3)); } @Test - public void testNoDefaultBlacklist() { + public void testNoDefaultDenylist() { final Resources r = createResources(); - mBlacklist = new HighRefreshRateBlacklist(r, new FakeDeviceConfig()); + mDenylist = new HighRefreshRateDenylist(r, new FakeDeviceConfig()); - assertFalse(mBlacklist.isBlacklisted(APP1)); + assertFalse(mDenylist.isDenylisted(APP1)); } @Test - public void testDefaultBlacklistIsOverriddenByDeviceConfig() { + public void testDefaultDenylistIsOverriddenByDeviceConfig() { final Resources r = createResources(APP1); final FakeDeviceConfig config = new FakeDeviceConfig(); - config.setBlacklist(APP2 + "," + APP3); - mBlacklist = new HighRefreshRateBlacklist(r, config); + config.setDenylist(APP2 + "," + APP3); + mDenylist = new HighRefreshRateDenylist(r, config); - assertFalse(mBlacklist.isBlacklisted(APP1)); - assertTrue(mBlacklist.isBlacklisted(APP2)); - assertTrue(mBlacklist.isBlacklisted(APP3)); + assertFalse(mDenylist.isDenylisted(APP1)); + assertTrue(mDenylist.isDenylisted(APP2)); + assertTrue(mDenylist.isDenylisted(APP3)); } @Test - public void testDefaultBlacklistIsOverriddenByEmptyDeviceConfig() { + public void testDefaultDenylistIsOverriddenByEmptyDeviceConfig() { final Resources r = createResources(APP1); final FakeDeviceConfig config = new FakeDeviceConfig(); - config.setBlacklist(""); - mBlacklist = new HighRefreshRateBlacklist(r, config); + config.setDenylist(""); + mDenylist = new HighRefreshRateDenylist(r, config); - assertFalse(mBlacklist.isBlacklisted(APP1)); + assertFalse(mDenylist.isDenylisted(APP1)); } @Test - public void testDefaultBlacklistIsOverriddenByDeviceConfigUpdate() { + public void testDefaultDenylistIsOverriddenByDeviceConfigUpdate() { final Resources r = createResources(APP1); final FakeDeviceConfig config = new FakeDeviceConfig(); - mBlacklist = new HighRefreshRateBlacklist(r, config); + mDenylist = new HighRefreshRateDenylist(r, config); // First check that the default denylist is in effect - assertTrue(mBlacklist.isBlacklisted(APP1)); - assertFalse(mBlacklist.isBlacklisted(APP2)); - assertFalse(mBlacklist.isBlacklisted(APP3)); + assertTrue(mDenylist.isDenylisted(APP1)); + assertFalse(mDenylist.isDenylisted(APP2)); + assertFalse(mDenylist.isDenylisted(APP3)); // Then confirm that the DeviceConfig list has propagated and taken effect. - config.setBlacklist(APP2 + "," + APP3); - assertFalse(mBlacklist.isBlacklisted(APP1)); - assertTrue(mBlacklist.isBlacklisted(APP2)); - assertTrue(mBlacklist.isBlacklisted(APP3)); + config.setDenylist(APP2 + "," + APP3); + assertFalse(mDenylist.isDenylisted(APP1)); + assertTrue(mDenylist.isDenylisted(APP2)); + assertTrue(mDenylist.isDenylisted(APP3)); // Finally make sure we go back to the default list if the DeviceConfig gets deleted. - config.setBlacklist(null); - assertTrue(mBlacklist.isBlacklisted(APP1)); - assertFalse(mBlacklist.isBlacklisted(APP2)); - assertFalse(mBlacklist.isBlacklisted(APP3)); + config.setDenylist(null); + assertTrue(mDenylist.isDenylisted(APP1)); + assertFalse(mDenylist.isDenylisted(APP2)); + assertFalse(mDenylist.isDenylisted(APP3)); } @Test public void testOverriddenByDeviceConfigUnrelatedFlagChanged() { final Resources r = createResources(APP1); final FakeDeviceConfig config = new FakeDeviceConfig(); - mBlacklist = new HighRefreshRateBlacklist(r, config); - config.setBlacklist(APP2 + "," + APP3); - assertFalse(mBlacklist.isBlacklisted(APP1)); - assertTrue(mBlacklist.isBlacklisted(APP2)); - assertTrue(mBlacklist.isBlacklisted(APP3)); + mDenylist = new HighRefreshRateDenylist(r, config); + config.setDenylist(APP2 + "," + APP3); + assertFalse(mDenylist.isDenylisted(APP1)); + assertTrue(mDenylist.isDenylisted(APP2)); + assertTrue(mDenylist.isDenylisted(APP3)); // Change an unrelated flag in our namespace and verify that the denylist is intact config.putPropertyAndNotify(DeviceConfig.NAMESPACE_DISPLAY_MANAGER, "someKey", "someValue"); - assertFalse(mBlacklist.isBlacklisted(APP1)); - assertTrue(mBlacklist.isBlacklisted(APP2)); - assertTrue(mBlacklist.isBlacklisted(APP3)); + assertFalse(mDenylist.isDenylisted(APP1)); + assertTrue(mDenylist.isDenylisted(APP2)); + assertTrue(mDenylist.isDenylisted(APP3)); } - private Resources createResources(String... defaultBlacklist) { + private Resources createResources(String... defaultDenylist) { Resources r = mock(Resources.class); when(r.getStringArray(R.array.config_highRefreshRateBlacklist)) - .thenReturn(defaultBlacklist); + .thenReturn(defaultDenylist); return r; } @@ -160,9 +160,9 @@ public class HighRefreshRateBlacklistTest { super.addOnPropertiesChangedListener(namespace, executor, listener); } - void setBlacklist(String blacklist) { + void setDenylist(String denylist) { putPropertyAndNotify(DeviceConfig.NAMESPACE_DISPLAY_MANAGER, - KEY_HIGH_REFRESH_RATE_BLACKLIST, blacklist); + KEY_HIGH_REFRESH_RATE_BLACKLIST, denylist); } } } diff --git a/services/tests/wmtests/src/com/android/server/wm/RefreshRatePolicyTest.java b/services/tests/wmtests/src/com/android/server/wm/RefreshRatePolicyTest.java index e887be0c48c2..77a4b0507a42 100644 --- a/services/tests/wmtests/src/com/android/server/wm/RefreshRatePolicyTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/RefreshRatePolicyTest.java @@ -48,7 +48,7 @@ public class RefreshRatePolicyTest extends WindowTestsBase { private static final int LOW_MODE_ID = 3; private RefreshRatePolicy mPolicy; - private HighRefreshRateBlacklist mBlacklist = mock(HighRefreshRateBlacklist.class); + private HighRefreshRateDenylist mDenylist = mock(HighRefreshRateDenylist.class); @Before public void setUp() { @@ -61,7 +61,7 @@ public class RefreshRatePolicyTest extends WindowTestsBase { defaultMode.getPhysicalWidth(), defaultMode.getPhysicalHeight(), 60), }; di.defaultModeId = 1; - mPolicy = new RefreshRatePolicy(mWm, di, mBlacklist); + mPolicy = new RefreshRatePolicy(mWm, di, mDenylist); } @Test @@ -81,7 +81,7 @@ public class RefreshRatePolicyTest extends WindowTestsBase { final WindowState blacklistedWindow = createWindow(null, TYPE_BASE_APPLICATION, "blacklistedWindow"); blacklistedWindow.mAttrs.packageName = "com.android.test"; - when(mBlacklist.isBlacklisted("com.android.test")).thenReturn(true); + when(mDenylist.isDenylisted("com.android.test")).thenReturn(true); assertEquals(LOW_MODE_ID, mPolicy.getPreferredModeId(blacklistedWindow)); } @@ -90,7 +90,7 @@ public class RefreshRatePolicyTest extends WindowTestsBase { final WindowState overrideWindow = createWindow(null, TYPE_BASE_APPLICATION, "overrideWindow"); overrideWindow.mAttrs.preferredDisplayModeId = LOW_MODE_ID; - when(mBlacklist.isBlacklisted("com.android.test")).thenReturn(true); + when(mDenylist.isDenylisted("com.android.test")).thenReturn(true); assertEquals(LOW_MODE_ID, mPolicy.getPreferredModeId(overrideWindow)); } diff --git a/services/tests/wmtests/src/com/android/server/wm/SystemServicesTestRule.java b/services/tests/wmtests/src/com/android/server/wm/SystemServicesTestRule.java index da3319acca24..4d88a4f7db16 100644 --- a/services/tests/wmtests/src/com/android/server/wm/SystemServicesTestRule.java +++ b/services/tests/wmtests/src/com/android/server/wm/SystemServicesTestRule.java @@ -337,7 +337,7 @@ public class SystemServicesTestRule implements TestRule { // HighRefreshRateBlacklist with DeviceConfig. We need to undo that here to avoid // leaking mWmService. mWmService.mConstants.dispose(); - mWmService.mHighRefreshRateBlacklist.dispose(); + mWmService.mHighRefreshRateDenylist.dispose(); // This makes sure the posted messages without delay are processed, e.g. // DisplayPolicy#release, WindowManagerService#setAnimationScale. |