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

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

Merge "Create permission manager AIDL"

parents 9320aa84 8f135982
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -279,6 +279,7 @@ java_defaults {
        "core/java/android/os/storage/IStorageShutdownObserver.aidl",
        "core/java/android/os/storage/IObbActionListener.aidl",
        "core/java/android/permission/IPermissionController.aidl",
        "core/java/android/permission/IPermissionManager.aidl",
        ":keystore_aidl",
        "core/java/android/security/keymaster/IKeyAttestationApplicationIdProvider.aidl",
        "core/java/android/service/appprediction/IPredictionService.aidl",
+15 −5
Original line number Diff line number Diff line
@@ -113,6 +113,7 @@ import android.os.SystemClock;
import android.os.SystemProperties;
import android.os.Trace;
import android.os.UserHandle;
import android.permission.IPermissionManager;
import android.provider.BlockedNumberContract;
import android.provider.CalendarContract;
import android.provider.CallLog;
@@ -287,6 +288,7 @@ public final class ActivityThread extends ClientTransactionHandler {

    @UnsupportedAppUsage
    static volatile IPackageManager sPackageManager;
    private static volatile IPermissionManager sPermissionManager;

    @UnsupportedAppUsage
    final ApplicationThread mAppThread = new ApplicationThread();
@@ -2136,16 +2138,23 @@ public final class ActivityThread extends ClientTransactionHandler {
    @UnsupportedAppUsage
    public static IPackageManager getPackageManager() {
        if (sPackageManager != null) {
            //Slog.v("PackageManager", "returning cur default = " + sPackageManager);
            return sPackageManager;
        }
        IBinder b = ServiceManager.getService("package");
        //Slog.v("PackageManager", "default service binder = " + b);
        final IBinder b = ServiceManager.getService("package");
        sPackageManager = IPackageManager.Stub.asInterface(b);
        //Slog.v("PackageManager", "default service = " + sPackageManager);
        return sPackageManager;
    }

    /** Returns the permission manager */
    public static IPermissionManager getPermissionManager() {
        if (sPermissionManager != null) {
            return sPermissionManager;
        }
        final IBinder b = ServiceManager.getService("permissionmgr");
        sPermissionManager = IPermissionManager.Stub.asInterface(b);
        return sPermissionManager;
    }

    private Configuration mMainThreadConfig = new Configuration();

    Configuration applyConfigCompatMainThread(int displayDensity, Configuration config,
@@ -6317,7 +6326,8 @@ public final class ActivityThread extends ClientTransactionHandler {
        final InstrumentationInfo ii;
        if (data.instrumentationName != null) {
            try {
                ii = new ApplicationPackageManager(null, getPackageManager())
                ii = new ApplicationPackageManager(
                        null, getPackageManager(), getPermissionManager())
                        .getInstrumentationInfo(data.instrumentationName, 0);
            } catch (PackageManager.NameNotFoundException e) {
                throw new RuntimeException(
+9 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package android.app;

import android.annotation.UnsupportedAppUsage;
import android.content.pm.IPackageManager;
import android.permission.IPermissionManager;

/**
 * Special private access for certain globals related to a process.
@@ -51,6 +52,14 @@ public class AppGlobals {
        return ActivityThread.getPackageManager();
    }

    /**
     * Return the raw interface to the permission manager.
     * @return The permission manager.
     */
    public static IPermissionManager getPermissionManager() {
        return ActivityThread.getPermissionManager();
    }

    /**
     * Gets the value of an integer core setting.
     *
+5 −2
Original line number Diff line number Diff line
@@ -82,6 +82,7 @@ import android.os.UserHandle;
import android.os.UserManager;
import android.os.storage.StorageManager;
import android.os.storage.VolumeInfo;
import android.permission.IPermissionManager;
import android.provider.Settings;
import android.system.ErrnoException;
import android.system.Os;
@@ -1655,10 +1656,11 @@ public class ApplicationPackageManager extends PackageManager {
    }

    @UnsupportedAppUsage
    protected ApplicationPackageManager(ContextImpl context,
                              IPackageManager pm) {
    protected ApplicationPackageManager(ContextImpl context, IPackageManager pm,
            IPermissionManager permissionManager) {
        mContext = context;
        mPM = pm;
        mPermissionManager = permissionManager;
    }

    /**
@@ -2930,6 +2932,7 @@ public class ApplicationPackageManager extends PackageManager {
    private final ContextImpl mContext;
    @UnsupportedAppUsage
    private final IPackageManager mPM;
    private final IPermissionManager mPermissionManager;

    /** Assume locked until we hear otherwise */
    private volatile boolean mUserUnlocked = false;
+5 −3
Original line number Diff line number Diff line
@@ -68,6 +68,7 @@ import android.os.Trace;
import android.os.UserHandle;
import android.os.UserManager;
import android.os.storage.StorageManager;
import android.permission.IPermissionManager;
import android.system.ErrnoException;
import android.system.Os;
import android.system.OsConstants;
@@ -297,10 +298,11 @@ class ContextImpl extends Context {
            return mPackageManager;
        }

        IPackageManager pm = ActivityThread.getPackageManager();
        if (pm != null) {
        final IPackageManager pm = ActivityThread.getPackageManager();
        final IPermissionManager permissionManager = ActivityThread.getPermissionManager();
        if (pm != null && permissionManager != null) {
            // Doesn't matter if we make more than one instance.
            return (mPackageManager = new ApplicationPackageManager(this, pm));
            return (mPackageManager = new ApplicationPackageManager(this, pm, permissionManager));
        }

        return null;
Loading