diff options
| author | 2021-11-12 17:10:15 +0000 | |
|---|---|---|
| committer | 2021-11-12 17:10:15 +0000 | |
| commit | c19c6d4b3c8fbd7a9fb22546c2cff5ad3cb6cbf2 (patch) | |
| tree | 6a883db09393a462dc6a5608566a25404b53eb1b | |
| parent | 64c7c7150f7c9dd6ae90e0d701e18c66b87cb2a0 (diff) | |
| parent | 15358d50ea3cd38605e4bb2a6236df3155ac552d (diff) | |
Merge "Make setBrightnessConfigurationForUser locked" into sc-v2-dev
| -rw-r--r-- | services/core/java/com/android/server/display/DisplayManagerService.java | 31 |
1 files changed, 24 insertions, 7 deletions
diff --git a/services/core/java/com/android/server/display/DisplayManagerService.java b/services/core/java/com/android/server/display/DisplayManagerService.java index a3b5e79cc8c7..fadaf1082e46 100644 --- a/services/core/java/com/android/server/display/DisplayManagerService.java +++ b/services/core/java/com/android/server/display/DisplayManagerService.java @@ -2862,14 +2862,31 @@ public final class DisplayManagerService extends SystemService { @Override // Binder call public void setBrightnessConfigurationForUser( BrightnessConfiguration c, @UserIdInt int userId, String packageName) { - mLogicalDisplayMapper.forEachLocked(logicalDisplay -> { - if (logicalDisplay.getDisplayInfoLocked().type != Display.TYPE_INTERNAL) { - return; + mContext.enforceCallingOrSelfPermission( + Manifest.permission.CONFIGURE_DISPLAY_BRIGHTNESS, + "Permission required to change the display's brightness configuration"); + if (userId != UserHandle.getCallingUserId()) { + mContext.enforceCallingOrSelfPermission( + Manifest.permission.INTERACT_ACROSS_USERS, + "Permission required to change the display brightness" + + " configuration of another user"); + } + final long token = Binder.clearCallingIdentity(); + try { + synchronized (mSyncRoot) { + mLogicalDisplayMapper.forEachLocked(logicalDisplay -> { + if (logicalDisplay.getDisplayInfoLocked().type != Display.TYPE_INTERNAL) { + return; + } + final DisplayDevice displayDevice = + logicalDisplay.getPrimaryDisplayDeviceLocked(); + setBrightnessConfigurationForDisplayInternal(c, displayDevice.getUniqueId(), + userId, packageName); + }); } - final DisplayDevice displayDevice = logicalDisplay.getPrimaryDisplayDeviceLocked(); - setBrightnessConfigurationForDisplay(c, displayDevice.getUniqueId(), userId, - packageName); - }); + } finally { + Binder.restoreCallingIdentity(token); + } } @Override // Binder call |