diff options
4 files changed, 25 insertions, 45 deletions
diff --git a/services/accessibility/java/com/android/server/accessibility/AbstractAccessibilityServiceConnection.java b/services/accessibility/java/com/android/server/accessibility/AbstractAccessibilityServiceConnection.java index 4b042489f3eb..47aa8f5736bf 100644 --- a/services/accessibility/java/com/android/server/accessibility/AbstractAccessibilityServiceConnection.java +++ b/services/accessibility/java/com/android/server/accessibility/AbstractAccessibilityServiceConnection.java @@ -1115,14 +1115,12 @@ abstract class AbstractAccessibilityServiceConnection extends IAccessibilityServ if (svcConnTracingEnabled()) { logTraceSvcConn("performGlobalAction", "action=" + action); } - int currentUserId; synchronized (mLock) { if (!hasRightsToCurrentUserLocked()) { return false; } - currentUserId = mSystemSupport.getCurrentUserIdLocked(); } - enforceCurrentUserIfVisibleBackgroundEnabled(currentUserId); + enforceCurrentUserIfVisibleBackgroundEnabled(); final long identity = Binder.clearCallingIdentity(); try { return mSystemActionPerformer.performSystemAction(action); @@ -2791,11 +2789,7 @@ abstract class AbstractAccessibilityServiceConnection extends IAccessibilityServ @RequiresNoPermission @Override public void setAnimationScale(float scale) { - int currentUserId; - synchronized (mLock) { - currentUserId = mSystemSupport.getCurrentUserIdLocked(); - } - enforceCurrentUserIfVisibleBackgroundEnabled(currentUserId); + enforceCurrentUserIfVisibleBackgroundEnabled(); final long identity = Binder.clearCallingIdentity(); try { Settings.Global.putFloat( diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java index 9eb8442be783..1c951848bc0a 100644 --- a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java +++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java @@ -1402,11 +1402,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub @EnforcePermission(MANAGE_ACCESSIBILITY) public void registerSystemAction(RemoteAction action, int actionId) { registerSystemAction_enforcePermission(); - int currentUserId; - synchronized (mLock) { - currentUserId = mCurrentUserId; - } - enforceCurrentUserIfVisibleBackgroundEnabled(currentUserId); + enforceCurrentUserIfVisibleBackgroundEnabled(); if (mTraceManager.isA11yTracingEnabledForTypes(FLAGS_ACCESSIBILITY_MANAGER)) { mTraceManager.logTrace(LOG_TAG + ".registerSystemAction", FLAGS_ACCESSIBILITY_MANAGER, "action=" + action + ";actionId=" + actionId); @@ -1423,11 +1419,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub @EnforcePermission(MANAGE_ACCESSIBILITY) public void unregisterSystemAction(int actionId) { unregisterSystemAction_enforcePermission(); - int currentUserId; - synchronized (mLock) { - currentUserId = mCurrentUserId; - } - enforceCurrentUserIfVisibleBackgroundEnabled(currentUserId); + enforceCurrentUserIfVisibleBackgroundEnabled(); if (mTraceManager.isA11yTracingEnabledForTypes(FLAGS_ACCESSIBILITY_MANAGER)) { mTraceManager.logTrace(LOG_TAG + ".unregisterSystemAction", FLAGS_ACCESSIBILITY_MANAGER, "actionId=" + actionId); @@ -1759,7 +1751,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub synchronized (mLock) { currentUserId = mCurrentUserId; } - enforceCurrentUserIfVisibleBackgroundEnabled(currentUserId); + enforceCurrentUserIfVisibleBackgroundEnabled(); if (mTraceManager.isA11yTracingEnabledForTypes(FLAGS_ACCESSIBILITY_MANAGER)) { mTraceManager.logTrace(LOG_TAG + ".notifyAccessibilityButtonClicked", FLAGS_ACCESSIBILITY_MANAGER, @@ -1807,11 +1799,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub @EnforcePermission(STATUS_BAR_SERVICE) public void notifyAccessibilityButtonVisibilityChanged(boolean shown) { notifyAccessibilityButtonVisibilityChanged_enforcePermission(); - int currentUserId; - synchronized (mLock) { - currentUserId = mCurrentUserId; - } - enforceCurrentUserIfVisibleBackgroundEnabled(currentUserId); + enforceCurrentUserIfVisibleBackgroundEnabled(); if (mTraceManager.isA11yTracingEnabledForTypes(FLAGS_ACCESSIBILITY_MANAGER)) { mTraceManager.logTrace(LOG_TAG + ".notifyAccessibilityButtonVisibilityChanged", FLAGS_ACCESSIBILITY_MANAGER, "shown=" + shown); @@ -5002,11 +4990,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub throws RemoteException { registerProxyForDisplay_enforcePermission(); mSecurityPolicy.checkForAccessibilityPermissionOrRole(); - int currentUserId; - synchronized (mLock) { - currentUserId = mCurrentUserId; - } - enforceCurrentUserIfVisibleBackgroundEnabled(currentUserId); + enforceCurrentUserIfVisibleBackgroundEnabled(); if (client == null) { return false; } diff --git a/services/core/java/com/android/server/UiModeManagerService.java b/services/core/java/com/android/server/UiModeManagerService.java index 8eda17698b9b..296f7cfe93ba 100644 --- a/services/core/java/com/android/server/UiModeManagerService.java +++ b/services/core/java/com/android/server/UiModeManagerService.java @@ -907,7 +907,7 @@ final class UiModeManagerService extends SystemService { throw new IllegalArgumentException("Unknown mode: " + mode); } - enforceCurrentUserIfVisibleBackgroundEnabled(mCurrentUser); + enforceCurrentUserIfVisibleBackgroundEnabled(); final int user = UserHandle.getCallingUserId(); final long ident = Binder.clearCallingIdentity(); @@ -970,7 +970,7 @@ final class UiModeManagerService extends SystemService { @AttentionModeThemeOverlayType int attentionModeThemeOverlayType) { setAttentionModeThemeOverlay_enforcePermission(); - enforceCurrentUserIfVisibleBackgroundEnabled(mCurrentUser); + enforceCurrentUserIfVisibleBackgroundEnabled(); synchronized (mLock) { if (mAttentionModeThemeOverlay != attentionModeThemeOverlayType) { @@ -1070,7 +1070,7 @@ final class UiModeManagerService extends SystemService { return false; } - enforceCurrentUserIfVisibleBackgroundEnabled(mCurrentUser); + enforceCurrentUserIfVisibleBackgroundEnabled(); // Store the last requested bedtime night mode state so that we don't need to notify // anyone if the user decides to switch to the night mode to bedtime. @@ -1124,7 +1124,7 @@ final class UiModeManagerService extends SystemService { return; } - enforceCurrentUserIfVisibleBackgroundEnabled(mCurrentUser); + enforceCurrentUserIfVisibleBackgroundEnabled(); final int user = UserHandle.getCallingUserId(); final long ident = Binder.clearCallingIdentity(); @@ -1155,7 +1155,7 @@ final class UiModeManagerService extends SystemService { return; } - enforceCurrentUserIfVisibleBackgroundEnabled(mCurrentUser); + enforceCurrentUserIfVisibleBackgroundEnabled(); final int user = UserHandle.getCallingUserId(); final long ident = Binder.clearCallingIdentity(); @@ -1178,7 +1178,7 @@ final class UiModeManagerService extends SystemService { assertLegit(callingPackage); assertSingleProjectionType(projectionType); enforceProjectionTypePermissions(projectionType); - enforceCurrentUserIfVisibleBackgroundEnabled(mCurrentUser); + enforceCurrentUserIfVisibleBackgroundEnabled(); synchronized (mLock) { if (mProjectionHolders == null) { @@ -1224,7 +1224,7 @@ final class UiModeManagerService extends SystemService { assertLegit(callingPackage); assertSingleProjectionType(projectionType); enforceProjectionTypePermissions(projectionType); - enforceCurrentUserIfVisibleBackgroundEnabled(mCurrentUser); + enforceCurrentUserIfVisibleBackgroundEnabled(); return releaseProjectionUnchecked(projectionType, callingPackage); } @@ -1266,7 +1266,7 @@ final class UiModeManagerService extends SystemService { return; } - enforceCurrentUserIfVisibleBackgroundEnabled(mCurrentUser); + enforceCurrentUserIfVisibleBackgroundEnabled(); synchronized (mLock) { if (mProjectionListeners == null) { diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java index 5a6d7a245f56..93837b34f7b3 100644 --- a/services/core/java/com/android/server/pm/UserManagerService.java +++ b/services/core/java/com/android/server/pm/UserManagerService.java @@ -2621,20 +2621,22 @@ public class UserManagerService extends IUserManager.Stub { * Valid user is the current user or the system or in the same profile group as the current * user. Visible background users are not valid calling users. */ - public static void enforceCurrentUserIfVisibleBackgroundEnabled(@UserIdInt int currentUserId) { + public static void enforceCurrentUserIfVisibleBackgroundEnabled() { if (!UserManager.isVisibleBackgroundUsersEnabled()) { return; } final int callingUserId = UserHandle.getCallingUserId(); - if (DBG) { - Slog.d(LOG_TAG, "enforceValidCallingUser: callingUserId=" + callingUserId - + " isSystemUser=" + (callingUserId == USER_SYSTEM) - + " currentUserId=" + currentUserId - + " callingPid=" + Binder.getCallingPid() - + " callingUid=" + Binder.getCallingUid()); - } final long ident = Binder.clearCallingIdentity(); try { + final int currentUserId = ActivityManager.getCurrentUser(); + if (DBG) { + Slog.d(LOG_TAG, "enforceCurrentUserIfVisibleBackgroundEnabled:" + + " callingUserId=" + callingUserId + + " isSystemUser=" + (callingUserId == USER_SYSTEM) + + " currentUserId=" + currentUserId + + " callingPid=" + Binder.getCallingPid() + + " callingUid=" + Binder.getCallingUid()); + } if (callingUserId != USER_SYSTEM && callingUserId != currentUserId && !UserManagerService.getInstance() .isSameProfileGroup(callingUserId, currentUserId)) { |