Loading Android.bp +1 −1 Original line number Diff line number Diff line Loading @@ -136,7 +136,6 @@ java_defaults { "core/java/android/content/pm/IDexModuleRegisterCallback.aidl", "core/java/android/content/pm/ILauncherApps.aidl", "core/java/android/content/pm/IOnAppsChangedListener.aidl", "core/java/android/content/pm/IOnPermissionsChangeListener.aidl", "core/java/android/content/pm/IOtaDexopt.aidl", "core/java/android/content/pm/IPackageDataObserver.aidl", "core/java/android/content/pm/IPackageDeleteObserver.aidl", Loading Loading @@ -278,6 +277,7 @@ java_defaults { "core/java/android/os/storage/IStorageEventListener.aidl", "core/java/android/os/storage/IStorageShutdownObserver.aidl", "core/java/android/os/storage/IObbActionListener.aidl", "core/java/android/permission/IOnPermissionsChangeListener.aidl", "core/java/android/permission/IPermissionController.aidl", "core/java/android/permission/IPermissionManager.aidl", ":keystore_aidl", Loading core/java/android/app/ApplicationPackageManager.java +21 −18 Original line number Diff line number Diff line Loading @@ -34,7 +34,6 @@ import android.content.pm.ApplicationInfo; import android.content.pm.ChangedPackages; import android.content.pm.ComponentInfo; import android.content.pm.FeatureInfo; import android.content.pm.IOnPermissionsChangeListener; import android.content.pm.IPackageDataObserver; import android.content.pm.IPackageDeleteObserver; import android.content.pm.IPackageManager; Loading Loading @@ -82,6 +81,7 @@ import android.os.UserHandle; import android.os.UserManager; import android.os.storage.StorageManager; import android.os.storage.VolumeInfo; import android.permission.IOnPermissionsChangeListener; import android.permission.IPermissionManager; import android.provider.Settings; import android.system.ErrnoException; Loading Loading @@ -626,7 +626,7 @@ public class ApplicationPackageManager extends PackageManager { @Override public int checkPermission(String permName, String pkgName) { try { return mPM.checkPermission(permName, pkgName, getUserId()); return mPermissionManager.checkPermission(permName, pkgName, getUserId()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } Loading Loading @@ -707,15 +707,15 @@ public class ApplicationPackageManager extends PackageManager { } @Override public void revokeRuntimePermission(String packageName, String permissionName, UserHandle user) { public void revokeRuntimePermission(String packageName, String permName, UserHandle user) { if (DEBUG_TRACE_GRANTS && shouldTraceGrant(packageName, permissionName, user.getIdentifier())) { && shouldTraceGrant(packageName, permName, user.getIdentifier())) { Log.i(TAG, "App " + mContext.getPackageName() + " is revoking " + permissionName + " for user " + user.getIdentifier(), new RuntimeException()); + permName + " for user " + user.getIdentifier(), new RuntimeException()); } try { mPM.revokeRuntimePermission(packageName, permissionName, user.getIdentifier()); mPermissionManager .revokeRuntimePermission(packageName, permName, user.getIdentifier()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } Loading Loading @@ -755,10 +755,11 @@ public class ApplicationPackageManager extends PackageManager { @Override public @NonNull Set<String> getWhitelistedRestrictedPermissions( @NonNull String packageName, @PermissionWhitelistFlags int whitelistFlags) { @NonNull String packageName, @PermissionWhitelistFlags int flags) { try { final List<String> whitelist = mPM.getWhitelistedRestrictedPermissions( packageName, whitelistFlags, getUserId()); final int userId = getUserId(); final List<String> whitelist = mPermissionManager .getWhitelistedRestrictedPermissions(packageName, flags, userId); if (whitelist != null) { return new ArraySet<>(whitelist); } Loading @@ -770,10 +771,11 @@ public class ApplicationPackageManager extends PackageManager { @Override public boolean addWhitelistedRestrictedPermission(@NonNull String packageName, @NonNull String permission, @PermissionWhitelistFlags int whitelistFlags) { @NonNull String permName, @PermissionWhitelistFlags int flags) { try { return mPM.addWhitelistedRestrictedPermission(packageName, permission, whitelistFlags, getUserId()); final int userId = getUserId(); return mPermissionManager .addWhitelistedRestrictedPermission(packageName, permName, flags, userId); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } Loading @@ -781,10 +783,11 @@ public class ApplicationPackageManager extends PackageManager { @Override public boolean removeWhitelistedRestrictedPermission(@NonNull String packageName, @NonNull String permission, @PermissionWhitelistFlags int whitelistFlags) { @NonNull String permName, @PermissionWhitelistFlags int flags) { try { return mPM.removeWhitelistedRestrictedPermission(packageName, permission, whitelistFlags, getUserId()); final int userId = getUserId(); return mPermissionManager .removeWhitelistedRestrictedPermission(packageName, permName, flags, userId); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } Loading Loading @@ -1624,7 +1627,7 @@ public class ApplicationPackageManager extends PackageManager { OnPermissionsChangeListenerDelegate delegate = new OnPermissionsChangeListenerDelegate(listener, Looper.getMainLooper()); try { mPM.addOnPermissionsChangeListener(delegate); mPermissionManager.addOnPermissionsChangeListener(delegate); mPermissionListeners.put(listener, delegate); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); Loading @@ -1638,7 +1641,7 @@ public class ApplicationPackageManager extends PackageManager { IOnPermissionsChangeListener delegate = mPermissionListeners.get(listener); if (delegate != null) { try { mPM.removeOnPermissionsChangeListener(delegate); mPermissionManager.removeOnPermissionsChangeListener(delegate); mPermissionListeners.remove(listener); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); Loading core/java/android/app/UiAutomationConnection.java +5 −5 Original line number Diff line number Diff line Loading @@ -20,7 +20,6 @@ import android.accessibilityservice.AccessibilityServiceInfo; import android.accessibilityservice.IAccessibilityServiceClient; import android.annotation.Nullable; import android.content.Context; import android.content.pm.IPackageManager; import android.graphics.Bitmap; import android.graphics.Rect; import android.hardware.input.InputManager; Loading @@ -31,6 +30,7 @@ import android.os.Process; import android.os.RemoteException; import android.os.ServiceManager; import android.os.UserHandle; import android.permission.IPermissionManager; import android.util.Log; import android.view.IWindowManager; import android.view.InputEvent; Loading Loading @@ -69,8 +69,8 @@ public final class UiAutomationConnection extends IUiAutomationConnection.Stub { private final IAccessibilityManager mAccessibilityManager = IAccessibilityManager.Stub .asInterface(ServiceManager.getService(Service.ACCESSIBILITY_SERVICE)); private final IPackageManager mPackageManager = IPackageManager.Stub .asInterface(ServiceManager.getService("package")); private final IPermissionManager mPermissionManager = IPermissionManager.Stub .asInterface(ServiceManager.getService("permissionmgr")); private final IActivityManager mActivityManager = IActivityManager.Stub .asInterface(ServiceManager.getService("activity")); Loading Loading @@ -273,7 +273,7 @@ public final class UiAutomationConnection extends IUiAutomationConnection.Stub { } final long identity = Binder.clearCallingIdentity(); try { mPackageManager.grantRuntimePermission(packageName, permission, userId); mPermissionManager.grantRuntimePermission(packageName, permission, userId); } finally { Binder.restoreCallingIdentity(identity); } Loading @@ -289,7 +289,7 @@ public final class UiAutomationConnection extends IUiAutomationConnection.Stub { } final long identity = Binder.clearCallingIdentity(); try { mPackageManager.revokeRuntimePermission(packageName, permission, userId); mPermissionManager.revokeRuntimePermission(packageName, permission, userId); } finally { Binder.restoreCallingIdentity(identity); } Loading core/java/android/content/pm/IPackageManager.aidl +18 −26 Original line number Diff line number Diff line Loading @@ -32,7 +32,6 @@ import android.content.pm.IPackageDeleteObserver2; import android.content.pm.IPackageDataObserver; import android.content.pm.IPackageMoveObserver; import android.content.pm.IPackageStatsObserver; import android.content.pm.IOnPermissionsChangeListener; import android.content.pm.IntentFilterVerificationInfo; import android.content.pm.InstrumentationInfo; import android.content.pm.KeySet; Loading Loading @@ -95,29 +94,7 @@ interface IPackageManager { @UnsupportedAppUsage ProviderInfo getProviderInfo(in ComponentName className, int flags, int userId); @UnsupportedAppUsage int checkPermission(String permName, String pkgName, int userId); int checkUidPermission(String permName, int uid); @UnsupportedAppUsage void grantRuntimePermission(String packageName, String permissionName, int userId); void revokeRuntimePermission(String packageName, String permissionName, int userId); void resetRuntimePermissions(); List<String> getWhitelistedRestrictedPermissions(String packageName, int flags, int userId); boolean addWhitelistedRestrictedPermission(String packageName, String permission, int whitelistFlags, int userId); boolean removeWhitelistedRestrictedPermission(String packageName, String permission, int whitelistFlags, int userId); boolean shouldShowRequestPermissionRationale(String permissionName, boolean shouldShowRequestPermissionRationale(String permName, String packageName, int userId); boolean isProtectedBroadcast(String actionName); Loading Loading @@ -652,8 +629,6 @@ interface IPackageManager { boolean isPackageSignedByKeySet(String packageName, in KeySet ks); boolean isPackageSignedByKeySetExactly(String packageName, in KeySet ks); void addOnPermissionsChangeListener(in IOnPermissionsChangeListener listener); void removeOnPermissionsChangeListener(in IOnPermissionsChangeListener listener); void grantDefaultPermissionsToEnabledCarrierApps(in String[] packageNames, int userId); void grantDefaultPermissionsToEnabledImsServices(in String[] packageNames, int userId); void grantDefaultPermissionsToEnabledTelephonyDataServices( Loading Loading @@ -750,6 +725,10 @@ interface IPackageManager { // The following binder interfaces have been moved to IPermissionManager // //------------------------------------------------------------------------ //------------------------------------------------------------------------ // We need to keep these in IPackageManager for app compatibility //------------------------------------------------------------------------ @UnsupportedAppUsage String[] getAppOpPermissionPackages(String permissionName); Loading @@ -764,4 +743,17 @@ interface IPackageManager { @UnsupportedAppUsage void removePermission(String name); @UnsupportedAppUsage int checkPermission(String permName, String pkgName, int userId); @UnsupportedAppUsage void grantRuntimePermission(String packageName, String permissionName, int userId); //------------------------------------------------------------------------ // We need to keep these in IPackageManager for convenience in splitting // out the permission manager. This should be cleaned up, but, will require // a large change that modifies many repos. //------------------------------------------------------------------------ int checkUidPermission(String permName, int uid); } core/java/android/content/pm/PackageManagerInternal.java +12 −65 Original line number Diff line number Diff line Loading @@ -32,13 +32,10 @@ import android.os.PersistableBundle; import android.util.ArraySet; import android.util.SparseArray; import com.android.internal.util.function.TriFunction; import java.io.IOException; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.List; import java.util.function.BiFunction; import java.util.function.Consumer; /** Loading Loading @@ -86,32 +83,6 @@ public abstract class PackageManagerInternal { void onPackageRemoved(@NonNull String packageName, int uid); } /** Interface to override permission checks via composition */ public interface CheckPermissionDelegate { /** * Allows overriding check permission behavior. * * @param permName The permission to check. * @param pkgName The package for which to check. * @param userId The user for which to check. * @param superImpl The super implementation. * @return The check permission result. */ int checkPermission(String permName, String pkgName, int userId, TriFunction<String, String, Integer, Integer> superImpl); /** * Allows overriding check UID permission behavior. * * @param permName The permission to check. * @param uid The UID for which to check. * @param superImpl The super implementation. * @return The check permission result. */ int checkUidPermission(String permName, int uid, BiFunction<String, Integer, Integer> superImpl); } /** * Provider for package names. */ Loading Loading @@ -463,26 +434,6 @@ public abstract class PackageManagerInternal { */ public abstract boolean wasPackageEverLaunched(String packageName, int userId); /** * Grants a runtime permission * @param packageName The package name. * @param name The name of the permission. * @param userId The userId for which to grant the permission. * @param overridePolicy If true, grant this permission even if it is fixed by policy. */ public abstract void grantRuntimePermission(String packageName, String name, int userId, boolean overridePolicy); /** * Revokes a runtime permission * @param packageName The package name. * @param name The name of the permission. * @param userId The userId for which to revoke the permission. * @param overridePolicy If true, revoke this permission even if it is fixed by policy. */ public abstract void revokeRuntimePermission(String packageName, String name, int userId, boolean overridePolicy); /** * Retrieve the official name associated with a uid. This name is * guaranteed to never change, though it is possible for the underlying Loading Loading @@ -667,6 +618,12 @@ public abstract class PackageManagerInternal { */ public abstract @Nullable PackageParser.Package getPackage(@NonNull String packageName); /** * Returns a package for the given UID. If the UID is part of a shared user ID, one * of the packages will be chosen to be returned. */ public abstract @Nullable PackageParser.Package getPackage(int uid); /** * Returns a list without a change observer. * Loading Loading @@ -770,20 +727,6 @@ public abstract class PackageManagerInternal { public abstract boolean hasSignatureCapability(int serverUid, int clientUid, @PackageParser.SigningDetails.CertCapabilities int capability); /** * Get the delegate to influence permission checking. * * @return The delegate instance or null to clear. */ public abstract @Nullable CheckPermissionDelegate getCheckPermissionDelegate(); /** * Set a delegate to influence permission checking. * * @param delegate A delegate instance or null to clear. */ public abstract void setCheckPermissionDelegate(@Nullable CheckPermissionDelegate delegate); /** * Get appIds of all available apps which specified android:sharedUserId in the manifest. * Loading Loading @@ -1011,6 +954,10 @@ public abstract class PackageManagerInternal { */ public abstract int getTargetSdk(int uid); /** HACK. Remove when listeners move to the permission manager */ public abstract void onPermissionsChangedTEMP(int uid); /** * Returns {@code true} if the caller is the installer of record for the given package. * Otherwise, {@code false}. */ public abstract boolean isCallerInstallerOfRecord( @NonNull PackageParser.Package pkg, int callingUid); } Loading
Android.bp +1 −1 Original line number Diff line number Diff line Loading @@ -136,7 +136,6 @@ java_defaults { "core/java/android/content/pm/IDexModuleRegisterCallback.aidl", "core/java/android/content/pm/ILauncherApps.aidl", "core/java/android/content/pm/IOnAppsChangedListener.aidl", "core/java/android/content/pm/IOnPermissionsChangeListener.aidl", "core/java/android/content/pm/IOtaDexopt.aidl", "core/java/android/content/pm/IPackageDataObserver.aidl", "core/java/android/content/pm/IPackageDeleteObserver.aidl", Loading Loading @@ -278,6 +277,7 @@ java_defaults { "core/java/android/os/storage/IStorageEventListener.aidl", "core/java/android/os/storage/IStorageShutdownObserver.aidl", "core/java/android/os/storage/IObbActionListener.aidl", "core/java/android/permission/IOnPermissionsChangeListener.aidl", "core/java/android/permission/IPermissionController.aidl", "core/java/android/permission/IPermissionManager.aidl", ":keystore_aidl", Loading
core/java/android/app/ApplicationPackageManager.java +21 −18 Original line number Diff line number Diff line Loading @@ -34,7 +34,6 @@ import android.content.pm.ApplicationInfo; import android.content.pm.ChangedPackages; import android.content.pm.ComponentInfo; import android.content.pm.FeatureInfo; import android.content.pm.IOnPermissionsChangeListener; import android.content.pm.IPackageDataObserver; import android.content.pm.IPackageDeleteObserver; import android.content.pm.IPackageManager; Loading Loading @@ -82,6 +81,7 @@ import android.os.UserHandle; import android.os.UserManager; import android.os.storage.StorageManager; import android.os.storage.VolumeInfo; import android.permission.IOnPermissionsChangeListener; import android.permission.IPermissionManager; import android.provider.Settings; import android.system.ErrnoException; Loading Loading @@ -626,7 +626,7 @@ public class ApplicationPackageManager extends PackageManager { @Override public int checkPermission(String permName, String pkgName) { try { return mPM.checkPermission(permName, pkgName, getUserId()); return mPermissionManager.checkPermission(permName, pkgName, getUserId()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } Loading Loading @@ -707,15 +707,15 @@ public class ApplicationPackageManager extends PackageManager { } @Override public void revokeRuntimePermission(String packageName, String permissionName, UserHandle user) { public void revokeRuntimePermission(String packageName, String permName, UserHandle user) { if (DEBUG_TRACE_GRANTS && shouldTraceGrant(packageName, permissionName, user.getIdentifier())) { && shouldTraceGrant(packageName, permName, user.getIdentifier())) { Log.i(TAG, "App " + mContext.getPackageName() + " is revoking " + permissionName + " for user " + user.getIdentifier(), new RuntimeException()); + permName + " for user " + user.getIdentifier(), new RuntimeException()); } try { mPM.revokeRuntimePermission(packageName, permissionName, user.getIdentifier()); mPermissionManager .revokeRuntimePermission(packageName, permName, user.getIdentifier()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } Loading Loading @@ -755,10 +755,11 @@ public class ApplicationPackageManager extends PackageManager { @Override public @NonNull Set<String> getWhitelistedRestrictedPermissions( @NonNull String packageName, @PermissionWhitelistFlags int whitelistFlags) { @NonNull String packageName, @PermissionWhitelistFlags int flags) { try { final List<String> whitelist = mPM.getWhitelistedRestrictedPermissions( packageName, whitelistFlags, getUserId()); final int userId = getUserId(); final List<String> whitelist = mPermissionManager .getWhitelistedRestrictedPermissions(packageName, flags, userId); if (whitelist != null) { return new ArraySet<>(whitelist); } Loading @@ -770,10 +771,11 @@ public class ApplicationPackageManager extends PackageManager { @Override public boolean addWhitelistedRestrictedPermission(@NonNull String packageName, @NonNull String permission, @PermissionWhitelistFlags int whitelistFlags) { @NonNull String permName, @PermissionWhitelistFlags int flags) { try { return mPM.addWhitelistedRestrictedPermission(packageName, permission, whitelistFlags, getUserId()); final int userId = getUserId(); return mPermissionManager .addWhitelistedRestrictedPermission(packageName, permName, flags, userId); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } Loading @@ -781,10 +783,11 @@ public class ApplicationPackageManager extends PackageManager { @Override public boolean removeWhitelistedRestrictedPermission(@NonNull String packageName, @NonNull String permission, @PermissionWhitelistFlags int whitelistFlags) { @NonNull String permName, @PermissionWhitelistFlags int flags) { try { return mPM.removeWhitelistedRestrictedPermission(packageName, permission, whitelistFlags, getUserId()); final int userId = getUserId(); return mPermissionManager .removeWhitelistedRestrictedPermission(packageName, permName, flags, userId); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } Loading Loading @@ -1624,7 +1627,7 @@ public class ApplicationPackageManager extends PackageManager { OnPermissionsChangeListenerDelegate delegate = new OnPermissionsChangeListenerDelegate(listener, Looper.getMainLooper()); try { mPM.addOnPermissionsChangeListener(delegate); mPermissionManager.addOnPermissionsChangeListener(delegate); mPermissionListeners.put(listener, delegate); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); Loading @@ -1638,7 +1641,7 @@ public class ApplicationPackageManager extends PackageManager { IOnPermissionsChangeListener delegate = mPermissionListeners.get(listener); if (delegate != null) { try { mPM.removeOnPermissionsChangeListener(delegate); mPermissionManager.removeOnPermissionsChangeListener(delegate); mPermissionListeners.remove(listener); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); Loading
core/java/android/app/UiAutomationConnection.java +5 −5 Original line number Diff line number Diff line Loading @@ -20,7 +20,6 @@ import android.accessibilityservice.AccessibilityServiceInfo; import android.accessibilityservice.IAccessibilityServiceClient; import android.annotation.Nullable; import android.content.Context; import android.content.pm.IPackageManager; import android.graphics.Bitmap; import android.graphics.Rect; import android.hardware.input.InputManager; Loading @@ -31,6 +30,7 @@ import android.os.Process; import android.os.RemoteException; import android.os.ServiceManager; import android.os.UserHandle; import android.permission.IPermissionManager; import android.util.Log; import android.view.IWindowManager; import android.view.InputEvent; Loading Loading @@ -69,8 +69,8 @@ public final class UiAutomationConnection extends IUiAutomationConnection.Stub { private final IAccessibilityManager mAccessibilityManager = IAccessibilityManager.Stub .asInterface(ServiceManager.getService(Service.ACCESSIBILITY_SERVICE)); private final IPackageManager mPackageManager = IPackageManager.Stub .asInterface(ServiceManager.getService("package")); private final IPermissionManager mPermissionManager = IPermissionManager.Stub .asInterface(ServiceManager.getService("permissionmgr")); private final IActivityManager mActivityManager = IActivityManager.Stub .asInterface(ServiceManager.getService("activity")); Loading Loading @@ -273,7 +273,7 @@ public final class UiAutomationConnection extends IUiAutomationConnection.Stub { } final long identity = Binder.clearCallingIdentity(); try { mPackageManager.grantRuntimePermission(packageName, permission, userId); mPermissionManager.grantRuntimePermission(packageName, permission, userId); } finally { Binder.restoreCallingIdentity(identity); } Loading @@ -289,7 +289,7 @@ public final class UiAutomationConnection extends IUiAutomationConnection.Stub { } final long identity = Binder.clearCallingIdentity(); try { mPackageManager.revokeRuntimePermission(packageName, permission, userId); mPermissionManager.revokeRuntimePermission(packageName, permission, userId); } finally { Binder.restoreCallingIdentity(identity); } Loading
core/java/android/content/pm/IPackageManager.aidl +18 −26 Original line number Diff line number Diff line Loading @@ -32,7 +32,6 @@ import android.content.pm.IPackageDeleteObserver2; import android.content.pm.IPackageDataObserver; import android.content.pm.IPackageMoveObserver; import android.content.pm.IPackageStatsObserver; import android.content.pm.IOnPermissionsChangeListener; import android.content.pm.IntentFilterVerificationInfo; import android.content.pm.InstrumentationInfo; import android.content.pm.KeySet; Loading Loading @@ -95,29 +94,7 @@ interface IPackageManager { @UnsupportedAppUsage ProviderInfo getProviderInfo(in ComponentName className, int flags, int userId); @UnsupportedAppUsage int checkPermission(String permName, String pkgName, int userId); int checkUidPermission(String permName, int uid); @UnsupportedAppUsage void grantRuntimePermission(String packageName, String permissionName, int userId); void revokeRuntimePermission(String packageName, String permissionName, int userId); void resetRuntimePermissions(); List<String> getWhitelistedRestrictedPermissions(String packageName, int flags, int userId); boolean addWhitelistedRestrictedPermission(String packageName, String permission, int whitelistFlags, int userId); boolean removeWhitelistedRestrictedPermission(String packageName, String permission, int whitelistFlags, int userId); boolean shouldShowRequestPermissionRationale(String permissionName, boolean shouldShowRequestPermissionRationale(String permName, String packageName, int userId); boolean isProtectedBroadcast(String actionName); Loading Loading @@ -652,8 +629,6 @@ interface IPackageManager { boolean isPackageSignedByKeySet(String packageName, in KeySet ks); boolean isPackageSignedByKeySetExactly(String packageName, in KeySet ks); void addOnPermissionsChangeListener(in IOnPermissionsChangeListener listener); void removeOnPermissionsChangeListener(in IOnPermissionsChangeListener listener); void grantDefaultPermissionsToEnabledCarrierApps(in String[] packageNames, int userId); void grantDefaultPermissionsToEnabledImsServices(in String[] packageNames, int userId); void grantDefaultPermissionsToEnabledTelephonyDataServices( Loading Loading @@ -750,6 +725,10 @@ interface IPackageManager { // The following binder interfaces have been moved to IPermissionManager // //------------------------------------------------------------------------ //------------------------------------------------------------------------ // We need to keep these in IPackageManager for app compatibility //------------------------------------------------------------------------ @UnsupportedAppUsage String[] getAppOpPermissionPackages(String permissionName); Loading @@ -764,4 +743,17 @@ interface IPackageManager { @UnsupportedAppUsage void removePermission(String name); @UnsupportedAppUsage int checkPermission(String permName, String pkgName, int userId); @UnsupportedAppUsage void grantRuntimePermission(String packageName, String permissionName, int userId); //------------------------------------------------------------------------ // We need to keep these in IPackageManager for convenience in splitting // out the permission manager. This should be cleaned up, but, will require // a large change that modifies many repos. //------------------------------------------------------------------------ int checkUidPermission(String permName, int uid); }
core/java/android/content/pm/PackageManagerInternal.java +12 −65 Original line number Diff line number Diff line Loading @@ -32,13 +32,10 @@ import android.os.PersistableBundle; import android.util.ArraySet; import android.util.SparseArray; import com.android.internal.util.function.TriFunction; import java.io.IOException; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.List; import java.util.function.BiFunction; import java.util.function.Consumer; /** Loading Loading @@ -86,32 +83,6 @@ public abstract class PackageManagerInternal { void onPackageRemoved(@NonNull String packageName, int uid); } /** Interface to override permission checks via composition */ public interface CheckPermissionDelegate { /** * Allows overriding check permission behavior. * * @param permName The permission to check. * @param pkgName The package for which to check. * @param userId The user for which to check. * @param superImpl The super implementation. * @return The check permission result. */ int checkPermission(String permName, String pkgName, int userId, TriFunction<String, String, Integer, Integer> superImpl); /** * Allows overriding check UID permission behavior. * * @param permName The permission to check. * @param uid The UID for which to check. * @param superImpl The super implementation. * @return The check permission result. */ int checkUidPermission(String permName, int uid, BiFunction<String, Integer, Integer> superImpl); } /** * Provider for package names. */ Loading Loading @@ -463,26 +434,6 @@ public abstract class PackageManagerInternal { */ public abstract boolean wasPackageEverLaunched(String packageName, int userId); /** * Grants a runtime permission * @param packageName The package name. * @param name The name of the permission. * @param userId The userId for which to grant the permission. * @param overridePolicy If true, grant this permission even if it is fixed by policy. */ public abstract void grantRuntimePermission(String packageName, String name, int userId, boolean overridePolicy); /** * Revokes a runtime permission * @param packageName The package name. * @param name The name of the permission. * @param userId The userId for which to revoke the permission. * @param overridePolicy If true, revoke this permission even if it is fixed by policy. */ public abstract void revokeRuntimePermission(String packageName, String name, int userId, boolean overridePolicy); /** * Retrieve the official name associated with a uid. This name is * guaranteed to never change, though it is possible for the underlying Loading Loading @@ -667,6 +618,12 @@ public abstract class PackageManagerInternal { */ public abstract @Nullable PackageParser.Package getPackage(@NonNull String packageName); /** * Returns a package for the given UID. If the UID is part of a shared user ID, one * of the packages will be chosen to be returned. */ public abstract @Nullable PackageParser.Package getPackage(int uid); /** * Returns a list without a change observer. * Loading Loading @@ -770,20 +727,6 @@ public abstract class PackageManagerInternal { public abstract boolean hasSignatureCapability(int serverUid, int clientUid, @PackageParser.SigningDetails.CertCapabilities int capability); /** * Get the delegate to influence permission checking. * * @return The delegate instance or null to clear. */ public abstract @Nullable CheckPermissionDelegate getCheckPermissionDelegate(); /** * Set a delegate to influence permission checking. * * @param delegate A delegate instance or null to clear. */ public abstract void setCheckPermissionDelegate(@Nullable CheckPermissionDelegate delegate); /** * Get appIds of all available apps which specified android:sharedUserId in the manifest. * Loading Loading @@ -1011,6 +954,10 @@ public abstract class PackageManagerInternal { */ public abstract int getTargetSdk(int uid); /** HACK. Remove when listeners move to the permission manager */ public abstract void onPermissionsChangedTEMP(int uid); /** * Returns {@code true} if the caller is the installer of record for the given package. * Otherwise, {@code false}. */ public abstract boolean isCallerInstallerOfRecord( @NonNull PackageParser.Package pkg, int callingUid); }