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

Commit ee35eba0 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fix deadlock when creating new OneTimePermissionUserManager" into rvc-dev

parents 60be958c 2cbceb9e
Loading
Loading
Loading
Loading
+8 −3
Original line number Diff line number Diff line
@@ -81,9 +81,6 @@ public class OneTimePermissionUserManager {
        mAlarmManager = context.getSystemService(AlarmManager.class);
        mPermissionControllerManager = context.getSystemService(PermissionControllerManager.class);
        mHandler = context.getMainThreadHandler();

        // Listen for tracked uid being uninstalled
        context.registerReceiver(mUninstallListener, new IntentFilter(Intent.ACTION_UID_REMOVED));
    }

    /**
@@ -170,6 +167,14 @@ public class OneTimePermissionUserManager {
                PROPERTY_KILLED_DELAY_CONFIG_KEY, DEFAULT_KILLED_DELAY_MILLIS);
    }

    /**
     * Register to listen for Uids being uninstalled. This must be done outside of the
     * PermissionManagerService lock.
     */
    void registerUninstallListener() {
        mContext.registerReceiver(mUninstallListener, new IntentFilter(Intent.ACTION_UID_REMOVED));
    }

    /**
     * A class which watches a package for inactivity and notifies the permission controller when
     * the package becomes inactive
+9 −6
Original line number Diff line number Diff line
@@ -3210,17 +3210,20 @@ public class PermissionManagerService extends IPermissionManager.Stub {
    }

    private OneTimePermissionUserManager getOneTimePermissionUserManager(@UserIdInt int userId) {
        OneTimePermissionUserManager oneTimePermissionUserManager;
        synchronized (mLock) {
            OneTimePermissionUserManager oneTimePermissionUserManager =
            oneTimePermissionUserManager =
                    mOneTimePermissionUserManagers.get(userId);
            if (oneTimePermissionUserManager == null) {
            if (oneTimePermissionUserManager != null) {
                return oneTimePermissionUserManager;
            }
            oneTimePermissionUserManager = new OneTimePermissionUserManager(
                    mContext.createContextAsUser(UserHandle.of(userId), /*flags*/ 0));
            mOneTimePermissionUserManagers.put(userId, oneTimePermissionUserManager);
        }
        oneTimePermissionUserManager.registerUninstallListener();
        return oneTimePermissionUserManager;
    }
    }

    @Override
    public void startOneTimePermissionSession(String packageName, @UserIdInt int userId,