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

Commit 07c6628d authored by Jeff Sharkey's avatar Jeff Sharkey Committed by android-build-merger
Browse files

Merge "Handle "uninstalled" apps when pruning app-ops." into mnc-dr-dev am:...

Merge "Handle "uninstalled" apps when pruning app-ops." into mnc-dr-dev am: a975732a am: 637d05eb
am: d359137d

* commit 'd359137d':
  Handle "uninstalled" apps when pruning app-ops.
parents c2b3e48b d359137d
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -63,7 +63,9 @@ interface IPackageManager {
    boolean isPackageAvailable(String packageName, int userId);
    PackageInfo getPackageInfo(String packageName, int flags, int userId);
    int getPackageUid(String packageName, int userId);
    int getPackageUidEtc(String packageName, int flags, int userId);
    int[] getPackageGids(String packageName, int userId);
    int[] getPackageGidsEtc(String packageName, int flags, int userId);

    String[] currentToCanonicalPackageNames(in String[] names);
    String[] canonicalToCurrentPackageNames(in String[] names);
+4 −5
Original line number Diff line number Diff line
@@ -39,7 +39,6 @@ import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.IPackageManager;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.media.AudioAttributes;
import android.os.AsyncTask;
import android.os.Binder;
@@ -263,12 +262,12 @@ public class AppOpsService extends IAppOpsService.Stub {
                Iterator<Ops> it = pkgs.values().iterator();
                while (it.hasNext()) {
                    Ops ops = it.next();
                    int curUid;
                    int curUid = -1;
                    try {
                        curUid = mContext.getPackageManager().getPackageUid(ops.packageName,
                        curUid = AppGlobals.getPackageManager().getPackageUidEtc(ops.packageName,
                                PackageManager.GET_UNINSTALLED_PACKAGES,
                                UserHandle.getUserId(ops.uidState.uid));
                    } catch (NameNotFoundException e) {
                        curUid = -1;
                    } catch (RemoteException ignored) {
                    }
                    if (curUid != ops.uidState.uid) {
                        Slog.i(TAG, "Pruning old package " + ops.packageName
+27 −12
Original line number Diff line number Diff line
@@ -2736,26 +2736,38 @@ public class PackageManagerService extends IPackageManager.Stub {
    @Override
    public int getPackageUid(String packageName, int userId) {
        return getPackageUidEtc(packageName, 0, userId);
    }
    @Override
    public int getPackageUidEtc(String packageName, int flags, int userId) {
        if (!sUserManager.exists(userId)) return -1;
        enforceCrossUserPermission(Binder.getCallingUid(), userId, false, false, "get package uid");
        // reader
        synchronized (mPackages) {
            PackageParser.Package p = mPackages.get(packageName);
            final PackageParser.Package p = mPackages.get(packageName);
            if (p != null) {
                return UserHandle.getUid(userId, p.applicationInfo.uid);
            }
            PackageSetting ps = mSettings.mPackages.get(packageName);
            if((ps == null) || (ps.pkg == null) || (ps.pkg.applicationInfo == null)) {
                return -1;
            if ((flags & PackageManager.GET_UNINSTALLED_PACKAGES) != 0) {
                final PackageSetting ps = mSettings.mPackages.get(packageName);
                if (ps != null) {
                    return UserHandle.getUid(userId, ps.appId);
                }
            p = ps.pkg;
            return p != null ? UserHandle.getUid(userId, p.applicationInfo.uid) : -1;
            }
        }
        return -1;
    }
    @Override
    public int[] getPackageGids(String packageName, int userId) {
        return getPackageGidsEtc(packageName, 0, userId);
    }
    @Override
    public int[] getPackageGids(String packageName, int userId) throws RemoteException {
    public int[] getPackageGidsEtc(String packageName, int flags, int userId) {
        if (!sUserManager.exists(userId)) {
            return null;
        }
@@ -2765,14 +2777,17 @@ public class PackageManagerService extends IPackageManager.Stub {
        // reader
        synchronized (mPackages) {
            PackageParser.Package p = mPackages.get(packageName);
            if (DEBUG_PACKAGE_INFO) {
                Log.v(TAG, "getPackageGids" + packageName + ": " + p);
            }
            final PackageParser.Package p = mPackages.get(packageName);
            if (p != null) {
                PackageSetting ps = (PackageSetting) p.mExtras;
                return ps.getPermissionsState().computeGids(userId);
            }
            if ((flags & PackageManager.GET_UNINSTALLED_PACKAGES) != 0) {
                final PackageSetting ps = mSettings.mPackages.get(packageName);
                if (ps != null) {
                    return ps.getPermissionsState().computeGids(userId);
                }
            }
        }
        return null;