diff options
| author | Todd Kennedy <toddke@google.com> | 2019-07-02 07:35:15 -0700 |
|---|---|---|
| committer | Todd Kennedy <toddke@google.com> | 2019-07-02 13:17:05 -0700 |
| commit | 8f135982a868abb9365ca7bd86173ce214dc5019 (patch) | |
| tree | 598752b506183d043f1531fa39f1a1959efc76e2 /core/java/android/app/ActivityThread.java | |
| parent | b9914e06cc631bc0683fa88b2f6016db85ad06c3 (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.java | 20 |
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( |
