summaryrefslogtreecommitdiff
path: root/core/java/android/app/ActivityThread.java
diff options
context:
space:
mode:
authorTodd Kennedy <toddke@google.com>2019-07-02 07:35:15 -0700
committerTodd Kennedy <toddke@google.com>2019-07-02 13:17:05 -0700
commit8f135982a868abb9365ca7bd86173ce214dc5019 (patch)
tree598752b506183d043f1531fa39f1a1959efc76e2 /core/java/android/app/ActivityThread.java
parentb9914e06cc631bc0683fa88b2f6016db85ad06c3 (diff)
Create permission manager AIDL
Today, the package manager largely routes any permission related method to the PermissionManagerService. But, PermissionManagerService is a service in name only. Instead, we will make the PermissionManagerService a real service and direct API calls directly to it. We will likely need to maintain all of the public permission APIs that already exist on PackageManager. However, the public -> private implementation will go directly to PermissionManagerService. Bug: 135279435 Test: Manual. Device boots Change-Id: Ia4992ba6d1f4b9050db98c7d7647d51a5d45fcbe
Diffstat (limited to 'core/java/android/app/ActivityThread.java')
-rw-r--r--core/java/android/app/ActivityThread.java20
1 files changed, 15 insertions, 5 deletions
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java
index 5ab694faca64..d741b610a0e2 100644
--- a/core/java/android/app/ActivityThread.java
+++ b/core/java/android/app/ActivityThread.java
@@ -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(