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

Commit 8a561754 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Fix deadlock when creating new OneTimePermissionUserManager" into...

Merge "Fix deadlock when creating new OneTimePermissionUserManager" into rvc-dev am: ee35eba0 am: b9553dc6

Change-Id: Ia49c0339602740c2bbdfbb5b6e367cfc35c31cc2
parents 19e3ed5a b9553dc6
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,