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

Commit e3daa6d4 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: a5480da7

Change-Id: I76603d16d4346da9380664b43a0f14efe030b6de
parents 0c913e5d a5480da7
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,