Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 03d6b1fc authored by BK Choi's avatar BK Choi Committed by Android (Google) Code Review
Browse files

Merge "fix UserManagerService.enforceCurrentUserIfVisibleBackgroundEnabled" into main

parents b3619b0e 46e10f86
Loading
Loading
Loading
Loading
+2 −8
Original line number Diff line number Diff line
@@ -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(
+5 −21
Original line number Diff line number Diff line
@@ -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;
        }
+8 −8
Original line number Diff line number Diff line
@@ -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) {
+10 −8
Original line number Diff line number Diff line
@@ -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();
        final long ident = Binder.clearCallingIdentity();
        try {
            final int currentUserId = ActivityManager.getCurrentUser();
            if (DBG) {
            Slog.d(LOG_TAG, "enforceValidCallingUser: callingUserId=" + callingUserId
                Slog.d(LOG_TAG, "enforceCurrentUserIfVisibleBackgroundEnabled:"
                        + " callingUserId=" + callingUserId
                        + " isSystemUser=" + (callingUserId == USER_SYSTEM)
                        + " currentUserId=" + currentUserId
                        + " callingPid=" + Binder.getCallingPid()
                        + " callingUid=" + Binder.getCallingUid());
            }
        final long ident = Binder.clearCallingIdentity();
        try {
            if (callingUserId != USER_SYSTEM && callingUserId != currentUserId
                    && !UserManagerService.getInstance()
                    .isSameProfileGroup(callingUserId, currentUserId)) {