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

Commit 88b835f9 authored by Philip P. Moltmann's avatar Philip P. Moltmann Committed by Android (Google) Code Review
Browse files

Merge "Have app global connection as to other managers"

parents 2568f884 5e5c41e5
Loading
Loading
Loading
Loading
+30 −13
Original line number Original line Diff line number Diff line
@@ -45,6 +45,7 @@ import android.os.UserHandle;
import android.util.ArrayMap;
import android.util.ArrayMap;
import android.util.Log;
import android.util.Log;


import com.android.internal.annotations.GuardedBy;
import com.android.internal.infra.AbstractMultiplePendingRequestsRemoteService;
import com.android.internal.infra.AbstractMultiplePendingRequestsRemoteService;
import com.android.internal.infra.AbstractRemoteService;
import com.android.internal.infra.AbstractRemoteService;
import com.android.internal.util.Preconditions;
import com.android.internal.util.Preconditions;
@@ -68,6 +69,12 @@ import java.util.concurrent.Executor;
public final class PermissionControllerManager {
public final class PermissionControllerManager {
    private static final String TAG = PermissionControllerManager.class.getSimpleName();
    private static final String TAG = PermissionControllerManager.class.getSimpleName();


    private static final Object sLock = new Object();

    /** App global remote service used by all {@link PermissionControllerManager managers} */
    @GuardedBy("sLock")
    private static RemoteService sRemoteService;

    /**
    /**
     * The key for retrieving the result from the returned bundle.
     * The key for retrieving the result from the returned bundle.
     *
     *
@@ -140,18 +147,28 @@ public final class PermissionControllerManager {
    }
    }


    private final @NonNull Context mContext;
    private final @NonNull Context mContext;
    private final RemoteService mRemoteService;


    /** @hide */
    /**
     * Create a new {@link PermissionControllerManager}.
     *
     * @param context to create the manager for
     *
     * @hide
     */
    public PermissionControllerManager(@NonNull Context context) {
    public PermissionControllerManager(@NonNull Context context) {
        synchronized (sLock) {
            if (sRemoteService == null) {
                Intent intent = new Intent(SERVICE_INTERFACE);
                Intent intent = new Intent(SERVICE_INTERFACE);
                intent.setPackage(context.getPackageManager().getPermissionControllerPackageName());
                intent.setPackage(context.getPackageManager().getPermissionControllerPackageName());
                ResolveInfo serviceInfo = context.getPackageManager().resolveService(intent, 0);
                ResolveInfo serviceInfo = context.getPackageManager().resolveService(intent, 0);


        mContext = context;
                sRemoteService = new RemoteService(context.getApplicationContext(),
        mRemoteService = new RemoteService(context,
                        serviceInfo.getComponentInfo().getComponentName());
                        serviceInfo.getComponentInfo().getComponentName());
            }
            }
        }

        mContext = context;
    }


    /**
    /**
     * Revoke a set of runtime permissions for various apps.
     * Revoke a set of runtime permissions for various apps.
@@ -182,7 +199,7 @@ public final class PermissionControllerManager {
                    + " required");
                    + " required");
        }
        }


        mRemoteService.scheduleRequest(new PendingRevokeRuntimePermissionRequest(mRemoteService,
        sRemoteService.scheduleRequest(new PendingRevokeRuntimePermissionRequest(sRemoteService,
                request, doDryRun, reason, mContext.getPackageName(), executor, callback));
                request, doDryRun, reason, mContext.getPackageName(), executor, callback));
    }
    }


@@ -201,8 +218,8 @@ public final class PermissionControllerManager {
        checkNotNull(packageName);
        checkNotNull(packageName);
        checkNotNull(callback);
        checkNotNull(callback);


        mRemoteService.scheduleRequest(new PendingGetAppPermissionRequest(mRemoteService,
        sRemoteService.scheduleRequest(new PendingGetAppPermissionRequest(sRemoteService,
                packageName, callback, handler == null ? mRemoteService.getHandler() : handler));
                packageName, callback, handler == null ? sRemoteService.getHandler() : handler));
    }
    }


    /**
    /**
@@ -219,7 +236,7 @@ public final class PermissionControllerManager {
        checkNotNull(packageName);
        checkNotNull(packageName);
        checkNotNull(permissionName);
        checkNotNull(permissionName);


        mRemoteService.scheduleAsyncRequest(new PendingRevokeAppPermissionRequest(packageName,
        sRemoteService.scheduleAsyncRequest(new PendingRevokeAppPermissionRequest(packageName,
                permissionName));
                permissionName));
    }
    }


@@ -241,9 +258,9 @@ public final class PermissionControllerManager {
        checkCollectionElementsNotNull(permissionNames, "permissionNames");
        checkCollectionElementsNotNull(permissionNames, "permissionNames");
        checkNotNull(callback);
        checkNotNull(callback);


        mRemoteService.scheduleRequest(new PendingCountPermissionAppsRequest(mRemoteService,
        sRemoteService.scheduleRequest(new PendingCountPermissionAppsRequest(sRemoteService,
                permissionNames, countOnlyGranted, countSystem, callback,
                permissionNames, countOnlyGranted, countSystem, callback,
                handler == null ? mRemoteService.getHandler() : handler));
                handler == null ? sRemoteService.getHandler() : handler));
    }
    }


    /**
    /**