summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Fiona Campbell <flc@google.com> 2021-11-12 17:10:15 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2021-11-12 17:10:15 +0000
commitc19c6d4b3c8fbd7a9fb22546c2cff5ad3cb6cbf2 (patch)
tree6a883db09393a462dc6a5608566a25404b53eb1b
parent64c7c7150f7c9dd6ae90e0d701e18c66b87cb2a0 (diff)
parent15358d50ea3cd38605e4bb2a6236df3155ac552d (diff)
Merge "Make setBrightnessConfigurationForUser locked" into sc-v2-dev
-rw-r--r--services/core/java/com/android/server/display/DisplayManagerService.java31
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