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

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

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

Change-Id: I399f2a4024d5cec08a7cc695fce4da4bd986061f
parents 4f4a36f2 ee35eba0
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,